@@ -77,7 +77,7 @@ const (
77
77
jobTypeReorg
78
78
)
79
79
80
- func (d * ddl ) getJob (se * sess.Session , tp jobType , filter func (* model.Job ) (bool , error )) (* model.Job , error ) {
80
+ func (d * ddl ) getJob (se * sess.Session , tp jobType , filter func (* model.Job ) (bool , error )) (* model.JobW , error ) {
81
81
not := "not"
82
82
label := "get_job_general"
83
83
if tp == jobTypeReorg {
@@ -116,7 +116,7 @@ func (d *ddl) getJob(se *sess.Session, tp jobType, filter func(*model.Job) (bool
116
116
117
117
// The job has already been picked up, just return to continue it.
118
118
if isJobProcessing {
119
- return & job , nil
119
+ return model . NewJobW ( & job , jobBinary ) , nil
120
120
}
121
121
122
122
b , err := filter (& job )
@@ -131,7 +131,7 @@ func (d *ddl) getJob(se *sess.Session, tp jobType, filter func(*model.Job) (bool
131
131
zap .String ("job" , job .String ()))
132
132
return nil , errors .Trace (err )
133
133
}
134
- return & job , nil
134
+ return model . NewJobW ( & job , jobBinary ) , nil
135
135
}
136
136
}
137
137
return nil , nil
@@ -199,7 +199,7 @@ func (d *ddl) processJobDuringUpgrade(sess *sess.Session, job *model.Job) (isRun
199
199
return true , nil
200
200
}
201
201
202
- func (d * ddl ) getGeneralJob (sess * sess.Session ) (* model.Job , error ) {
202
+ func (d * ddl ) getGeneralJob (sess * sess.Session ) (* model.JobW , error ) {
203
203
return d .getJob (sess , jobTypeGeneral , func (job * model.Job ) (bool , error ) {
204
204
if ! d .runningJobs .checkRunnable (job ) {
205
205
return false , nil
@@ -219,7 +219,7 @@ func (d *ddl) getGeneralJob(sess *sess.Session) (*model.Job, error) {
219
219
})
220
220
}
221
221
222
- func (d * ddl ) getReorgJob (sess * sess.Session ) (* model.Job , error ) {
222
+ func (d * ddl ) getReorgJob (sess * sess.Session ) (* model.JobW , error ) {
223
223
return d .getJob (sess , jobTypeReorg , func (job * model.Job ) (bool , error ) {
224
224
if ! d .runningJobs .checkRunnable (job ) {
225
225
return false , nil
@@ -330,7 +330,7 @@ func (d *ddl) checkAndUpdateClusterState(needUpdate bool) error {
330
330
return nil
331
331
}
332
332
333
- func (d * ddl ) loadDDLJobAndRun (se * sess.Session , pool * workerPool , getJob func (* sess.Session ) (* model.Job , error )) {
333
+ func (d * ddl ) loadDDLJobAndRun (se * sess.Session , pool * workerPool , getJob func (* sess.Session ) (* model.JobW , error )) {
334
334
wk , err := pool .get ()
335
335
if err != nil || wk == nil {
336
336
logutil .BgLogger ().Debug (fmt .Sprintf ("[ddl] no %v worker available now" , pool .tp ()), zap .Error (err ))
@@ -350,7 +350,7 @@ func (d *ddl) loadDDLJobAndRun(se *sess.Session, pool *workerPool, getJob func(*
350
350
return
351
351
}
352
352
d .mu .RLock ()
353
- d .mu .hook .OnGetJobAfter (pool .tp ().String (), job )
353
+ d .mu .hook .OnGetJobAfter (pool .tp ().String (), job . Job )
354
354
d .mu .RUnlock ()
355
355
356
356
d .delivery2worker (wk , pool , job )
@@ -360,7 +360,8 @@ func (d *ddl) loadDDLJobAndRun(se *sess.Session, pool *workerPool, getJob func(*
360
360
var AfterDeliverToWorkerForTest func (* model.Job )
361
361
362
362
// delivery2worker owns the worker, need to put it back to the pool in this function.
363
- func (d * ddl ) delivery2worker (wk * worker , pool * workerPool , job * model.Job ) {
363
+ func (d * ddl ) delivery2worker (wk * worker , pool * workerPool , jobW * model.JobW ) {
364
+ job := jobW .Job
364
365
injectFailPointForGetJob (job )
365
366
d .runningJobs .add (job )
366
367
d .wg .Run (func () {
@@ -407,7 +408,7 @@ func (d *ddl) delivery2worker(wk *worker, pool *workerPool, job *model.Job) {
407
408
}
408
409
}
409
410
410
- schemaVer , err := wk .HandleDDLJobTable (d .ddlCtx , job )
411
+ schemaVer , err := wk .HandleDDLJobTable (d .ddlCtx , jobW )
411
412
pool .put (wk )
412
413
if err != nil {
413
414
logutil .BgLogger ().Info ("handle ddl job failed" , zap .String ("category" , "ddl" ), zap .Error (err ), zap .String ("job" , job .String ()))
0 commit comments