Shows with many episodes never load on browser or take extremely large amounts of time to load. #7973

Open
opened 2026-02-07 05:31:32 +03:00 by OVERLORD · 3 comments
Owner

Originally created by @ButtercupKitten on GitHub (Jan 1, 2026).

Description of the bug

After upgrading to the latest version from 10.10.07 and following all steps correctly I am unable to load seasons for shows with many episodes. Detective Conan has over 1000+ episodes and trying to load the entry never loads on desktop and takes 5+ minutes on a client like Roku. It used to only take a few seconds to load the entire show, now it takes an extremely long time . I have done two full scans of all the files, and it still does not fix the issue. I have even tried many different fixes floating around forums to no avail. Other shows have major issues loading seasons and episodes, but Detective Conan is the one that outright never works.

Reproduction steps

upgrade from 10.10.07 to 10.11.05 and try to load a show with many episodes 1,000+ and watch as it does not load in the browser on the pc the server is being ran on.

What is the current bug behavior?

The seasons and episodes never load.

What is the expected correct behavior?

Everything loads in a few seconds like it used to.

Jellyfin Server version

10.11.5

Specify commit id

No response

Specify unstable release number

No response

Specify version number

No response

Specify the build version

10.11.5

Environment

- OS: Windows 10
- Linux Kernel: N/A
- Virtualization: Windows system tray
- Clients: Roku
- Browser: Firefox
- FFmpeg Version:Default with Jellyfin install
- Playback Method: Direct
- Hardware Acceleration: Nvenc
- CPU Model: I7 7600K
- GPU Model: Rtx 3060
- Plugins: Air Times, AniDB, AniList, AnimeThemes, AniSearch, Artwork, AudioDB, Chapter Segments Provider, Fanart, Intro Skipper, Kitsu, MusicBrainz, OMDb, Open Subtitles, SkinManager, Studio Images, Subtitle Extract, Theme Songs, TheTVDB, TMDb, TMDb Box Sets, TVmaze
- Reverse Proxy: none
- Base URL: none
- Networking: local
- Jellyfin Data Storage & Filesystem:
- Media Storage & Filesystem: Local on SSD
- External Integrations:none

Jellyfin logs

[2025-12-31 13:06:50.199 -08:00] [WRN] [24] Microsoft.EntityFrameworkCore.Query: Compiling a query which loads related collections for more than one collection navigation, either via 'Include' or through projection, but no 'QuerySplittingBehavior' has been configured. By default, Entity Framework will use 'QuerySplittingBehavior.SingleQuery', which can potentially result in slow query performance. See https://go.microsoft.com/fwlink/?linkid=2134277 for more information. To identify the query that's triggering this warning call 'ConfigureWarnings(w => w.Throw(RelationalEventId.MultipleCollectionIncludeWarning))'.

FFmpeg logs


Client / Browser logs

No response

Relevant screenshots or videos

No response

Additional information

No response

Originally created by @ButtercupKitten on GitHub (Jan 1, 2026). ### Description of the bug After upgrading to the latest version from 10.10.07 and following all steps correctly I am unable to load seasons for shows with many episodes. Detective Conan has over 1000+ episodes and trying to load the entry never loads on desktop and takes 5+ minutes on a client like Roku. It used to only take a few seconds to load the entire show, now it takes an extremely long time . I have done two full scans of all the files, and it still does not fix the issue. I have even tried many different fixes floating around forums to no avail. Other shows have major issues loading seasons and episodes, but Detective Conan is the one that outright never works. ### Reproduction steps upgrade from 10.10.07 to 10.11.05 and try to load a show with many episodes 1,000+ and watch as it does not load in the browser on the pc the server is being ran on. ### What is the current _bug_ behavior? The seasons and episodes never load. ### What is the expected _correct_ behavior? Everything loads in a few seconds like it used to. ### Jellyfin Server version 10.11.5 ### Specify commit id _No response_ ### Specify unstable release number _No response_ ### Specify version number _No response_ ### Specify the build version 10.11.5 ### Environment ```markdown - OS: Windows 10 - Linux Kernel: N/A - Virtualization: Windows system tray - Clients: Roku - Browser: Firefox - FFmpeg Version:Default with Jellyfin install - Playback Method: Direct - Hardware Acceleration: Nvenc - CPU Model: I7 7600K - GPU Model: Rtx 3060 - Plugins: Air Times, AniDB, AniList, AnimeThemes, AniSearch, Artwork, AudioDB, Chapter Segments Provider, Fanart, Intro Skipper, Kitsu, MusicBrainz, OMDb, Open Subtitles, SkinManager, Studio Images, Subtitle Extract, Theme Songs, TheTVDB, TMDb, TMDb Box Sets, TVmaze - Reverse Proxy: none - Base URL: none - Networking: local - Jellyfin Data Storage & Filesystem: - Media Storage & Filesystem: Local on SSD - External Integrations:none ``` ### Jellyfin logs ```shell [2025-12-31 13:06:50.199 -08:00] [WRN] [24] Microsoft.EntityFrameworkCore.Query: Compiling a query which loads related collections for more than one collection navigation, either via 'Include' or through projection, but no 'QuerySplittingBehavior' has been configured. By default, Entity Framework will use 'QuerySplittingBehavior.SingleQuery', which can potentially result in slow query performance. See https://go.microsoft.com/fwlink/?linkid=2134277 for more information. To identify the query that's triggering this warning call 'ConfigureWarnings(w => w.Throw(RelationalEventId.MultipleCollectionIncludeWarning))'. ``` ### FFmpeg logs ```shell ``` ### Client / Browser logs _No response_ ### Relevant screenshots or videos _No response_ ### Additional information _No response_
OVERLORD added the bugperformance labels 2026-02-07 05:31:32 +03:00
Author
Owner

@ButtercupKitten commented on GitHub (Jan 1, 2026):

[2025-09-18 16:48:34.324 -07:00] [FTL] [1] Main: Error while starting server
Microsoft.Data.Sqlite.SqliteException (0x80004005): SQLite Error 1: 'no such column: u.MaxParentalAgeRating'.
at Microsoft.Data.Sqlite.SqliteException.ThrowExceptionForRC(Int32 rc, sqlite3 db)
at Microsoft.Data.Sqlite.SqliteCommand.PrepareAndEnumerateStatements()+MoveNext()
at Microsoft.Data.Sqlite.SqliteCommand.GetStatements()+MoveNext()
at Microsoft.Data.Sqlite.SqliteDataReader.NextResult()
at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader(CommandBehavior behavior)
at Microsoft.Data.Sqlite.SqliteCommand.ExecuteDbDataReader(CommandBehavior behavior)
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReader(RelationalCommandParameterObject parameterObject)
at Microsoft.EntityFrameworkCore.Query.Internal.SplitQueryingEnumerable1.Enumerator.InitializeReader(Enumerator enumerator) at Microsoft.EntityFrameworkCore.Query.Internal.SplitQueryingEnumerable1.Enumerator.<>c.b__22_0(DbContext _, Enumerator enumerator)
at Microsoft.EntityFrameworkCore.Storage.NonRetryingExecutionStrategy.Execute[TState,TResult](TState state, Func3 operation, Func3 verifySucceeded)
at Microsoft.EntityFrameworkCore.Query.Internal.SplitQueryingEnumerable1.Enumerator.MoveNext() at Jellyfin.Server.Implementations.Users.UserManager..ctor(IDbContextFactory1 dbProvider, IEventManager eventManager, INetworkManager networkManager, IApplicationHost appHost, IImageProcessor imageProcessor, ILogger1 logger, IServerConfigurationManager serverConfigurationManager, IEnumerable1 passwordResetProviders, IEnumerable1 authenticationProviders) at System.RuntimeMethodHandle.InvokeMethod(Object target, Void** arguments, Signature sig, Boolean isConstructor) at System.Reflection.MethodBaseInvoker.InvokeWithManyArgs(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, RuntimeResolverContext context) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitRootCache(ServiceCallSite callSite, RuntimeResolverContext context)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor2.VisitCallSite(ServiceCallSite callSite, TArgument argument) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, RuntimeResolverContext context) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitRootCache(ServiceCallSite callSite, RuntimeResolverContext context)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor2.VisitCallSite(ServiceCallSite callSite, TArgument argument) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.Resolve(ServiceCallSite callSite, ServiceProviderEngineScope scope) at Microsoft.Extensions.DependencyInjection.ServiceProvider.CreateServiceAccessor(ServiceIdentifier serviceIdentifier) at System.Collections.Concurrent.ConcurrentDictionary2.GetOrAdd(TKey key, Func`2 valueFactory)
at Microsoft.Extensions.DependencyInjection.ServiceProvider.GetService(ServiceIdentifier serviceIdentifier, ServiceProviderEngineScope serviceProviderEngineScope)
at Microsoft.Extensions.DependencyInjection.ServiceProvider.GetService(Type serviceType)
at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetService[T](IServiceProvider provider)
at Emby.Server.Implementations.ApplicationHost.ResolveT
at Emby.Server.Implementations.ApplicationHost.InitializeServices()
at Jellyfin.Server.Program.StartServer(IServerApplicationPaths appPaths, StartupOptions options, IConfiguration startupConfig)
[2025-09-18 16:48:34.338 -07:00] [INF] [1] Main: Running query planner optimizations in the database... This might take a while
[2025-09-18 16:48:34.357 -07:00] [INF] [1] Emby.Server.Implementations.ApplicationHost: Disposing "CoreAppHost"
[2025-09-18 16:48:34.359 -07:00] [INF] [1] Emby.Server.Implementations.ApplicationHost: Disposing "PluginManager"

@ButtercupKitten commented on GitHub (Jan 1, 2026): [2025-09-18 16:48:34.324 -07:00] [FTL] [1] Main: Error while starting server Microsoft.Data.Sqlite.SqliteException (0x80004005): SQLite Error 1: 'no such column: u.MaxParentalAgeRating'. at Microsoft.Data.Sqlite.SqliteException.ThrowExceptionForRC(Int32 rc, sqlite3 db) at Microsoft.Data.Sqlite.SqliteCommand.PrepareAndEnumerateStatements()+MoveNext() at Microsoft.Data.Sqlite.SqliteCommand.GetStatements()+MoveNext() at Microsoft.Data.Sqlite.SqliteDataReader.NextResult() at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader(CommandBehavior behavior) at Microsoft.Data.Sqlite.SqliteCommand.ExecuteDbDataReader(CommandBehavior behavior) at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReader(RelationalCommandParameterObject parameterObject) at Microsoft.EntityFrameworkCore.Query.Internal.SplitQueryingEnumerable`1.Enumerator.InitializeReader(Enumerator enumerator) at Microsoft.EntityFrameworkCore.Query.Internal.SplitQueryingEnumerable`1.Enumerator.<>c.<MoveNext>b__22_0(DbContext _, Enumerator enumerator) at Microsoft.EntityFrameworkCore.Storage.NonRetryingExecutionStrategy.Execute[TState,TResult](TState state, Func`3 operation, Func`3 verifySucceeded) at Microsoft.EntityFrameworkCore.Query.Internal.SplitQueryingEnumerable`1.Enumerator.MoveNext() at Jellyfin.Server.Implementations.Users.UserManager..ctor(IDbContextFactory`1 dbProvider, IEventManager eventManager, INetworkManager networkManager, IApplicationHost appHost, IImageProcessor imageProcessor, ILogger`1 logger, IServerConfigurationManager serverConfigurationManager, IEnumerable`1 passwordResetProviders, IEnumerable`1 authenticationProviders) at System.RuntimeMethodHandle.InvokeMethod(Object target, Void** arguments, Signature sig, Boolean isConstructor) at System.Reflection.MethodBaseInvoker.InvokeWithManyArgs(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, RuntimeResolverContext context) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitRootCache(ServiceCallSite callSite, RuntimeResolverContext context) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(ServiceCallSite callSite, TArgument argument) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, RuntimeResolverContext context) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitRootCache(ServiceCallSite callSite, RuntimeResolverContext context) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(ServiceCallSite callSite, TArgument argument) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.Resolve(ServiceCallSite callSite, ServiceProviderEngineScope scope) at Microsoft.Extensions.DependencyInjection.ServiceProvider.CreateServiceAccessor(ServiceIdentifier serviceIdentifier) at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory) at Microsoft.Extensions.DependencyInjection.ServiceProvider.GetService(ServiceIdentifier serviceIdentifier, ServiceProviderEngineScope serviceProviderEngineScope) at Microsoft.Extensions.DependencyInjection.ServiceProvider.GetService(Type serviceType) at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetService[T](IServiceProvider provider) at Emby.Server.Implementations.ApplicationHost.Resolve[T]() at Emby.Server.Implementations.ApplicationHost.InitializeServices() at Jellyfin.Server.Program.StartServer(IServerApplicationPaths appPaths, StartupOptions options, IConfiguration startupConfig) [2025-09-18 16:48:34.338 -07:00] [INF] [1] Main: Running query planner optimizations in the database... This might take a while [2025-09-18 16:48:34.357 -07:00] [INF] [1] Emby.Server.Implementations.ApplicationHost: Disposing "CoreAppHost" [2025-09-18 16:48:34.359 -07:00] [INF] [1] Emby.Server.Implementations.ApplicationHost: Disposing "PluginManager"
Author
Owner

@ZeusCraft10 commented on GitHub (Jan 3, 2026):

I've been looking into this issue and wanted to share what I've found so far.

What's Actually Happening

The warning about Cartesian explosion led me down the wrong path initially (I tried fixing it with split queries in #15927, which wasn't the right approach). After some feedback, I realized the real problem:

When loading a show with 1000+ episodes, we're loading all the related data for each episode:

  • Images (typically 5+ per episode)
  • UserData (watch status, position, etc.)
  • Provider IDs (TMDB, TVDB, etc.)
  • Locked fields, trailer types, etc.

So for 1000 episodes, we're pulling 9,000+ rows even in a single query. That's a lot of data to pull and process.

Possible Solutions

I see a few potential directions:

  1. Denormalization - Move commonly-needed data (like primary image path, basic watch status) directly into the BaseItem table so we don't need all those joins
  2. Better caching - Cache the assembled DTOs instead of re-querying everything each time
  3. Lazy loading - Only load collections when actually needed (though this has tradeoffs)

Before I go too far down any of these paths, wanted to check:

  • Is there already work happening on schema redesign?
  • Which approach makes more sense for Jellyfin's architecture?
  • Are breaking schema changes acceptable, or does it need to be backwards-compatible?

Happy to dig into whichever direction makes the most sense!

@ZeusCraft10 commented on GitHub (Jan 3, 2026): I've been looking into this issue and wanted to share what I've found so far. ## What's Actually Happening The warning about Cartesian explosion led me down the wrong path initially (I tried fixing it with split queries in #15927, which wasn't the right approach). After some feedback, I realized the real problem: When loading a show with 1000+ episodes, we're loading **all** the related data for each episode: - Images (typically 5+ per episode) - UserData (watch status, position, etc.) - Provider IDs (TMDB, TVDB, etc.) - Locked fields, trailer types, etc. So for 1000 episodes, we're pulling 9,000+ rows even in a single query. That's a lot of data to pull and process. ## Possible Solutions I see a few potential directions: 1. **Denormalization** - Move commonly-needed data (like primary image path, basic watch status) directly into the BaseItem table so we don't need all those joins 2. **Better caching** - Cache the assembled DTOs instead of re-querying everything each time 3. **Lazy loading** - Only load collections when actually needed (though this has tradeoffs) Before I go too far down any of these paths, wanted to check: - Is there already work happening on schema redesign? - Which approach makes more sense for Jellyfin's architecture? - Are breaking schema changes acceptable, or does it need to be backwards-compatible? Happy to dig into whichever direction makes the most sense!
Author
Owner

@Ondjultomte commented on GitHub (Jan 16, 2026):

have to report that now many weeks later the submenues, as in movies, series etc are really fast to browse now! I have done nothing ...

the homescreen landing page is still slow though, and it seems to the the resume scripts running that causes it.

fyi large library here.

@Ondjultomte commented on GitHub (Jan 16, 2026): have to report that now many weeks later the submenues, as in movies, series etc are really fast to browse now! I have done nothing ... the homescreen landing page is still slow though, and it seems to the the resume scripts running that causes it. fyi large library here.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/jellyfin#7973