def change_in_responsibility(self, new_pred_key, my_key): self.own_start = new_pred_key self.own_end = my_key backup = {} self.write_lock.acquire() records = shelve.open(self.db) for k in records.keys(): k_key = hash_util.Key(k) if not node.I_own_hash(k_key): backup[k] = records[k] msgbuckets = {} for k in backup.keys(): k_key = hash_util.Key(k) best_foward = node.find_ideal_forward(k_key) if best_foward in msgbuckets.keys(): msgbuckets[best_foward][k] = backup[k] else: msgbuckets[best_foward] = {} msgbuckets[best_foward][k] = backup[k] for n in msgbuckets.keys(): if n != self.owner: newmsg = Database_Backup_Message(self.owner, msgbuckets[n]) self.send_message(newmsg, n) records.close() self.write_lock.release()
def change_in_responsibility(self,new_pred_key, my_key): self.own_start = new_pred_key self.own_end = my_key backup = {} self.write_lock.acquire() records = shelve.open(self.db) for k in records.keys(): k_key = hash_util.Key(k) if not node.I_own_hash(k_key): backup[k] = records[k] msgbuckets = {} for k in backup.keys(): k_key = hash_util.Key(k) best_foward = node.find_ideal_forward(k_key) if best_foward in msgbuckets.keys(): msgbuckets[best_foward][k] = backup[k] else: msgbuckets[best_foward] = {} msgbuckets[best_foward][k] = backup[k] for n in msgbuckets.keys(): if n != self.owner: newmsg = Database_Backup_Message(self.owner, msgbuckets[n]) self.send_message(newmsg,n) records.close() self.write_lock.release()
def disribute_fairly(atoms): distribution = {} for a in atoms: if node.I_own_hash(a.hashkeyID): dest = node.thisNode else: dest = node.find_ideal_forward(a.hashkeyID) try: distribution[dest].append(a) except KeyError: distribution[dest] = [a] return distribution