diff -r e1938d6051da -r 0d892d820a51 mercurial/lock.py --- a/mercurial/lock.py Mon May 01 19:58:52 2017 +0900 +++ b/mercurial/lock.py Mon May 01 19:59:13 2017 +0900 @@ -151,6 +151,12 @@ raise error.LockUnavailable(why.errno, why.strerror, why.filename, self.desc) + if not self.held: + # use empty locker to mean "busy for frequent lock/unlock + # by many processes" + raise error.LockHeld(errno.EAGAIN, + self.vfs.join(self.f), self.desc, "") + def _readlock(self): """read lock and return its value