Browse Source

Remove Lazy

Gary Wilber 4 years ago
parent
commit
2b6b2cbf31

+ 2 - 5
MediaBrowser.Controller/BaseItemManager/BaseItemManager.cs

@@ -39,7 +39,7 @@ namespace MediaBrowser.Controller.BaseItemManager
         }
 
         /// <inheritdoc />
-        public Lazy<SemaphoreSlim> MetadataRefreshThrottler { get; private set; }
+        public SemaphoreSlim MetadataRefreshThrottler { get; private set; }
 
         /// <inheritdoc />
         public bool IsMetadataFetcherEnabled(BaseItem baseItem, LibraryOptions libraryOptions, string name)
@@ -108,10 +108,7 @@ namespace MediaBrowser.Controller.BaseItemManager
         /// </summary>
         private void SetupMetadataThrottler()
         {
-            if (MetadataRefreshThrottler == null || MetadataRefreshThrottler.IsValueCreated)
-            {
-                MetadataRefreshThrottler = new Lazy<SemaphoreSlim>(() => new SemaphoreSlim(_metadataRefreshConcurrency));
-            }
+            MetadataRefreshThrottler = new SemaphoreSlim(_metadataRefreshConcurrency);
         }
 
         /// <summary>

+ 1 - 1
MediaBrowser.Controller/BaseItemManager/IBaseItemManager.cs

@@ -13,7 +13,7 @@ namespace MediaBrowser.Controller.BaseItemManager
         /// <summary>
         /// Gets the semaphore used to limit the amount of concurrent metadata refreshes.
         /// </summary>
-        Lazy<SemaphoreSlim> MetadataRefreshThrottler { get; }
+        SemaphoreSlim MetadataRefreshThrottler { get; }
 
         /// <summary>
         /// Is metadata fetcher enabled.

+ 5 - 2
MediaBrowser.Providers/Manager/ProviderManager.cs

@@ -1175,7 +1175,10 @@ namespace MediaBrowser.Providers.Manager
         /// <returns>A <see cref="Task"/> representing the result of the asynchronous operation.</returns>
         public async Task RunMetadataRefresh(Func<Task> action, CancellationToken cancellationToken)
         {
-            await _baseItemManager.MetadataRefreshThrottler.Value.WaitAsync(cancellationToken).ConfigureAwait(false);
+            // create a variable for this since it is possible MetadataRefreshThrottler could change due to a config update during a scan
+            var metadataRefreshThrottler = _baseItemManager.MetadataRefreshThrottler;
+
+            await metadataRefreshThrottler.WaitAsync(cancellationToken).ConfigureAwait(false);
 
             try
             {
@@ -1183,7 +1186,7 @@ namespace MediaBrowser.Providers.Manager
             }
             finally
             {
-                _baseItemManager.MetadataRefreshThrottler.Value.Release();
+                metadataRefreshThrottler.Release();
             }
         }