fix: lock the source while deleting

This prevents `save_all_media_for_source` from running while we are trying to delete the media instances.
This commit is contained in:
tcely
2026-09-23 10:52:23 -04:00
committed by GitHub
parent bcb331429e
commit 4655ec140e

View File

@@ -1379,6 +1379,12 @@ def delete_all_media_for_source(source_id, source_name, source_directory):
log.warning(f'Task delete_all_media_for_source(pk={source_id}) called but no '
f'source exists with ID: {source_id}')
# this task can run after a source was deleted
if source:
source_lock = huey_lock_task(
f'source:{source.uuid}',
queue=Val(TaskQueue.FS),
)
source_lock.acquired = True
mqs = Media.objects.all().defer(
'metadata',
).filter(
@@ -1402,6 +1408,7 @@ def delete_all_media_for_source(source_id, source_name, source_directory):
if source:
with atomic(durable=True):
source.delete()
source_lock.acquired = False
if remove:
log.info(f'Deleting directory for: {source_name}: {directory_path}')
rmtree(directory_path, True)