Source SQLite cache_size from an Environment Variable (#9666)
This commit is contained in:
parent
aae22865a0
commit
29368a1566
|
@ -11,14 +11,15 @@ namespace Emby.Server.Implementations
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets a new copy of the default configuration options.
|
/// Gets a new copy of the default configuration options.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static Dictionary<string, string?> DefaultConfiguration => new Dictionary<string, string?>
|
public static Dictionary<string, string?> DefaultConfiguration => new()
|
||||||
{
|
{
|
||||||
{ HostWebClientKey, bool.TrueString },
|
{ HostWebClientKey, bool.TrueString },
|
||||||
{ DefaultRedirectKey, "web/" },
|
{ DefaultRedirectKey, "web/" },
|
||||||
{ FfmpegProbeSizeKey, "1G" },
|
{ FfmpegProbeSizeKey, "1G" },
|
||||||
{ FfmpegAnalyzeDurationKey, "200M" },
|
{ FfmpegAnalyzeDurationKey, "200M" },
|
||||||
{ PlaylistsAllowDuplicatesKey, bool.FalseString },
|
{ PlaylistsAllowDuplicatesKey, bool.FalseString },
|
||||||
{ BindToUnixSocketKey, bool.FalseString }
|
{ BindToUnixSocketKey, bool.FalseString },
|
||||||
|
{ SqliteCacheSizeKey, "20000" }
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,6 +25,7 @@ using MediaBrowser.Controller.Entities;
|
||||||
using MediaBrowser.Controller.Entities.Audio;
|
using MediaBrowser.Controller.Entities.Audio;
|
||||||
using MediaBrowser.Controller.Entities.Movies;
|
using MediaBrowser.Controller.Entities.Movies;
|
||||||
using MediaBrowser.Controller.Entities.TV;
|
using MediaBrowser.Controller.Entities.TV;
|
||||||
|
using MediaBrowser.Controller.Extensions;
|
||||||
using MediaBrowser.Controller.Library;
|
using MediaBrowser.Controller.Library;
|
||||||
using MediaBrowser.Controller.LiveTv;
|
using MediaBrowser.Controller.LiveTv;
|
||||||
using MediaBrowser.Controller.Persistence;
|
using MediaBrowser.Controller.Persistence;
|
||||||
|
@ -34,6 +35,7 @@ using MediaBrowser.Model.Entities;
|
||||||
using MediaBrowser.Model.Globalization;
|
using MediaBrowser.Model.Globalization;
|
||||||
using MediaBrowser.Model.LiveTv;
|
using MediaBrowser.Model.LiveTv;
|
||||||
using MediaBrowser.Model.Querying;
|
using MediaBrowser.Model.Querying;
|
||||||
|
using Microsoft.Extensions.Configuration;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using SQLitePCL.pretty;
|
using SQLitePCL.pretty;
|
||||||
|
|
||||||
|
@ -319,13 +321,15 @@ namespace Emby.Server.Implementations.Data
|
||||||
/// <param name="logger">Instance of the <see cref="ILogger{SqliteItemRepository}"/> interface.</param>
|
/// <param name="logger">Instance of the <see cref="ILogger{SqliteItemRepository}"/> interface.</param>
|
||||||
/// <param name="localization">Instance of the <see cref="ILocalizationManager"/> interface.</param>
|
/// <param name="localization">Instance of the <see cref="ILocalizationManager"/> interface.</param>
|
||||||
/// <param name="imageProcessor">Instance of the <see cref="IImageProcessor"/> interface.</param>
|
/// <param name="imageProcessor">Instance of the <see cref="IImageProcessor"/> interface.</param>
|
||||||
|
/// <param name="configuration">Instance of the <see cref="IConfiguration"/> interface.</param>
|
||||||
/// <exception cref="ArgumentNullException">config is null.</exception>
|
/// <exception cref="ArgumentNullException">config is null.</exception>
|
||||||
public SqliteItemRepository(
|
public SqliteItemRepository(
|
||||||
IServerConfigurationManager config,
|
IServerConfigurationManager config,
|
||||||
IServerApplicationHost appHost,
|
IServerApplicationHost appHost,
|
||||||
ILogger<SqliteItemRepository> logger,
|
ILogger<SqliteItemRepository> logger,
|
||||||
ILocalizationManager localization,
|
ILocalizationManager localization,
|
||||||
IImageProcessor imageProcessor)
|
IImageProcessor imageProcessor,
|
||||||
|
IConfiguration configuration)
|
||||||
: base(logger)
|
: base(logger)
|
||||||
{
|
{
|
||||||
_config = config;
|
_config = config;
|
||||||
|
@ -337,11 +341,13 @@ namespace Emby.Server.Implementations.Data
|
||||||
_jsonOptions = JsonDefaults.Options;
|
_jsonOptions = JsonDefaults.Options;
|
||||||
|
|
||||||
DbFilePath = Path.Combine(_config.ApplicationPaths.DataPath, "library.db");
|
DbFilePath = Path.Combine(_config.ApplicationPaths.DataPath, "library.db");
|
||||||
|
|
||||||
|
CacheSize = configuration.GetSqliteCacheSize();
|
||||||
ReadConnectionsCount = Environment.ProcessorCount * 2;
|
ReadConnectionsCount = Environment.ProcessorCount * 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
protected override int? CacheSize => 20000;
|
protected override int? CacheSize { get; }
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
protected override TempStoreMode TempStore => TempStoreMode.Memory;
|
protected override TempStoreMode TempStore => TempStoreMode.Memory;
|
||||||
|
|
|
@ -59,6 +59,11 @@ namespace MediaBrowser.Controller.Extensions
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public const string UnixSocketPermissionsKey = "kestrel:socketPermissions";
|
public const string UnixSocketPermissionsKey = "kestrel:socketPermissions";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The cache size of the SQL database, see cache_size.
|
||||||
|
/// </summary>
|
||||||
|
public const string SqliteCacheSizeKey = "sqlite:cacheSize";
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets a value indicating whether the application should host static web content from the <see cref="IConfiguration"/>.
|
/// Gets a value indicating whether the application should host static web content from the <see cref="IConfiguration"/>.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -115,5 +120,13 @@ namespace MediaBrowser.Controller.Extensions
|
||||||
/// <returns>The unix socket permissions.</returns>
|
/// <returns>The unix socket permissions.</returns>
|
||||||
public static string? GetUnixSocketPermissions(this IConfiguration configuration)
|
public static string? GetUnixSocketPermissions(this IConfiguration configuration)
|
||||||
=> configuration[UnixSocketPermissionsKey];
|
=> configuration[UnixSocketPermissionsKey];
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets the cache_size from the <see cref="IConfiguration" />.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="configuration">The configuration to read the setting from.</param>
|
||||||
|
/// <returns>The sqlite cache size.</returns>
|
||||||
|
public static int? GetSqliteCacheSize(this IConfiguration configuration)
|
||||||
|
=> configuration.GetValue<int?>(SqliteCacheSizeKey);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user