Browse Source
address copilot review: wait for stale channel release before disposal; add barrier timeouts in tests
pull/25311/head
maliming
2 weeks ago
No known key found for this signature in database
GPG Key ID: A646B9CB645ECEA4
2 changed files with
5 additions and
4 deletions
-
framework/src/Volo.Abp.RabbitMQ/Volo/Abp/RabbitMQ/ChannelPool.cs
-
framework/test/Volo.Abp.RabbitMQ.Tests/Volo/Abp/RabbitMQ/ChannelPool_Tests.cs
|
|
|
@ -92,6 +92,7 @@ public class ChannelPool : IChannelPool, ISingletonDependency |
|
|
|
{ |
|
|
|
if (staleItem != null) |
|
|
|
{ |
|
|
|
staleItem.WaitIfInUse(TotalDisposeWaitDuration); |
|
|
|
await staleItem.DisposeAsync(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@ -40,13 +40,13 @@ public class ChannelPool_Tests |
|
|
|
|
|
|
|
var firstCaller = Task.Run(async () => |
|
|
|
{ |
|
|
|
barrier.SignalAndWait(); |
|
|
|
barrier.SignalAndWait(RaceTimeout); |
|
|
|
using var accessor = await channelPool.AcquireAsync("q"); |
|
|
|
}); |
|
|
|
|
|
|
|
var secondCaller = Task.Run(async () => |
|
|
|
{ |
|
|
|
barrier.SignalAndWait(); |
|
|
|
barrier.SignalAndWait(RaceTimeout); |
|
|
|
await Task.Delay(50); |
|
|
|
using var accessor = await channelPool.AcquireAsync("q"); |
|
|
|
}); |
|
|
|
@ -85,7 +85,7 @@ public class ChannelPool_Tests |
|
|
|
{ |
|
|
|
tasks[i] = Task.Run(async () => |
|
|
|
{ |
|
|
|
barrier.SignalAndWait(); |
|
|
|
barrier.SignalAndWait(RaceTimeout); |
|
|
|
using var accessor = await channelPool.AcquireAsync("q"); |
|
|
|
return accessor.Channel; |
|
|
|
}); |
|
|
|
@ -292,7 +292,7 @@ public class ChannelPool_Tests |
|
|
|
{ |
|
|
|
tasks[i] = Task.Run(async () => |
|
|
|
{ |
|
|
|
barrier.SignalAndWait(); |
|
|
|
barrier.SignalAndWait(RaceTimeout); |
|
|
|
using var accessor = await channelPool.AcquireAsync("q"); |
|
|
|
return accessor.Channel; |
|
|
|
}); |
|
|
|
|