From a4bd05fd989114330cbf6c7e3a9e92e527360cba Mon Sep 17 00:00:00 2001 From: Nikos Sarris Date: Fri, 3 Feb 2023 13:17:43 +0200 Subject: [PATCH] Added guard to avoid unnecessary session initialization semaphore locks. --- src/Simple.OData.Client.Core/Session.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/Simple.OData.Client.Core/Session.cs b/src/Simple.OData.Client.Core/Session.cs index 189fde75..a76e4a65 100644 --- a/src/Simple.OData.Client.Core/Session.cs +++ b/src/Simple.OData.Client.Core/Session.cs @@ -76,6 +76,10 @@ public void Dispose() private readonly SemaphoreSlim _initializeSemaphore = new(1); public async Task Initialize(CancellationToken cancellationToken) { + //Avoid unnecessary locks + if (MetadataCache != null && _adapter != null) + return; + // Just allow one schema request at a time, unlikely to be much contention but avoids multiple requests for same endpoint. await _initializeSemaphore.WaitAsync(cancellationToken).ConfigureAwait(false);