From 023ddd182f330f474db137341887b0293924271c Mon Sep 17 00:00:00 2001 From: Lukas Date: Wed, 10 Jun 2026 18:20:04 +0200 Subject: [PATCH] fix(initialization): remove duplicate nfo_scan progress completion The nfo_scan_completed event handler was calling complete_progress() which removed the progress before _execute_nfo_scan returned. This caused perform_nfo_scan_phase to fail with 'Progress with id nfo_scan not found' when it tried to complete the same progress. Completion is now only handled by perform_nfo_scan_phase after _execute_nfo_scan returns, as intended. --- src/server/services/initialization_service.py | 43 +++++++++++-------- 1 file changed, 26 insertions(+), 17 deletions(-) diff --git a/src/server/services/initialization_service.py b/src/server/services/initialization_service.py index 840e9c7..6bdad82 100644 --- a/src/server/services/initialization_service.py +++ b/src/server/services/initialization_service.py @@ -478,13 +478,8 @@ async def _execute_nfo_scan(progress_service=None) -> None: key=data.get('key'), folder=data.get('folder'), ) - elif event_data.get('type') == 'nfo_scan_completed': - stats = event_data.get('statistics', {}) - if progress_service: - await progress_service.complete_progress( - progress_id="nfo_scan", - message=f"NFO scan complete: {stats.get('created', 0)} created, {stats.get('updated', 0)} updated", - ) + # Note: nfo_scan_completed event is NOT handled here because + # perform_nfo_scan_phase handles completion after _execute_nfo_scan returns nfo_service.subscribe_to_scan_events(nfo_event_handler) @@ -551,11 +546,18 @@ async def perform_nfo_scan_if_needed(progress_service=None): except Exception as e: logger.error("Failed to complete NFO scan: %s", e, exc_info=True) if progress_service: - await progress_service.fail_progress( - progress_id="nfo_scan", - error_message=f"NFO scan failed: {str(e)}", - metadata={"step_id": "nfo_scan"} - ) + try: + await progress_service.fail_progress( + progress_id="nfo_scan", + error_message=f"NFO scan failed: {str(e)}", + metadata={"step_id": "nfo_scan"} + ) + except Exception as fail_err: + logger.warning( + "Could not fail progress 'nfo_scan': %s", + fail_err, + exc_info=True + ) async def perform_nfo_scan_phase(progress_service=None): @@ -627,11 +629,18 @@ async def perform_nfo_scan_phase(progress_service=None): except Exception as e: logger.error("Failed to complete NFO scan phase: %s", e, exc_info=True) if progress_service: - await progress_service.fail_progress( - progress_id="nfo_scan", - error_message=f"NFO scan failed: {str(e)}", - metadata={"step_id": "nfo_scan", "phase": "nfo"} - ) + try: + await progress_service.fail_progress( + progress_id="nfo_scan", + error_message=f"NFO scan failed: {str(e)}", + metadata={"step_id": "nfo_scan", "phase": "nfo"} + ) + except Exception as fail_err: + logger.warning( + "Could not fail progress 'nfo_scan': %s", + fail_err, + exc_info=True + ) async def _check_media_scan_status() -> bool: