Skip to content

Commit

Permalink
catching the exception preventing the server from starting successful…
Browse files Browse the repository at this point in the history
…ly when an incorrect cron format is entered (#4917)

Co-authored-by: Lena Pletschacher <lp@nuvotex.de>
  • Loading branch information
platschlena and LP-Nuvotex authored Feb 9, 2024
1 parent d4e1cf0 commit 4fe0446
Showing 1 changed file with 13 additions and 4 deletions.
17 changes: 13 additions & 4 deletions src/modules/Elsa.Scheduling/Services/DefaultTriggerScheduler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
using Elsa.Scheduling.Contracts;
using Elsa.Workflows.Runtime.Entities;
using Elsa.Workflows.Runtime.Requests;
using Microsoft.Extensions.Logging;

namespace Elsa.Scheduling.Services;

Expand All @@ -14,13 +15,15 @@ namespace Elsa.Scheduling.Services;
public class DefaultTriggerScheduler : ITriggerScheduler
{
private readonly IWorkflowScheduler _workflowScheduler;
private readonly ILogger<DefaultTriggerScheduler> _logger;

/// <summary>
/// Initializes a new instance of the <see cref="DefaultTriggerScheduler"/> class.
/// </summary>
public DefaultTriggerScheduler(IWorkflowScheduler workflowScheduler)
public DefaultTriggerScheduler(IWorkflowScheduler workflowScheduler, ILogger<DefaultTriggerScheduler> logger)
{
_workflowScheduler = workflowScheduler;
_logger = logger;
}

/// <inheritdoc />
Expand Down Expand Up @@ -76,16 +79,22 @@ public async Task ScheduleAsync(IEnumerable<StoredTrigger> triggers, Cancellatio
TriggerActivityId = trigger.ActivityId,
Input = input
};

await _workflowScheduler.ScheduleCronAsync(trigger.Id, request, cronExpression, cancellationToken);
try
{
await _workflowScheduler.ScheduleCronAsync(trigger.Id, request, cronExpression, cancellationToken);
}
catch (FormatException ex)
{
_logger.LogWarning($"Cron expression format error: {ex.Message}. CronExpression: {cronExpression}");
}
}
}

/// <inheritdoc />
public async Task UnscheduleAsync(IEnumerable<StoredTrigger> triggers, CancellationToken cancellationToken = default)
{
var triggerList = triggers.ToList();

// Select all Timer triggers.
var timerTriggers = triggerList.Filter<Activities.Timer>();

Expand Down

0 comments on commit 4fe0446

Please sign in to comment.