Browse Source

changes to manual_discovery config based on PR comments

Ian Paul 9 months ago
parent
commit
5e47413552

+ 22 - 15
exo/networking/manual/manual_discovery.py

@@ -51,24 +51,31 @@ class ManualDiscovery(Discovery):
         await asyncio.sleep(0.1)
     return list(self.known_peers.values())
 
+
   async def task_find_peers_from_config(self):
     if DEBUG_DISCOVERY >= 2: print("Starting task to find peers from config...")
     while True:
       for peer_id, peer_config in self.peers_in_network.items():
-        if DEBUG_DISCOVERY >= 2: print(f"Checking peer {peer_id=} at {peer_config.address}:{peer_config.port}")
-        peer = self.known_peers.get(peer_id)
-        if not peer:
-          if DEBUG_DISCOVERY >= 2: print(f"{peer_id=} not found in known peers. Adding.")
-          new_peer_handle = self.create_peer_handle(peer_id, f"{peer_config.address}:{peer_config.port}", peer_config.device_capabilities)
-          self.known_peers[peer_id] = new_peer_handle
-          peer = new_peer_handle
-
-        is_healthy = await peer.health_check()
-        if not is_healthy:
-          if DEBUG_DISCOVERY >= 2: print(f"{peer_id=} at {peer_config.address}:{peer_config.port} is not healthy. Removing.")
-          del self.known_peers[peer_id]
-        elif DEBUG_DISCOVERY >= 2: print(f"{peer_id=} at {peer_config.address}:{peer_config.port} is healthy.")
+        try:
+          if DEBUG_DISCOVERY >= 2: print(f"Checking peer {peer_id=} at {peer_config.address}:{peer_config.port}")
+          peer = self.known_peers.get(peer_id)
+          if not peer:
+            if DEBUG_DISCOVERY >= 2: print(f"{peer_id=} not found in known peers. Adding.")
+            peer = self.create_peer_handle(peer_id, f"{peer_config.address}:{peer_config.port}", peer_config.device_capabilities)  
+          is_healthy = await peer.health_check()
+          if is_healthy:
+            if DEBUG_DISCOVERY >= 2: print(f"{peer_id=} at {peer_config.address}:{peer_config.port} is healthy.")
+            self.known_peers[peer_id] = peer
+          else:
+            if DEBUG_DISCOVERY >= 2: print(f"{peer_id=} at {peer_config.address}:{peer_config.port} is not healthy.")
+            try:
+              del self.known_peers[peer_id]
+            except KeyError:
+              pass  # peer was never added, so nothing to delete
+        except Exception as e:
+            if DEBUG_DISCOVERY >=2: print(f"Exception occured when attempting to add {peer_id=}: {e}")
+        finally:
+          await asyncio.sleep(self.discovery_timeout)
 
-        if DEBUG_DISCOVERY >= 2: print(f"Current known peers: {[peer.id() for peer in self.known_peers.values()]}")
+      if DEBUG_DISCOVERY >= 2: print(f"Current known peers: {[peer.id() for peer in self.known_peers.values()]}")
 
-      await asyncio.sleep(self.discovery_timeout)

+ 0 - 1
exo/networking/manual/network_topology_config.py

@@ -1,4 +1,3 @@
-import json
 from typing import Dict
 from pydantic import BaseModel, ValidationError
 

+ 0 - 2
exo/networking/manual/test_network_topology_config.py

@@ -1,7 +1,5 @@
 import unittest
-import json
 
-from pydantic import ValidationError
 from exo.networking.manual.network_topology_config import NetworkTopology
 
 root_path = "./exo/networking/manual/test_data/"