diff --git a/pkg/ddl/ddl_worker.go b/pkg/ddl/ddl_worker.go index 3cf938d33c250..f730696bc96b4 100644 --- a/pkg/ddl/ddl_worker.go +++ b/pkg/ddl/ddl_worker.go @@ -487,7 +487,7 @@ func (w *worker) registerMDLInfo(job *model.Job, ver int64) error { } // cleanMDLInfo cleans metadata lock info. -func cleanMDLInfo(pool *sess.Pool, jobID int64, ec *clientv3.Client) { +func cleanMDLInfo(pool *sess.Pool, jobID int64, ec *clientv3.Client, cleanETCD bool) { if !variable.EnableMDL.Load() { return } @@ -501,7 +501,7 @@ func cleanMDLInfo(pool *sess.Pool, jobID int64, ec *clientv3.Client) { logutil.BgLogger().Warn("unexpected error when clean mdl info", zap.Int64("job ID", jobID), zap.Error(err)) return } - if ec != nil { + if cleanETCD && ec != nil { path := fmt.Sprintf("%s/%d/", util.DDLAllSchemaVersionsByJob, jobID) _, err = ec.Delete(context.Background(), path, clientv3.WithPrefix()) if err != nil { diff --git a/pkg/ddl/job_table.go b/pkg/ddl/job_table.go index 42d16d24a7587..903a609af4927 100644 --- a/pkg/ddl/job_table.go +++ b/pkg/ddl/job_table.go @@ -386,7 +386,7 @@ func (d *ddl) delivery2worker(wk *worker, pool *workerPool, job *model.Job) { return } d.setAlreadyRunOnce(job.ID) - cleanMDLInfo(d.sessPool, job.ID, d.etcdCli) + cleanMDLInfo(d.sessPool, job.ID, d.etcdCli, job.State == model.JobStateSynced) // Don't have a worker now. return } @@ -426,7 +426,7 @@ func (d *ddl) delivery2worker(wk *worker, pool *workerPool, job *model.Job) { logutil.BgLogger().Info("wait latest schema version error", zap.String("category", "ddl"), zap.Error(err)) return } - cleanMDLInfo(d.sessPool, job.ID, d.etcdCli) + cleanMDLInfo(d.sessPool, job.ID, d.etcdCli, job.State == model.JobStateSynced) d.synced(job) if RunInGoTest {