Skip to content

Commit 780dd4b

Browse files
fix
1 parent d51052b commit 780dd4b

File tree

3 files changed

+475
-484
lines changed

3 files changed

+475
-484
lines changed

src/Ydb.Sdk/src/Ado/PoolManager.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -50,19 +50,19 @@ CancellationToken cancellationToken
5050

5151
internal static async Task ClearPool(string connectionString)
5252
{
53-
if (Pools.Remove(connectionString, out var sessionPool))
53+
try
5454
{
55-
try
56-
{
57-
await SemaphoreSlim.WaitAsync();
55+
await SemaphoreSlim.WaitAsync();
5856

59-
await sessionPool.DisposeAsync();
60-
}
61-
finally
57+
if (Pools.Remove(connectionString, out var sessionPool))
6258
{
63-
SemaphoreSlim.Release();
59+
await sessionPool.DisposeAsync();
6460
}
6561
}
62+
finally
63+
{
64+
SemaphoreSlim.Release();
65+
}
6666
}
6767

6868
internal static async Task ClearAllPools()

src/Ydb.Sdk/test/Ydb.Sdk.Ado.Tests/PoolManagerTests.cs

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,12 @@
11
using System.Collections.Immutable;
22
using Xunit;
3-
using Xunit.Abstractions;
43

54
namespace Ydb.Sdk.Ado.Tests;
65

76
[Collection("PoolManagerTests")]
87
[CollectionDefinition("PoolManagerTests", DisableParallelization = true)]
98
public class PoolManagerTests
109
{
11-
private readonly ITestOutputHelper _testOutputHelper;
12-
13-
public PoolManagerTests(ITestOutputHelper testOutputHelper)
14-
{
15-
_testOutputHelper = testOutputHelper;
16-
}
17-
1810
[Theory]
1911
[InlineData(new[]
2012
{
@@ -36,6 +28,8 @@ public PoolManagerTests(ITestOutputHelper testOutputHelper)
3628
public async Task PoolManager_CachingAndCleanup(string[] connectionStrings, int expectedDrivers, int expectedPools)
3729
{
3830
await YdbConnection.ClearAllPools();
31+
foreach (var (_, driver) in PoolManager.Drivers)
32+
Assert.True(driver.IsDisposed);
3933
PoolManager.Drivers.Clear();
4034

4135
var connections = connectionStrings
@@ -53,27 +47,24 @@ public async Task PoolManager_CachingAndCleanup(string[] connectionStrings, int
5347
await Task.WhenAll(parallelTasks);
5448

5549
foreach (var (_, driver) in PoolManager.Drivers)
56-
{
5750
Assert.False(driver.IsDisposed);
58-
}
5951

6052
Assert.Equal(expectedDrivers, PoolManager.Drivers.Count);
6153
Assert.Equal(expectedPools, PoolManager.Pools.Count);
6254

6355
await ClearAllConnections(connections);
6456
}
6557

66-
private async Task ClearAllConnections(IReadOnlyCollection<YdbConnection> connections)
58+
private static async Task ClearAllConnections(IReadOnlyCollection<YdbConnection> connections)
6759
{
6860
foreach (var connection in connections)
6961
await connection.CloseAsync();
7062

7163
await YdbConnection.ClearAllPools();
7264
Assert.Empty(PoolManager.Pools);
7365

74-
foreach (var (str, driver) in PoolManager.Drivers)
66+
foreach (var (_, driver) in PoolManager.Drivers)
7567
{
76-
_testOutputHelper.WriteLine(str);
7768
Assert.True(driver.IsDisposed);
7869
}
7970
}

0 commit comments

Comments
 (0)