Skip to content

Commit f931aea

Browse files
committed
Why the heck does TestConcurrentQueueDeclareAndBindAsync fail sometimes
1 parent 37c8eae commit f931aea

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

projects/Test/Integration/TestQueueDeclare.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ public async void TestConcurrentQueueDeclareAndBindAsync()
8585
};
8686

8787
var tasks = new List<Task>();
88-
var queueNames = new ConcurrentBag<string>();
88+
var queueNames = new ConcurrentDictionary<string, bool>();
8989

9090
NotSupportedException nse = null;
9191
for (int i = 0; i < 256; i++)
@@ -101,7 +101,10 @@ async Task f()
101101
durable: false, exclusive: true, autoDelete: false);
102102
string queueName = r.QueueName;
103103
await _channel.QueueBindAsync(queue: queueName, exchange: "amq.fanout", routingKey: queueName);
104-
queueNames.Add(queueName);
104+
if (false == queueNames.TryAdd(queueName, true))
105+
{
106+
throw new InvalidOperationException($"queue with name {queueName} already added!");
107+
}
105108
}
106109
catch (NotSupportedException e)
107110
{
@@ -117,7 +120,7 @@ async Task f()
117120
tasks.Clear();
118121

119122
nse = null;
120-
foreach (string q in queueNames)
123+
foreach (string q in queueNames.Keys)
121124
{
122125
async Task f()
123126
{

0 commit comments

Comments
 (0)