From 15e79fce2978f34e4b067d9f629561b4dea04d15 Mon Sep 17 00:00:00 2001 From: luancheng Date: Wed, 5 Aug 2020 14:18:56 +0800 Subject: [PATCH] brieSQL: fix multi-thread panic during SQL restore --- pkg/task/restore.go | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/pkg/task/restore.go b/pkg/task/restore.go index a8402cde2..4209d299c 100644 --- a/pkg/task/restore.go +++ b/pkg/task/restore.go @@ -188,9 +188,14 @@ func RunRestore(c context.Context, g glue.Glue, cmdName string, cfg *RestoreConf // and we cost most of time at waiting DDL jobs be enqueued. // So these jobs won't be faster or slower when machine become faster or slower, // hence make it a fixed value would be fine. - dbPool, err := restore.MakeDBPool(defaultDDLConcurrency, func() (*restore.DB, error) { - return restore.NewDB(g, mgr.GetTiKV()) - }) + var dbPool []*restore.DB + if g.OwnsStorage() { + // Only in binary we can use multi-thread sessions to create tables. + // so use OwnStorage() to tell whether we are use binary or SQL. + dbPool, err = restore.MakeDBPool(defaultDDLConcurrency, func() (*restore.DB, error) { + return restore.NewDB(g, mgr.GetTiKV()) + }) + } if err != nil { log.Warn("create session pool failed, we will send DDLs only by created sessions", zap.Error(err),