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:
+1
-2
@@ -28,8 +28,7 @@ VOLUME ["/config", "/cache", "/media"]
|
||||
|
||||
ENV JELLYFIN_DATA_DIR=/config \
|
||||
JELLYFIN_CACHE_DIR=/cache \
|
||||
JELLYFIN_LOG_DIR=/config/log \
|
||||
JELLYFIN_CONFIG_DIR=/config
|
||||
JELLYFIN_LOG_DIR=/config/log
|
||||
|
||||
ENTRYPOINT ["./jellyfin", \
|
||||
"--datadir", "/config", \
|
||||
|
||||
@@ -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