@@ -13,6 +13,7 @@ import (
13
13
"github.com/cockroachdb/cockroach/pkg/sql/execinfrapb"
14
14
"github.com/cockroachdb/cockroach/pkg/sql/physicalplan"
15
15
"github.com/cockroachdb/cockroach/pkg/sql/sem/tree"
16
+ "github.com/cockroachdb/cockroach/pkg/util/ctxgroup"
16
17
"github.com/cockroachdb/cockroach/pkg/util/humanizeutil"
17
18
"github.com/cockroachdb/cockroach/pkg/util/tracing"
18
19
"github.com/cockroachdb/errors"
@@ -26,6 +27,7 @@ func (p *planner) CheckExternalConnection(
26
27
27
28
type checkExternalConnectionNode struct {
28
29
zeroInputPlanNode
30
+ execGrp ctxgroup.Group
29
31
node * tree.CheckExternalConnection
30
32
loc string
31
33
params CloudCheckParams
@@ -101,7 +103,9 @@ func (n *checkExternalConnectionNode) startExec(params runParams) error {
101
103
return nil
102
104
})
103
105
104
- go func () {
106
+ grp := ctxgroup .WithContext (ctx )
107
+ n .execGrp = grp
108
+ grp .GoCtx (func (ctx context.Context ) error {
105
109
recv := MakeDistSQLReceiver (
106
110
ctx ,
107
111
rowWriter ,
@@ -117,7 +121,9 @@ func (n *checkExternalConnectionNode) startExec(params runParams) error {
117
121
// Copy the eval.Context, as dsp.Run() might change it.
118
122
evalCtxCopy := params .extendedEvalCtx .Context .Copy ()
119
123
dsp .Run (ctx , planCtx , nil , plan , recv , evalCtxCopy , nil /* finishedSetupFn */ )
120
- }()
124
+ return nil
125
+ })
126
+
121
127
return nil
122
128
}
123
129
@@ -130,7 +136,6 @@ func (n *checkExternalConnectionNode) Next(params runParams) (bool, error) {
130
136
return false , params .ctx .Err ()
131
137
case row , more := <- n .rows :
132
138
if ! more {
133
- n .rows = nil
134
139
return false , nil
135
140
}
136
141
n .row = row
@@ -143,10 +148,8 @@ func (n *checkExternalConnectionNode) Values() tree.Datums {
143
148
}
144
149
145
150
func (n * checkExternalConnectionNode ) Close (_ context.Context ) {
146
- if n .rows != nil {
147
- close (n .rows )
148
- n .rows = nil
149
- }
151
+ _ = n .execGrp .Wait ()
152
+ n .rows = nil
150
153
}
151
154
152
155
func (n * checkExternalConnectionNode ) parseParams (params runParams ) error {
0 commit comments