close the lock file immediately after create and open it,
it doesn't block the O_EXCL working because the file already
exists
Signed-off-by: Gui Chen <gui.chen@intel.com>
if err.errno == errno.EEXIST:
raise LockfileError("File %s is locked already" % self.fpath)
raise
+ finally:
+ if self.lockf:
+ os.close(self.lockf)
def release(self):
""" release the lock """
try:
- # FIXME: open file and close it immediately
- os.close(self.lockf)
- except IOError as err:
- if err.errno != errno.EBADF:
- raise LockfileError("Failed to release file: %s" % self.fpath)
- try:
os.remove(self.fpath)
except OSError as err:
- if err.errno != errno.ENOENT:
- raise LockfileError("Failed to release file: %s" % self.fpath)
+ if err.errno == errno.ENOENT:
+ pass
def __enter__(self):
self.acquire()
def __exit__(self, *args):
self.release()
+ def __del__(self):
+ self.release()