Update peer.py
This commit is contained in:
1 parent
9f085ea1b6
commit
00fec9b46c
1 file changed
+16
-4
+16
-4
@@ -20,6 +20,7 @@ RETRY_INTERVAL = 5.0
|
|||||||
FANOUT = 1
|
FANOUT = 1
|
||||||
|
|
||||||
members_list = {}
|
members_list = {}
|
||||||
|
dead_members = set()
|
||||||
members_list_lock = threading.Lock()
|
members_list_lock = threading.Lock()
|
||||||
|
|
||||||
SELF_ID = (IP, SERVER_PORT, utc_time())
|
SELF_ID = (IP, SERVER_PORT, utc_time())
|
||||||
@@ -63,6 +64,9 @@ def worker_1():
|
|||||||
join_id = (join_ip, join_port, join_timestamp)
|
join_id = (join_ip, join_port, join_timestamp)
|
||||||
|
|
||||||
with members_list_lock:
|
with members_list_lock:
|
||||||
|
if join_id in dead_ids:
|
||||||
|
continue
|
||||||
|
|
||||||
if join_id not in members_list:
|
if join_id not in members_list:
|
||||||
members_list[join_id] = {
|
members_list[join_id] = {
|
||||||
"heart_beat": 1,
|
"heart_beat": 1,
|
||||||
@@ -107,13 +111,21 @@ def worker_1():
|
|||||||
incoming_state = member['state']
|
incoming_state = member['state']
|
||||||
incoming_hb = member['heart_beat']
|
incoming_hb = member['heart_beat']
|
||||||
|
|
||||||
if member_id not in members_list and incoming_state != "failed":
|
if member_id in dead_ids:
|
||||||
|
continue
|
||||||
|
|
||||||
|
if member_id not in members_list:
|
||||||
|
|
||||||
|
if incoming_state == "failed":
|
||||||
|
dead_ids.add(member_id)
|
||||||
|
continue
|
||||||
|
|
||||||
members_list[member_id] = {
|
members_list[member_id] = {
|
||||||
"heart_beat": incoming_hb,
|
"heart_beat": incoming_hb,
|
||||||
"local_last_seen": utc_time(),
|
"local_last_seen": utc_time(),
|
||||||
"state": incoming_state,
|
"state": incoming_state,
|
||||||
"local_failed_since" : utc_time() if incoming_state == "failed" else None,
|
"local_failed_since": None,
|
||||||
"local_suspected_since" : None
|
"local_suspected_since": None
|
||||||
}
|
}
|
||||||
continue
|
continue
|
||||||
|
|
||||||
@@ -209,8 +221,8 @@ def worker_4():
|
|||||||
to_remove.append(member_id)
|
to_remove.append(member_id)
|
||||||
|
|
||||||
for member_id in to_remove:
|
for member_id in to_remove:
|
||||||
|
dead_ids.add(member_id)
|
||||||
del members_list[member_id]
|
del members_list[member_id]
|
||||||
print(f"Purged member {member_id} from list.")
|
|
||||||
|
|
||||||
time.sleep(0.5)
|
time.sleep(0.5)
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user