From 9c01f39f62555c634677e8e60d1f0d4fa1faec5c Mon Sep 17 00:00:00 2001 From: 3pointer Date: Wed, 5 Aug 2020 15:32:56 +0800 Subject: [PATCH] brieSQL: fix multi-thread panic during SQL restore (#448) --- 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),