Browse Source

Rule runner grain fix.

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

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

@ -17,6 +17,7 @@ using Squidex.Infrastructure;
using Squidex.Infrastructure.EventSourcing; using Squidex.Infrastructure.EventSourcing;
using Squidex.Infrastructure.Log; using Squidex.Infrastructure.Log;
using Squidex.Infrastructure.Orleans; using Squidex.Infrastructure.Orleans;
using Squidex.Infrastructure.Reflection;
using Squidex.Infrastructure.States; using Squidex.Infrastructure.States;
using Squidex.Infrastructure.Tasks; using Squidex.Infrastructure.Tasks;
@ -155,8 +156,10 @@ namespace Squidex.Domain.Apps.Entities.Rules.Runner
{ {
try try
{ {
var @event = eventDataFormatter.Parse(storedEvent.Data); var @event = ParseKnownEvent(storedEvent);
if (@event != null)
{
var jobs = await ruleService.CreateJobsAsync(rule.RuleDef, rule.Id, @event, false); var jobs = await ruleService.CreateJobsAsync(rule.RuleDef, rule.Id, @event, false);
foreach (var (job, _) in jobs) foreach (var (job, _) in jobs)
@ -164,6 +167,7 @@ namespace Squidex.Domain.Apps.Entities.Rules.Runner
await ruleEventRepository.EnqueueAsync(job, job.Created, ct); await ruleEventRepository.EnqueueAsync(job, job.Created, ct);
} }
} }
}
catch (Exception ex) catch (Exception ex)
{ {
log.LogWarning(ex, w => w log.LogWarning(ex, w => w
@ -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) public Task ReceiveReminder(string reminderName, TickStatus status)
{ {
EnsureIsRunning(); 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 try
{ {
var @event = eventDataFormatter.Parse(message.Data); var @event = eventDataFormatter.Parse(storedEvent.Data);
@event.SetEventPosition(message.EventPosition); @event.SetEventPosition(storedEvent.EventPosition);
@event.SetEventStreamNumber(message.EventStreamNumber); @event.SetEventStreamNumber(storedEvent.EventStreamNumber);
return @event; return @event;
} }
catch (TypeNameNotFoundException) catch (TypeNameNotFoundException)
{ {
log.LogDebug(w => w.WriteProperty("oldEventFound", message.Data.Type)); log.LogDebug(w => w.WriteProperty("oldEventFound", storedEvent.Data.Type));
return null; return null;
} }

Loading…
Cancel
Save