From 473a13ec0045bb5b21b6747ab26ede58f7eceb9c Mon Sep 17 00:00:00 2001 From: Patric Forsgard Date: Mon, 24 Jun 2024 20:25:58 +0200 Subject: [PATCH] Catch exceptions for when endpoints isn't connected When redis sentinel are used and nodes in a k8s environment is restarted new IP are assigned to the nodes and the endpoints on the connection multiplexer will contains previous ip's as well as the new ip's. --- RedLockNet.SERedis/RedLock.cs | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/RedLockNet.SERedis/RedLock.cs b/RedLockNet.SERedis/RedLock.cs index dbc5609..8e5ce38 100644 --- a/RedLockNet.SERedis/RedLock.cs +++ b/RedLockNet.SERedis/RedLock.cs @@ -559,7 +559,7 @@ private async Task UnlockInstanceAsync(RedisConnection cache) var host = GetHost(cache.ConnectionMultiplexer); var result = false; - + try { logger.LogTrace($"UnlockInstanceAsync enter {host}: {redisKey}, {LockId}"); @@ -589,13 +589,19 @@ internal static string GetHost(IConnectionMultiplexer cache) foreach (var endPoint in cache.GetEndPoints()) { - var server = cache.GetServer(endPoint); - - result.Append(server.EndPoint.GetFriendlyName()); - result.Append(" ("); - result.Append(server.IsSlave ? "slave" : "master"); - result.Append(server.IsConnected ? "" : ", disconnected"); - result.Append("), "); + try + { + var server = cache.GetServer(endPoint); + result.Append(server.EndPoint.GetFriendlyName()); + result.Append(" ("); + result.Append(server.IsSlave ? "slave" : "master"); + result.Append(server.IsConnected ? "" : ", disconnected"); + result.Append("), "); + } + catch (ArgumentException) + { + // swallow exception, the endpoint is not connected + } } if (result.Length >= 2) @@ -717,4 +723,4 @@ internal void StopKeepAliveTimer() } } } -} \ No newline at end of file +}