remotefilelog: remove dead code for using flock() for locking
authorAugie Fackler <augie@google.com>
Tue, 17 Sep 2019 14:20:13 -0400
changeset 42946 5316f9ff3e48
parent 42945 40f78072fda9
child 42947 0152a907f714
remotefilelog: remove dead code for using flock() for locking Differential Revision: https://phab.mercurial-scm.org/D6860
hgext/remotefilelog/extutil.py
--- a/hgext/remotefilelog/extutil.py	Thu Sep 12 21:55:45 2019 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-# extutil.py - useful utility methods for extensions
-#
-# Copyright 2016 Facebook
-#
-# This software may be used and distributed according to the terms of the
-# GNU General Public License version 2 or any later version.
-
-from __future__ import absolute_import
-
-import contextlib
-import errno
-import os
-import time
-
-from mercurial import (
-    error,
-    lock as lockmod,
-    util,
-    vfs as vfsmod,
-)
-
-@contextlib.contextmanager
-def flock(lockpath, description, timeout=-1):
-    """A flock based lock object. Currently it is always non-blocking.
-
-    Note that since it is flock based, you can accidentally take it multiple
-    times within one process and the first one to be released will release all
-    of them. So the caller needs to be careful to not create more than one
-    instance per lock.
-    """
-
-    # best effort lightweight lock
-    try:
-        import fcntl
-        fcntl.flock
-    except ImportError:
-        # fallback to Mercurial lock
-        vfs = vfsmod.vfs(os.path.dirname(lockpath))
-        with lockmod.lock(vfs, os.path.basename(lockpath), timeout=timeout):
-            yield
-        return
-    # make sure lock file exists
-    util.makedirs(os.path.dirname(lockpath))
-    with open(lockpath, 'a'):
-        pass
-    lockfd = os.open(lockpath, os.O_RDONLY, 0o664)
-    start = time.time()
-    while True:
-        try:
-            fcntl.flock(lockfd, fcntl.LOCK_EX | fcntl.LOCK_NB)
-            break
-        except IOError as ex:
-            if ex.errno == errno.EAGAIN:
-                if timeout != -1 and time.time() - start > timeout:
-                    raise error.LockHeld(errno.EAGAIN, lockpath, description,
-                                         '')
-                else:
-                    time.sleep(0.05)
-                    continue
-            raise
-
-    try:
-        yield
-    finally:
-        fcntl.flock(lockfd, fcntl.LOCK_UN)
-        os.close(lockfd)