From 4655ec140e84623d855d89339fc71ccc421aa9d1 Mon Sep 17 00:00:00 2001 From: tcely Date: Wed, 23 Sep 2026 10:52:23 -0400 Subject: [PATCH] fix: lock the source while deleting This prevents `save_all_media_for_source` from running while we are trying to delete the media instances. --- tubesync/sync/tasks.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tubesync/sync/tasks.py b/tubesync/sync/tasks.py index 1021c9e3..1ff4d7c3 100644 --- a/tubesync/sync/tasks.py +++ b/tubesync/sync/tasks.py @@ -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)