jellyfin/jellyfin-plugin-tvdb

Error in Missing Epsiode provider causing refresh to fail (collection value null)

michaelkrieger opened this issue · 1 comments

Having an issue where my scan isn't completing because of the Tvdb's missing epsiode provider (v6). Disabling it allows the search to complete.

Should this not be tested and handled gracefully (providing a warning and proceeding) rather than failing in this way?
There is also no logging on which show/episode/season if of concern here so I can remedy it, even with debug logging cranked to debug.

[2022-05-06 15:13:43.155 -04:00] [DBG] [38] MediaBrowser.Providers.Manager.ProviderManager: OnRefreshComplete "[ID-OF-MY-TV-LIBRARY]"
[2022-05-06 15:13:43.156 -04:00] [ERR] [38] MediaBrowser.Providers.Manager.ProviderManager: Error refreshing item
System.ArgumentNullException: Value cannot be null. (Parameter 'collection')
   at System.Collections.Generic.List`1.InsertRange(Int32 index, IEnumerable`1 collection)
   at Jellyfin.Plugin.Tvdb.Providers.TvdbMissingEpisodeProvider.GetAllEpisodes(Int32 tvdbId, String acceptedLanguage, EpisodeQuery episodeQuery)
   at Jellyfin.Plugin.Tvdb.Providers.TvdbMissingEpisodeProvider.HandleSeason(Season season)
   at Jellyfin.Plugin.Tvdb.Providers.TvdbMissingEpisodeProvider.OnProviderManagerRefreshComplete(Object sender, GenericEventArgs`1 genericEventArgs)
   at MediaBrowser.Providers.Manager.ProviderManager.OnRefreshComplete(BaseItem item)
   at MediaBrowser.Controller.Entities.Folder.ValidateChildrenInternal(IProgress`1 progress, CancellationToken cancellationToken, Boolean recursive, Boolean refreshChildMetadata, MetadataRefreshOptions refreshOptions, IDirectoryService directoryService)
   at MediaBrowser.Controller.Entities.Folder.<>c__DisplayClass61_0`1.<<RunTasks>b__1>d.MoveNext()
--- End of stack trace from previous location ---
   at MediaBrowser.Controller.Entities.Folder.RunTasks[T](Func`3 task, IList`1 children, IProgress`1 progress, CancellationToken cancellationToken)
   at MediaBrowser.Controller.Entities.Folder.ValidateChildrenInternal2(IProgress`1 progress, CancellationToken cancellationToken, Boolean recursive, Boolean refreshChildMetadata, MetadataRefreshOptions refreshOptions, IDirectoryService directoryService)
   at MediaBrowser.Controller.Entities.Folder.ValidateChildrenInternal(IProgress`1 progress, CancellationToken cancellationToken, Boolean recursive, Boolean refreshChildMetadata, MetadataRefreshOptions refreshOptions, IDirectoryService directoryService)
   at MediaBrowser.Controller.Entities.Folder.<>c__DisplayClass61_0`1.<<RunTasks>b__1>d.MoveNext()
--- End of stack trace from previous location ---
   at MediaBrowser.Controller.Entities.Folder.RunTasks[T](Func`3 task, IList`1 children, IProgress`1 progress, CancellationToken cancellationToken)
   at MediaBrowser.Controller.Entities.Folder.ValidateChildrenInternal2(IProgress`1 progress, CancellationToken cancellationToken, Boolean recursive, Boolean refreshChildMetadata, MetadataRefreshOptions refreshOptions, IDirectoryService directoryService)
   at MediaBrowser.Controller.Entities.Folder.ValidateChildrenInternal(IProgress`1 progress, CancellationToken cancellationToken, Boolean recursive, Boolean refreshChildMetadata, MetadataRefreshOptions refreshOptions, IDirectoryService directoryService)
   at MediaBrowser.Providers.Manager.ProviderManager.RefreshCollectionFolderChildren(MetadataRefreshOptions options, CollectionFolder collectionFolder, CancellationToken cancellationToken)
   at MediaBrowser.Providers.Manager.ProviderManager.RefreshItem(BaseItem item, MetadataRefreshOptions options, CancellationToken cancellationToken)
   at MediaBrowser.Providers.Manager.ProviderManager.StartProcessingRefreshQueue()

Still seeing this a ton later

[2022-12-28 13:08:18.722 -05:00] [INF] [60] Emby.Server.Implementations.ScheduledTasks.TaskManager: Executing "Scan Media Library"
[2022-12-28 13:08:18.724 -05:00] [INF] [60] Emby.Server.Implementations.IO.LibraryMonitor: Stopping directory watching for path "/media/pool/TV"
[2022-12-28 13:08:18.730 -05:00] [INF] [60] Emby.Server.Implementations.Library.LibraryManager: Validating media library
[2022-12-28 13:08:43.586 -05:00] [WRN] [44] Jellyfin.Plugin.Tvdb.Providers.TvdbMissingEpisodeProvider: Unable to get episodes from TVDB
TvDbSharper.TvDbServerException: The given series ID does not exist; No results for your query: map[AiredSeason:0]
   at TvDbSharper.Infrastructure.Parser.Parse[T](ApiResponse response, IReadOnlyDictionary`2 errorMap)
   at TvDbSharper.Clients.SeriesClient.GetEpisodesAsync(Int32 seriesId, Int32 page, EpisodeQuery query, CancellationToken cancellationToken)
   at Jellyfin.Plugin.Tvdb.TvdbClientManager.<>c__DisplayClass24_0`1.<<TryGetValue>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at Microsoft.Extensions.Caching.Memory.CacheExtensions.GetOrCreateAsync[TItem](IMemoryCache cache, Object key, Func`2 factory)
   at Jellyfin.Plugin.Tvdb.Providers.TvdbMissingEpisodeProvider.GetAllEpisodes(Int32 tvdbId, String acceptedLanguage, EpisodeQuery episodeQuery)
[2022-12-28 13:08:44.346 -05:00] [WRN] [121] Jellyfin.Plugin.Tvdb.Providers.TvdbMissingEpisodeProvider: Unable to get episodes from TVDB
TvDbSharper.TvDbServerException: The given series ID does not exist; No results for your query: map[AiredSeason:0]
   at TvDbSharper.Infrastructure.Parser.Parse[T](ApiResponse response, IReadOnlyDictionary`2 errorMap)
   at TvDbSharper.Clients.SeriesClient.GetEpisodesAsync(Int32 seriesId, Int32 page, EpisodeQuery query, CancellationToken cancellationToken)
   at Jellyfin.Plugin.Tvdb.TvdbClientManager.<>c__DisplayClass24_0`1.<<TryGetValue>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at Microsoft.Extensions.Caching.Memory.CacheExtensions.GetOrCreateAsync[TItem](IMemoryCache cache, Object key, Func`2 factory)
   at Jellyfin.Plugin.Tvdb.Providers.TvdbMissingEpisodeProvider.GetAllEpisodes(Int32 tvdbId, String acceptedLanguage, EpisodeQuery episodeQuery)
[2022-12-28 13:09:28.460 -05:00] [ERR] [60] Emby.Server.Implementations.ScheduledTasks.TaskManager: Error
System.ArgumentNullException: Value cannot be null. (Parameter 'collection')
   at System.Collections.Generic.List`1.InsertRange(Int32 index, IEnumerable`1 collection)
   at Jellyfin.Plugin.Tvdb.Providers.TvdbMissingEpisodeProvider.GetAllEpisodes(Int32 tvdbId, String acceptedLanguage, EpisodeQuery episodeQuery)
   at Jellyfin.Plugin.Tvdb.Providers.TvdbMissingEpisodeProvider.HandleSeason(Season season)
   at Jellyfin.Plugin.Tvdb.Providers.TvdbMissingEpisodeProvider.OnProviderManagerRefreshComplete(Object sender, GenericEventArgs`1 genericEventArgs)
   at MediaBrowser.Providers.Manager.ProviderManager.OnRefreshComplete(BaseItem item)
   at MediaBrowser.Controller.Entities.Folder.ValidateChildrenInternal(IProgress`1 progress, Boolean recursive, Boolean refreshChildMetadata, MetadataRefreshOptions refreshOptions, IDirectoryService directoryService, CancellationToken cancellationToken)
   at MediaBrowser.Controller.Entities.Folder.<>c__DisplayClass70_0`1.<<RunTasks>b__1>d.MoveNext()
--- End of stack trace from previous location ---
   at MediaBrowser.Controller.Entities.Folder.RunTasks[T](Func`3 task, IList`1 children, IProgress`1 progress, CancellationToken cancellationToken)
   at MediaBrowser.Controller.Entities.Folder.ValidateChildrenInternal2(IProgress`1 progress, Boolean recursive, Boolean refreshChildMetadata, MetadataRefreshOptions refreshOptions, IDirectoryService directoryService, CancellationToken cancellationToken)
   at MediaBrowser.Controller.Entities.Folder.ValidateChildrenInternal(IProgress`1 progress, Boolean recursive, Boolean refreshChildMetadata, MetadataRefreshOptions refreshOptions, IDirectoryService directoryService, CancellationToken cancellationToken)
   at MediaBrowser.Controller.Entities.Folder.<>c__DisplayClass70_0`1.<<RunTasks>b__1>d.MoveNext()
--- End of stack trace from previous location ---
   at MediaBrowser.Controller.Entities.Folder.RunTasks[T](Func`3 task, IList`1 children, IProgress`1 progress, CancellationToken cancellationToken)
   at MediaBrowser.Controller.Entities.Folder.ValidateChildrenInternal2(IProgress`1 progress, Boolean recursive, Boolean refreshChildMetadata, MetadataRefreshOptions refreshOptions, IDirectoryService directoryService, CancellationToken cancellationToken)
   at MediaBrowser.Controller.Entities.Folder.ValidateChildrenInternal(IProgress`1 progress, Boolean recursive, Boolean refreshChildMetadata, MetadataRefreshOptions refreshOptions, IDirectoryService directoryService, CancellationToken cancellationToken)
   at MediaBrowser.Controller.Entities.Folder.<>c__DisplayClass70_0`1.<<RunTasks>b__1>d.MoveNext()
--- End of stack trace from previous location ---
   at MediaBrowser.Controller.Entities.Folder.RunTasks[T](Func`3 task, IList`1 children, IProgress`1 progress, CancellationToken cancellationToken)
   at MediaBrowser.Controller.Entities.Folder.ValidateChildrenInternal2(IProgress`1 progress, Boolean recursive, Boolean refreshChildMetadata, MetadataRefreshOptions refreshOptions, IDirectoryService directoryService, CancellationToken cancellationToken)
   at MediaBrowser.Controller.Entities.Folder.ValidateChildrenInternal(IProgress`1 progress, Boolean recursive, Boolean refreshChildMetadata, MetadataRefreshOptions refreshOptions, IDirectoryService directoryService, CancellationToken cancellationToken)
   at MediaBrowser.Controller.Entities.AggregateFolder.ValidateChildrenInternal(IProgress`1 progress, Boolean recursive, Boolean refreshChildMetadata, MetadataRefreshOptions refreshOptions, IDirectoryService directoryService, CancellationToken cancellationToken)
   at Emby.Server.Implementations.Library.LibraryManager.PerformLibraryValidation(IProgress`1 progress, CancellationToken cancellationToken)
   at Emby.Server.Implementations.Library.LibraryManager.ValidateMediaLibraryInternal(IProgress`1 progress, CancellationToken cancellationToken)
   at Emby.Server.Implementations.ScheduledTasks.ScheduledTaskWorker.ExecuteInternal(TaskOptions options)
[2022-12-28 13:09:28.469 -05:00] [INF] [60] Emby.Server.Implementations.ScheduledTasks.TaskManager: "Scan Media Library" Failed after 1 minute(s) and 9 seconds

This should not fail this ungracefully, terminating the entire library scan. Especially without telling me which show/season/etc is even the trouble.