def _heartbeat_stopped(self, connection): for correlation_id, invocation in six.iteritems(dict(self._pending)): if invocation.sent_connection == connection: self._handle_exception( invocation, TargetDisconnectedError("%s has stopped heart beating." % connection))
def _send(self, invocation, connection, ignore_heartbeat): correlation_id = self._next_correlation_id.get_and_increment() message = invocation.request message.set_correlation_id(correlation_id) message.set_partition_id(invocation.partition_id) self._pending[correlation_id] = invocation if not invocation.timer: invocation.timer = self._client.reactor.add_timer_absolute( invocation.timeout, invocation.on_timeout) if isinstance(invocation, ListenerInvocation): self._event_handlers[correlation_id] = invocation self.logger.debug("Sending %s to %s", message, connection) if not ignore_heartbeat and not connection.heartbeating: self._handle_exception( invocation, TargetDisconnectedError("%s has stopped heart beating." % connection)) return invocation.sent_connection = connection try: connection.send_message(message) except IOError as e: self._handle_exception(invocation, e)
def _member_removed(self, member): self.members.remove(member) self._client.connection_manager.close_connection(member.address, TargetDisconnectedError( "%s is no longer a member of the cluster" % member)) for _, removed in list(self.listeners.values()): if removed: try: removed(member) except: logging.exception("Exception in membership listener")
def _heartbeat_stopped(self, connection): if connection.endpoint == self.owner_connection_address: self._client.connection_manager.close_connection( connection.endpoint, TargetDisconnectedError("%s stopped heart beating." % connection))