From f4edca7c2790207b5be9abb3b49029c9fbe04828 Mon Sep 17 00:00:00 2001 From: Gary Wilber Date: Wed, 2 Dec 2020 18:51:53 -0800 Subject: Move MetadataRefreshThrottler to BaseItemManager --- .../BaseItemManager/BaseItemManager.cs | 17 ++++++++++++++++- .../BaseItemManager/IBaseItemManager.cs | 9 ++++++++- 2 files changed, 24 insertions(+), 2 deletions(-) (limited to 'MediaBrowser.Controller/BaseItemManager') diff --git a/MediaBrowser.Controller/BaseItemManager/BaseItemManager.cs b/MediaBrowser.Controller/BaseItemManager/BaseItemManager.cs index 67aa7f338..0c8fa8244 100644 --- a/MediaBrowser.Controller/BaseItemManager/BaseItemManager.cs +++ b/MediaBrowser.Controller/BaseItemManager/BaseItemManager.cs @@ -1,5 +1,6 @@ -using System; +using System; using System.Linq; +using System.Threading; using MediaBrowser.Controller.Channels; using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Entities; @@ -19,8 +20,22 @@ namespace MediaBrowser.Controller.BaseItemManager public BaseItemManager(IServerConfigurationManager serverConfigurationManager) { _serverConfigurationManager = serverConfigurationManager; + + MetadataRefreshThrottler = new Lazy(() => { + var concurrency = _serverConfigurationManager.Configuration.LibraryMetadataRefreshConcurrency; + + if (concurrency <= 0) + { + concurrency = Environment.ProcessorCount; + } + + return new SemaphoreSlim(concurrency); + }); } + /// + public Lazy MetadataRefreshThrottler { get; private set; } + /// public bool IsMetadataFetcherEnabled(BaseItem baseItem, LibraryOptions libraryOptions, string name) { diff --git a/MediaBrowser.Controller/BaseItemManager/IBaseItemManager.cs b/MediaBrowser.Controller/BaseItemManager/IBaseItemManager.cs index ee4d3dcdc..d5f36dc2e 100644 --- a/MediaBrowser.Controller/BaseItemManager/IBaseItemManager.cs +++ b/MediaBrowser.Controller/BaseItemManager/IBaseItemManager.cs @@ -1,4 +1,6 @@ -using MediaBrowser.Controller.Entities; +using System; +using System.Threading; +using MediaBrowser.Controller.Entities; using MediaBrowser.Model.Configuration; namespace MediaBrowser.Controller.BaseItemManager @@ -8,6 +10,11 @@ namespace MediaBrowser.Controller.BaseItemManager /// public interface IBaseItemManager { + /// + /// Gets the semaphore used to limit the amount of concurrent metadata refreshes. + /// + Lazy MetadataRefreshThrottler { get; } + /// /// Is metadata fetcher enabled. /// -- cgit v1.2.3