def release(self, lease): self.log.info("Releasing %s", lease) with self._lock: try: sanlock.release(self._sdUUID, lease.name, [(lease.path, lease.offset)], slkfd=SANLock._sanlock_fd) except sanlock.SanlockException as e: raise se.ReleaseLockFailure(self._sdUUID, e) self.log.info("Successfully released %s", lease)
def release(self, lease): self.log.info("Releasing %s", lease) with self._lock, SANLock._process_lock: try: sanlock.release(self._lockspace_name, lease.name.encode("utf-8"), [(lease.path, lease.offset)], slkfd=SANLock._process_fd) except sanlock.SanlockException as e: # See acquire() on why we must panic. if SANLock._lease_count > 0 and e.errno == errno.EPIPE: panic("Sanlock process fd was closed while " "holding {} leases: {}".format( SANLock._lease_count, e)) raise se.ReleaseLockFailure(self._sdUUID, e) SANLock._lease_count -= 1 self.log.info("Successfully released %s", lease)