Fixing workflow reload logic (#7324)
* Made two changes: 1. TriggerScheduler was returning a null for a payload, which would cause NullReferenceException, and this would break the populator which prevented other workflow definitions from being imported/published correctly. 2. The reloader was only executing a part of the actual loading logic, meaning that workflow definitions used as activities were not correcly resolved to the expected versions * Update src/modules/Elsa.Scheduling/Services/DefaultTriggerScheduler.cs Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com> --------- Co-authored-by: j03y-nxxbz <joey.barten@nexxbiz.io> Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
This commit is contained in:
parent
a7e064abb0
commit
5816f6e3be
|
|
@ -64,6 +64,12 @@ public class DefaultTriggerScheduler(IWorkflowScheduler workflowScheduler, ISyst
|
|||
foreach (var trigger in cronTriggers)
|
||||
{
|
||||
var payload = trigger.GetPayload<CronTriggerPayload>();
|
||||
if(payload is null)
|
||||
{
|
||||
logger.LogWarning("Cron expression payload is empty. TriggerId: {TriggerId}. Skipping scheduling of this trigger", trigger.Id);
|
||||
continue;
|
||||
}
|
||||
|
||||
var cronExpression = payload.CronExpression;
|
||||
|
||||
if (string.IsNullOrWhiteSpace(cronExpression))
|
||||
|
|
|
|||
|
|
@ -1,18 +1,11 @@
|
|||
using Elsa.Mediator.Contracts;
|
||||
using Elsa.Workflows.Runtime.Models;
|
||||
using Elsa.Workflows.Runtime.Notifications;
|
||||
|
||||
namespace Elsa.Workflows.Runtime;
|
||||
namespace Elsa.Workflows.Runtime;
|
||||
|
||||
/// <inheritdoc />
|
||||
public class WorkflowDefinitionsReloader(IWorkflowDefinitionStorePopulator workflowDefinitionStorePopulator, INotificationSender notificationSender) : IWorkflowDefinitionsReloader
|
||||
public class WorkflowDefinitionsReloader(IRegistriesPopulator registriesPopulator) : IWorkflowDefinitionsReloader
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public async Task ReloadWorkflowDefinitionsAsync(CancellationToken cancellationToken)
|
||||
{
|
||||
var workflowDefinitions = await workflowDefinitionStorePopulator.PopulateStoreAsync(true, cancellationToken);
|
||||
var reloadedWorkflowDefinitions = workflowDefinitions.Select(ReloadedWorkflowDefinition.FromDefinition).ToList();
|
||||
var notification = new WorkflowDefinitionsReloaded(reloadedWorkflowDefinitions);
|
||||
await notificationSender.SendAsync(notification, cancellationToken);
|
||||
await registriesPopulator.PopulateAsync(cancellationToken);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue