Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Env Var to disable WAL journaling #11464

Open
wants to merge 2 commits into
base: release-10.9.z
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion Emby.Server.Implementations/ConfigurationOptions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@ public static class ConfigurationOptions
{ FfmpegAnalyzeDurationKey, "200M" },
{ PlaylistsAllowDuplicatesKey, bool.FalseString },
{ BindToUnixSocketKey, bool.FalseString },
{ SqliteCacheSizeKey, "20000" }
{ SqliteCacheSizeKey, "20000" },
{ SqliteJournalModeKey, "WAL" }
};
}
}
9 changes: 7 additions & 2 deletions Emby.Server.Implementations/Data/BaseSqliteRepository.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,22 +5,27 @@
using System;
using System.Collections.Generic;
using Jellyfin.Extensions;
using MediaBrowser.Controller.Extensions;
using Microsoft.Data.Sqlite;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;

namespace Emby.Server.Implementations.Data
{
public abstract class BaseSqliteRepository : IDisposable
{
private readonly IConfiguration _configuration;
private bool _disposed = false;

/// <summary>
/// Initializes a new instance of the <see cref="BaseSqliteRepository"/> class.
/// </summary>
/// <param name="logger">The logger.</param>
protected BaseSqliteRepository(ILogger<BaseSqliteRepository> logger)
/// <param name="configuration">The configuration.</param>
protected BaseSqliteRepository(ILogger<BaseSqliteRepository> logger, IConfiguration configuration)
{
Logger = logger;
_configuration = configuration;
}

/// <summary>
Expand Down Expand Up @@ -60,7 +65,7 @@ protected BaseSqliteRepository(ILogger<BaseSqliteRepository> logger)
/// Gets the journal mode. <see href="https://www.sqlite.org/pragma.html#pragma_journal_mode" />.
/// </summary>
/// <value>The journal mode.</value>
protected virtual string JournalMode => "WAL";
protected virtual string JournalMode => _configuration.GetSqliteJournalMode();

/// <summary>
/// Gets the journal size limit. <see href="https://www.sqlite.org/pragma.html#pragma_journal_size_limit" />.
Expand Down
2 changes: 1 addition & 1 deletion Emby.Server.Implementations/Data/SqliteItemRepository.cs
Original file line number Diff line number Diff line change
Expand Up @@ -314,7 +314,7 @@ public class SqliteItemRepository : BaseSqliteRepository, IItemRepository
ILocalizationManager localization,
IImageProcessor imageProcessor,
IConfiguration configuration)
: base(logger)
: base(logger, configuration)
{
_config = config;
_appHost = appHost;
Expand Down
6 changes: 4 additions & 2 deletions Emby.Server.Implementations/Data/SqliteUserDataRepository.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Persistence;
using Microsoft.Data.Sqlite;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;

namespace Emby.Server.Implementations.Data
Expand All @@ -23,8 +24,9 @@ public class SqliteUserDataRepository : BaseSqliteRepository, IUserDataRepositor
public SqliteUserDataRepository(
ILogger<SqliteUserDataRepository> logger,
IServerConfigurationManager config,
IUserManager userManager)
: base(logger)
IUserManager userManager,
IConfiguration configuration)
: base(logger, configuration)
{
_userManager = userManager;

Expand Down
16 changes: 16 additions & 0 deletions MediaBrowser.Controller/Extensions/ConfigurationExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,11 @@ public static class ConfigurationExtensions
/// </summary>
public const string SqliteCacheSizeKey = "sqlite:cacheSize";

/// <summary>
/// SQLite journal mode.
/// </summary>
public const string SqliteJournalModeKey = "sqlite:journalMode";

/// <summary>
/// Gets a value indicating whether the application should host static web content from the <see cref="IConfiguration"/>.
/// </summary>
Expand Down Expand Up @@ -128,5 +133,16 @@ public static bool UseUnixSocket(this IConfiguration configuration)
/// <returns>The sqlite cache size.</returns>
public static int? GetSqliteCacheSize(this IConfiguration configuration)
=> configuration.GetValue<int?>(SqliteCacheSizeKey);

/// <summary>
/// Gets SQLite journal mode from the <see cref="IConfiguration" />.
/// </summary>
/// <param name="configuration">The configuration to read the setting from.</param>
/// <returns>SQLite journal mode.</returns>
public static string GetSqliteJournalMode(this IConfiguration configuration)
{
var journalMode = configuration.GetValue<string?>(SqliteJournalModeKey);
return journalMode is not null ? journalMode.ToUpperInvariant() : "WAL";
}
}
}
Loading