lock: loop a finite number of times in trylock (issue4787)
authorMatt Mackall <mpm@selenic.com>
Mon, 24 Aug 2015 13:24:43 -0500
changeset 26081 3b6e5914edd8
parent 26080 83c9edcac05c
child 26082 b188f60bd955
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.
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