Skip to content

Commit 866b0d5

Browse files
Connection.State is set to Broken when the session is deactivated. (#419)
1 parent 63c3144 commit 866b0d5

File tree

5 files changed

+17
-5
lines changed

5 files changed

+17
-5
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+
- `Connection.State` is set to `Broken` when the session is deactivated.
2+
13
## v0.16.2
24

35
- Fixed bug in method GetSchema(): collection columns return Unspecified when decimal type about column.

src/Ydb.Sdk/src/Ado/YdbCommand.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ protected override async Task<DbDataReader> ExecuteDbDataReaderAsync(CommandBeha
214214
await YdbConnection.Session.ExecuteQuery(
215215
preparedSql.ToString(), ydbParameters, execSettings, transaction?.TransactionControl
216216
),
217-
YdbConnection.Session.OnStatus, transaction
217+
YdbConnection.OnStatus, transaction
218218
);
219219

220220
YdbConnection.LastReader = ydbDataReader;

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,16 @@ public override string ConnectionString
160160

161161
private ConnectionState ConnectionState { get; set; } = ConnectionState.Closed; // Invoke AsyncOpen()
162162

163+
internal void OnStatus(Status status)
164+
{
165+
_session.OnStatus(status);
166+
167+
if (!_session.IsActive)
168+
{
169+
ConnectionState = ConnectionState.Broken;
170+
}
171+
}
172+
163173
internal YdbDataReader? LastReader { get; set; }
164174
internal string LastCommand { get; set; } = string.Empty;
165175
internal bool IsBusy => LastReader is { IsOpen: true };

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ internal static async Task<YdbTable> DescribeTable(
6565

6666
if (status.IsNotSuccess)
6767
{
68-
ydbConnection.Session.OnStatus(status);
68+
ydbConnection.OnStatus(status);
6969

7070
throw new YdbException(status);
7171
}
@@ -76,7 +76,7 @@ internal static async Task<YdbTable> DescribeTable(
7676
}
7777
catch (Driver.TransportException e)
7878
{
79-
ydbConnection.Session.OnStatus(e.Status);
79+
ydbConnection.OnStatus(e.Status);
8080

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

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ private async Task FinishTransaction(Func<string, Task<Status>> finishMethod)
9999
{
100100
Failed = true;
101101

102-
DbConnection.Session.OnStatus(status);
102+
DbConnection.OnStatus(status);
103103

104104
throw new YdbException(status);
105105
}
@@ -108,7 +108,7 @@ private async Task FinishTransaction(Func<string, Task<Status>> finishMethod)
108108
{
109109
Failed = true;
110110

111-
DbConnection.Session.OnStatus(e.Status);
111+
DbConnection.OnStatus(e.Status);
112112

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

0 commit comments

Comments
 (0)