diff --git a/lib/jqueue.py b/lib/jqueue.py
index dcdce1e28ed84fafe5ed8e899503bebb15f4a800..7e396b0076df3edddc09f39bdf7153f606f41508 100644
--- a/lib/jqueue.py
+++ b/lib/jqueue.py
@@ -359,6 +359,8 @@ class _JobQueueWorker(workerpool.BaseWorker):
 
             queue.acquire()
             try:
+              if op.status == constants.OP_STATUS_CANCELED:
+                raise CancelJob()
               assert op.status == constants.OP_STATUS_QUEUED
               job.run_op_index = idx
               op.status = constants.OP_STATUS_WAITLOCK
@@ -1120,7 +1122,7 @@ class JobQueue(object):
     """
     try:
       for op in job.ops:
-        op.status = constants.OP_STATUS_ERROR
+        op.status = constants.OP_STATUS_CANCELED
         op.result = "Job canceled by request"
     finally:
       self.UpdateJobUnlocked(job)