@@ -187,12 +187,15 @@ private void InitClient(RedisClient client)
187
187
188
188
public void DisposeClient ( RedisNativeClient client )
189
189
{
190
- for ( var i = 0 ; i < clients . Length ; i ++ )
190
+ lock ( clients )
191
191
{
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
+ }
196
199
}
197
200
}
198
201
@@ -202,7 +205,10 @@ public void DisposeClient(RedisNativeClient client)
202
205
/// <param name="client">The client.</param>
203
206
public void DisposeWriteClient ( RedisNativeClient client )
204
207
{
205
- client . Active = false ;
208
+ lock ( clients )
209
+ {
210
+ client . Active = false ;
211
+ }
206
212
}
207
213
208
214
public Dictionary < string , string > GetStats ( )
@@ -249,15 +255,18 @@ private void AssertValidPool()
249
255
250
256
public int [ ] GetClientPoolActiveStates ( )
251
257
{
252
- var activeStates = new int [ clients . Length ] ;
253
- for ( int i = 0 ; i < clients . Length ; i ++ )
258
+ lock ( clients )
254
259
{
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 ;
259
269
}
260
- return activeStates ;
261
270
}
262
271
263
272
~ RedisManagerPool ( )
0 commit comments