Browse Source

Rule runner grain fix.

pull/544/head
Sebastian 6 years ago
parent
commit
89b5245d59
  1. 31
      backend/src/Squidex.Domain.Apps.Entities/Rules/Runner/RuleRunnerGrain.cs
  2. 10
      backend/src/Squidex.Infrastructure/EventSourcing/Grains/EventConsumerGrain.cs

31
backend/src/Squidex.Domain.Apps.Entities/Rules/Runner/RuleRunnerGrain.cs

@ -17,6 +17,7 @@ using Squidex.Infrastructure;
using Squidex.Infrastructure.EventSourcing;
using Squidex.Infrastructure.Log;
using Squidex.Infrastructure.Orleans;
using Squidex.Infrastructure.Reflection;
using Squidex.Infrastructure.States;
using Squidex.Infrastructure.Tasks;
@ -155,13 +156,16 @@ namespace Squidex.Domain.Apps.Entities.Rules.Runner
{
try
{
var @event = eventDataFormatter.Parse(storedEvent.Data);
var @event = ParseKnownEvent(storedEvent);
var jobs = await ruleService.CreateJobsAsync(rule.RuleDef, rule.Id, @event, false);
foreach (var (job, _) in jobs)
if (@event != null)
{
await ruleEventRepository.EnqueueAsync(job, job.Created, ct);
var jobs = await ruleService.CreateJobsAsync(rule.RuleDef, rule.Id, @event, false);
foreach (var (job, _) in jobs)
{
await ruleEventRepository.EnqueueAsync(job, job.Created, ct);
}
}
}
catch (Exception ex)
@ -211,6 +215,23 @@ namespace Squidex.Domain.Apps.Entities.Rules.Runner
}
}
private Envelope<IEvent>? ParseKnownEvent(StoredEvent storedEvent)
{
try
{
var @event = eventDataFormatter.Parse(storedEvent.Data);
@event.SetEventPosition(storedEvent.EventPosition);
@event.SetEventStreamNumber(storedEvent.EventStreamNumber);
return @event;
}
catch (TypeNameNotFoundException)
{
return null;
}
}
public Task ReceiveReminder(string reminderName, TickStatus status)
{
EnsureIsRunning();

10
backend/src/Squidex.Infrastructure/EventSourcing/Grains/EventConsumerGrain.cs

@ -280,20 +280,20 @@ namespace Squidex.Infrastructure.EventSourcing.Grains
}
}
private Envelope<IEvent>? ParseKnownEvent(StoredEvent message)
private Envelope<IEvent>? ParseKnownEvent(StoredEvent storedEvent)
{
try
{
var @event = eventDataFormatter.Parse(message.Data);
var @event = eventDataFormatter.Parse(storedEvent.Data);
@event.SetEventPosition(message.EventPosition);
@event.SetEventStreamNumber(message.EventStreamNumber);
@event.SetEventPosition(storedEvent.EventPosition);
@event.SetEventStreamNumber(storedEvent.EventStreamNumber);
return @event;
}
catch (TypeNameNotFoundException)
{
log.LogDebug(w => w.WriteProperty("oldEventFound", message.Data.Type));
log.LogDebug(w => w.WriteProperty("oldEventFound", storedEvent.Data.Type));
return null;
}

Loading…
Cancel
Save