Browse Source

address copilot review: wait for stale channel release before disposal; add barrier timeouts in tests

pull/25311/head
maliming 2 weeks ago
parent
commit
e4ccf01d23
No known key found for this signature in database GPG Key ID: A646B9CB645ECEA4
  1. 1
      framework/src/Volo.Abp.RabbitMQ/Volo/Abp/RabbitMQ/ChannelPool.cs
  2. 8
      framework/test/Volo.Abp.RabbitMQ.Tests/Volo/Abp/RabbitMQ/ChannelPool_Tests.cs

1
framework/src/Volo.Abp.RabbitMQ/Volo/Abp/RabbitMQ/ChannelPool.cs

@ -92,6 +92,7 @@ public class ChannelPool : IChannelPool, ISingletonDependency
{
if (staleItem != null)
{
staleItem.WaitIfInUse(TotalDisposeWaitDuration);
await staleItem.DisposeAsync();
}
}

8
framework/test/Volo.Abp.RabbitMQ.Tests/Volo/Abp/RabbitMQ/ChannelPool_Tests.cs

@ -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;
});

Loading…
Cancel
Save