@@ -23,15 +23,21 @@ func WithPrecheckKey(ctx context.Context, key precheckContextKey, val any) conte
2323
2424// PrecheckItemBuilder is used to build precheck items
2525type PrecheckItemBuilder struct {
26- cfg * config.Config
27- dbMetas []* mydump.MDDatabaseMeta
28- preInfoGetter PreImportInfoGetter
29- checkpointsDB checkpoints.DB
26+ cfg * config.Config
27+ dbMetas []* mydump.MDDatabaseMeta
28+ preInfoGetter PreImportInfoGetter
29+ checkpointsDB checkpoints.DB
30+ pdLeaderAddrGetter func () string
3031}
3132
3233// NewPrecheckItemBuilderFromConfig creates a new PrecheckItemBuilder from config
3334// pdCli **must not** be nil for local backend
34- func NewPrecheckItemBuilderFromConfig (ctx context.Context , cfg * config.Config , pdCli pd.Client , opts ... ropts.PrecheckItemBuilderOption ) (* PrecheckItemBuilder , error ) {
35+ func NewPrecheckItemBuilderFromConfig (
36+ ctx context.Context ,
37+ cfg * config.Config ,
38+ pdCli pd.Client ,
39+ opts ... ropts.PrecheckItemBuilderOption ,
40+ ) (* PrecheckItemBuilder , error ) {
3541 var gerr error
3642 builderCfg := new (ropts.PrecheckItemBuilderConfig )
3743 for _ , o := range opts {
@@ -71,7 +77,7 @@ func NewPrecheckItemBuilderFromConfig(ctx context.Context, cfg *config.Config, p
7177 if err != nil {
7278 return nil , errors .Trace (err )
7379 }
74- return NewPrecheckItemBuilder (cfg , dbMetas , preInfoGetter , cpdb ), gerr
80+ return NewPrecheckItemBuilder (cfg , dbMetas , preInfoGetter , cpdb , pdCli ), gerr
7581}
7682
7783// NewPrecheckItemBuilder creates a new PrecheckItemBuilder
@@ -80,12 +86,21 @@ func NewPrecheckItemBuilder(
8086 dbMetas []* mydump.MDDatabaseMeta ,
8187 preInfoGetter PreImportInfoGetter ,
8288 checkpointsDB checkpoints.DB ,
89+ pdCli pd.Client ,
8390) * PrecheckItemBuilder {
91+ leaderAddrGetter := func () string {
92+ return cfg .TiDB .PdAddr
93+ }
94+ // in tests we may not have a pdCli
95+ if pdCli != nil {
96+ leaderAddrGetter = pdCli .GetLeaderAddr
97+ }
8498 return & PrecheckItemBuilder {
85- cfg : cfg ,
86- dbMetas : dbMetas ,
87- preInfoGetter : preInfoGetter ,
88- checkpointsDB : checkpointsDB ,
99+ cfg : cfg ,
100+ dbMetas : dbMetas ,
101+ preInfoGetter : preInfoGetter ,
102+ checkpointsDB : checkpointsDB ,
103+ pdLeaderAddrGetter : leaderAddrGetter ,
89104 }
90105}
91106
@@ -117,7 +132,7 @@ func (b *PrecheckItemBuilder) BuildPrecheckItem(checkID precheck.CheckItemID) (p
117132 case precheck .CheckLocalTempKVDir :
118133 return NewLocalTempKVDirCheckItem (b .cfg , b .preInfoGetter , b .dbMetas ), nil
119134 case precheck .CheckTargetUsingCDCPITR :
120- return NewCDCPITRCheckItem (b .cfg ), nil
135+ return NewCDCPITRCheckItem (b .cfg , b . pdLeaderAddrGetter ), nil
121136 default :
122137 return nil , errors .Errorf ("unsupported check item: %v" , checkID )
123138 }
0 commit comments