aboutsummaryrefslogtreecommitdiff
path: root/Jellyfin.Database
diff options
context:
space:
mode:
authorJPVenson <github@jpb.email>2025-02-02 02:32:28 +0000
committerJPVenson <github@jpb.email>2025-02-02 02:32:28 +0000
commitefb402b1d27ca3f3444f7b81553ced804029bb3f (patch)
tree5fef3c6918066a22cc2e8f68e6f5f9dfc2f4cf64 /Jellyfin.Database
parent61b2ad7f496b6e47ed3646636f57d96916ffbf33 (diff)
Fixed shutdown behavior
Diffstat (limited to 'Jellyfin.Database')
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/IJellyfinDatabaseProvider.cs9
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Providers.PgSql/PgSqlDatabaseProvider.cs4
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Providers.SqLite/SqliteDatabaseProvider.cs6
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();