|
|
|
@ -13,6 +13,7 @@ using Jellyfin.Server.Implementations;
|
|
|
|
|
using MediaBrowser.Common.Configuration;
|
|
|
|
|
using MediaBrowser.Controller;
|
|
|
|
|
using Microsoft.AspNetCore.Hosting;
|
|
|
|
|
using Microsoft.Data.Sqlite;
|
|
|
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
|
using Microsoft.Extensions.Configuration;
|
|
|
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
|
|
@ -193,6 +194,7 @@ namespace Jellyfin.Server
|
|
|
|
|
// Don't throw additional exception if startup failed.
|
|
|
|
|
if (appHost.ServiceProvider is not null)
|
|
|
|
|
{
|
|
|
|
|
var isSqlite = false;
|
|
|
|
|
_logger.LogInformation("Running query planner optimizations in the database... This might take a while");
|
|
|
|
|
// Run before disposing the application
|
|
|
|
|
var context = await appHost.ServiceProvider.GetRequiredService<IDbContextFactory<JellyfinDbContext>>().CreateDbContextAsync().ConfigureAwait(false);
|
|
|
|
@ -200,9 +202,15 @@ namespace Jellyfin.Server
|
|
|
|
|
{
|
|
|
|
|
if (context.Database.IsSqlite())
|
|
|
|
|
{
|
|
|
|
|
isSqlite = true;
|
|
|
|
|
await context.Database.ExecuteSqlRawAsync("PRAGMA optimize").ConfigureAwait(false);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (isSqlite)
|
|
|
|
|
{
|
|
|
|
|
SqliteConnection.ClearAllPools();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
host?.Dispose();
|
|
|
|
|