Skip to content

Commit 04050d6

Browse files
committed
feat: add owner registration and dispose logic for implicit sessions
1 parent 1c2d3ba commit 04050d6

File tree

3 files changed

+9
-4
lines changed

3 files changed

+9
-4
lines changed

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ CancellationToken cancellationToken
3737
ISessionSource newSessionPool;
3838
if (settings.EnableImplicitSession)
3939
{
40+
driver.RegisterOwner();
4041
newSessionPool = new ImplicitSessionSource(driver);
4142
}
4243
else

src/Ydb.Sdk/src/Ado/Session/ImplicitSessionSource.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ private bool TryAcquireLease()
4141

4242
internal void ReleaseLease() => Interlocked.Decrement(ref _activeLeaseCount);
4343

44-
public ValueTask DisposeAsync()
44+
public async ValueTask DisposeAsync()
4545
{
4646
Interlocked.Exchange(ref _isDisposed, 1);
4747

@@ -51,8 +51,7 @@ public ValueTask DisposeAsync()
5151
spinner.SpinOnce();
5252
}
5353

54+
await _driver.DisposeAsync();
5455
_onBecameEmpty?.Invoke();
55-
56-
return ValueTask.CompletedTask;
5756
}
5857
}

src/Ydb.Sdk/test/Ydb.Sdk.Ado.Tests/Session/YdbImplicitStressTests.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,12 @@ namespace Ydb.Sdk.Ado.Tests.Session;
66

77
public class YdbImplicitStressTests : TestBase
88
{
9-
private static IDriver DummyDriver() => new Mock<IDriver>(MockBehavior.Strict).Object;
9+
private static IDriver DummyDriver()
10+
{
11+
var m = new Mock<IDriver>(MockBehavior.Loose);
12+
m.Setup(d => d.DisposeAsync()).Returns(ValueTask.CompletedTask);
13+
return m.Object;
14+
}
1015

1116
private sealed class Counter
1217
{

0 commit comments

Comments
 (0)