diff --git a/buildgrid/server/scheduler.py b/buildgrid/server/scheduler.py
index a9740384b205d57076cf44bc01a1f3720c675ed1..93b826e7f5ba181baab666d2ec28b5563cec51e6 100644
--- a/buildgrid/server/scheduler.py
+++ b/buildgrid/server/scheduler.py
@@ -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
diff --git a/buildgrid/server/worker/bots_interface.py b/buildgrid/server/worker/bots_interface.py
index 3937108b9bf06c4780172a50da6eab5a4d5b7c2a..9ebbc7dca48c0c8160be33f82032a9d77d687b4b 100644
--- a/buildgrid/server/worker/bots_interface.py
+++ b/buildgrid/server/worker/bots_interface.py
@@ -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: