Add explicit transactions for certain tasks

This commit is contained in:
tcely 2025-03-09 21:47:48 -04:00 committed by GitHub
parent ed3c7c6e9d
commit 58472f7785
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -17,6 +17,7 @@ from django.conf import settings
from django.core.files.base import ContentFile from django.core.files.base import ContentFile
from django.core.files.uploadedfile import SimpleUploadedFile from django.core.files.uploadedfile import SimpleUploadedFile
from django.utils import timezone from django.utils import timezone
from django.db.tansaction import atomic
from django.db.utils import IntegrityError from django.db.utils import IntegrityError
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
from background_task import background from background_task import background
@ -179,6 +180,7 @@ def cleanup_removed_media(source, videos):
@background(schedule=300, remove_existing_tasks=True) @background(schedule=300, remove_existing_tasks=True)
@atomic(durable=True)
def index_source_task(source_id): def index_source_task(source_id):
''' '''
Indexes media available from a Source object. Indexes media available from a Source object.
@ -221,6 +223,7 @@ def index_source_task(source_id):
if published_dt is not None: if published_dt is not None:
media.published = published_dt media.published = published_dt
try: try:
with atomic():
media.save() media.save()
log.debug(f'Indexed media: {source} / {media}') log.debug(f'Indexed media: {source} / {media}')
# log the new media instances # log the new media instances
@ -611,6 +614,7 @@ def save_all_media_for_source(source_id):
# Trigger the post_save signal for each media item linked to this source as various # Trigger the post_save signal for each media item linked to this source as various
# flags may need to be recalculated # flags may need to be recalculated
with atomic():
for media in mqs: for media in mqs:
if media.uuid not in already_saved: if media.uuid not in already_saved:
media.save() media.save()
@ -626,6 +630,7 @@ def rename_media(media_id):
@background(schedule=300, remove_existing_tasks=True) @background(schedule=300, remove_existing_tasks=True)
@atomic(durable=True)
def rename_all_media_for_source(source_id): def rename_all_media_for_source(source_id):
try: try:
source = Source.objects.get(pk=source_id) source = Source.objects.get(pk=source_id)
@ -653,6 +658,7 @@ def rename_all_media_for_source(source_id):
downloaded=True, downloaded=True,
) )
for media in mqs: for media in mqs:
with atomic():
media.rename_files() media.rename_files()