diff options
| author | JPVenson <github@jpb.email> | 2025-02-02 02:32:28 +0000 |
|---|---|---|
| committer | JPVenson <github@jpb.email> | 2025-02-02 02:32:28 +0000 |
| commit | efb402b1d27ca3f3444f7b81553ced804029bb3f (patch) | |
| tree | 5fef3c6918066a22cc2e8f68e6f5f9dfc2f4cf64 /Jellyfin.Database | |
| parent | 61b2ad7f496b6e47ed3646636f57d96916ffbf33 (diff) | |
Fixed shutdown behavior
Diffstat (limited to 'Jellyfin.Database')
3 files changed, 13 insertions, 6 deletions
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/IJellyfinDatabaseProvider.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/IJellyfinDatabaseProvider.cs index 72a6f819e0..b27a88971d 100644 --- a/Jellyfin.Database/Jellyfin.Database.Implementations/IJellyfinDatabaseProvider.cs +++ b/Jellyfin.Database/Jellyfin.Database.Implementations/IJellyfinDatabaseProvider.cs @@ -8,7 +8,7 @@ namespace Jellyfin.Server.Implementations; /// <summary> /// Defines the type and extension points for multi database support. /// </summary> -public interface IJellyfinDatabaseProvider : IAsyncDisposable +public interface IJellyfinDatabaseProvider { /// <summary> /// Gets or Sets the Database Factory when initialisaition is done. @@ -33,4 +33,11 @@ public interface IJellyfinDatabaseProvider : IAsyncDisposable /// <param name="cancellationToken">The token to abort the operation.</param> /// <returns>A <see cref="Task"/> representing the asynchronous operation.</returns> Task RunScheduledOptimisation(CancellationToken cancellationToken); + + /// <summary> + /// If supported this should perform any actions that are required on stopping the jellyfin server. + /// </summary> + /// <param name="cancellationToken">The token that will be used to abort the operation.</param> + /// <returns>A <see cref="Task"/> representing the asynchronous operation.</returns> + Task RunShutdownTask(CancellationToken cancellationToken); } diff --git a/Jellyfin.Database/Jellyfin.Database.Providers.PgSql/PgSqlDatabaseProvider.cs b/Jellyfin.Database/Jellyfin.Database.Providers.PgSql/PgSqlDatabaseProvider.cs index 1dae3401bc..e6ae2acea7 100644 --- a/Jellyfin.Database/Jellyfin.Database.Providers.PgSql/PgSqlDatabaseProvider.cs +++ b/Jellyfin.Database/Jellyfin.Database.Providers.PgSql/PgSqlDatabaseProvider.cs @@ -68,8 +68,8 @@ public sealed class PgSqlDatabaseProvider : IJellyfinDatabaseProvider } /// <inheritdoc/> - public ValueTask DisposeAsync() + public Task RunShutdownTask(CancellationToken cancellationToken) { - return ValueTask.CompletedTask; + return Task.CompletedTask; } } diff --git a/Jellyfin.Database/Jellyfin.Database.Providers.SqLite/SqliteDatabaseProvider.cs b/Jellyfin.Database/Jellyfin.Database.Providers.SqLite/SqliteDatabaseProvider.cs index 8ef5b6af5e..907ea91561 100644 --- a/Jellyfin.Database/Jellyfin.Database.Providers.SqLite/SqliteDatabaseProvider.cs +++ b/Jellyfin.Database/Jellyfin.Database.Providers.SqLite/SqliteDatabaseProvider.cs @@ -64,13 +64,13 @@ public sealed class SqliteDatabaseProvider : IJellyfinDatabaseProvider } /// <inheritdoc/> - public async ValueTask DisposeAsync() + public async Task RunShutdownTask(CancellationToken cancellationToken) { // Run before disposing the application - var context = await DbContextFactory!.CreateDbContextAsync().ConfigureAwait(false); + var context = await DbContextFactory!.CreateDbContextAsync(cancellationToken).ConfigureAwait(false); await using (context.ConfigureAwait(false)) { - await context.Database.ExecuteSqlRawAsync("PRAGMA optimize").ConfigureAwait(false); + await context.Database.ExecuteSqlRawAsync("PRAGMA optimize", cancellationToken).ConfigureAwait(false); } SqliteConnection.ClearAllPools(); |
