Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
    def release(self):
        with self._lock:
            self.log.info("Releasing cluster lock for domain %s", self._sdUUID)

            try:
                sanlock.release(self._sdUUID,
                                SDM_LEASE_NAME,
                                self.getLockDisk(),
                                slkfd=SANLock._sanlock_fd)
            except sanlock.SanlockException as e:
                raise se.ReleaseLockFailure(self._sdUUID, e)

            self._sanlockfd = None
            self.log.debug("Cluster lock for domain %s successfully released",
                           self._sdUUID)
Ejemplo n.º 3
0
    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)