From 9897f6ada579f9c0fe4f0b41884f639c7ea88b71 Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Thu, 10 Sep 2015 23:18:43 +0100 Subject: [PATCH] Added "service unavailable" support for the currently requested shell. --- .../DefaultDataMigrationInterpreter.cs | 2 +- src/Orchard/Environment/DefaultOrchardHost.cs | 16 +++++++++++----- src/Orchard/Environment/DefaultOrchardShell.cs | 1 - 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/Orchard/Data/Migration/Interpreters/DefaultDataMigrationInterpreter.cs b/src/Orchard/Data/Migration/Interpreters/DefaultDataMigrationInterpreter.cs index e3f5d958c..fc75c61cb 100644 --- a/src/Orchard/Data/Migration/Interpreters/DefaultDataMigrationInterpreter.cs +++ b/src/Orchard/Data/Migration/Interpreters/DefaultDataMigrationInterpreter.cs @@ -382,7 +382,7 @@ namespace Orchard.Data.Migration.Interpreters { } } finally { - _sqlStatements.Clear(); + _sqlStatements.Clear(); } } diff --git a/src/Orchard/Environment/DefaultOrchardHost.cs b/src/Orchard/Environment/DefaultOrchardHost.cs index 3dd4ad23c..c9abb544a 100644 --- a/src/Orchard/Environment/DefaultOrchardHost.cs +++ b/src/Orchard/Environment/DefaultOrchardHost.cs @@ -12,6 +12,7 @@ using Orchard.Environment.Descriptor.Models; using Orchard.Localization; using Orchard.Logging; using Orchard.Mvc; +using Orchard.Mvc.Extensions; using Orchard.Utility.Extensions; namespace Orchard.Environment { @@ -348,13 +349,18 @@ namespace Orchard.Environment { } private void BlockRequestsDuringSetup() { - if (_shellContexts == null) + var httpContext = _httpContextAccessor.Current(); + if (httpContext.IsBackgroundContext()) return; - // If there's only one tenant and it's initializing, return a Service Unavailable HTTP status code. - var shellContexts = _shellContexts.ToList(); - if (shellContexts.Count == 1 && shellContexts[0].Settings.State == TenantState.Initializing) { - var response = _httpContextAccessor.Current().Response; + // Get the requested shell. + var runningShell = _runningShellTable.Match(httpContext); + if (runningShell == null) + return; + + // If the requested shell is currently initializing, return a Service Unavailable HTTP status code. + if (runningShell.State == TenantState.Initializing) { + var response = httpContext.Response; response.StatusCode = 503; response.StatusDescription = "Orchard is currently setting up. Please check back in a few moments."; response.Write("Orchard is currently setting up. Please check back in a few moments."); diff --git a/src/Orchard/Environment/DefaultOrchardShell.cs b/src/Orchard/Environment/DefaultOrchardShell.cs index e84483c45..027252a8b 100644 --- a/src/Orchard/Environment/DefaultOrchardShell.cs +++ b/src/Orchard/Environment/DefaultOrchardShell.cs @@ -94,7 +94,6 @@ namespace Orchard.Environment { SafelyTerminate(() => _sweepGenerator.Terminate()); } - private void SafelyTerminate(Action action) { try { action();