fix: handle lifespan errors gracefully

- Add error tracking in lifespan context manager
- Only cleanup services that were successfully initialized
- Properly handle startup errors without breaking async context
- Fixes RuntimeError: generator didn't stop after athrow()
This commit is contained in:
2026-01-23 17:13:30 +01:00
parent 314f535446
commit 611798b786
4 changed files with 409 additions and 349 deletions

View File

@@ -182,9 +182,11 @@ class SeriesManagerService:
f"update: {serie_key}"
)
# Create or update NFO file if configured
# Create NFO file only if it doesn't exist and auto_create enabled
if not nfo_exists and self.auto_create_nfo:
logger.info(f"Creating NFO for '{serie_name}' ({serie_folder})")
logger.info(
f"Creating NFO for '{serie_name}' ({serie_folder})"
)
await self.nfo_service.create_tvshow_nfo(
serie_name=serie_name,
serie_folder=serie_folder,
@@ -194,20 +196,10 @@ class SeriesManagerService:
download_fanart=self.download_fanart
)
logger.info(f"Successfully created NFO for '{serie_name}'")
elif nfo_exists and self.update_on_scan:
logger.info(f"Updating NFO for '{serie_name}' ({serie_folder})")
try:
await self.nfo_service.update_tvshow_nfo(
serie_folder=serie_folder,
download_media=True
)
logger.info(f"Successfully updated NFO for '{serie_name}'")
except NotImplementedError:
logger.warning(
f"NFO update not yet implemented for '{serie_name}'. "
"Delete tvshow.nfo to recreate."
)
elif nfo_exists:
logger.debug(
f"NFO exists for '{serie_name}', skipping download"
)
except TMDBAPIError as e:
logger.error(f"TMDB API error processing '{serie_name}': {e}")