# HG changeset patch # User Paul Boddie # Date 1441647999 -7200 # Node ID c8e05079d35c26d76f31710e5169c32887f78920 # Parent ceebd7a6e5229bdccf8076c1e4daa14043a14769 Introduced the notion of "lock depth" to prevent premature lock removal (at the first attempt to release a lock). diff -r ceebd7a6e522 -r c8e05079d35c imiptools/filesys.py --- a/imiptools/filesys.py Mon Sep 07 18:54:54 2015 +0200 +++ b/imiptools/filesys.py Mon Sep 07 19:46:39 2015 +0200 @@ -88,6 +88,7 @@ if not exists(self.store_dir): makedirs(self.store_dir) fix_permissions(self.store_dir, True) + self.lock_depth = 0 def get_file_object(self, base, *parts): @@ -195,6 +196,7 @@ if exc.errno != errno.EEXIST: raise elif self.owning_lock_dir(*parts): + self.lock_depth += 1 break sleep(1) now = time() @@ -207,7 +209,10 @@ """ try: - self.remove_lock_dir(*parts) + if self.lock_depth != 0: + self.lock_depth -= 1 + else: + self.remove_lock_dir(*parts) except OSError, exc: if exc.errno != errno.ENOENT: raise