Esempio n. 1
0
 def unrecoverable(self):
     """
     Boolean value representing whether the current connection can be
     recovered.
     """
     try:
         return bool(zookeeper.is_unrecoverable(self.handle))
     except zookeeper.ZooKeeperException:
         # guard against invalid handles
         return True
Esempio n. 2
0
    def cb_restablish_session(self, e=None):
        """Called on intercept of session expiration to create new session.

        This will reconnect to zk, re-establish ephemerals, and
        trigger watches.
        """
        yield self._reconnect_lock.acquire()

        try:
            # If its been explicitly closed, don't re-establish.
            if self.handle is None:
                return

            # If its a stale handle (ie. already closed), don't re-establish
            try:
                zookeeper.is_unrecoverable(self.handle)
            except zookeeper.ZooKeeperException:
                if e:
                    raise e
                return

            # Its already connected, don't re-establish.
            if not self.unrecoverable:
                return
            elif self.connected:
                self.close()
                self.handle = 0
            elif isinstance(self.handle, int):
                self.handle = 0

            # Re-establish
            yield self._cb_restablish_session().addErrback(
                self._cb_restablish_errback, e)

        except Exception, e:
            log.error("error while re-establish %r %s" % (e, e))
Esempio n. 3
0
 def unrecoverable(self):
     """
     Boolean value representing whether the current connection can be
     recovered.
     """
     return bool(zookeeper.is_unrecoverable(self.handle))