Skip to content
Snippets Groups Projects
Commit 473852e5 authored by finnball's avatar finnball Committed by finn
Browse files

Fixed race condition.

If a job was marked as completed, it may be destroyed before
it had time to update the lease state.
parent 9948d3a7
No related branches found
No related tags found
Loading
Pipeline #29896732 passed
......@@ -82,13 +82,10 @@ class Scheduler:
job.n_tries += 1
self.queue.appendleft(job)
self.jobs[name] = job
def job_complete(self, name, result):
job = self.jobs[name]
job.result = result
job.update_execute_stage(ExecuteStage.COMPLETED)
self.jobs[name] = job
if not job.do_not_cache and self._action_cache is not None:
self._action_cache.update_action_result(job.action_digest, result)
......@@ -101,7 +98,6 @@ class Scheduler:
def update_job_lease_state(self, name, state):
job = self.jobs[name]
job.lease.state = state
self.jobs[name] = job
def get_job_lease(self, name):
return self.jobs[name].lease
......@@ -118,5 +114,4 @@ class Scheduler:
job.update_execute_stage(ExecuteStage.EXECUTING)
job.lease = job.create_lease()
job.lease.state = LeaseState.PENDING.value
self.jobs[job.name] = job
yield job.lease
......@@ -113,8 +113,8 @@ class BotsInterface:
pass
elif client_state == LeaseState.COMPLETED:
self._scheduler.job_complete(client_lease.id, client_lease.result)
self._scheduler.update_job_lease_state(client_lease.id, client_lease.state)
self._scheduler.job_complete(client_lease.id, client_lease.result)
return None
else:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment