Skip to content

Commit 1df3f99

Browse files
committed
Implement bugbot review comments
1 parent 4d7c31c commit 1df3f99

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

ansible_base/resource_registry/models/service_identifier.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import uuid
33

44
from django.conf import settings
5-
from django.db import models
5+
from django.db import IntegrityError, models, transaction
66

77

88
class ServiceID(models.Model):
@@ -27,8 +27,13 @@ def service_id():
2727
if not _service_id:
2828
obj = ServiceID.objects.first()
2929
if obj is None:
30-
if settings.DEBUG or any("pytest" in arg for arg in sys.argv):
31-
obj = ServiceID.objects.create()
30+
if settings.DEBUG or "pytest" in sys.argv:
31+
try:
32+
with transaction.atomic():
33+
obj = ServiceID.objects.create(pk=1)
34+
except IntegrityError:
35+
# Another thread/process won the race—read it
36+
obj = ServiceID.objects.get(pk=1)
3237
else:
3338
raise RuntimeError('Expected ServiceID to be created in data migrations but was not found')
3439
_service_id = str(obj.pk)

0 commit comments

Comments
 (0)