Ejemplo n.º 1
0
 def perform_put(self, *data):
     dict = data[0]
     key = dict.key
     preference_list = self.hash_ring.get_node(key, self.failed_nodes)
     if (self not in preference_list):
         coordinator = preference_list[0].id
         dict = Request("FORWARD-PUT", dict.key, dict.value,
                        generate_random_number(), dict.client)
         Messaging.send_message(self, coordinator, dict)
         time.sleep(3)
         if REQUESTS.get(dict.request, False) != True:
             #print("Timedout PUT")
             dict.action = "PUT"
             dict.request = generate_random_number()
             self.socket.settimeout(None)
             self.failed_nodes.append(coordinator)
             self.perform_put(dict)
     else:
         self.vector_clock.update(self.id, self.get_sequence_no())
         metadata = deepcopy(self.vector_clock)
         if dict.value[1] > metadata:
             metadata = dict.value[1]
         dict.value = (dict.value[0], metadata)
         dict.request = generate_random_number()
         Messaging.broadcast_put(self, preference_list, dict)
Ejemplo n.º 2
0
 def perform_get(self, dict):
     key = dict.key
     preference_list = self.hash_ring.get_node(key, self.failed_nodes)
     if (self not in preference_list):
         coordinator = preference_list[0].id
         dict = Request("FORWARD-GET", dict.key, dict.value,
                        generate_random_number(), dict.client)
         Messaging.send_message(self, coordinator, dict)
         time.sleep(3)
         if REQUESTS.get(dict.request, False) != True:
             #print("Timedout GET")
             dict.action = "GET"
             dict.request = generate_random_number()
             self.failed_nodes.append(coordinator)
             self.perform_get(dict)
     else:
         dict.request = generate_random_number()
         Messaging.broadcast_get(self, preference_list, dict)