fix: reset queue progress flag after queue completes
- Reset _queue_progress_initialized after each queue run so the next run re-creates the 'download_queue' progress entry - Handle 'already exists' ProgressServiceError in _init_queue_progress as a no-op success to cover concurrent-start edge cases - Guard stop_downloads() progress update to avoid crashing when the entry was never created
This commit is contained in:
@@ -121,4 +121,96 @@ For each task completed:
|
||||
|
||||
---
|
||||
|
||||
~~fix: on new added animes for the nfo the property plot is not loaded and written in nfo. make sure all properties are written on nfo creation~~ ✅ DONE
|
||||
fix: download not working:
|
||||
|
||||
elf.\_progress_service.update_progress(
|
||||
|
||||
File "/app/src/server/services/progress_service.py", line 369, in update_progress
|
||||
|
||||
raise ProgressServiceError(
|
||||
|
||||
src.server.services.progress_service.ProgressServiceError: Progress with id 'download_queue' not found
|
||||
|
||||
2026-03-11 15:15:42 [info ] Processing next item from queue item_id=108 remaining=2 serie=I Was Reincarnated as the 7th Prince So I Can Take My Time Perfecting My Magical Ability
|
||||
|
||||
2026-03-11 15:15:42 [error ] Error in queue processing loop error=Progress with id 'download_queue' not found
|
||||
|
||||
Traceback (most recent call last):
|
||||
|
||||
File "/app/src/server/services/download_service.py", line 716, in \_process_queue
|
||||
|
||||
await self._progress_service.update_progress(
|
||||
|
||||
File "/app/src/server/services/progress_service.py", line 369, in update_progress
|
||||
|
||||
raise ProgressServiceError(
|
||||
|
||||
src.server.services.progress_service.ProgressServiceError: Progress with id 'download_queue' not found
|
||||
|
||||
2026-03-11 15:15:43 [info ] Processing next item from queue item_id=109 remaining=1 serie=I Was Reincarnated as the 7th Prince So I Can Take My Time Perfecting My Magical Ability
|
||||
|
||||
2026-03-11 15:15:43 [error ] Error in queue processing loop error=Progress with id 'download_queue' not found
|
||||
|
||||
Traceback (most recent call last):
|
||||
|
||||
File "/app/src/server/services/download_service.py", line 716, in \_process_queue
|
||||
|
||||
await self._progress_service.update_progress(
|
||||
|
||||
File "/app/src/server/services/progress_service.py", line 369, in update_progress
|
||||
|
||||
raise ProgressServiceError(
|
||||
|
||||
src.server.services.progress_service.ProgressServiceError: Progress with id 'download_queue' not found
|
||||
|
||||
2026-03-11 15:15:44 [info ] Processing next item from queue item_id=110 remaining=0 serie=I Was Reincarnated as the 7th Prince So I Can Take My Time Perfecting My Magical Ability
|
||||
|
||||
2026-03-11 15:15:44 [error ] Error in queue processing loop error=Progress with id 'download_queue' not found
|
||||
|
||||
Traceback (most recent call last):
|
||||
|
||||
File "/app/src/server/services/download_service.py", line 716, in \_process_queue
|
||||
|
||||
await self._progress_service.update_progress(
|
||||
|
||||
File "/app/src/server/services/progress_service.py", line 369, in update_progress
|
||||
|
||||
raise ProgressServiceError(
|
||||
|
||||
src.server.services.progress_service.ProgressServiceError: Progress with id 'download_queue' not found
|
||||
|
||||
2026-03-11 15:15:45 [info ] Queue processing completed - all items processed
|
||||
|
||||
ERROR: Task exception was never retrieved
|
||||
|
||||
future: <Task finished name='Task-16373' coro=<DownloadService.\_process_queue() done, defined at /app/src/server/services/download_service.py:688> exception=ProgressServiceError("Progress with id 'download_queue' not found")>
|
||||
|
||||
Traceback (most recent call last):
|
||||
|
||||
File "/app/src/server/services/download_service.py", line 755, in \_process_queue
|
||||
|
||||
await self._progress_service.complete_progress(
|
||||
|
||||
File "/app/src/server/services/progress_service.py", line 446, in complete_progress
|
||||
|
||||
raise ProgressServiceError(
|
||||
|
||||
src.server.services.progress_service.ProgressServiceError: Progress with id 'download_queue' not found
|
||||
|
||||
2026-03-11 15:15:46 [info ] Queue processing completed - all items processed
|
||||
|
||||
ERROR: Task exception was never retrieved
|
||||
|
||||
future: <Task finished name='Task-16313' coro=<DownloadService.\_process_queue() done, defined at /app/src/server/services/download_service.py:688> exception=ProgressServiceError("Progress with id 'download_queue' not found")>
|
||||
|
||||
Traceback (most recent call last):
|
||||
|
||||
File "/app/src/server/services/download_service.py", line 755, in \_process_queue
|
||||
|
||||
await self._progress_service.complete_progress(
|
||||
|
||||
File "/app/src/server/services/progress_service.py", line 446, in complete_progress
|
||||
|
||||
raise ProgressServiceError(
|
||||
|
||||
src.server.services.progress_service.ProgressServiceError: Progress with id 'download_queue' not found
|
||||
|
||||
@@ -395,6 +395,15 @@ class DownloadService:
|
||||
)
|
||||
self._queue_progress_initialized = True
|
||||
except Exception as e:
|
||||
# If the entry already exists (e.g. from a concurrent task),
|
||||
# treat that as success — the progress is usable.
|
||||
from src.server.services.progress_service import ProgressServiceError
|
||||
if isinstance(e, ProgressServiceError) and "already exists" in str(e):
|
||||
logger.debug(
|
||||
"Queue progress already initialized by concurrent task"
|
||||
)
|
||||
self._queue_progress_initialized = True
|
||||
else:
|
||||
logger.error("Failed to initialize queue progress: %s", e)
|
||||
|
||||
def _add_to_pending_queue(
|
||||
@@ -759,8 +768,12 @@ class DownloadService:
|
||||
"queue_status": queue_status.model_dump(mode="json")
|
||||
},
|
||||
)
|
||||
# Reset flag so next queue run re-creates the progress entry
|
||||
self._queue_progress_initialized = False
|
||||
else:
|
||||
logger.info("Queue processing stopped by user")
|
||||
# Reset flag so next queue run re-creates the progress entry
|
||||
self._queue_progress_initialized = False
|
||||
|
||||
async def start_next_download(self) -> Optional[str]:
|
||||
"""Legacy method - redirects to start_queue_processing.
|
||||
@@ -781,7 +794,8 @@ class DownloadService:
|
||||
self._is_stopped = True
|
||||
logger.info("Download processing stopped")
|
||||
|
||||
# Notify via progress service
|
||||
# Notify via progress service (guard against entry not existing)
|
||||
try:
|
||||
queue_status = await self.get_queue_status()
|
||||
await self._progress_service.update_progress(
|
||||
progress_id="download_queue",
|
||||
@@ -793,6 +807,8 @@ class DownloadService:
|
||||
},
|
||||
force_broadcast=True,
|
||||
)
|
||||
except Exception as e:
|
||||
logger.warning("Could not update queue progress on stop: %s", e)
|
||||
|
||||
async def get_queue_status(self) -> QueueStatus:
|
||||
"""Get current status of all queues.
|
||||
|
||||
Reference in New Issue
Block a user