Skip to content

Commit 616dd9f

Browse files
Fixed bug: Grpc.Core.StatusCode.Cancelled was mapped to server's Canceled status. (#478)
1 parent 0f03b57 commit 616dd9f

File tree

6 files changed

+12
-14
lines changed

6 files changed

+12
-14
lines changed

src/Ydb.Sdk/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
- Fixed bug: Grpc.Core.StatusCode.Cancelled was mapped to server's Canceled status.
12
- ADO.NET: PoolingSessionSource 2.0 based on Npgsql pooling algorithm.
23
- Added new ADO.NET options:
34
- `MinSessionPool`: The minimum connection pool size.

src/Ydb.Sdk/src/Ado/Internal/StatusCodeUtils.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,9 @@ public static class StatusCodeUtils
77
internal static StatusCode Code(this Grpc.Core.Status rpcStatus) => rpcStatus.StatusCode switch
88
{
99
Grpc.Core.StatusCode.Unavailable => StatusCode.ClientTransportUnavailable,
10-
Grpc.Core.StatusCode.DeadlineExceeded => StatusCode.ClientTransportTimeout,
10+
Grpc.Core.StatusCode.DeadlineExceeded or Grpc.Core.StatusCode.Cancelled => StatusCode.ClientTransportTimeout,
1111
Grpc.Core.StatusCode.ResourceExhausted => StatusCode.ClientTransportResourceExhausted,
1212
Grpc.Core.StatusCode.Unimplemented => StatusCode.ClientTransportUnimplemented,
13-
Grpc.Core.StatusCode.Cancelled => StatusCode.Cancelled,
1413
_ => StatusCode.ClientTransportUnknown
1514
};
1615

src/Ydb.Sdk/src/Pool/SessionPool.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -225,12 +225,10 @@ internal void OnNotSuccessStatusCode(StatusCode code)
225225
{
226226
// ReSharper disable once InvertIf
227227
if (code is
228-
StatusCode.Cancelled or
229228
StatusCode.BadSession or
230229
StatusCode.SessionBusy or
231-
StatusCode.InternalError or
230+
StatusCode.SessionExpired or
232231
StatusCode.ClientTransportTimeout or
233-
StatusCode.Unavailable or
234232
StatusCode.ClientTransportUnavailable)
235233
{
236234
_logger.LogWarning("Session[{SessionId}] is deactivated. Reason StatusCode: {Code}", SessionId, code);

src/Ydb.Sdk/test/Ydb.Sdk.Ado.Specification.Tests/YdbCommandTests.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public override async Task ExecuteReaderAsync_is_canceled()
6060
await using var command = connection.CreateCommand();
6161
command.CommandText = "SELECT 1;";
6262
var task = command.ExecuteReaderAsync(CanceledToken);
63-
Assert.Equal(StatusCode.Cancelled,
63+
Assert.Equal(StatusCode.ClientTransportTimeout,
6464
(await Assert.ThrowsAnyAsync<YdbException>(() => task)).Code);
6565
}
6666

@@ -70,7 +70,7 @@ public override async Task ExecuteNonQueryAsync_is_canceled()
7070
await using var command = connection.CreateCommand();
7171
command.CommandText = "SELECT 1;";
7272
var task = command.ExecuteNonQueryAsync(CanceledToken);
73-
Assert.Equal(StatusCode.Cancelled,
73+
Assert.Equal(StatusCode.ClientTransportTimeout,
7474
(await Assert.ThrowsAnyAsync<YdbException>(() => task)).Code);
7575
}
7676

@@ -80,7 +80,7 @@ public override async Task ExecuteScalarAsync_is_canceled()
8080
await using var command = connection.CreateCommand();
8181
command.CommandText = "SELECT 1;";
8282
var task = command.ExecuteScalarAsync(CanceledToken);
83-
Assert.Equal(StatusCode.Cancelled,
83+
Assert.Equal(StatusCode.ClientTransportTimeout,
8484
(await Assert.ThrowsAnyAsync<YdbException>(() => task)).Code);
8585
}
8686
}

src/Ydb.Sdk/test/Ydb.Sdk.Ado.Tests/Internal/StatusCodeTestUtils.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ public class StatusCodeTestUtils
1111
[InlineData(Grpc.Core.StatusCode.DeadlineExceeded, StatusCode.ClientTransportTimeout)]
1212
[InlineData(Grpc.Core.StatusCode.ResourceExhausted, StatusCode.ClientTransportResourceExhausted)]
1313
[InlineData(Grpc.Core.StatusCode.Unimplemented, StatusCode.ClientTransportUnimplemented)]
14-
[InlineData(Grpc.Core.StatusCode.Cancelled, StatusCode.Cancelled)]
14+
[InlineData(Grpc.Core.StatusCode.Cancelled, StatusCode.ClientTransportTimeout)]
1515
public void Code_GrpcCoreStatusCodeConvertToStatusCode_Assert(
1616
Grpc.Core.StatusCode statusCode,
1717
StatusCode expectedStatusCode

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,7 @@ public async Task YdbDataReader_WhenCancelTokenIsCanceled_ThrowYdbException()
233233
Assert.False(ydbDataReader.IsClosed);
234234
Assert.Equal(1, ydbDataReader.GetValue(0));
235235
Assert.Equal(ConnectionState.Open, connection.State);
236-
Assert.Equal(StatusCode.Cancelled,
236+
Assert.Equal(StatusCode.ClientTransportTimeout,
237237
(await Assert.ThrowsAsync<YdbException>(async () => await ydbDataReader.NextResultAsync(cts.Token))).Code);
238238
Assert.True(ydbDataReader.IsClosed);
239239
Assert.Equal(ConnectionState.Broken, connection.State);
@@ -249,7 +249,7 @@ public async Task YdbDataReader_WhenCancelTokenIsCanceled_ThrowYdbException()
249249
Assert.Equal(1, ydbDataReader.GetValue(0));
250250
Assert.False(ydbDataReader.IsClosed);
251251

252-
Assert.Equal(StatusCode.Cancelled,
252+
Assert.Equal(StatusCode.ClientTransportTimeout,
253253
(await Assert.ThrowsAsync<YdbException>(async () => await ydbDataReader.NextResultAsync(cts.Token))).Code);
254254
Assert.True(ydbDataReader.IsClosed);
255255
Assert.Equal(ConnectionState.Broken, connection.State);
@@ -263,17 +263,17 @@ public async Task ExecuteMethods_WhenCancelTokenIsCanceled_ConnectionIsBroken()
263263
using var cts = new CancellationTokenSource();
264264
cts.Cancel();
265265

266-
Assert.Equal(StatusCode.Cancelled,
266+
Assert.Equal(StatusCode.ClientTransportTimeout,
267267
(await Assert.ThrowsAsync<YdbException>(async () => await command.ExecuteReaderAsync(cts.Token))).Code);
268268
Assert.Equal(ConnectionState.Broken, connection.State);
269269
// ReSharper disable once MethodSupportsCancellation
270270
await connection.OpenAsync();
271-
Assert.Equal(StatusCode.Cancelled,
271+
Assert.Equal(StatusCode.ClientTransportTimeout,
272272
(await Assert.ThrowsAsync<YdbException>(async () => await command.ExecuteScalarAsync(cts.Token))).Code);
273273
Assert.Equal(ConnectionState.Broken, connection.State);
274274
// ReSharper disable once MethodSupportsCancellation
275275
await connection.OpenAsync();
276-
Assert.Equal(StatusCode.Cancelled,
276+
Assert.Equal(StatusCode.ClientTransportTimeout,
277277
(await Assert.ThrowsAsync<YdbException>(async () => await command.ExecuteNonQueryAsync(cts.Token))).Code);
278278
Assert.Equal(ConnectionState.Broken, connection.State);
279279
}

0 commit comments

Comments
 (0)