From 50e1b374bf826c655cbdd67b942e43cd24f5cd11 Mon Sep 17 00:00:00 2001 From: Luke Butters Date: Tue, 22 Aug 2023 09:52:43 +1000 Subject: [PATCH 1/2] Simplify cts in polling loop --- source/Halibut/Transport/PollingClient.cs | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/source/Halibut/Transport/PollingClient.cs b/source/Halibut/Transport/PollingClient.cs index de672bbff..974a78913 100644 --- a/source/Halibut/Transport/PollingClient.cs +++ b/source/Halibut/Transport/PollingClient.cs @@ -25,7 +25,6 @@ public class PollingClient : IPollingClient readonly Func createRetryPolicy; readonly AsyncHalibutFeature asyncHalibutFeature; - RequestCancellationTokens? requestCancellationTokens; public PollingClient(Uri subscription, ISecureClient secureClient, Func handleIncomingRequest, ILog log, CancellationToken cancellationToken, Func createRetryPolicy, AsyncHalibutFeature asyncHalibutFeature) { @@ -64,8 +63,7 @@ public void Start() } else { - requestCancellationTokens = new RequestCancellationTokens(workingCancellationTokenSource.Token, workingCancellationTokenSource.Token); - pollingClientLoopTask = Task.Run(async () => await ExecutePollingLoopAsyncCatchingExceptions(requestCancellationTokens)); + pollingClientLoopTask = Task.Run(async () => await ExecutePollingLoopAsyncCatchingExceptions(workingCancellationTokenSource.Token)); } } @@ -74,7 +72,6 @@ public void Dispose() working = false; Try.CatchingError(workingCancellationTokenSource.Cancel, _ => { }); Try.CatchingError(workingCancellationTokenSource.Dispose, _ => { }); - Try.CatchingError(() => requestCancellationTokens?.Dispose(), _ => { }); } void ExecutePollingLoop(object ignored) @@ -123,11 +120,11 @@ void ExecutePollingLoop(object ignored) /// Runs ExecutePollingLoopAsync but catches any exception that falls out of it, log here /// rather than let it be unobserved. We are not expecting an exception but just in case. /// - async Task ExecutePollingLoopAsyncCatchingExceptions(RequestCancellationTokens requestCancellationTokens) + async Task ExecutePollingLoopAsyncCatchingExceptions(CancellationToken cancellationToken) { try { - await ExecutePollingLoopAsync(requestCancellationTokens); + await ExecutePollingLoopAsync(cancellationToken); } catch (Exception e) { @@ -135,8 +132,9 @@ async Task ExecutePollingLoopAsyncCatchingExceptions(RequestCancellationTokens r } } - async Task ExecutePollingLoopAsync(RequestCancellationTokens requestCancellationTokens) + async Task ExecutePollingLoopAsync(CancellationToken cancellationToken) { + using var requestCancellationTokens = new RequestCancellationTokens(workingCancellationTokenSource.Token, workingCancellationTokenSource.Token); var retry = createRetryPolicy(); var sleepFor = TimeSpan.Zero; while (!cancellationToken.IsCancellationRequested) From 44e276ebb73a320c7b20e077294f7a4720f86c15 Mon Sep 17 00:00:00 2001 From: Luke Butters Date: Tue, 22 Aug 2023 09:54:08 +1000 Subject: [PATCH 2/2] . --- source/Halibut/Transport/PollingClient.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/Halibut/Transport/PollingClient.cs b/source/Halibut/Transport/PollingClient.cs index 974a78913..3b2fa3cbf 100644 --- a/source/Halibut/Transport/PollingClient.cs +++ b/source/Halibut/Transport/PollingClient.cs @@ -134,7 +134,7 @@ async Task ExecutePollingLoopAsyncCatchingExceptions(CancellationToken cancellat async Task ExecutePollingLoopAsync(CancellationToken cancellationToken) { - using var requestCancellationTokens = new RequestCancellationTokens(workingCancellationTokenSource.Token, workingCancellationTokenSource.Token); + using var requestCancellationTokens = new RequestCancellationTokens(cancellationToken, cancellationToken); var retry = createRetryPolicy(); var sleepFor = TimeSpan.Zero; while (!cancellationToken.IsCancellationRequested)