@@ -201,19 +201,20 @@ func newChangeAggregatorProcessor(
201
201
) (_ execinfra.Processor , retErr error ) {
202
202
// Setup monitoring for this node drain.
203
203
drainWatcher , drainDone := makeDrainWatcher (flowCtx )
204
- defer func () {
205
- if retErr != nil {
206
- drainDone ()
207
- }
208
- }()
209
-
210
204
memMonitor := execinfra .NewMonitor (ctx , flowCtx .Mon , mon .MakeName ("changeagg-mem" ))
211
205
ca := & changeAggregator {
212
206
spec : spec ,
213
207
memAcc : memMonitor .MakeBoundAccount (),
214
208
checkForNodeDrain : drainWatcher .checkForNodeDrain ,
215
209
}
216
210
211
+ defer func () {
212
+ if retErr != nil {
213
+ ca .close ()
214
+ drainDone ()
215
+ }
216
+ }()
217
+
217
218
if err := ca .Init (
218
219
ctx ,
219
220
ca ,
@@ -351,7 +352,19 @@ func (ca *changeAggregator) Start(ctx context.Context) {
351
352
return
352
353
}
353
354
354
- feed , err := makeChangefeedConfigFromJobDetails (ctx , ca .spec .Feed , ca .FlowCtx .Cfg .ExecutorConfig .(* sql.ExecutorConfig ))
355
+ execCfg := ca .FlowCtx .Cfg .ExecutorConfig .(* sql.ExecutorConfig )
356
+ if ca .knobs .OverrideExecCfg != nil {
357
+ execCfg = ca .knobs .OverrideExecCfg (execCfg )
358
+ }
359
+ ca .targets , err = AllTargets (ctx , ca .spec .Feed , execCfg )
360
+ if err != nil {
361
+ log .Dev .Warningf (ca .Ctx (), "moving to draining due to error getting targets: %v" , err )
362
+ ca .MoveToDraining (err )
363
+ ca .cancel ()
364
+ return
365
+ }
366
+
367
+ feed , err := makeChangefeedConfigFromJobDetails (ca .spec .Feed , ca .targets )
355
368
if err != nil {
356
369
log .Dev .Warningf (ca .Ctx (), "moving to draining due to error making changefeed config: %v" , err )
357
370
ca .MoveToDraining (err )
@@ -382,13 +395,6 @@ func (ca *changeAggregator) Start(ctx context.Context) {
382
395
return
383
396
}
384
397
ca .sliMetricsID = ca .sliMetrics .claimId ()
385
- ca .targets , err = AllTargets (ctx , ca .spec .Feed , ca .FlowCtx .Cfg .ExecutorConfig .(* sql.ExecutorConfig ))
386
- if err != nil {
387
- log .Dev .Warningf (ca .Ctx (), "moving to draining due to error getting targets: %v" , err )
388
- ca .MoveToDraining (err )
389
- ca .cancel ()
390
- return
391
- }
392
398
393
399
recorder := metricsRecorder (ca .sliMetrics )
394
400
recorder , err = ca .wrapMetricsRecorderWithTelemetry (ctx , recorder , ca .targets )
@@ -1231,7 +1237,7 @@ func newChangeFrontierProcessor(
1231
1237
spec execinfrapb.ChangeFrontierSpec ,
1232
1238
input execinfra.RowSource ,
1233
1239
post * execinfrapb.PostProcessSpec ,
1234
- ) (execinfra.Processor , error ) {
1240
+ ) (_ execinfra.Processor , retErr error ) {
1235
1241
memMonitor := execinfra .NewMonitor (ctx , flowCtx .Mon , mon .MakeName ("changefntr-mem" ))
1236
1242
1237
1243
cf := & changeFrontier {
@@ -1244,6 +1250,12 @@ func newChangeFrontierProcessor(
1244
1250
usageWgCancel : func () {},
1245
1251
}
1246
1252
1253
+ defer func () {
1254
+ if retErr != nil {
1255
+ cf .close ()
1256
+ }
1257
+ }()
1258
+
1247
1259
if cfKnobs , ok := flowCtx .TestingKnobs ().Changefeed .(* TestingKnobs ); ok {
1248
1260
cf .knobs = * cfKnobs
1249
1261
}
@@ -1306,7 +1318,11 @@ func newChangeFrontierProcessor(
1306
1318
if err != nil {
1307
1319
return nil , err
1308
1320
}
1309
- targets , err := AllTargets (ctx , spec .Feed , flowCtx .Cfg .ExecutorConfig .(* sql.ExecutorConfig ))
1321
+ execCfg := flowCtx .Cfg .ExecutorConfig .(* sql.ExecutorConfig )
1322
+ if cf .knobs .OverrideExecCfg != nil {
1323
+ execCfg = cf .knobs .OverrideExecCfg (execCfg )
1324
+ }
1325
+ targets , err := AllTargets (ctx , spec .Feed , execCfg )
1310
1326
if err != nil {
1311
1327
return nil , err
1312
1328
}
0 commit comments