Skip to content

Commit eefe1cb

Browse files
Tristan1900ti-chi-bot
authored andcommitted
This is an automated cherry-pick of pingcap#58963
Signed-off-by: ti-chi-bot <[email protected]>
1 parent 80edd4e commit eefe1cb

File tree

4 files changed

+683
-1
lines changed

4 files changed

+683
-1
lines changed

br/pkg/restore/log_client/BUILD.bazel

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ go_test(
9292
"//br/pkg/gluetidb",
9393
"//br/pkg/mock",
9494
"//br/pkg/restore/internal/import_client",
95+
"//br/pkg/restore/internal/rawkv",
9596
"//br/pkg/restore/split",
9697
"//br/pkg/restore/utils",
9798
"//br/pkg/storage",
@@ -122,7 +123,11 @@ go_test(
122123
"@com_github_pingcap_kvproto//pkg/pdpb",
123124
"@com_github_pingcap_log//:log",
124125
"@com_github_stretchr_testify//require",
126+
<<<<<<< HEAD
125127
"@com_github_tikv_pd_client//:client",
128+
=======
129+
"@com_github_tikv_client_go_v2//rawkv",
130+
>>>>>>> 3a378c8e384 (br: add retry for raw kv client put (#58963))
126131
"@org_golang_google_grpc//codes",
127132
"@org_golang_google_grpc//keepalive",
128133
"@org_golang_google_grpc//status",

br/pkg/restore/log_client/client.go

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1143,7 +1143,7 @@ func (rc *LogClient) restoreMetaKvEntries(
11431143
failpoint.Inject("failed-to-restore-metakv", func(_ failpoint.Value) {
11441144
failpoint.Return(0, 0, errors.Errorf("failpoint: failed to restore metakv"))
11451145
})
1146-
if err := rc.rawKVClient.Put(ctx, newEntry.Key, newEntry.Value, entry.Ts); err != nil {
1146+
if err := PutRawKvWithRetry(ctx, rc.rawKVClient, newEntry.Key, newEntry.Value, entry.Ts); err != nil {
11471147
return 0, 0, errors.Trace(err)
11481148
}
11491149
// for failpoint, we need to flush the cache in rawKVClient every time
@@ -1717,6 +1717,7 @@ func (rc *LogClient) FailpointDoChecksumForLogRestore(
17171717
return eg.Wait()
17181718
}
17191719

1720+
<<<<<<< HEAD
17201721
type LogFilesIterWithSplitHelper struct {
17211722
iter LogIter
17221723
helper *logsplit.LogSplitHelper
@@ -1764,4 +1765,14 @@ func (splitIter *LogFilesIterWithSplitHelper) TryNext(ctx context.Context) iter.
17641765
res := iter.Emit(splitIter.buffer[splitIter.next])
17651766
splitIter.next += 1
17661767
return res
1768+
=======
1769+
func PutRawKvWithRetry(ctx context.Context, client *rawkv.RawKVBatchClient, key, value []byte, originTs uint64) error {
1770+
err := utils.WithRetry(ctx, func() error {
1771+
return client.Put(ctx, key, value, originTs)
1772+
}, utils.NewRawClientBackoffStrategy())
1773+
if err != nil {
1774+
return errors.Errorf("failed to put raw kv after retry")
1775+
}
1776+
return nil
1777+
>>>>>>> 3a378c8e384 (br: add retry for raw kv client put (#58963))
17671778
}

0 commit comments

Comments
 (0)