aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller/BaseItemManager/BaseItemManager.cs
diff options
context:
space:
mode:
authorGary Wilber <Spacetech326@gmail.com>2020-12-02 23:07:51 -0800
committerGary Wilber <Spacetech326@gmail.com>2020-12-02 23:07:51 -0800
commit26a05e69748285e2cb2a7647496e44e6c70a0d97 (patch)
treeb357da047504e1efc6edae16ddaa69dbc0104d71 /MediaBrowser.Controller/BaseItemManager/BaseItemManager.cs
parentf4edca7c2790207b5be9abb3b49029c9fbe04828 (diff)
Handle config updates
Diffstat (limited to 'MediaBrowser.Controller/BaseItemManager/BaseItemManager.cs')
-rw-r--r--MediaBrowser.Controller/BaseItemManager/BaseItemManager.cs42
1 files changed, 35 insertions, 7 deletions
diff --git a/MediaBrowser.Controller/BaseItemManager/BaseItemManager.cs b/MediaBrowser.Controller/BaseItemManager/BaseItemManager.cs
index 0c8fa8244..4981b0927 100644
--- a/MediaBrowser.Controller/BaseItemManager/BaseItemManager.cs
+++ b/MediaBrowser.Controller/BaseItemManager/BaseItemManager.cs
@@ -1,6 +1,7 @@
using System;
using System.Linq;
using System.Threading;
+using MediaBrowser.Common.Configuration;
using MediaBrowser.Controller.Channels;
using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Entities;
@@ -13,6 +14,8 @@ namespace MediaBrowser.Controller.BaseItemManager
{
private readonly IServerConfigurationManager _serverConfigurationManager;
+ private int _metadataRefreshConcurrency = 0;
+
/// <summary>
/// Initializes a new instance of the <see cref="BaseItemManager"/> class.
/// </summary>
@@ -21,16 +24,18 @@ namespace MediaBrowser.Controller.BaseItemManager
{
_serverConfigurationManager = serverConfigurationManager;
- MetadataRefreshThrottler = new Lazy<SemaphoreSlim>(() => {
- var concurrency = _serverConfigurationManager.Configuration.LibraryMetadataRefreshConcurrency;
+ _metadataRefreshConcurrency = GetMetadataRefreshConcurrency();
+ SetupMetadataThrottler();
- if (concurrency <= 0)
+ _serverConfigurationManager.ConfigurationUpdated += (object sender, EventArgs e) =>
+ {
+ int newMetadataRefreshConcurrency = GetMetadataRefreshConcurrency();
+ if (_metadataRefreshConcurrency != newMetadataRefreshConcurrency)
{
- concurrency = Environment.ProcessorCount;
+ _metadataRefreshConcurrency = newMetadataRefreshConcurrency;
+ SetupMetadataThrottler();
}
-
- return new SemaphoreSlim(concurrency);
- });
+ };
}
/// <inheritdoc />
@@ -97,5 +102,28 @@ namespace MediaBrowser.Controller.BaseItemManager
return itemConfig == null || !itemConfig.DisabledImageFetchers.Contains(name, StringComparer.OrdinalIgnoreCase);
}
+
+ /// <summary>
+ /// Creates the metadata refresh throttler.
+ /// </summary>
+ private void SetupMetadataThrottler()
+ {
+ MetadataRefreshThrottler = new Lazy<SemaphoreSlim>(() => new SemaphoreSlim(_metadataRefreshConcurrency));
+ }
+
+ /// <summary>
+ /// Returns the metadata refresh concurrency.
+ /// </summary>
+ private int GetMetadataRefreshConcurrency()
+ {
+ var concurrency = _serverConfigurationManager.Configuration.LibraryMetadataRefreshConcurrency;
+
+ if (concurrency <= 0)
+ {
+ concurrency = Environment.ProcessorCount;
+ }
+
+ return concurrency;
+ }
}
}