From 6f1a04afd51aa7b0f18cc33e10fcb3da2bb31854 Mon Sep 17 00:00:00 2001 From: "Collin M. Barrett" Date: Mon, 14 Sep 2020 07:46:36 -0500 Subject: [PATCH] =?UTF-8?q?feat(archival):=20=E2=9C=A8=20ensure=20hangfire?= =?UTF-8?q?d=20mediatr=20cmds=20have=20cancellation=20support?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Scheduling/ScheduleMediator.cs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/services/Archival/FilterLists.Archival.Infrastructure/Scheduling/ScheduleMediator.cs b/services/Archival/FilterLists.Archival.Infrastructure/Scheduling/ScheduleMediator.cs index 720dbe6d3..78545a266 100644 --- a/services/Archival/FilterLists.Archival.Infrastructure/Scheduling/ScheduleMediator.cs +++ b/services/Archival/FilterLists.Archival.Infrastructure/Scheduling/ScheduleMediator.cs @@ -1,4 +1,5 @@ using System; +using System.Threading; using Hangfire; using MediatR; using Newtonsoft.Json; @@ -10,12 +11,14 @@ public static class RequestExtensions { public static void EnqueueBackgroundJob(this IRequest request) { - BackgroundJob.Enqueue(m => m.Send(request)); + // Hangfire replaces CancellationToken at runtime with its own. We just need any in the signature. + // https://docs.hangfire.io/en/latest/background-methods/using-cancellation-tokens.html#cancellationtoken + BackgroundJob.Enqueue(m => m.Send(request, CancellationToken.None)); } public static void AddOrUpdateRecurringJob(this IRequest request, Func cronExpression) { - RecurringJob.AddOrUpdate(m => m.Send(request), cronExpression); + RecurringJob.AddOrUpdate(m => m.Send(request, CancellationToken.None), cronExpression); } } @@ -54,9 +57,9 @@ public HangfireMediator(IMediator mediator) _mediator = mediator; } - public void Send(IRequest request) + public void Send(IRequest request, CancellationToken cancellationToken) { - _mediator.Send(request); + _mediator.Send(request, cancellationToken); } } }