diff --git a/MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs b/MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs index 5908cd8001..054c5aaafb 100644 --- a/MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs +++ b/MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs @@ -186,20 +186,6 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager } } - /// - /// The _semaphoreLocks - /// - private readonly ConcurrentDictionary _semaphoreLocks = new ConcurrentDictionary(StringComparer.OrdinalIgnoreCase); - /// - /// Gets the lock. - /// - /// The filename. - /// System.Object. - private SemaphoreSlim GetLock(string url) - { - return _semaphoreLocks.GetOrAdd(url, key => new SemaphoreSlim(1, 1)); - } - /// /// Gets the response internal. /// @@ -270,7 +256,7 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager var url = options.Url; var urlHash = url.ToLower().GetMD5().ToString("N"); - + var responseCachePath = Path.Combine(_appPaths.CachePath, "httpclient", urlHash); response = await GetCachedResponse(responseCachePath, options.CacheLength, url).ConfigureAwait(false); @@ -279,31 +265,14 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager return response; } - var semaphore = GetLock(url); + response = await SendAsyncInternal(options, httpMethod).ConfigureAwait(false); - await semaphore.WaitAsync(options.CancellationToken).ConfigureAwait(false); - - try + if (response.StatusCode == HttpStatusCode.OK) { - response = await GetCachedResponse(responseCachePath, options.CacheLength, url).ConfigureAwait(false); - if (response != null) - { - return response; - } - - response = await SendAsyncInternal(options, httpMethod).ConfigureAwait(false); - - if (response.StatusCode == HttpStatusCode.OK) - { - await CacheResponse(response, responseCachePath).ConfigureAwait(false); - } - - return response; - } - finally - { - semaphore.Release(); + await CacheResponse(response, responseCachePath).ConfigureAwait(false); } + + return response; } private async Task GetCachedResponse(string responseCachePath, TimeSpan cacheLength, string url) @@ -348,13 +317,12 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager using (var responseStream = response.Content) { - using (var fileStream = _fileSystem.GetFileStream(responseCachePath, FileMode.Create, FileAccess.Write, FileShare.Read, true)) + var memoryStream = new MemoryStream(); + await responseStream.CopyToAsync(memoryStream).ConfigureAwait(false); + memoryStream.Position = 0; + + using (var fileStream = _fileSystem.GetFileStream(responseCachePath, FileMode.Create, FileAccess.Write, FileShare.None, true)) { - var memoryStream = new MemoryStream(); - - await responseStream.CopyToAsync(memoryStream).ConfigureAwait(false); - - memoryStream.Position = 0; await memoryStream.CopyToAsync(fileStream).ConfigureAwait(false); memoryStream.Position = 0; diff --git a/MediaBrowser.Providers/Music/MusicBrainzAlbumProvider.cs b/MediaBrowser.Providers/Music/MusicBrainzAlbumProvider.cs index 978d611a8c..e73a98b6f9 100644 --- a/MediaBrowser.Providers/Music/MusicBrainzAlbumProvider.cs +++ b/MediaBrowser.Providers/Music/MusicBrainzAlbumProvider.cs @@ -297,12 +297,6 @@ namespace MediaBrowser.Providers.Music ResourcePool = _musicBrainzResourcePool }; - if (!isSearch) - { - options.CacheMode = CacheMode.Unconditional; - options.CacheLength = TimeSpan.FromDays(3); - } - using (var xml = await _httpClient.Get(options).ConfigureAwait(false)) { using (var oReader = new StreamReader(xml, Encoding.UTF8)) diff --git a/MediaBrowser.Providers/Omdb/OmdbItemProvider.cs b/MediaBrowser.Providers/Omdb/OmdbItemProvider.cs index c1ec5061d6..efcc76e694 100644 --- a/MediaBrowser.Providers/Omdb/OmdbItemProvider.cs +++ b/MediaBrowser.Providers/Omdb/OmdbItemProvider.cs @@ -99,9 +99,7 @@ namespace MediaBrowser.Providers.Omdb { Url = url, ResourcePool = OmdbProvider.ResourcePool, - CancellationToken = cancellationToken, - CacheMode = CacheMode.Unconditional, - CacheLength = TimeSpan.FromDays(2) + CancellationToken = cancellationToken }).ConfigureAwait(false)) { @@ -133,7 +131,7 @@ namespace MediaBrowser.Providers.Omdb item.SetProviderId(MetadataProviders.Imdb, result.imdbID); int parsedYear; - if (result.Year.Length > 0 + if (result.Year.Length > 0 && int.TryParse(result.Year.Substring(0, Math.Min(result.Year.Length, 4)), NumberStyles.Any, CultureInfo.InvariantCulture, out parsedYear)) { item.ProductionYear = parsedYear; diff --git a/MediaBrowser.Providers/Omdb/OmdbProvider.cs b/MediaBrowser.Providers/Omdb/OmdbProvider.cs index c7ce57fca4..b68f93cf6b 100644 --- a/MediaBrowser.Providers/Omdb/OmdbProvider.cs +++ b/MediaBrowser.Providers/Omdb/OmdbProvider.cs @@ -43,9 +43,7 @@ namespace MediaBrowser.Providers.Omdb { Url = url, ResourcePool = ResourcePool, - CancellationToken = cancellationToken, - CacheMode = CacheMode.Unconditional, - CacheLength = TimeSpan.FromDays(7) + CancellationToken = cancellationToken }).ConfigureAwait(false)) {