From 9744e527588550f5fa40c7818a4efb7a111ff88e Mon Sep 17 00:00:00 2001 From: ris <79858083+RidRisR@users.noreply.github.com> Date: Tue, 20 Aug 2024 13:37:42 +0800 Subject: [PATCH] This is an automated cherry-pick of #55044 Signed-off-by: ti-chi-bot --- br/pkg/task/restore.go | 11 +++++++++++ tests/realtikvtest/brietest/BUILD.bazel | 5 +++++ tests/realtikvtest/brietest/brie_test.go | 19 +++++++++++++++++++ 3 files changed, 35 insertions(+) diff --git a/br/pkg/task/restore.go b/br/pkg/task/restore.go index c9773a77510d7..a296e1ba99e9e 100644 --- a/br/pkg/task/restore.go +++ b/br/pkg/task/restore.go @@ -884,7 +884,11 @@ func runSnapshotRestore(c context.Context, mgr *conn.Mgr, g glue.Glue, cmdName s if cfg.WithSysTable { client.InitFullClusterRestore(cfg.ExplicitFilter) } +<<<<<<< HEAD } else if client.IsFull() && checkpointFirstRun && cfg.CheckRequirements { +======= + } else if checkpointFirstRun && cfg.CheckRequirements { +>>>>>>> f47130249bb (br: Add pre-check of duplicate table in the downstream (#55044)) if err := checkTableExistence(ctx, mgr, tables, g); err != nil { schedulersRemovable = true return errors.Trace(err) @@ -1323,6 +1327,13 @@ func Exhaust(ec <-chan error) []error { } func checkTableExistence(ctx context.Context, mgr *conn.Mgr, tables []*metautil.Table, g glue.Glue) error { +<<<<<<< HEAD +======= + // Tasks from br clp client use other checks to validate + if g.GetClient() != glue.ClientSql { + return nil + } +>>>>>>> f47130249bb (br: Add pre-check of duplicate table in the downstream (#55044)) message := "table already exists: " allUnique := true for _, table := range tables { diff --git a/tests/realtikvtest/brietest/BUILD.bazel b/tests/realtikvtest/brietest/BUILD.bazel index 08f31926f3355..f619aae34ca27 100644 --- a/tests/realtikvtest/brietest/BUILD.bazel +++ b/tests/realtikvtest/brietest/BUILD.bazel @@ -19,6 +19,11 @@ go_test( "//pkg/executor", "//pkg/parser/mysql", "//pkg/session", +<<<<<<< HEAD +======= + "//pkg/sessionctx/binloginfo", + "//pkg/store/mockstore/mockcopr", +>>>>>>> f47130249bb (br: Add pre-check of duplicate table in the downstream (#55044)) "//pkg/testkit", "//pkg/testkit/testsetup", "//tests/realtikvtest", diff --git a/tests/realtikvtest/brietest/brie_test.go b/tests/realtikvtest/brietest/brie_test.go index db070ba3a8cf1..4b84495867353 100644 --- a/tests/realtikvtest/brietest/brie_test.go +++ b/tests/realtikvtest/brietest/brie_test.go @@ -138,17 +138,28 @@ func TestExistedTables(t *testing.T) { sqlTmp := strings.ReplaceAll(tmp, "'", "''") executor.ResetGlobalBRIEQueueForTest() tk.MustExec("use test;") +<<<<<<< HEAD for i := 0; i < 5; i++ { +======= + for i := 0; i < 10; i++ { +>>>>>>> f47130249bb (br: Add pre-check of duplicate table in the downstream (#55044)) tableName := fmt.Sprintf("foo%d", i) tk.MustExec(fmt.Sprintf("create table %s(pk int primary key auto_increment, v varchar(255));", tableName)) tk.MustExec(fmt.Sprintf("insert into %s(v) values %s;", tableName, strings.TrimSuffix(strings.Repeat("('hello, world'),", 100), ","))) } +<<<<<<< HEAD // full backup done := make(chan struct{}) go func() { defer close(done) backupQuery := fmt.Sprintf("BACKUP DATABASE * TO 'local://%s/full'", sqlTmp) +======= + done := make(chan struct{}) + go func() { + defer close(done) + backupQuery := fmt.Sprintf("BACKUP DATABASE * TO 'local://%s'", sqlTmp) +>>>>>>> f47130249bb (br: Add pre-check of duplicate table in the downstream (#55044)) _ = tk.MustQuery(backupQuery) }() select { @@ -160,7 +171,11 @@ func TestExistedTables(t *testing.T) { done = make(chan struct{}) go func() { defer close(done) +<<<<<<< HEAD restoreQuery := fmt.Sprintf("RESTORE DATABASE * FROM 'local://%s/full'", sqlTmp) +======= + restoreQuery := fmt.Sprintf("RESTORE DATABASE * FROM 'local://%s'", sqlTmp) +>>>>>>> f47130249bb (br: Add pre-check of duplicate table in the downstream (#55044)) res, err := tk.Exec(restoreQuery) require.NoError(t, err) @@ -173,6 +188,7 @@ func TestExistedTables(t *testing.T) { case <-done: } +<<<<<<< HEAD // db level backup done = make(chan struct{}) go func() { @@ -347,6 +363,9 @@ func TestExistedTablesOfIncremental_2(t *testing.T) { _ = tk.MustQuery(restoreIncrementalQuery) for i := 0; i < 5; i++ { +======= + for i := 0; i < 10; i++ { +>>>>>>> f47130249bb (br: Add pre-check of duplicate table in the downstream (#55044)) tableName := fmt.Sprintf("foo%d", i) tk.MustExec(fmt.Sprintf("drop table %s;", tableName)) }