From 5816f6e3be136fcee9a363cb458582929b0ee54e Mon Sep 17 00:00:00 2001 From: lukhipolito-nexxbiz Date: Wed, 25 Feb 2026 19:14:08 +0100 Subject: [PATCH] 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 Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com> --- .../Services/DefaultTriggerScheduler.cs | 6 ++++++ .../Services/WorkflowDefinitionsReloader.cs | 13 +++---------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/modules/Elsa.Scheduling/Services/DefaultTriggerScheduler.cs b/src/modules/Elsa.Scheduling/Services/DefaultTriggerScheduler.cs index 31165173a..71ce81450 100644 --- a/src/modules/Elsa.Scheduling/Services/DefaultTriggerScheduler.cs +++ b/src/modules/Elsa.Scheduling/Services/DefaultTriggerScheduler.cs @@ -64,6 +64,12 @@ public class DefaultTriggerScheduler(IWorkflowScheduler workflowScheduler, ISyst foreach (var trigger in cronTriggers) { var payload = trigger.GetPayload(); + 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)) diff --git a/src/modules/Elsa.Workflows.Runtime/Services/WorkflowDefinitionsReloader.cs b/src/modules/Elsa.Workflows.Runtime/Services/WorkflowDefinitionsReloader.cs index 943632453..1ed6cf15b 100644 --- a/src/modules/Elsa.Workflows.Runtime/Services/WorkflowDefinitionsReloader.cs +++ b/src/modules/Elsa.Workflows.Runtime/Services/WorkflowDefinitionsReloader.cs @@ -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; /// -public class WorkflowDefinitionsReloader(IWorkflowDefinitionStorePopulator workflowDefinitionStorePopulator, INotificationSender notificationSender) : IWorkflowDefinitionsReloader +public class WorkflowDefinitionsReloader(IRegistriesPopulator registriesPopulator) : IWorkflowDefinitionsReloader { /// 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); } } \ No newline at end of file