# HG changeset patch # User Matt Mackall # Date 1440440683 18000 # Node ID 3b6e5914edd87b399f24d53d95785d34808f29b2 # Parent 83c9edcac05c51c32283d741c44454a7b7073f63 lock: loop a finite number of times in trylock (issue4787) ..before falling back to lock, which will sleep. This only addresses the CPU consumption of the reported issue. diff -r 83c9edcac05c -r 3b6e5914edd8 mercurial/lock.py --- a/mercurial/lock.py Fri Aug 14 12:25:14 2015 +0900 +++ b/mercurial/lock.py Mon Aug 24 13:24:43 2015 -0500 @@ -83,7 +83,9 @@ if lock._host is None: lock._host = socket.gethostname() lockname = '%s:%s' % (lock._host, self.pid) - while not self.held: + retry = 5 + while not self.held and retry: + retry -= 1 try: self.vfs.makelock(lockname, self.f) self.held = 1