changeset 26081:3b6e5914edd8

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.
author Matt Mackall <mpm@selenic.com>
date Mon, 24 Aug 2015 13:24:43 -0500
parents 83c9edcac05c
children b188f60bd955
files mercurial/lock.py
diffstat 1 files changed, 3 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- 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