Skip to content

Commit ba89e6c

Browse files
dev: propagate inner exception (#455)
1 parent 6967a04 commit ba89e6c

File tree

8 files changed

+19
-15
lines changed

8 files changed

+19
-15
lines changed

src/Ydb.Sdk/CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
- Fixed YdbException: propagate inner exception.
2+
13
## v0.18.1
24

35
- Fixed bug: 'System.DateOnly' is not supported by YdbParameter ([#449](https://github.com/ydb-platform/ydb-dotnet-sdk/issues/449)).

src/Ydb.Sdk/src/Ado/YdbConnection.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ public override async Task OpenAsync(CancellationToken cancellationToken)
100100
{
101101
throw e switch
102102
{
103-
Driver.TransportException transportException => new YdbException(transportException.Status),
103+
Driver.TransportException transportException => new YdbException(transportException),
104104
StatusUnsuccessfulException unsuccessfulException => new YdbException(unsuccessfulException.Status),
105105
_ => e
106106
};

src/Ydb.Sdk/src/Ado/YdbDataReader.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -596,7 +596,7 @@ private async ValueTask<State> NextExecPart()
596596

597597
_onNotSuccessStatus(e.Status);
598598

599-
throw new YdbException(e.Status);
599+
throw new YdbException(e);
600600
}
601601
}
602602

src/Ydb.Sdk/src/Ado/YdbException.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,17 @@ namespace Ydb.Sdk.Ado;
44

55
public class YdbException : DbException
66
{
7-
public YdbException(string message) : base(message)
7+
internal YdbException(string message) : base(message)
88
{
99
}
1010

11-
public YdbException(string message, Exception e) : base(message, e)
11+
internal YdbException(Driver.TransportException transportException)
12+
: this(transportException.Status, transportException)
1213
{
1314
}
1415

15-
public YdbException(Status status) : base(status.ToString())
16+
internal YdbException(Status status, Exception? innerException = null)
17+
: base(status.ToString(), innerException)
1618
{
1719
Code = status.StatusCode;
1820
var policy = RetrySettings.DefaultInstance.GetRetryRule(status.StatusCode).Policy;

src/Ydb.Sdk/src/Ado/YdbSchema.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ internal static Task<DataTable> GetSchemaAsync(
4040
};
4141
}
4242

43-
internal static Task<IReadOnlyCollection<YdbObject>> SchemaObjects(
43+
private static Task<IReadOnlyCollection<YdbObject>> SchemaObjects(
4444
YdbConnection ydbConnection,
4545
CancellationToken cancellationToken = default
4646
)
@@ -50,7 +50,7 @@ internal static Task<IReadOnlyCollection<YdbObject>> SchemaObjects(
5050
return SchemaObjects(ydbConnection, WithSuffix(database), database, cancellationToken);
5151
}
5252

53-
internal static async Task<YdbTable> DescribeTable(
53+
private static async Task<YdbTable> DescribeTable(
5454
YdbConnection ydbConnection,
5555
string tableName,
5656
DescribeTableSettings? describeTableSettings = null
@@ -78,7 +78,7 @@ internal static async Task<YdbTable> DescribeTable(
7878
{
7979
ydbConnection.OnStatus(e.Status);
8080

81-
throw new YdbException("Transport error on DescribeTable", e);
81+
throw new YdbException(e);
8282
}
8383
}
8484

@@ -461,7 +461,7 @@ await SchemaObjects(
461461
}
462462
catch (Driver.TransportException e)
463463
{
464-
throw new YdbException("Transport error on ListDirectory", e);
464+
throw new YdbException(e);
465465
}
466466
}
467467

src/Ydb.Sdk/src/Ado/YdbTransaction.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ private async Task FinishTransaction(Func<string, Task<Status>> finishMethod)
110110

111111
DbConnection.OnStatus(e.Status);
112112

113-
throw new YdbException(e.Status);
113+
throw new YdbException(e);
114114
}
115115
finally
116116
{

src/Ydb.Sdk/src/Driver.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ internal InitializationFailureException(string message) : base(message)
185185

186186
public class TransportException : IOException
187187
{
188-
internal TransportException(RpcException e) : base($"Transport exception: {e.Message}", e)
188+
internal TransportException(RpcException e) : base("Transport RPC call error", e)
189189
{
190190
Status = e.Status.ConvertStatus();
191191
}

src/Ydb.Sdk/tests/Ado/YdbExceptionTests.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,11 +50,11 @@ public async Task IsTransient_WhenAborted_ReturnTrueAndMakeEmptyRollback()
5050

5151
ydbCommand.CommandText = $"UPDATE {bankTable} SET amount = amount + @var WHERE id = 1";
5252
ydbCommand.Parameters.AddWithValue("var", DbType.Int32, select);
53-
Assert.True(Assert.Throws<YdbException>(() =>
53+
Assert.True((await Assert.ThrowsAsync<YdbException>(async () =>
5454
{
55-
ydbCommand.ExecuteNonQuery();
56-
ydbCommand.Transaction.Commit();
57-
}).IsTransient);
55+
await ydbCommand.ExecuteNonQueryAsync();
56+
await ydbCommand.Transaction.CommitAsync();
57+
})).IsTransient);
5858
await new YdbCommand(anotherConnection)
5959
{
6060
CommandText = $"DROP TABLE {bankTable}"

0 commit comments

Comments
 (0)