summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam Thursfield <sam.thursfield@codethink.co.uk>2015-02-17 16:22:06 +0000
committerSam Thursfield <sam.thursfield@codethink.co.uk>2015-02-17 17:07:48 +0000
commitd8fba3d2ca7714493d2bd71019026eef313a538c (patch)
tree1e051208b316ffdab94f9f1b4517b7d8ba30e6cb
parentc61b119df17dd8514e20adcc55855fa96e6bc3d8 (diff)
downloadmorph-d8fba3d2ca7714493d2bd71019026eef313a538c.tar.gz
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.
-rw-r--r--distbuild/json_router.py11
1 files changed, 11 insertions, 0 deletions
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