diff --git a/br/pkg/restore/data.go b/br/pkg/restore/data.go index f8c023066afe1..acbe595b59007 100644 --- a/br/pkg/restore/data.go +++ b/br/pkg/restore/data.go @@ -104,6 +104,9 @@ func (bo *recoveryBackoffer) Attempt() int { // 5. prepare the flashback // 6. flashback to resolveTS func RecoverData(ctx context.Context, resolveTS uint64, allStores []*metapb.Store, mgr *conn.Mgr, progress glue.Progress, restoreTS uint64, concurrency uint32) (int, error) { + // Roughly handle the case that some TiKVs are rebooted during making plan. + // Generally, retry the whole procedure will be fine for most cases. But perhaps we can do finer-grained retry, + // say, we may reuse the recovery plan, and probably no need to rebase PD allocation ID once we have done it. return utils.WithRetryV2(ctx, newRecoveryBackoffer(), func(ctx context.Context) (int, error) { return doRecoveryData(ctx, resolveTS, allStores, mgr, progress, restoreTS, concurrency) }) @@ -121,8 +124,7 @@ func doRecoveryData(ctx context.Context, resolveTS uint64, allStores []*metapb.S totalRegions := recovery.GetTotalRegions() - err := recovery.MakeRecoveryPlan() - if err != nil { + if err := recovery.MakeRecoveryPlan(); err != nil { return totalRegions, recoveryError{error: err, atStage: StageMakingRecoveryPlan} } @@ -141,8 +143,8 @@ func doRecoveryData(ctx context.Context, resolveTS uint64, allStores []*metapb.S if err := recovery.WaitApply(ctx); err != nil { return totalRegions, recoveryError{error: err, atStage: StageRecovering} } - err = recovery.PrepareFlashbackToVersion(ctx, resolveTS, restoreTS-1) - if err != nil { + + if err := recovery.PrepareFlashbackToVersion(ctx, resolveTS, restoreTS-1); err != nil { return totalRegions, recoveryError{error: err, atStage: StageFlashback} } diff --git a/br/pkg/task/restore_data.go b/br/pkg/task/restore_data.go index 1fdde1284a019..74663ea28d39d 100644 --- a/br/pkg/task/restore_data.go +++ b/br/pkg/task/restore_data.go @@ -146,8 +146,6 @@ func RunResolveKvData(c context.Context, g glue.Glue, cmdName string, cfg *Resto // restore tikv data from a snapshot volume var totalRegions int - // Roughly handle the case that some TiKVs are rebooted during making plan. - // Generally, totalRegions, err = restore.RecoverData(ctx, resolveTS, allStores, mgr, progress, restoreTS, cfg.Concurrency) if err != nil { return errors.Trace(err)