From 15166a77d7f3291098d58b3a4e821cb5bd655228 Mon Sep 17 00:00:00 2001 From: Gabriel Levcovitz Date: Mon, 3 Apr 2023 13:36:15 -0300 Subject: [PATCH 1/4] bugfix: fix import order --- hathor/cli/events_simulator/events_simulator.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/hathor/cli/events_simulator/events_simulator.py b/hathor/cli/events_simulator/events_simulator.py index 207618de8..a265449a8 100644 --- a/hathor/cli/events_simulator/events_simulator.py +++ b/hathor/cli/events_simulator/events_simulator.py @@ -14,12 +14,11 @@ from argparse import ArgumentParser, Namespace -from hathor.cli.events_simulator.scenario import Scenario - DEFAULT_PORT = 8080 def create_parser() -> ArgumentParser: + from hathor.cli.events_simulator.scenario import Scenario from hathor.cli.util import create_parser parser = create_parser() From 4e7941fc6cfc4d6d5051066dc269b4ad256f67a3 Mon Sep 17 00:00:00 2001 From: Gabriel Levcovitz Date: Mon, 3 Apr 2023 13:36:30 -0300 Subject: [PATCH 2/4] bugfix: fix start order --- hathor/manager.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/hathor/manager.py b/hathor/manager.py index 89678dcd7..ef04a2a7e 100644 --- a/hathor/manager.py +++ b/hathor/manager.py @@ -269,6 +269,9 @@ def start(self) -> None: ) sys.exit(-1) + if self._event_manager: + self._event_manager.start(not_none(self.my_peer.id)) + self.state = self.NodeState.INITIALIZING self.pubsub.publish(HathorEvents.MANAGER_ON_START) self.connections.start() @@ -305,9 +308,6 @@ def start(self) -> None: if self.stratum_factory: self.stratum_factory.start() - if self._event_manager: - self._event_manager.start(not_none(self.my_peer.id)) - # Start running self.tx_storage.start_running_manager() From c8bb5feb0c77123b2f59dc3448260a0be9059fcc Mon Sep 17 00:00:00 2001 From: Gabriel Levcovitz Date: Mon, 3 Apr 2023 13:52:46 -0300 Subject: [PATCH 3/4] bugfix: add start assertion to EventManager --- hathor/event/event_manager.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/hathor/event/event_manager.py b/hathor/event/event_manager.py index c29a76f9b..1eb3fdf11 100644 --- a/hathor/event/event_manager.py +++ b/hathor/event/event_manager.py @@ -54,6 +54,7 @@ class EventManager: """ _peer_id: str + _is_running: bool = False _load_finished: bool = False @property @@ -85,9 +86,11 @@ def __init__( def start(self, peer_id: str) -> None: self._peer_id = peer_id self._event_ws_factory.start() + self._is_running = True def stop(self): self._event_ws_factory.stop() + self._is_running = False def _assert_closed_event_group(self): # XXX: we must check that the last event either does not belong to an event group or that it just closed an @@ -110,6 +113,8 @@ def _subscribe_events(self): self._pubsub.subscribe(event, self._handle_event) def _handle_event(self, event_type: HathorEvents, event_args: EventArguments) -> None: + assert self._is_running, 'Cannot handle event, EventManager is not started.' + event_type = _EVENT_CONVERTERS.get(event_type, event_type) event_specific_handlers = { HathorEvents.LOAD_FINISHED: self._handle_load_finished From 406eb9372fa6db020efd35ec21377c4b73958da5 Mon Sep 17 00:00:00 2001 From: Gabriel Levcovitz Date: Mon, 10 Apr 2023 17:04:34 -0300 Subject: [PATCH 4/4] bugfix: add start/stop assertions --- hathor/event/event_manager.py | 4 ++++ hathor/event/websocket/factory.py | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/hathor/event/event_manager.py b/hathor/event/event_manager.py index 1eb3fdf11..458d4878e 100644 --- a/hathor/event/event_manager.py +++ b/hathor/event/event_manager.py @@ -84,11 +84,15 @@ def __init__( self._subscribe_events() def start(self, peer_id: str) -> None: + assert self._is_running is False, 'Cannot start, EventManager is already running' + self._peer_id = peer_id self._event_ws_factory.start() self._is_running = True def stop(self): + assert self._is_running is True, 'Cannot stop, EventManager is not running' + self._event_ws_factory.stop() self._is_running = False diff --git a/hathor/event/websocket/factory.py b/hathor/event/websocket/factory.py index ed5af01e7..41b19dd14 100644 --- a/hathor/event/websocket/factory.py +++ b/hathor/event/websocket/factory.py @@ -48,10 +48,14 @@ def __init__(self, reactor: Reactor, event_storage: EventStorage): def start(self): """Start the WebSocket server. Required to be able to send events.""" + assert self._is_running is False, 'Cannot start, EventWebsocketFactory is already running' + self._is_running = True def stop(self): """Stop the WebSocket server. No events can be sent.""" + assert self._is_running is True, 'Cannot stop, EventWebsocketFactory is not running' + self._is_running = False for connection in self._connections: