Skip to content

Commit a31dbac

Browse files
committed
fixed typos, added log for deref handler, restructured start dependency order so that the handshaker runs before other components which make network requests, temporarily removed handshaker from error handler, fixed var name typo in sync manager which never matched any nodes to catch up with, node contact handler now skips partial nodes instead of raising a warning log
1 parent ac31b23 commit a31dbac

8 files changed

Lines changed: 22 additions & 25 deletions

File tree

src/koi_net/components/effector.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ class Effector:
3131

3232
def register_handler(self, handler: "DerefHandler"):
3333
self.deref_handlers.append(handler)
34+
self.log.info(f"Registered deref handler {handler.__class__.__name__}")
3435

3536
def _try_cache(self, rid: RID) -> tuple[Bundle, BundleSource] | None:
3637
bundle = self.cache.read(rid)

src/koi_net/components/error_handler.py

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
from koi_net.protocol.errors import ErrorType
77
from koi_net.protocol.event import EventType
88

9-
from .handshaker import Handshaker
109
from .kobj_queue import KobjQueue
1110

1211

@@ -15,7 +14,6 @@ class ErrorHandler:
1514
"""Handles network and protocol errors that may occur during requests."""
1615
log: Logger
1716
kobj_queue: KobjQueue
18-
handshaker: Handshaker
1917

2018
timeout_counter: dict[KoiNetNode, int] = field(init=False, default_factory=dict)
2119

@@ -51,10 +49,7 @@ def handle_protocol_error(
5149

5250
self.log.info(f"Handling protocol error {error_type} for node {node!r}")
5351
match error_type:
54-
case ErrorType.UnknownNode:
55-
self.log.info("Peer doesn't know me, attempting handshake...")
56-
self.handshaker.handshake_with(node)
57-
52+
case ErrorType.UnknownNode: ...
5853
case ErrorType.InvalidKey: ...
5954
case ErrorType.InvalidSignature: ...
6055
case ErrorType.InvalidTarget: ...

src/koi_net/components/handshaker.py

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
from .graph import NetworkGraph
1111
from .identity import NodeIdentity
12-
from .event_queue import EventQueue
12+
from .request_handler import RequestHandler
1313

1414

1515
@dataclass
@@ -19,9 +19,9 @@ class Handshaker:
1919
log: Logger
2020
cache: Cache
2121
identity: NodeIdentity
22-
event_queue: EventQueue
2322
config: BaseNodeConfig
2423
graph: NetworkGraph
24+
request_handler: RequestHandler
2525

2626
@depends_on("graph", "profile_monitor", "server", "event_worker")
2727
def start(self):
@@ -51,15 +51,14 @@ def handshake_with(self, target: KoiNetNode):
5151
"""
5252

5353
self.log.debug(f"Initiating handshake with {target}")
54-
self.event_queue.push(
55-
Event.from_rid(
56-
event_type=EventType.FORGET,
57-
rid=self.identity.rid),
58-
target=target
59-
)
60-
self.event_queue.push(
61-
event=Event.from_bundle(
62-
event_type=EventType.NEW,
63-
bundle=self.cache.read(self.identity.rid)),
64-
target=target
54+
self.request_handler.broadcast_events(
55+
node=target,
56+
events=[
57+
Event.from_rid(
58+
event_type=EventType.FORGET,
59+
rid=self.identity.rid),
60+
Event.from_bundle(
61+
event_type=EventType.NEW,
62+
bundle=self.cache.read(self.identity.rid))
63+
]
6564
)

src/koi_net/components/knowledge_handlers/node_contact_handler.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@ def process_node(self, node_rid: KoiNetNode, node_bundle: Bundle):
3636

3737
node_profile = node_bundle.validate_contents(NodeProfile)
3838

39+
if node_profile.node_type is NodeType.PARTIAL:
40+
return
41+
3942
# None indicates interest in all types, while an empty list would indicate interest in no types
4043
if self.config.koi_net.rid_types_of_interest is None:
4144
available_rid_types = node_profile.provides.event

src/koi_net/components/kobj_queue.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,5 +59,4 @@ def wait(self):
5959
if self.q.unfinished_tasks == 0:
6060
return
6161

62-
print("WAIT FAILED")
6362
raise RuntimeError("Shutdown while awaiting queue")

src/koi_net/components/poller.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ def run(self):
3636
wait_time = max(0, self.config.poller.polling_interval - elapsed)
3737
self.exit_event.wait(wait_time)
3838

39-
@depends_on("graph")
39+
@depends_on("graph", "profile_monitor")
4040
def start(self):
4141
self.exit_event.clear()
4242
super().start()

src/koi_net/components/secure_manager.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ def load_priv_key(self):
8181
raise
8282

8383
def handle_unknown_node(self, envelope: SignedEnvelope) -> Bundle | None:
84-
"""Attempts to find node profile in proided envelope.
84+
"""Attempts to find node profile in provided envelope.
8585
8686
If an unknown node sends an envelope, it may still be able to be
8787
validated if that envelope contains their node profile. This is
@@ -97,7 +97,7 @@ def handle_unknown_node(self, envelope: SignedEnvelope) -> Bundle | None:
9797
if event.rid != envelope.source_node:
9898
continue
9999
if event.event_type != EventType.NEW:
100-
continue
100+
continue
101101

102102
return event.bundle
103103
return None

src/koi_net/components/sync_manager.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,15 @@ class SyncManager:
2424
request_handler: RequestHandler
2525
kobj_queue: KobjQueue
2626

27-
@depends_on("graph", "kobj_worker")
27+
@depends_on("graph", "kobj_worker", "handshaker")
2828
def start(self):
2929
"""Catches up with providers on startup."""
3030
self.catch_up_with_all(self.config.koi_net.rid_types_of_interest)
3131

3232
def catch_up_with_all(self, rid_types: list[RIDType]):
3333
node_providers = []
3434
for rid_type in rid_types:
35-
providers = self.graph.get_neighbors(
35+
node_providers = self.graph.get_neighbors(
3636
direction="in",
3737
allowed_type=rid_type
3838
)

0 commit comments

Comments
 (0)