Skip to content
This repository was archived by the owner on Dec 24, 2022. It is now read-only.

Commit 7c038c4

Browse files
committed
Add logging when clients are failed over
1 parent 52069d2 commit 7c038c4

File tree

3 files changed

+21
-5
lines changed

3 files changed

+21
-5
lines changed

src/ServiceStack.Redis/BasicRedisClientManager.cs

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,22 @@
1212

1313
using System;
1414
using System.Collections.Generic;
15+
using System.Linq;
1516
using System.Threading;
17+
using ServiceStack.Logging;
1618
using ServiceStack.Text;
1719

1820
namespace ServiceStack.Redis
1921
{
2022
/// <summary>
21-
/// Provides thread-safe retrievel of redis clients since each client is a new one.
23+
/// Provides thread-safe retrieval of redis clients since each client is a new one.
2224
/// Allows the configuration of different ReadWrite and ReadOnly hosts
2325
/// </summary>
2426
public partial class BasicRedisClientManager
2527
: IRedisClientsManager, IRedisFailover, IHasRedisResolver
2628
{
29+
public static ILog Log = LogManager.GetLogger(typeof(BasicRedisClientManager));
30+
2731
public int? ConnectTimeout { get; set; }
2832
public int? SocketSendTimeout { get; set; }
2933
public int? SocketReceiveTimeout { get; set; }
@@ -154,10 +158,15 @@ public void FailoverTo(IEnumerable<string> readWriteHosts, IEnumerable<string> r
154158
{
155159
Interlocked.Increment(ref RedisState.TotalFailovers);
156160

161+
var masters = readWriteHosts.ToList();
162+
var replicas = readOnlyHosts.ToList();
163+
164+
Log.Info($"FailoverTo: {string.Join(",", masters)} : {string.Join(",", replicas)} Total: {RedisState.TotalFailovers}");
165+
157166
lock (this)
158167
{
159-
RedisResolver.ResetMasters(readWriteHosts);
160-
RedisResolver.ResetSlaves(readOnlyHosts);
168+
RedisResolver.ResetMasters(masters);
169+
RedisResolver.ResetSlaves(replicas);
161170
}
162171

163172
Start();

src/ServiceStack.Redis/PooledRedisClientManager.cs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,11 @@ public void FailoverTo(IEnumerable<string> readWriteHosts, IEnumerable<string> r
160160
{
161161
Interlocked.Increment(ref RedisState.TotalFailovers);
162162

163+
var masters = readWriteHosts.ToList();
164+
var replicas = readOnlyHosts.ToList();
165+
166+
Log.Info($"FailoverTo: {string.Join(",", masters)} : {string.Join(",", replicas)} Total: {RedisState.TotalFailovers}");
167+
163168
lock (readClients)
164169
{
165170
for (var i = 0; i < readClients.Length; i++)
@@ -170,7 +175,7 @@ public void FailoverTo(IEnumerable<string> readWriteHosts, IEnumerable<string> r
170175

171176
readClients[i] = null;
172177
}
173-
RedisResolver.ResetSlaves(readOnlyHosts);
178+
RedisResolver.ResetSlaves(replicas);
174179
}
175180

176181
lock (writeClients)
@@ -183,7 +188,7 @@ public void FailoverTo(IEnumerable<string> readWriteHosts, IEnumerable<string> r
183188

184189
writeClients[i] = null;
185190
}
186-
RedisResolver.ResetMasters(readWriteHosts);
191+
RedisResolver.ResetMasters(masters);
187192
}
188193

189194
if (this.OnFailover != null)

src/ServiceStack.Redis/RedisManagerPool.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,8 @@ public void FailoverTo(params string[] readWriteHosts)
9494
{
9595
Interlocked.Increment(ref RedisState.TotalFailovers);
9696

97+
Log.Info($"FailoverTo: {string.Join(",", readWriteHosts)} Total: {RedisState.TotalFailovers}");
98+
9799
lock (clients)
98100
{
99101
for (var i = 0; i < clients.Length; i++)

0 commit comments

Comments
 (0)