Skip to content

Commit 880c5e5

Browse files
committed
fix
1 parent 61335f5 commit 880c5e5

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

internal/query/result.go

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff 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

228231
func (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():

0 commit comments

Comments
 (0)