Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions src/Ydb.Sdk/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
- Fixed YdbException: propagate inner exception.

## v0.18.1

- Fixed bug: 'System.DateOnly' is not supported by YdbParameter ([#449](https://github.com/ydb-platform/ydb-dotnet-sdk/issues/449)).
Expand Down
2 changes: 1 addition & 1 deletion src/Ydb.Sdk/src/Ado/YdbConnection.cs
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ public override async Task OpenAsync(CancellationToken cancellationToken)
{
throw e switch
{
Driver.TransportException transportException => new YdbException(transportException.Status),
Driver.TransportException transportException => new YdbException(transportException),
StatusUnsuccessfulException unsuccessfulException => new YdbException(unsuccessfulException.Status),
_ => e
};
Expand Down
2 changes: 1 addition & 1 deletion src/Ydb.Sdk/src/Ado/YdbDataReader.cs
Original file line number Diff line number Diff line change
Expand Up @@ -596,7 +596,7 @@ private async ValueTask<State> NextExecPart()

_onNotSuccessStatus(e.Status);

throw new YdbException(e.Status);
throw new YdbException(e);
}
}

Expand Down
8 changes: 5 additions & 3 deletions src/Ydb.Sdk/src/Ado/YdbException.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,17 @@ namespace Ydb.Sdk.Ado;

public class YdbException : DbException
{
public YdbException(string message) : base(message)
internal YdbException(string message) : base(message)
{
}

public YdbException(string message, Exception e) : base(message, e)
internal YdbException(Driver.TransportException transportException)
: this(transportException.Status, transportException)
{
}

public YdbException(Status status) : base(status.ToString())
internal YdbException(Status status, Exception? innerException = null)
: base(status.ToString(), innerException)
{
Code = status.StatusCode;
var policy = RetrySettings.DefaultInstance.GetRetryRule(status.StatusCode).Policy;
Expand Down
8 changes: 4 additions & 4 deletions src/Ydb.Sdk/src/Ado/YdbSchema.cs
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ internal static Task<DataTable> GetSchemaAsync(
};
}

internal static Task<IReadOnlyCollection<YdbObject>> SchemaObjects(
private static Task<IReadOnlyCollection<YdbObject>> SchemaObjects(
YdbConnection ydbConnection,
CancellationToken cancellationToken = default
)
Expand All @@ -50,7 +50,7 @@ internal static Task<IReadOnlyCollection<YdbObject>> SchemaObjects(
return SchemaObjects(ydbConnection, WithSuffix(database), database, cancellationToken);
}

internal static async Task<YdbTable> DescribeTable(
private static async Task<YdbTable> DescribeTable(
YdbConnection ydbConnection,
string tableName,
DescribeTableSettings? describeTableSettings = null
Expand Down Expand Up @@ -78,7 +78,7 @@ internal static async Task<YdbTable> DescribeTable(
{
ydbConnection.OnStatus(e.Status);

throw new YdbException("Transport error on DescribeTable", e);
throw new YdbException(e);
}
}

Expand Down Expand Up @@ -461,7 +461,7 @@ await SchemaObjects(
}
catch (Driver.TransportException e)
{
throw new YdbException("Transport error on ListDirectory", e);
throw new YdbException(e);
}
}

Expand Down
2 changes: 1 addition & 1 deletion src/Ydb.Sdk/src/Ado/YdbTransaction.cs
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ private async Task FinishTransaction(Func<string, Task<Status>> finishMethod)

DbConnection.OnStatus(e.Status);

throw new YdbException(e.Status);
throw new YdbException(e);
}
finally
{
Expand Down
2 changes: 1 addition & 1 deletion src/Ydb.Sdk/src/Driver.cs
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@ internal InitializationFailureException(string message) : base(message)

public class TransportException : IOException
{
internal TransportException(RpcException e) : base($"Transport exception: {e.Message}", e)
internal TransportException(RpcException e) : base("Transport RPC call error", e)
{
Status = e.Status.ConvertStatus();
}
Expand Down
8 changes: 4 additions & 4 deletions src/Ydb.Sdk/tests/Ado/YdbExceptionTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -50,11 +50,11 @@ public async Task IsTransient_WhenAborted_ReturnTrueAndMakeEmptyRollback()

ydbCommand.CommandText = $"UPDATE {bankTable} SET amount = amount + @var WHERE id = 1";
ydbCommand.Parameters.AddWithValue("var", DbType.Int32, select);
Assert.True(Assert.Throws<YdbException>(() =>
Assert.True((await Assert.ThrowsAsync<YdbException>(async () =>
{
ydbCommand.ExecuteNonQuery();
ydbCommand.Transaction.Commit();
}).IsTransient);
await ydbCommand.ExecuteNonQueryAsync();
await ydbCommand.Transaction.CommitAsync();
})).IsTransient);
await new YdbCommand(anotherConnection)
{
CommandText = $"DROP TABLE {bankTable}"
Expand Down
Loading