From 1abb6e038deb0640cad0254dead08fc3749ee346 Mon Sep 17 00:00:00 2001 From: "milan.stanojkovic" Date: Mon, 7 Dec 2020 15:55:26 +0100 Subject: [PATCH] Fixed possible bug when requesting AccessToken ended in TaskCanceledException (all further requests will end up same way) --- .../Messaging/AGConnectMessagingClient.cs | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/AGConnectAdmin/Messaging/AGConnectMessagingClient.cs b/src/AGConnectAdmin/Messaging/AGConnectMessagingClient.cs index 6c92e31..52b447b 100644 --- a/src/AGConnectAdmin/Messaging/AGConnectMessagingClient.cs +++ b/src/AGConnectAdmin/Messaging/AGConnectMessagingClient.cs @@ -270,20 +270,25 @@ private async Task GetAccessTokenAsync() string accessToken = tokenResponse?.GetValidAccessToken(); if (string.IsNullOrEmpty(accessToken)) { - lock (accessTokenTaskLock) + try { - if (accessTokenTask == null) + lock (accessTokenTaskLock) { - // access token task may be shared by multiple messaging task, thus should not pass cancellationToken to it - accessTokenTask = RequestAccessTokenAsync(default); + if (accessTokenTask == null) + { + // access token task may be shared by multiple messaging task, thus should not pass cancellationToken to it + accessTokenTask = RequestAccessTokenAsync(default); + } } - } - - accessToken = await accessTokenTask.ConfigureAwait(false); - lock (accessTokenTaskLock) + accessToken = await accessTokenTask.ConfigureAwait(false); + } + finally { - accessTokenTask = null; + lock (accessTokenTaskLock) + { + accessTokenTask = null; + } } }