File tree Expand file tree Collapse file tree 1 file changed +9
-6
lines changed Expand file tree Collapse file tree 1 file changed +9
-6
lines changed Original file line number Diff line number Diff line change @@ -125,7 +125,12 @@ func newResult(
125125 var (
126126 closed = make (chan struct {})
127127 r = streamResult {
128- stream : stream ,
128+ stream : stream ,
129+ onClose : []func (){
130+ func () {
131+ close (closed )
132+ },
133+ },
129134 closed : closed ,
130135 resultSetIndex : - 1 ,
131136 }
@@ -138,9 +143,7 @@ func newResult(
138143 }
139144
140145 r .closeOnce = sync .OnceFunc (func () {
141- close (closed )
142-
143- for i := range r .onClose {
146+ for i := range r .onClose { // descending call for LIFO
144147 r .onClose [len (r .onClose )- i - 1 ]()
145148 }
146149 })
@@ -226,6 +229,8 @@ func nextPart(stream Ydb_Query_V1.QueryService_ExecuteQueryClient) (
226229}
227230
228231func (r * streamResult ) Close (ctx context.Context ) (finalErr error ) {
232+ defer r .closeOnce ()
233+
229234 if r .trace != nil {
230235 onDone := trace .QueryOnResultClose (r .trace , & ctx ,
231236 stack .FunctionID ("github.com/ydb-platform/ydb-go-sdk/v3/internal/query.(*streamResult).Close" ),
@@ -235,8 +240,6 @@ func (r *streamResult) Close(ctx context.Context) (finalErr error) {
235240 }()
236241 }
237242
238- defer r .closeOnce ()
239-
240243 for {
241244 select {
242245 case <- ctx .Done ():
You can’t perform that action at this time.
0 commit comments