Skip to content

Commit e5dec2e

Browse files
authored
Fix transport error on delete session (#56)
Fix transport error on delete session
1 parent 84b25c7 commit e5dec2e

File tree

4 files changed

+14
-8
lines changed

4 files changed

+14
-8
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
- Fix timeout error on create session
2+
- Fix transport error on delete session
3+
14
## v0.1.4
25
- Add exception throwing when results truncated
36
- lint: add line feed at file end

src/Ydb.Sdk/src/Services/Table/CreateSession.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,7 @@ public async Task<CreateSessionResponse> CreateSession(CreateSessionSettings? se
5757
request: request,
5858
settings: settings);
5959

60-
CreateSessionResult? resultProto;
61-
var status = UnpackOperation(response.Data.Operation, out resultProto);
60+
var status = UnpackOperation(response.Data.Operation, out CreateSessionResult? resultProto);
6261

6362
CreateSessionResponse.ResultData? result = null;
6463
if (status.IsSuccess && resultProto != null)

src/Ydb.Sdk/src/Services/Table/Session.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,10 +76,11 @@ protected virtual void Dispose(bool disposing)
7676
_logger.LogTrace($"Closing detached session on dispose: {Id}");
7777

7878
var client = new TableClient(Driver, new NoPool());
79-
_ = client.DeleteSession(Id, new DeleteSessionSettings
79+
var task = client.DeleteSession(Id, new DeleteSessionSettings
8080
{
8181
TransportTimeout = DeleteSessionTimeout
8282
});
83+
task.Wait();
8384
}
8485
else
8586
{

src/Ydb.Sdk/src/Services/Table/SessionPool.cs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,7 @@ public async Task<GetSessionResponse> GetSession()
9090
{
9191
var sessionId = _idleSessions.Pop();
9292

93-
SessionState? sessionState;
94-
if (!_sessions.TryGetValue(sessionId, out sessionState))
93+
if (!_sessions.TryGetValue(sessionId, out var sessionState))
9594
{
9695
continue;
9796
}
@@ -152,8 +151,7 @@ internal void ReturnSession(string id)
152151
{
153152
lock (_lock)
154153
{
155-
SessionState? oldSession;
156-
if (_sessions.TryGetValue(id, out oldSession))
154+
if (_sessions.TryGetValue(id, out var oldSession))
157155
{
158156
var session = new Session(
159157
driver: _driver,
@@ -275,15 +273,20 @@ private void Dispose(bool disposing)
275273

276274
if (disposing)
277275
{
276+
var tasks = new Task[_sessions.Count];
277+
var i = 0;
278278
foreach (var state in _sessions.Values)
279279
{
280280
_logger.LogTrace($"Closing session on session pool dispose: {state.Session.Id}");
281281

282-
_ = _client.DeleteSession(state.Session.Id, new DeleteSessionSettings
282+
var task = _client.DeleteSession(state.Session.Id, new DeleteSessionSettings
283283
{
284284
TransportTimeout = Session.DeleteSessionTimeout
285285
});
286+
tasks[i++] = task;
286287
}
288+
289+
Task.WaitAll(tasks);
287290
}
288291

289292
_disposed = true;

0 commit comments

Comments
 (0)