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
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))
def unrecoverable(self): """ Boolean value representing whether the current connection can be recovered. """ return bool(zookeeper.is_unrecoverable(self.handle))