From 3efbb47aedc0b16a4e20f05c7c47e67ef15bb268 Mon Sep 17 00:00:00 2001 From: Pavel Budik Date: Wed, 8 Aug 2018 10:02:48 +0200 Subject: [PATCH] U4-11527 Fix concurrency issue --- src/Umbraco.Core/ApplicationContext.cs | 20 +++++++++---------- src/Umbraco.Core/Sync/ApplicationUrlHelper.cs | 3 +-- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/src/Umbraco.Core/ApplicationContext.cs b/src/Umbraco.Core/ApplicationContext.cs index 82ef562bc1..b16eb18256 100644 --- a/src/Umbraco.Core/ApplicationContext.cs +++ b/src/Umbraco.Core/ApplicationContext.cs @@ -1,8 +1,8 @@ -using System; -using System.Collections.Generic; +using Semver; +using System; +using System.Collections.Concurrent; using System.Configuration; using System.Threading; -using Semver; using Umbraco.Core.Configuration; using Umbraco.Core.Logging; using Umbraco.Core.ObjectResolution; @@ -13,7 +13,7 @@ using Umbraco.Core.Sync; namespace Umbraco.Core { - /// + /// /// the Umbraco Application context /// /// @@ -270,7 +270,7 @@ namespace Umbraco.Core return _umbracoApplicationUrl; } } - + /// /// Resets the url. /// @@ -280,10 +280,10 @@ namespace Umbraco.Core } // ReSharper disable once InconsistentNaming - internal string _umbracoApplicationUrl; - - internal List _umbracoApplicationDomains = new List(); - + internal string _umbracoApplicationUrl; + + internal ConcurrentDictionary _umbracoApplicationDomains = new ConcurrentDictionary(); + internal string _umbracoApplicationDeploymentId; private Lazy _configured; @@ -399,7 +399,7 @@ namespace Umbraco.Core } return version; - } + } private void AssertIsNotReady() { diff --git a/src/Umbraco.Core/Sync/ApplicationUrlHelper.cs b/src/Umbraco.Core/Sync/ApplicationUrlHelper.cs index 156cee93e2..b52bbcaf97 100644 --- a/src/Umbraco.Core/Sync/ApplicationUrlHelper.cs +++ b/src/Umbraco.Core/Sync/ApplicationUrlHelper.cs @@ -51,10 +51,9 @@ namespace Umbraco.Core.Sync if (request != null) { var applicationUrl = GetApplicationUrlFromRequest(request); - newApplicationUrl = !appContext._umbracoApplicationDomains.Contains(applicationUrl); + newApplicationUrl = appContext._umbracoApplicationDomains.TryAdd(applicationUrl, applicationUrl); if (newApplicationUrl) { - appContext._umbracoApplicationDomains.Add(applicationUrl); LogHelper.Info(typeof(ApplicationUrlHelper), string.Format("New ApplicationUrl detected: {0}", applicationUrl)); } }