From 3bce2c5a592234253658833e04665b8bc81813e8 Mon Sep 17 00:00:00 2001 From: Haiping Chen Date: Wed, 21 Aug 2024 13:41:52 -0500 Subject: [PATCH] Claim 1 Redis connection only --- .../Infrastructures/DistributedLocker.cs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/Infrastructure/BotSharp.Core/Infrastructures/DistributedLocker.cs b/src/Infrastructure/BotSharp.Core/Infrastructures/DistributedLocker.cs index 8e88d9c3..163aea70 100644 --- a/src/Infrastructure/BotSharp.Core/Infrastructures/DistributedLocker.cs +++ b/src/Infrastructure/BotSharp.Core/Infrastructures/DistributedLocker.cs @@ -6,6 +6,7 @@ namespace BotSharp.Core.Infrastructures; public class DistributedLocker { private readonly BotSharpDatabaseSettings _settings; + private ConnectionMultiplexer connection; public DistributedLocker(BotSharpDatabaseSettings settings) { @@ -16,7 +17,11 @@ public class DistributedLocker { var timeout = TimeSpan.FromSeconds(timeoutInSeconds); - var connection = await ConnectionMultiplexer.ConnectAsync(_settings.Redis); + if (connection == null) + { + connection = await ConnectionMultiplexer.ConnectAsync(_settings.Redis); + } + var @lock = new RedisDistributedLock(resource, connection.GetDatabase()); await using (var handle = await @lock.TryAcquireAsync(timeout)) { @@ -33,7 +38,11 @@ public class DistributedLocker { var timeout = TimeSpan.FromSeconds(timeoutInSeconds); - var connection = await ConnectionMultiplexer.ConnectAsync(_settings.Redis); + if (connection == null) + { + connection = await ConnectionMultiplexer.ConnectAsync(_settings.Redis); + } + var @lock = new RedisDistributedLock(resource, connection.GetDatabase()); await using (var handle = await @lock.TryAcquireAsync(timeout)) {