From 8a4fae6f38b26159bd6edbabb694d34e25106e4d Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Thu, 24 Dec 2020 21:36:42 +0100 Subject: [PATCH] Fix Timer ExecuteAt persistence (for Trigger) Without ExecuteAt receiving a value (even if it lies in the past), the TimerTriggerProvider will keep triggering workflows containing a Timer. --- .../Elsa.Activities.Timers/Activities/Timer/Timer.cs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/activities/Elsa.Activities.Timers/Activities/Timer/Timer.cs b/src/activities/Elsa.Activities.Timers/Activities/Timer/Timer.cs index 50cd69f82..466d585bd 100644 --- a/src/activities/Elsa.Activities.Timers/Activities/Timer/Timer.cs +++ b/src/activities/Elsa.Activities.Timers/Activities/Timer/Timer.cs @@ -32,11 +32,12 @@ namespace Elsa.Activities.Timers if (context.WorkflowExecutionContext.IsFirstPass) return Done(); - if (Timeout <= Duration.Zero) + var now = _clock.GetCurrentInstant(); + ExecuteAt = now.Plus(Timeout); + + if (ExecuteAt <= now) return Done(); - ExecuteAt = _clock.GetCurrentInstant().Plus(Timeout); - return Combine(Suspend(), new ScheduleWorkflowResult(ExecuteAt.Value)); }