From f1644daa900abef51d892d6f98baccfe2812afa8 Mon Sep 17 00:00:00 2001 From: Mark Cilia Vincenti Date: Sun, 16 Nov 2025 09:13:18 +0100 Subject: [PATCH 1/2] Fixes issue with 1 more try than maxtries --- src/CacheManager.Core/BaseCacheManager.GetOrAdd.cs | 6 ++---- src/CacheManager.Core/BaseCacheManager.Update.cs | 4 +--- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/src/CacheManager.Core/BaseCacheManager.GetOrAdd.cs b/src/CacheManager.Core/BaseCacheManager.GetOrAdd.cs index 1ae2e56b..b834290a 100644 --- a/src/CacheManager.Core/BaseCacheManager.GetOrAdd.cs +++ b/src/CacheManager.Core/BaseCacheManager.GetOrAdd.cs @@ -128,7 +128,6 @@ private bool TryGetOrAddInternal(string key, string region, Func GetOrAddInternal(string key, string region, Func< var tries = 0; do { - tries++; var item = GetCacheItemInternal(key, region); if (item != null) { @@ -193,7 +191,7 @@ private CacheItem GetOrAddInternal(string key, string region, Func< } } } - while (tries <= Configuration.MaxRetries); + while (tries < Configuration.MaxRetries); // should usually never occur, but could if e.g. max retries is 1 and an item gets added between the get and add. // pretty unusual, so keep the max tries at least around 50 diff --git a/src/CacheManager.Core/BaseCacheManager.Update.cs b/src/CacheManager.Core/BaseCacheManager.Update.cs index c05f25b8..3f69b7b0 100644 --- a/src/CacheManager.Core/BaseCacheManager.Update.cs +++ b/src/CacheManager.Core/BaseCacheManager.Update.cs @@ -49,8 +49,6 @@ private TCacheValue AddOrUpdateInternal(CacheItem item, Func item, Func Date: Sun, 16 Nov 2025 18:56:07 +0100 Subject: [PATCH 2/2] fix --- src/CacheManager.Core/BaseCacheManager.GetOrAdd.cs | 2 +- src/CacheManager.StackExchange.Redis/RedisCacheHandle.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/CacheManager.Core/BaseCacheManager.GetOrAdd.cs b/src/CacheManager.Core/BaseCacheManager.GetOrAdd.cs index b834290a..2d51a1f8 100644 --- a/src/CacheManager.Core/BaseCacheManager.GetOrAdd.cs +++ b/src/CacheManager.Core/BaseCacheManager.GetOrAdd.cs @@ -191,7 +191,7 @@ private CacheItem GetOrAddInternal(string key, string region, Func< } } } - while (tries < Configuration.MaxRetries); + while (++tries < Configuration.MaxRetries); // should usually never occur, but could if e.g. max retries is 1 and an item gets added between the get and add. // pretty unusual, so keep the max tries at least around 50 diff --git a/src/CacheManager.StackExchange.Redis/RedisCacheHandle.cs b/src/CacheManager.StackExchange.Redis/RedisCacheHandle.cs index 487a39f9..03821e40 100644 --- a/src/CacheManager.StackExchange.Redis/RedisCacheHandle.cs +++ b/src/CacheManager.StackExchange.Redis/RedisCacheHandle.cs @@ -340,7 +340,7 @@ public override UpdateItemResult Update(string key, string region, Logger.LogDebug("Update of {0} {1} failed with version conflict, retrying {2}/{3}", key, region, tries, maxRetries); } - while (tries <= maxRetries); + while (tries < maxRetries); return UpdateItemResult.ForTooManyRetries(tries); });