fix(ha): register IServerConfigurationManager in pre-startup DI for PostgreSQL
The NpgsqlDataSource singleton factory in AddJellyfinDbContext calls sp.GetRequiredService<IServerConfigurationManager>() to read pool settings. During ApplyStartupMigrationAsync, only a subset of services are registered in the startup service collection — IServerConfigurationManager was missing, causing a fatal DI resolution failure when DatabaseType=Jellyfin-PostgreSQL. Fix: register startupConfigurationManager as IServerConfigurationManager in the migrationStartupServiceProvider service collection. Also remove JELLYFIN_CONFIG_DIR=/config from Dockerfile.runtime ENV block. When configDir == dataDir, MakeSanityCheckOrThrow writes .jellyfin-config at the datadir root, then immediately throws because it expected .jellyfin-data. Removing the env var lets configDir default to $JELLYFIN_DATA_DIR/config.
This commit is contained in:
@@ -285,6 +285,10 @@ namespace Jellyfin.Server
|
||||
.AddJellyfinDbContext(startupConfigurationManager, startupConfig)
|
||||
.AddSingleton<IApplicationPaths>(appPaths)
|
||||
.AddSingleton<ServerApplicationPaths>(appPaths)
|
||||
// Required by NpgsqlDataSource factory in AddJellyfinDbContext when
|
||||
// DatabaseType=Jellyfin-PostgreSQL — the factory resolves this from DI
|
||||
// to read CustomProviderOptions and pool settings.
|
||||
.AddSingleton<IServerConfigurationManager>(startupConfigurationManager)
|
||||
.RegisterStartupLogger();
|
||||
|
||||
migrationStartupServiceProvider.AddSingleton(migrationStartupServiceProvider);
|
||||
|
||||
Reference in New Issue
Block a user