From f6aa21b46ad29b57181df2a2720e5afc92c06859 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Chalet?= Date: Wed, 6 Feb 2019 17:02:11 +0100 Subject: [PATCH] Replace TryGetValue/TryRemove by a single TryRemove call to avoid potential issues with concurrent cache removal/addition --- src/OpenIddict.Core/Caches/OpenIddictApplicationCache.cs | 4 +--- src/OpenIddict.Core/Caches/OpenIddictAuthorizationCache.cs | 4 +--- src/OpenIddict.Core/Caches/OpenIddictScopeCache.cs | 4 +--- src/OpenIddict.Core/Caches/OpenIddictTokenCache.cs | 4 +--- 4 files changed, 4 insertions(+), 12 deletions(-) diff --git a/src/OpenIddict.Core/Caches/OpenIddictApplicationCache.cs b/src/OpenIddict.Core/Caches/OpenIddictApplicationCache.cs index dc1e3f7b..07dd3020 100644 --- a/src/OpenIddict.Core/Caches/OpenIddictApplicationCache.cs +++ b/src/OpenIddict.Core/Caches/OpenIddictApplicationCache.cs @@ -378,11 +378,9 @@ namespace OpenIddict.Core throw new InvalidOperationException("The application identifier cannot be extracted."); } - if (_signals.TryGetValue(identifier, out CancellationTokenSource signal)) + if (_signals.TryRemove(identifier, out CancellationTokenSource signal)) { signal.Cancel(); - - _signals.TryRemove(identifier, out signal); } } diff --git a/src/OpenIddict.Core/Caches/OpenIddictAuthorizationCache.cs b/src/OpenIddict.Core/Caches/OpenIddictAuthorizationCache.cs index 2c748548..6509eedb 100644 --- a/src/OpenIddict.Core/Caches/OpenIddictAuthorizationCache.cs +++ b/src/OpenIddict.Core/Caches/OpenIddictAuthorizationCache.cs @@ -596,11 +596,9 @@ namespace OpenIddict.Core throw new InvalidOperationException("The application identifier cannot be extracted."); } - if (_signals.TryGetValue(identifier, out CancellationTokenSource signal)) + if (_signals.TryRemove(identifier, out CancellationTokenSource signal)) { signal.Cancel(); - - _signals.TryRemove(identifier, out signal); } } diff --git a/src/OpenIddict.Core/Caches/OpenIddictScopeCache.cs b/src/OpenIddict.Core/Caches/OpenIddictScopeCache.cs index a3d23453..710ce8e6 100644 --- a/src/OpenIddict.Core/Caches/OpenIddictScopeCache.cs +++ b/src/OpenIddict.Core/Caches/OpenIddictScopeCache.cs @@ -349,11 +349,9 @@ namespace OpenIddict.Core throw new InvalidOperationException("The application identifier cannot be extracted."); } - if (_signals.TryGetValue(identifier, out CancellationTokenSource signal)) + if (_signals.TryRemove(identifier, out CancellationTokenSource signal)) { signal.Cancel(); - - _signals.TryRemove(identifier, out signal); } } diff --git a/src/OpenIddict.Core/Caches/OpenIddictTokenCache.cs b/src/OpenIddict.Core/Caches/OpenIddictTokenCache.cs index 648ba381..1caef84e 100644 --- a/src/OpenIddict.Core/Caches/OpenIddictTokenCache.cs +++ b/src/OpenIddict.Core/Caches/OpenIddictTokenCache.cs @@ -679,11 +679,9 @@ namespace OpenIddict.Core throw new InvalidOperationException("The application identifier cannot be extracted."); } - if (_signals.TryGetValue(identifier, out CancellationTokenSource signal)) + if (_signals.TryRemove(identifier, out CancellationTokenSource signal)) { signal.Cancel(); - - _signals.TryRemove(identifier, out signal); } }