From 834de2099f005c2d87c0ec140d6c1cccef172ec9 Mon Sep 17 00:00:00 2001 From: Shannon Date: Thu, 24 Jul 2014 09:06:45 -0700 Subject: [PATCH] updates manifest watcher just to ensure we don't try to shut down the app domain more than once. --- src/Umbraco.Core/Manifest/ManifestWatcher.cs | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Core/Manifest/ManifestWatcher.cs b/src/Umbraco.Core/Manifest/ManifestWatcher.cs index a81b3041d9..f0bd46602b 100644 --- a/src/Umbraco.Core/Manifest/ManifestWatcher.cs +++ b/src/Umbraco.Core/Manifest/ManifestWatcher.cs @@ -8,6 +8,8 @@ namespace Umbraco.Core.Manifest internal class ManifestWatcher : DisposableObject { private readonly List _fws = new List(); + private static volatile bool _isRestarting = false; + private static readonly object Locker = new object(); public void Start(params string[] packageFolders) { @@ -32,9 +34,21 @@ namespace Umbraco.Core.Manifest { if (e.Name.InvariantContains("package.manifest")) { - LogHelper.Info("manifest has changed, app pool is restarting (" + e.FullPath + ")"); - HttpRuntime.UnloadAppDomain(); - Dispose(); + //Ensure the app is not restarted multiple times for multiple saving during the same app domain execution + if (_isRestarting == false) + { + lock (Locker) + { + if (_isRestarting == false) + { + _isRestarting = true; + + LogHelper.Info("manifest has changed, app pool is restarting (" + e.FullPath + ")"); + HttpRuntime.UnloadAppDomain(); + Dispose(); + } + } + } } }