From 7d14b7e578640e9b7c500cbee0dd42f7ef88e726 Mon Sep 17 00:00:00 2001 From: Richard Ipsum Date: Mon, 5 May 2014 19:45:52 +0100 Subject: Use messages to update job state --- distbuild/worker_build_scheduler.py | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) (limited to 'distbuild') diff --git a/distbuild/worker_build_scheduler.py b/distbuild/worker_build_scheduler.py index 79180843..7f813251 100644 --- a/distbuild/worker_build_scheduler.py +++ b/distbuild/worker_build_scheduler.py @@ -165,6 +165,18 @@ class _BuildCancelled(object): class _Cached(object): pass + + +class _ExecStarted(object): + + def __init__(self, job): + self.job = job + + +class _ExecEnded(object): + + def __init__(self, job): + self.job = job class WorkerBuildQueuer(distbuild.StateMachine): @@ -197,10 +209,20 @@ class WorkerBuildQueuer(distbuild.StateMachine): self._handle_cancel), ('idle', WorkerConnection, _NeedJob, 'idle', self._handle_worker), + ('idle', WorkerConnection, _ExecStarted, 'idle', + self._set_exec_started), + ('idle', WorkerConnection, _ExecEnded, 'idle', + self._set_exec_ended), ] self.add_transitions(spec) + def _set_exec_started(self, event_source, event): + logging.debug('Setting job state: Job is building') + event.job.is_building = True + def _set_exec_ended(self, event_source, event): + logging.debug('Setting job state: Job is NOT building') + event.job.is_building = False def _handle_request(self, event_source, event): distbuild.crash_point() @@ -443,8 +465,7 @@ class WorkerConnection(distbuild.StateMachine): started = WorkerBuildStepStarted(self._job.initiators, self._job.artifact.cache_key, self.name()) - self._job.is_building = True - + self.mainloop.queue_event(WorkerConnection, _ExecStarted(self._job)) self.mainloop.queue_event(WorkerConnection, started) def _handle_json_message(self, event_source, event): @@ -489,7 +510,7 @@ class WorkerConnection(distbuild.StateMachine): self.mainloop.queue_event(self, _BuildFinished()) self._exec_response_msg = new - self._job.is_building = False + self.mainloop.queue_event(WorkerConnection, _ExecEnded(self._job)) def _request_job(self, event_source, event): distbuild.crash_point() -- cgit v1.2.1