Fix double SeriesApp initialization on startup

- Moved sync_series_from_data_files() before DownloadService init
- Ensures series are in DB before main SeriesApp creation
- Eliminates redundant SeriesApp instantiation during startup
- Updated README to clarify initialization sequence
This commit is contained in:
2026-01-18 15:49:58 +01:00
parent 7a77dff194
commit ea9e959a7b
2 changed files with 15 additions and 14 deletions

View File

@@ -128,36 +128,36 @@ async def lifespan(_application: FastAPI):
# Subscribe to progress events
progress_service.subscribe("progress_updated", progress_event_handler)
# Initialize download service and restore queue from database
# Only if anime directory is configured
# Sync series from data files to database FIRST (one-time setup)
# This must happen before SeriesApp initialization
try:
from src.server.utils.dependencies import get_download_service
logger.info(
"Checking anime_directory setting: '%s'",
settings.anime_directory
)
if settings.anime_directory:
download_service = get_download_service()
await download_service.initialize()
logger.info("Download service initialized and queue restored")
# Sync series from data files to database
# Sync series from data files to database (one-time setup)
sync_count = await sync_series_from_data_files(
settings.anime_directory
)
logger.info(
"Data file sync complete. Added %d series.", sync_count
)
# Now initialize download service (will use data from database)
from src.server.utils.dependencies import get_download_service
download_service = get_download_service()
await download_service.initialize()
logger.info("Download service initialized and queue restored")
else:
logger.info(
"Download service initialization skipped - "
"anime directory not configured"
)
except (OSError, RuntimeError, ValueError) as e:
logger.warning("Failed to initialize download service: %s", e)
# Continue startup - download service can be initialized later
logger.warning("Failed to initialize services: %s", e)
# Continue startup - services can be initialized later
logger.info("FastAPI application started successfully")
logger.info("Server running on http://127.0.0.1:8000")