From 5f2e84917a2e0273bad20eafdf94fb1d9a37e673 Mon Sep 17 00:00:00 2001 From: Casey Neehouse Date: Thu, 14 Jun 2012 15:33:46 +0400 Subject: [PATCH] Adds a lock to the MacroEngines to alleviate an error of items being added twice in high load environments. --- umbraco/cms/businesslogic/macro/MacroEngineFactory.cs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/umbraco/cms/businesslogic/macro/MacroEngineFactory.cs b/umbraco/cms/businesslogic/macro/MacroEngineFactory.cs index 245c6a4cb2..e738664bf5 100644 --- a/umbraco/cms/businesslogic/macro/MacroEngineFactory.cs +++ b/umbraco/cms/businesslogic/macro/MacroEngineFactory.cs @@ -11,6 +11,8 @@ namespace umbraco.cms.businesslogic.macro { private static readonly Dictionary m_engines = new Dictionary(); private static readonly List m_allEngines = new List(); + private static object locker = new object(); + public MacroEngineFactory() { Initialize(); @@ -39,7 +41,11 @@ namespace umbraco.cms.businesslogic.macro { try { - m_engines.Add(typeInstance.Name, t); + lock (locker) + { + if (!m_engines.ContainsKey(typeInstance.Name)) + m_engines.Add(typeInstance.Name, t); + } } catch (Exception ee) {