Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/dotnet/aspnetcore.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrennan <brecon@microsoft.com>2022-05-07 01:55:00 +0300
committerBrennan <brecon@microsoft.com>2022-05-07 01:55:00 +0300
commit7336f4d90d2efd36ef57021a2f8742d296da7ab2 (patch)
tree8b704e621fa0ef7d702ed75db11036dedaf24090
parentbc42cade7ce0b1149ab9bdc30c78094b3007fd67 (diff)
Make SignalR Redis test thread-safebrecon/redist
-rw-r--r--src/SignalR/server/StackExchangeRedis/test/TestConnectionMultiplexer.cs17
1 files changed, 13 insertions, 4 deletions
diff --git a/src/SignalR/server/StackExchangeRedis/test/TestConnectionMultiplexer.cs b/src/SignalR/server/StackExchangeRedis/test/TestConnectionMultiplexer.cs
index a6671a44fa..99190e6488 100644
--- a/src/SignalR/server/StackExchangeRedis/test/TestConnectionMultiplexer.cs
+++ b/src/SignalR/server/StackExchangeRedis/test/TestConnectionMultiplexer.cs
@@ -232,9 +232,12 @@ public class TestRedisServer
{
if (_subscriptions.TryGetValue(channel, out var handlers))
{
- foreach (var (_, handler) in handlers)
+ lock (handlers)
{
- handler(channel, message);
+ foreach (var (_, handler) in handlers)
+ {
+ handler(channel, message);
+ }
}
}
@@ -253,7 +256,10 @@ public class TestRedisServer
_subscriptions.AddOrUpdate(messageQueue.Channel, _ => new List<(int, Action<RedisChannel, RedisValue>)> { (subscriberId, handler) }, (_, list) =>
{
- list.Add((subscriberId, handler));
+ lock (list)
+ {
+ list.Add((subscriberId, handler));
+ }
return list;
});
}
@@ -262,7 +268,10 @@ public class TestRedisServer
{
if (_subscriptions.TryGetValue(channel, out var list))
{
- list.RemoveAll((item) => item.Item1 == subscriberId);
+ lock (list)
+ {
+ list.RemoveAll((item) => item.Item1 == subscriberId);
+ }
}
}
}