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

Commit 3ad60f7

Browse files
committed
readd locks
1 parent 97bfdd5 commit 3ad60f7

File tree

1 file changed

+22
-13
lines changed

1 file changed

+22
-13
lines changed

src/ServiceStack.Redis/RedisManagerPool.cs

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -187,12 +187,15 @@ private void InitClient(RedisClient client)
187187

188188
public void DisposeClient(RedisNativeClient client)
189189
{
190-
for (var i = 0; i < clients.Length; i++)
190+
lock (clients)
191191
{
192-
var writeClient = clients[i];
193-
if (client != writeClient) continue;
194-
client.Active = false;
195-
return;
192+
for (var i = 0; i < clients.Length; i++)
193+
{
194+
var writeClient = clients[i];
195+
if (client != writeClient) continue;
196+
client.Active = false;
197+
return;
198+
}
196199
}
197200
}
198201

@@ -202,7 +205,10 @@ public void DisposeClient(RedisNativeClient client)
202205
/// <param name="client">The client.</param>
203206
public void DisposeWriteClient(RedisNativeClient client)
204207
{
205-
client.Active = false;
208+
lock (clients)
209+
{
210+
client.Active = false;
211+
}
206212
}
207213

208214
public Dictionary<string, string> GetStats()
@@ -249,15 +255,18 @@ private void AssertValidPool()
249255

250256
public int[] GetClientPoolActiveStates()
251257
{
252-
var activeStates = new int[clients.Length];
253-
for (int i = 0; i < clients.Length; i++)
258+
lock (clients)
254259
{
255-
var client = clients[i];
256-
activeStates[i] = client == null
257-
? -1
258-
: client.Active ? 1 : 0;
260+
var activeStates = new int[clients.Length];
261+
for (int i = 0; i < clients.Length; i++)
262+
{
263+
var client = clients[i];
264+
activeStates[i] = client == null
265+
? -1
266+
: client.Active ? 1 : 0;
267+
}
268+
return activeStates;
259269
}
260-
return activeStates;
261270
}
262271

263272
~RedisManagerPool()

0 commit comments

Comments
 (0)