From 2fddd90a752ccb40644624e4540206a08e668088 Mon Sep 17 00:00:00 2001 From: Sebastian Stehle Date: Thu, 16 Nov 2017 20:13:25 +0100 Subject: [PATCH] Fixes --- .../Grains/Implementations/AppStateGrain.cs | 22 +++++++++++++++++++ .../Implementations/AppStateGrainState.cs | 6 ++--- src/Squidex/Config/Orleans/ClientServices.cs | 5 +++++ src/Squidex/Config/Orleans/SiloServices.cs | 7 ------ 4 files changed, 30 insertions(+), 10 deletions(-) diff --git a/src/Squidex.Domain.Apps.Read/State/Orleans/Grains/Implementations/AppStateGrain.cs b/src/Squidex.Domain.Apps.Read/State/Orleans/Grains/Implementations/AppStateGrain.cs index f0ead23f0..5bb383096 100644 --- a/src/Squidex.Domain.Apps.Read/State/Orleans/Grains/Implementations/AppStateGrain.cs +++ b/src/Squidex.Domain.Apps.Read/State/Orleans/Grains/Implementations/AppStateGrain.cs @@ -11,6 +11,7 @@ using System.Collections.Generic; using System.Threading.Tasks; using Orleans; using Orleans.Concurrency; +using Orleans.Runtime; using Squidex.Domain.Apps.Core.Schemas; using Squidex.Domain.Apps.Read.Apps; using Squidex.Domain.Apps.Read.Rules; @@ -23,6 +24,7 @@ namespace Squidex.Domain.Apps.Read.State.Orleans.Grains.Implementations public sealed class AppStateGrain : Grain, IAppStateGrain { private readonly FieldRegistry fieldRegistry; + private Exception exception; public AppStateGrain(FieldRegistry fieldRegistry) { @@ -31,6 +33,26 @@ namespace Squidex.Domain.Apps.Read.State.Orleans.Grains.Implementations this.fieldRegistry = fieldRegistry; } + public override void Participate(IGrainLifecycle lifecycle) + { + lifecycle.Subscribe(GrainLifecycleStage.Activate, ct => OnActivateAsync(), ct => OnDeactivateAsync()); + lifecycle.Subscribe(GrainLifecycleStage.SetupState, ct => LoadStateAsync()); + } + + private async Task LoadStateAsync() + { + try + { + await this.ReadStateAsync(); + } + catch (Exception ex) + { + exception = ex; + + State = new AppStateGrainState(); + } + } + public override Task OnActivateAsync() { State.SetRegistry(fieldRegistry); diff --git a/src/Squidex.Domain.Apps.Read/State/Orleans/Grains/Implementations/AppStateGrainState.cs b/src/Squidex.Domain.Apps.Read/State/Orleans/Grains/Implementations/AppStateGrainState.cs index ec67a8913..cc2ddf84d 100644 --- a/src/Squidex.Domain.Apps.Read/State/Orleans/Grains/Implementations/AppStateGrainState.cs +++ b/src/Squidex.Domain.Apps.Read/State/Orleans/Grains/Implementations/AppStateGrainState.cs @@ -44,17 +44,17 @@ namespace Squidex.Domain.Apps.Read.State.Orleans.Grains.Implementations public ISchemaEntity FindSchema(Func filter) { - return Schemas.Values.FirstOrDefault(filter); + return Schemas.Values?.FirstOrDefault(filter); } public List FindRules() { - return Rules.Values.OfType().ToList(); + return Rules.Values?.OfType().ToList() ?? new List(); } public List FindSchemas(Func filter) { - return Schemas.Values.Where(filter).OfType().ToList(); + return Schemas.Values?.Where(filter).OfType().ToList() ?? new List(); } public void Reset() diff --git a/src/Squidex/Config/Orleans/ClientServices.cs b/src/Squidex/Config/Orleans/ClientServices.cs index 5dcfc8460..00742a9d8 100644 --- a/src/Squidex/Config/Orleans/ClientServices.cs +++ b/src/Squidex/Config/Orleans/ClientServices.cs @@ -6,6 +6,7 @@ // All rights reserved. // ========================================================================== +using System; using System.Reflection; using Microsoft.Extensions.DependencyInjection; using Orleans; @@ -32,6 +33,10 @@ namespace Squidex.Config.Orleans .AddApplicationPartsFromReferences(typeof(AppStateGrain).Assembly) .AddApplicationPartsFromReferences(typeof(EventConsumerGrain).Assembly) .AddApplicationPartsFromReferences(typeof(XmlRepositoryGrain).Assembly) + .UseStaticGatewayListProvider(options => + { + options.Gateways.Add(new Uri("gwy.tcp://localhost:40000/0")); + }) .Build(); client.Connect().Wait(); diff --git a/src/Squidex/Config/Orleans/SiloServices.cs b/src/Squidex/Config/Orleans/SiloServices.cs index 8fd6cb792..b81d7daba 100644 --- a/src/Squidex/Config/Orleans/SiloServices.cs +++ b/src/Squidex/Config/Orleans/SiloServices.cs @@ -55,13 +55,6 @@ namespace Squidex.Config.Orleans }); } - services.AddMongoDBGatewayListProvider(c => - { - c.ConnectionString = mongoConfiguration; - c.CollectionPrefix = "Orleans_"; - c.DatabaseName = mongoDatabaseName; - }); - services.AddMongoDBMembershipTable(c => { c.ConnectionString = mongoConfiguration;