def rcv_pingrsp(self, pingmsg): # Remove all instances of recovered node from failed node list recovered_node = pingmsg.from_node while recovered_node in self.failed_nodes: self.failed_nodes.remove(recovered_node) Framework.clearBlock(recovered_node) if recovered_node in self.pending_handoffs: for key in self.pending_handoffs[recovered_node]: #print 'recovery ---------------------------------' # Send our latest value for this key (value, metadata) = self.retrieve(key) putmsg = PutReq(self, recovered_node, key, value, metadata) Framework.send_message(putmsg) #print 'schedule' Framework.schedule(timers_to_process=0) del self.pending_handoffs[recovered_node]
def recovery(self, node): # Remove all instances of recovered node from failed node list #print 'recover+++++++++++++++++++++++++++' recovered_node = node while recovered_node in self.failed_nodes: self.failed_nodes.remove(recovered_node) Framework.clearBlock(recovered_node) if recovered_node in self.pending_handoffs: for key in self.pending_handoffs[recovered_node]: #print 'recovery ---------------------------------' # Send our latest value for this key (value, metadata) = self.retrieve(key) putmsg = PutReq(self.addr, recovered_node, key, value, metadata) Framework.send_message(putmsg) Framework.schedule() del self.pending_handoffs[recovered_node]