@@ -177,14 +177,11 @@ func (s *session) Close(ctx context.Context) (err error) {
177177 if m , _ := operation .ContextMode (ctx ); m == operation .ModeUnknown {
178178 ctx = operation .WithMode (ctx , operation .ModeSync )
179179 }
180- t := s .trailer ()
181- defer t .Check ()
182180 _ , err = s .tableService .DeleteSession (
183181 cluster .WithEndpoint (ctx , s ),
184182 & Ydb_Table.DeleteSessionRequest {
185183 SessionId : s .id ,
186184 },
187- t .Trailer (),
188185 )
189186 return err
190187}
@@ -204,7 +201,7 @@ func (s *session) KeepAlive(ctx context.Context) (err error) {
204201 ctx = operation .WithMode (ctx , operation .ModeSync )
205202 }
206203 t := s .trailer ()
207- defer t .Check ()
204+ defer t .processHints ()
208205 resp , err := s .tableService .KeepAlive (
209206 cluster .WithEndpoint (ctx , s ),
210207 & Ydb_Table.KeepAliveRequest {
@@ -245,7 +242,7 @@ func (s *session) CreateTable(
245242 opt ((* options .CreateTableDesc )(& request ))
246243 }
247244 t := s .trailer ()
248- defer t .Check ()
245+ defer t .processHints ()
249246 _ , err = s .tableService .CreateTable (
250247 cluster .WithEndpoint (ctx , s ),
251248 & request ,
@@ -403,7 +400,7 @@ func (s *session) DropTable(
403400 opt ((* options .DropTableDesc )(& request ))
404401 }
405402 t := s .trailer ()
406- defer t .Check ()
403+ defer t .processHints ()
407404 _ , err = s .tableService .DropTable (
408405 cluster .WithEndpoint (ctx , s ),
409406 & request ,
@@ -426,7 +423,7 @@ func (s *session) AlterTable(
426423 opt ((* options .AlterTableDesc )(& request ))
427424 }
428425 t := s .trailer ()
429- defer t .Check ()
426+ defer t .processHints ()
430427 _ , err = s .tableService .AlterTable (
431428 cluster .WithEndpoint (ctx , s ),
432429 & request ,
@@ -450,7 +447,7 @@ func (s *session) CopyTable(
450447 opt ((* options .CopyTableDesc )(& request ))
451448 }
452449 t := s .trailer ()
453- defer t .Check ()
450+ defer t .processHints ()
454451 _ , err = s .tableService .CopyTable (
455452 cluster .WithEndpoint (ctx , s ),
456453 & request ,
@@ -475,7 +472,7 @@ func (s *session) Explain(
475472 ctx = operation .WithMode (ctx , operation .ModeSync )
476473 }
477474 t := s .trailer ()
478- defer t .Check ()
475+ defer t .processHints ()
479476 response , err = s .tableService .ExplainDataQuery (
480477 cluster .WithEndpoint (ctx , s ),
481478 & Ydb_Table.ExplainDataQueryRequest {
@@ -581,7 +578,7 @@ func (s *session) Prepare(ctx context.Context, query string) (stmt table.Stateme
581578 ctx = operation .WithMode (ctx , operation .ModeSync )
582579 }
583580 t := s .trailer ()
584- defer t .Check ()
581+ defer t .processHints ()
585582 response , err = s .tableService .PrepareDataQuery (
586583 cluster .WithEndpoint (ctx , s ),
587584 & Ydb_Table.PrepareDataQueryRequest {
@@ -695,7 +692,7 @@ func (s *session) executeDataQuery(
695692 ctx = operation .WithMode (ctx , operation .ModeSync )
696693 }
697694 t := s .trailer ()
698- defer t .Check ()
695+ defer t .processHints ()
699696 response , err = s .tableService .ExecuteDataQuery (
700697 cluster .WithEndpoint (ctx , s ),
701698 request ,
@@ -725,7 +722,7 @@ func (s *session) ExecuteSchemeQuery(
725722 opt ((* options .ExecuteSchemeQueryDesc )(& request ))
726723 }
727724 t := s .trailer ()
728- defer t .Check ()
725+ defer t .processHints ()
729726 _ , err = s .tableService .ExecuteSchemeQuery (
730727 cluster .WithEndpoint (ctx , s ),
731728 & request ,
@@ -745,7 +742,7 @@ func (s *session) DescribeTableOptions(ctx context.Context) (
745742 )
746743 request := Ydb_Table.DescribeTableOptionsRequest {}
747744 t := s .trailer ()
748- defer t .Check ()
745+ defer t .processHints ()
749746 response , err = s .tableService .DescribeTableOptions (
750747 cluster .WithEndpoint (ctx , s ),
751748 & request ,
@@ -895,6 +892,12 @@ func (s *session) StreamReadTable(
895892 )
896893
897894 onDone := trace .TableOnSessionQueryStreamRead (s .trace , & ctx , s )
895+
896+ if stream != nil && checkHintSessionClose (stream .Trailer ()) {
897+ s .SetStatus (options .SessionClosing )
898+ err = ErrSessionShutdown
899+ }
900+
898901 if err != nil {
899902 cancel ()
900903 onDone (err )
@@ -969,6 +972,12 @@ func (s *session) StreamExecuteScanQuery(
969972 q ,
970973 params ,
971974 )
975+
976+ if stream != nil && checkHintSessionClose (stream .Trailer ()) {
977+ s .SetStatus (options .SessionClosing )
978+ err = ErrSessionShutdown
979+ }
980+
972981 if err != nil {
973982 cancel ()
974983 onDone (err )
@@ -1007,7 +1016,7 @@ func (s *session) StreamExecuteScanQuery(
10071016// BulkUpsert uploads given list of ydb struct values to the table.
10081017func (s * session ) BulkUpsert (ctx context.Context , table string , rows types.Value ) (err error ) {
10091018 t := s .trailer ()
1010- defer t .Check ()
1019+ defer t .processHints ()
10111020 _ , err = s .tableService .BulkUpsert (
10121021 cluster .WithEndpoint (ctx , s ),
10131022 & Ydb_Table.BulkUpsertRequest {
@@ -1041,7 +1050,7 @@ func (s *session) BeginTransaction(
10411050 ctx = operation .WithMode (ctx , operation .ModeSync )
10421051 }
10431052 t := s .trailer ()
1044- defer t .Check ()
1053+ defer t .processHints ()
10451054 response , err = s .tableService .BeginTransaction (
10461055 cluster .WithEndpoint (ctx , s ),
10471056 & Ydb_Table.BeginTransactionRequest {
@@ -1142,7 +1151,7 @@ func (tx *Transaction) CommitTx(
11421151 ctx = operation .WithMode (ctx , operation .ModeSync )
11431152 }
11441153 t := tx .s .trailer ()
1145- defer t .Check ()
1154+ defer t .processHints ()
11461155 response , err = tx .s .tableService .CommitTransaction (
11471156 cluster .WithEndpoint (ctx , tx .s ),
11481157 request ,
@@ -1182,7 +1191,7 @@ func (tx *Transaction) Rollback(ctx context.Context) (err error) {
11821191 ctx = operation .WithMode (ctx , operation .ModeSync )
11831192 }
11841193 t := tx .s .trailer ()
1185- defer t .Check ()
1194+ defer t .processHints ()
11861195 _ , err = tx .s .tableService .RollbackTransaction (
11871196 cluster .WithEndpoint (ctx , tx .s ),
11881197 & Ydb_Table.RollbackTransactionRequest {
0 commit comments