sftp locks can get stuck

Robey Pointer robey at lag.net
Fri Dec 23 07:57:51 GMT 2005


On 20 Dec 2005, at 17:56, John Arbash Meinel wrote:

> Robey Pointer wrote:
>>
>> There are some heuristics we could do to cut out some cases.  For
>> example, we could write the lock-owner's email address into the lock
>> file, so that we could automatically recover from a stale lock  
>> that  was
>> just left behind by one of your own previous sessions.  (It also   
>> helps
>> you figure out who to ping if you're on a shared project and  feeling
>> conscientious.)
>
> True. But as long as you don't forget you can push from more than one
> machine, though you are likely to serialize your access. (This may
> become more likely once we get bound branches, since there will be  
> more
> remote access going on).

Yeah, so we should be storing both the email & the IP...  or is that  
getting into the area of diminishing returns? :)


>
>>
>> If all writes are transactional (are they?), then we could add a lock
>> check phase right before the final commit: make sure that we  
>> still  own
>> the lock.  Assuming the final commit is short, that would let us   
>> use a
>> timeout of something much smaller, like 15 minutes.  That would   
>> reduce
>> the odds of needing to manually break a stale lock.
>
> For now they are atomic, but not transactional. Meaning you can get  
> out
> of order. 2 pushes are modifying branch.py-*.weave, they each create a
> temporary file, and then one wins.
> And if they both modify branch.py and clone.py, one might win one, and
> the other would win the other.

Hm, I see.  Hence the need for the write lock. :)  Sorry, it took me  
a little while to digest what was going on.

I think simpler is better here:  We record tracking info in the write  
lock (email, IP, timestamp) and provide a way to explicitly break the  
lock.  Maybe if an operation fails because of a write lock, and that  
lock is pretty old (by some arbitrary standard), bzr could hint to  
the user:

     The branch was locked by <robey at lag.net> 5 hours ago.
     If the lock is stale, you can break it with: bzr break-lock

But no magic of trying to guess if the lock should be automatically  
broken, etc.  Stale locks should be relatively rare.

robey





More information about the bazaar mailing list