Skip to content

Commit 4297acb

Browse files
fixes
1 parent cac50eb commit 4297acb

File tree

4 files changed

+19
-16
lines changed

4 files changed

+19
-16
lines changed

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ public ValueTask<ISession> OpenSession(CancellationToken cancellationToken)
2525

2626
return TryAcquireLease()
2727
? new ValueTask<ISession>(new ImplicitSession(_driver, this))
28-
: throw new YdbException("The implicit session source has been shut down.");
28+
: throw new ObjectDisposedException(nameof(ImplicitSessionSource),
29+
"The implicit session source has been closed.");
2930
}
3031

3132
private bool TryAcquireLease()

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

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ private async ValueTask<ISession> RentAsync(CancellationToken cancellationToken)
135135
), useSynchronizationContext: false
136136
);
137137
await using var disposeRegistration = _disposeCts.Token.Register(
138-
() => waiterTcs.TrySetException(new YdbException("The session source has been shut down.")),
138+
() => waiterTcs.TrySetException(ObjectDisposedException),
139139
useSynchronizationContext: false
140140
);
141141
session = await waiterTcs.Task.ConfigureAwait(false);
@@ -159,7 +159,7 @@ private async ValueTask<ISession> RentAsync(CancellationToken cancellationToken)
159159
try
160160
{
161161
if (IsDisposed)
162-
throw new YdbException("The session source has been shutdown.");
162+
throw ObjectDisposedException;
163163

164164
var session = _sessionFactory.NewSession(this);
165165
await session.Open(cancellationToken);
@@ -306,6 +306,9 @@ public async ValueTask DisposeAsync()
306306
"This may indicate a connection leak or suspended operations.");
307307
}
308308
}
309+
310+
private Exception ObjectDisposedException =>
311+
new ObjectDisposedException(nameof(PoolingSessionSource<T>), "The session source has been closed.");
309312
}
310313

311314
internal interface IPoolingSessionFactory<T> : IAsyncDisposable where T : PoolingSessionBase<T>

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

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -141,12 +141,12 @@ public async Task DisposeAsync_Cancel_WaitersSession()
141141
Assert.Equal(0, mockFactory.NumSession);
142142
for (var i = 0; i < maxSessionSize; i++)
143143
{
144-
Assert.Equal("The session source has been shut down.",
145-
(await Assert.ThrowsAsync<YdbException>(() => waitingSessionTasks[i])).Message);
144+
Assert.StartsWith("The session source has been closed.",
145+
(await Assert.ThrowsAsync<ObjectDisposedException>(() => waitingSessionTasks[i])).Message);
146146
}
147147

148-
Assert.Equal("The session source has been shut down.",
149-
(await Assert.ThrowsAsync<YdbException>(async () => await sessionSource.OpenSession())).Message);
148+
Assert.StartsWith("The session source has been closed.",
149+
(await Assert.ThrowsAsync<ObjectDisposedException>(async () => await sessionSource.OpenSession())).Message);
150150
}
151151

152152
[Fact]
@@ -187,9 +187,9 @@ public async Task StressTest_DisposeAsync_Close_Driver()
187187
await Task.Yield();
188188
Assert.False(disposeCalled);
189189
}
190-
catch (YdbException e)
190+
catch (ObjectDisposedException e)
191191
{
192-
Assert.Equal("The session source has been shut down.", e.Message);
192+
Assert.StartsWith("The session source has been closed.", e.Message);
193193
}
194194
catch (OperationCanceledException)
195195
{
@@ -202,7 +202,7 @@ public async Task StressTest_DisposeAsync_Close_Driver()
202202
Assert.True(disposeCalled);
203203
}
204204
}
205-
205+
206206
[Fact]
207207
public async Task DisposeAsync_WhenSessionIsLeaked_ThrowsYdbExceptionWithTimeoutMessage()
208208
{
@@ -216,9 +216,9 @@ public async Task DisposeAsync_WhenSessionIsLeaked_ThrowsYdbExceptionWithTimeout
216216
return ValueTask.CompletedTask;
217217
}
218218
};
219-
var settings = new YdbConnectionStringBuilder { MaxSessionPool = maxSessionSize };
219+
var settings = new YdbConnectionStringBuilder { MaxSessionPool = maxSessionSize };
220220
var sessionSource = new PoolingSessionSource<MockPoolingSession>(mockFactory, settings);
221-
221+
222222
#pragma warning disable CA2012
223223
_ = sessionSource.OpenSession(CancellationToken.None);
224224
#pragma warning restore CA2012
@@ -227,8 +227,8 @@ public async Task DisposeAsync_WhenSessionIsLeaked_ThrowsYdbExceptionWithTimeout
227227
"This may indicate a connection leak or suspended operations.",
228228
(await Assert.ThrowsAsync<YdbException>(async () => await sessionSource.DisposeAsync())).Message);
229229
Assert.True(disposeCalled);
230-
Assert.Equal("The session source has been shut down.", (await Assert.ThrowsAsync<YdbException>(
231-
() => sessionSource.OpenSession(CancellationToken.None).AsTask())).Message);
230+
await Assert.ThrowsAsync<ObjectDisposedException>(() =>
231+
sessionSource.OpenSession(CancellationToken.None).AsTask());
232232
}
233233

234234
[Fact]

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,6 @@ public async Task DisposeAsync_WhenSessionIsLeaked_ThrowsYdbExceptionWithTimeout
6666
"This may indicate a connection leak or suspended operations.",
6767
(await Assert.ThrowsAsync<YdbException>(async () => await source.DisposeAsync())).Message);
6868
Assert.True(_isDisposed);
69-
Assert.Equal("The implicit session source has been shut down.", (await Assert.ThrowsAsync<YdbException>(
70-
() => source.OpenSession(CancellationToken.None).AsTask())).Message);
69+
await Assert.ThrowsAsync<ObjectDisposedException>(() => source.OpenSession(CancellationToken.None).AsTask());
7170
}
7271
}

0 commit comments

Comments
 (0)