From d8fba3d2ca7714493d2bd71019026eef313a538c Mon Sep 17 00:00:00 2001 From: Sam Thursfield Date: Tue, 17 Feb 2015 16:22:06 +0000 Subject: distbuild: remove old routes from route map in worker-daemon Also, warn if process or response messages are received for requests that have already completed or been cancelled. This won't gain much performance-wise, and I don't think that this kind of error is taking place at the moment, but should make it easier to spot if things aren't working as expected in future. --- distbuild/json_router.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/distbuild/json_router.py b/distbuild/json_router.py index 8b7b6457..5bbb8fb9 100644 --- a/distbuild/json_router.py +++ b/distbuild/json_router.py @@ -93,6 +93,8 @@ class JsonRouter(distbuild.StateMachine): new['id'] = id helper.send(new) logging.debug('JsonRouter: sent to helper: %s', repr(new)) + else: + logging.warn('do_cancel: Request %s is not running.' % id) def do_response(self, helper, event): t = self._lookup_request(event.msg['id']) @@ -102,6 +104,10 @@ class JsonRouter(distbuild.StateMachine): new['id'] = self.route_map.get_incoming_id(msg['id']) client.send(new) logging.debug('JsonRouter: sent to client: %s', repr(new)) + self.route_map.remove(msg['id']) + else: + logging.warn('do_response: Request %s is not running.' % + event.msg['id']) def do_helper_ready(self, helper, event): self.pending_helpers.append(helper) @@ -116,6 +122,9 @@ class JsonRouter(distbuild.StateMachine): new['id'] = self.route_map.get_incoming_id(msg['id']) client.send(new) logging.debug('JsonRouter: sent to client: %s', repr(new)) + else: + logging.warn('do_exec_output: Request %s is not running.' % + event.msg['id']) def close(self, event_source, event): logging.debug('closing: %s', repr(event_source)) @@ -130,6 +139,7 @@ class JsonRouter(distbuild.StateMachine): # client quit). for request_id in self.running_requests.keys(): client, msg, helper = self.running_requests[request_id] + self.route_map.remove(msg['id']) if event_source == client: del self.running_requests[request_id] elif event_source == helper: @@ -141,6 +151,7 @@ class JsonRouter(distbuild.StateMachine): while i < len(self.pending_requests): client, msg = self.pending_requests[i] if event_source == client: + self.route_map.remove(msg['id']) del self.pending_requests[i] else: i += 1 -- cgit v1.2.1