diff --git a/HzMemoryCache/Diagnostics/HzActivities.cs b/HzMemoryCache/Diagnostics/HzActivities.cs index 15e6827..19291bb 100644 --- a/HzMemoryCache/Diagnostics/HzActivities.cs +++ b/HzMemoryCache/Diagnostics/HzActivities.cs @@ -27,6 +27,7 @@ public static class Names public const string AcquireLock = "acquire lock"; public const string GetSemaphore = "get semaphore"; + public const string WaitForSemaphore = "wait for semaphore"; public const string ReleaseLock = "release lock"; } diff --git a/HzMemoryCache/HzCacheMemoryLocker.cs b/HzMemoryCache/HzCacheMemoryLocker.cs index 89911ac..7f2ee72 100644 --- a/HzMemoryCache/HzCacheMemoryLocker.cs +++ b/HzMemoryCache/HzCacheMemoryLocker.cs @@ -82,7 +82,7 @@ private SemaphoreSlim GetSemaphore(string cacheName, string cacheInstanceId, str public async ValueTask AcquireLockAsync(string cacheName, string cacheInstanceId, string operationId, string key, TimeSpan timeout, ILogger? logger, CancellationToken token) { - using var activity = HzActivities.Source.StartActivityWithCommonTags(HzActivities.Names.GetSemaphore, HzActivities.Area.HzCacheMemoryLocker, key: key); + using var activity = HzActivities.Source.StartActivityWithCommonTags(HzActivities.Names.AcquireLock, HzActivities.Area.HzCacheMemoryLocker, key: key); var semaphore = GetSemaphore(cacheName, cacheInstanceId, key, logger); if (logger?.IsEnabled(LogLevel.Trace) ?? false) @@ -90,8 +90,10 @@ public async ValueTask AcquireLockAsync(string cacheName, string cacheIn logger.Log(LogLevel.Trace, "HZ [N={CacheName} I={CacheInstanceId}] (O={CacheOperationId} K={CacheKey}): waiting to acquire the LOCK", cacheName, cacheInstanceId, operationId, key); } - - var acquired = await semaphore.WaitAsync(timeout, token).ConfigureAwait(false); + var acquired = false; + using (var waitForSemaphore = HzActivities.Source.StartActivityWithCommonTags(HzActivities.Names.WaitForSemaphore, HzActivities.Area.HzCacheMemoryLocker, key: key)){ + acquired = await semaphore.WaitAsync(timeout, token).ConfigureAwait(false); + } if (acquired) { @@ -128,8 +130,14 @@ public async ValueTask AcquireLockAsync(string cacheName, string cacheIn logger.Log(LogLevel.Trace, "HZ [N={CacheName} I={CacheInstanceId}] (O={CacheOperationId} K={CacheKey}): waiting to acquire the LOCK", cacheName, cacheInstanceId, operationId, key); } + var acquired = false; + using (var waitForSemaphore = + HzActivities.Source.StartActivityWithCommonTags(HzActivities.Names.WaitForSemaphore, + HzActivities.Area.HzCacheMemoryLocker, key: key)) + { - var acquired = semaphore.Wait(timeout, token); + acquired = semaphore.Wait(timeout, token); + } if (acquired) {