Re-enable re-queueing of messages for locked workflows and update timer activities to not execute if scheduled time lies in future
This commit is contained in:
parent
3e12cd59ce
commit
de6fce52d4
|
|
@ -38,6 +38,13 @@ namespace Elsa.Activities.Timers
|
|||
get => GetState<Instant?>();
|
||||
set => SetState(value);
|
||||
}
|
||||
|
||||
protected override bool OnCanExecute(ActivityExecutionContext context)
|
||||
{
|
||||
var now = _clock.GetCurrentInstant();
|
||||
var executeAt = ExecuteAt;
|
||||
return executeAt == null || executeAt <= now;
|
||||
}
|
||||
|
||||
protected override async ValueTask<IActivityExecutionResult> OnExecuteAsync(ActivityExecutionContext context)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -36,6 +36,13 @@ namespace Elsa.Activities.Timers
|
|||
set => SetState(value);
|
||||
}
|
||||
|
||||
protected override bool OnCanExecute(ActivityExecutionContext context)
|
||||
{
|
||||
var executeAt = ExecuteAt;
|
||||
var now = _clock.GetCurrentInstant();
|
||||
return executeAt == null || executeAt <= now;
|
||||
}
|
||||
|
||||
protected override IActivityExecutionResult OnExecute(ActivityExecutionContext context)
|
||||
{
|
||||
if (context.WorkflowExecutionContext.IsFirstPass)
|
||||
|
|
|
|||
|
|
@ -29,6 +29,13 @@ namespace Elsa.Activities.Timers
|
|||
get => GetState<Instant?>();
|
||||
set => SetState(value);
|
||||
}
|
||||
|
||||
protected override bool OnCanExecute(ActivityExecutionContext context)
|
||||
{
|
||||
var now = _clock.GetCurrentInstant();
|
||||
var executeAt = ExecuteAt;
|
||||
return executeAt == null || executeAt <= now;
|
||||
}
|
||||
|
||||
protected override IActivityExecutionResult OnExecute(ActivityExecutionContext context)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -46,9 +46,8 @@ namespace Elsa.Consumers
|
|||
|
||||
if (!await _distributedLockProvider.AcquireLockAsync(lockKey))
|
||||
{
|
||||
// TODO: Reschedule message if it's not a redelivery.
|
||||
// var currentContext = MessageContext.Current;
|
||||
_logger.LogDebug("Failed to acquire lock on workflow instance {WorkflowInstanceId}", workflowInstanceId);
|
||||
_logger.LogDebug("Failed to acquire lock on workflow instance {WorkflowInstanceId}. Re-queueing message", workflowInstanceId);
|
||||
await _commandSender.SendAsync(message);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue