From 5f9d126ab7d087a204e32aed78148b07bc12ea2b Mon Sep 17 00:00:00 2001
From: nzdev <834725+nzdev@users.noreply.github.com>
Date: Fri, 26 Mar 2021 16:13:47 +1300
Subject: [PATCH] fix support for non run states
---
.../Sync/ISyncBootStateAccessor.cs | 15 ------------
.../Sync/NonRuntimeLevelBootStateAccessor.cs | 19 +++++++++++++++
src/Umbraco.Core/Sync/SyncBootState.cs | 24 +++++++++++++++++++
src/Umbraco.Core/Umbraco.Core.csproj | 2 ++
...aseServerRegistrarAndMessengerComponent.cs | 2 +-
.../PublishedCache/NuCache/NuCacheComposer.cs | 4 ++++
6 files changed, 50 insertions(+), 16 deletions(-)
create mode 100644 src/Umbraco.Core/Sync/NonRuntimeLevelBootStateAccessor.cs
create mode 100644 src/Umbraco.Core/Sync/SyncBootState.cs
diff --git a/src/Umbraco.Core/Sync/ISyncBootStateAccessor.cs b/src/Umbraco.Core/Sync/ISyncBootStateAccessor.cs
index a7b7c58235..4b8500f2d9 100644
--- a/src/Umbraco.Core/Sync/ISyncBootStateAccessor.cs
+++ b/src/Umbraco.Core/Sync/ISyncBootStateAccessor.cs
@@ -17,19 +17,4 @@ namespace Umbraco.Core.Sync
///
SyncBootState GetSyncBootState();
}
- public enum SyncBootState
- {
- ///
- /// Unknown state. Treat as HasSyncState
- ///
- Unknown = 0,
- ///
- /// Cold boot. No Sync state
- ///
- ColdBoot = 1,
- ///
- /// Warm boot. Sync state present
- ///
- HasSyncState = 2
- }
}
diff --git a/src/Umbraco.Core/Sync/NonRuntimeLevelBootStateAccessor.cs b/src/Umbraco.Core/Sync/NonRuntimeLevelBootStateAccessor.cs
new file mode 100644
index 0000000000..70cec6cc96
--- /dev/null
+++ b/src/Umbraco.Core/Sync/NonRuntimeLevelBootStateAccessor.cs
@@ -0,0 +1,19 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Umbraco.Core.Sync
+{
+ ///
+ /// Boot state implementation for when umbraco is not in the run state
+ ///
+ public class NonRuntimeLevelBootStateAccessor : ISyncBootStateAccessor
+ {
+ public SyncBootState GetSyncBootState()
+ {
+ return SyncBootState.Unknown;
+ }
+ }
+}
diff --git a/src/Umbraco.Core/Sync/SyncBootState.cs b/src/Umbraco.Core/Sync/SyncBootState.cs
new file mode 100644
index 0000000000..4abc53abba
--- /dev/null
+++ b/src/Umbraco.Core/Sync/SyncBootState.cs
@@ -0,0 +1,24 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Umbraco.Core.Sync
+{
+ public enum SyncBootState
+ {
+ ///
+ /// Unknown state. Treat as HasSyncState
+ ///
+ Unknown = 0,
+ ///
+ /// Cold boot. No Sync state
+ ///
+ ColdBoot = 1,
+ ///
+ /// Warm boot. Sync state present
+ ///
+ HasSyncState = 2
+ }
+}
diff --git a/src/Umbraco.Core/Umbraco.Core.csproj b/src/Umbraco.Core/Umbraco.Core.csproj
index 5c3dd074dd..e0c0d78112 100755
--- a/src/Umbraco.Core/Umbraco.Core.csproj
+++ b/src/Umbraco.Core/Umbraco.Core.csproj
@@ -174,6 +174,8 @@
+
+
diff --git a/src/Umbraco.Web/Compose/DatabaseServerRegistrarAndMessengerComponent.cs b/src/Umbraco.Web/Compose/DatabaseServerRegistrarAndMessengerComponent.cs
index 688fc268b0..26ba0db324 100644
--- a/src/Umbraco.Web/Compose/DatabaseServerRegistrarAndMessengerComponent.cs
+++ b/src/Umbraco.Web/Compose/DatabaseServerRegistrarAndMessengerComponent.cs
@@ -72,7 +72,7 @@ namespace Umbraco.Web.Compose
composition.SetDatabaseServerMessengerOptions(GetDefaultOptions);
composition.SetServerMessenger();
- composition.Register(Lifetime.Singleton);
+ composition.Register(factory=> factory.GetInstance() as BatchedDatabaseServerMessenger, Lifetime.Singleton);
}
}
diff --git a/src/Umbraco.Web/PublishedCache/NuCache/NuCacheComposer.cs b/src/Umbraco.Web/PublishedCache/NuCache/NuCacheComposer.cs
index f748fd555c..99f2786d49 100644
--- a/src/Umbraco.Web/PublishedCache/NuCache/NuCacheComposer.cs
+++ b/src/Umbraco.Web/PublishedCache/NuCache/NuCacheComposer.cs
@@ -1,5 +1,6 @@
using Umbraco.Core;
using Umbraco.Core.Composing;
+using Umbraco.Core.Sync;
using Umbraco.Web.PublishedCache.NuCache.DataSource;
namespace Umbraco.Web.PublishedCache.NuCache
@@ -10,6 +11,9 @@ namespace Umbraco.Web.PublishedCache.NuCache
{
base.Compose(composition);
+ //Overriden on Run state in DatabaseServerRegistrarAndMessengerComposer
+ composition.Register(Lifetime.Singleton);
+
// register the NuCache database data source
composition.Register();