Moving task cache update into task creation transaction
Doing this we avoid inclusion of task cache update statement into the next transaction which may cause different problems such as deadlock. In this particular case we've got the following deadlock: 1. DeleteIBPImagesTask makes UPDATE tasks SET cache.... 2. Response handler in receiver makes SELECT clusters FOR UPDATE 3. The code following DeleteIBPImagesTask makes SELECT clusters FOR UPDATE 4. Response handler performs SELECTS tasks FOR UPDATE Change-Id: Ic8e5f2386364421b0667f920499e031f587f726e Closes-Bug: #1653083
This commit is contained in:
parent
542b8558f2
commit
ff04eb8394
|
@ -909,8 +909,9 @@ class DeleteIBPImagesTask(object):
|
|||
def execute(cls, cluster, image_data):
|
||||
task = Task(name=consts.TASK_NAMES.remove_images, cluster=cluster)
|
||||
db().add(task)
|
||||
message = cls.message(task, image_data)
|
||||
db().commit()
|
||||
rpc.cast('naily', cls.message(task, image_data))
|
||||
rpc.cast('naily', message)
|
||||
|
||||
|
||||
class StopDeploymentTask(object):
|
||||
|
|
Loading…
Reference in New Issue