diff options
author | Richard Ipsum <richard.ipsum@codethink.co.uk> | 2014-05-05 19:45:52 +0100 |
---|---|---|
committer | Richard Ipsum <richard.ipsum@codethink.co.uk> | 2014-05-06 18:05:33 +0100 |
commit | 7d14b7e578640e9b7c500cbee0dd42f7ef88e726 (patch) | |
tree | 8c53f6b60ec985fcfa6a8ad2a29d88120b8c0952 /distbuild/worker_build_scheduler.py | |
parent | ee252ff578a83a801730e6f72dbcdc274f2e26d1 (diff) | |
download | morph-7d14b7e578640e9b7c500cbee0dd42f7ef88e726.tar.gz |
Use messages to update job state
Diffstat (limited to 'distbuild/worker_build_scheduler.py')
-rw-r--r-- | distbuild/worker_build_scheduler.py | 27 |
1 files changed, 24 insertions, 3 deletions
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() |