Browse Source

Fixes

pull/169/head
Sebastian Stehle 9 years ago
parent
commit
2fddd90a75
  1. 22
      src/Squidex.Domain.Apps.Read/State/Orleans/Grains/Implementations/AppStateGrain.cs
  2. 6
      src/Squidex.Domain.Apps.Read/State/Orleans/Grains/Implementations/AppStateGrainState.cs
  3. 5
      src/Squidex/Config/Orleans/ClientServices.cs
  4. 7
      src/Squidex/Config/Orleans/SiloServices.cs

22
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<AppStateGrainState>, 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);

6
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<JsonSchemaEntity, bool> filter)
{
return Schemas.Values.FirstOrDefault(filter);
return Schemas.Values?.FirstOrDefault(filter);
}
public List<IRuleEntity> FindRules()
{
return Rules.Values.OfType<IRuleEntity>().ToList();
return Rules.Values?.OfType<IRuleEntity>().ToList() ?? new List<IRuleEntity>();
}
public List<ISchemaEntity> FindSchemas(Func<JsonSchemaEntity, bool> filter)
{
return Schemas.Values.Where(filter).OfType<ISchemaEntity>().ToList();
return Schemas.Values?.Where(filter).OfType<ISchemaEntity>().ToList() ?? new List<ISchemaEntity>();
}
public void Reset()

5
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();

7
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;

Loading…
Cancel
Save