diff options
| author | Bond_009 <bond.009@outlook.com> | 2020-02-28 20:34:10 +0100 |
|---|---|---|
| committer | Bond_009 <bond.009@outlook.com> | 2020-02-28 20:34:10 +0100 |
| commit | e699e5d405792a598fdf6d0e723db52555af0492 (patch) | |
| tree | 5be9798528798b87be1205ffaff78697e3bd862a | |
| parent | d1e1aef5f796ff5c25338d44cb4f6a7aadf24af4 (diff) | |
Fix possible race condition
| -rw-r--r-- | MediaBrowser.Providers/Manager/ProviderManager.cs | 18 | ||||
| -rw-r--r-- | MediaBrowser.Providers/MediaBrowser.Providers.csproj | 1 |
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--> |
