def detect(self, memberlist): self._logger.debug('Detecting failures.') dead_nodes = [] current_timestamp = timestamp() for node in memberlist.itervalues(): if node.timestamp + self._dead_timeout * 1000 < current_timestamp: print 'failed node: %r' % node node.status = MemberStatus.Dead dead_nodes.append(node) # self._logger.debug('Detecting failures.') return dead_nodes
def beat(self, message): with self._memberlist.lock(): address = message.address memberlist_key = self._memberlist.generate_key(address.host, address.port) # TODO: add locking for memberlist node = Member(Address(address.host, address.port), message.seq_num, timestamp()) if memberlist_key in self._memberlist: self._memberlist[memberlist_key].merge(node) else: self._memberlist[memberlist_key] = node self._logger.debug('Received heartbeat message %s from %s.' % (message.seq_num, node.address))