From 70d6e38f57489828ee297f991c8b544b5aa0af4e Mon Sep 17 00:00:00 2001 From: Matthew Jones Date: Mon, 19 Jan 2015 15:37:29 -0500 Subject: [PATCH] Wrap computed fields in transaction atomic to prevent deadlocks and weird rollbacks --- awx/main/models/inventory.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/awx/main/models/inventory.py b/awx/main/models/inventory.py index 26525bc6a5..3fb5be3bb5 100644 --- a/awx/main/models/inventory.py +++ b/awx/main/models/inventory.py @@ -19,6 +19,7 @@ from django.conf import settings from django.db import models, connection from django.db.models import Q from django.utils.translation import ugettext_lazy as _ +from django.db import transaction from django.core.exceptions import ValidationError, NON_FIELD_ERRORS from django.core.urlresolvers import reverse from django.contrib.auth.models import User @@ -535,6 +536,7 @@ class Group(CommonModelNameNotUnique): def get_absolute_url(self): return reverse('api:group_detail', args=(self.pk,)) + @transaction.atomic def mark_inactive_recursive(self): from awx.main.tasks import update_inventory_computed_fields, bulk_inventory_element_delete from awx.main.utils import ignore_inventory_computed_fields