aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBond_009 <bond.009@outlook.com>2020-02-28 20:34:10 +0100
committerBond_009 <bond.009@outlook.com>2020-02-28 20:34:10 +0100
commite699e5d405792a598fdf6d0e723db52555af0492 (patch)
tree5be9798528798b87be1205ffaff78697e3bd862a
parentd1e1aef5f796ff5c25338d44cb4f6a7aadf24af4 (diff)
Fix possible race condition
-rw-r--r--MediaBrowser.Providers/Manager/ProviderManager.cs18
-rw-r--r--MediaBrowser.Providers/MediaBrowser.Providers.csproj1
2 files changed, 9 insertions, 10 deletions
diff --git a/MediaBrowser.Providers/Manager/ProviderManager.cs b/MediaBrowser.Providers/Manager/ProviderManager.cs
index 4f1513df3..17d612199 100644
--- a/MediaBrowser.Providers/Manager/ProviderManager.cs
+++ b/MediaBrowser.Providers/Manager/ProviderManager.cs
@@ -970,20 +970,18 @@ namespace MediaBrowser.Providers.Manager
var id = item.Id;
_logger.LogInformation("OnRefreshProgress {0} {1}", id.ToString("N", CultureInfo.InvariantCulture), progress);
- if (_activeRefreshes.TryAdd(id, progress))
- {
- RefreshProgress?.Invoke(this, new GenericEventArgs<Tuple<BaseItem, double>>(new Tuple<BaseItem, double>(item, progress)));
- }
- else
- {
- // TODO: Need to hunt down the conditions for this happening
- throw new Exception(
+ // TODO: Need to hunt down the conditions for this happening
+ _activeRefreshes.AddOrUpdate(
+ id,
+ (_) => throw new Exception(
string.Format(
CultureInfo.InvariantCulture,
"Refresh for item {0} {1} is not in progress",
item.GetType().Name,
- item.Id.ToString("N", CultureInfo.InvariantCulture)));
- }
+ item.Id.ToString("N", CultureInfo.InvariantCulture))),
+ (_, _) => progress);
+
+ RefreshProgress?.Invoke(this, new GenericEventArgs<Tuple<BaseItem, double>>(new Tuple<BaseItem, double>(item, progress)));
}
private readonly SimplePriorityQueue<Tuple<Guid, MetadataRefreshOptions>> _refreshQueue =
diff --git a/MediaBrowser.Providers/MediaBrowser.Providers.csproj b/MediaBrowser.Providers/MediaBrowser.Providers.csproj
index d0ed61c83..9c986382f 100644
--- a/MediaBrowser.Providers/MediaBrowser.Providers.csproj
+++ b/MediaBrowser.Providers/MediaBrowser.Providers.csproj
@@ -22,6 +22,7 @@
<TargetFramework>netstandard2.1</TargetFramework>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
+ <LangVersion>preview</LangVersion>
</PropertyGroup>
<!-- Code Analyzers-->