MCPcopy
hub / github.com/pingcap/tidb / decodeBackupMetaCommand

Function decodeBackupMetaCommand

br/cmd/br/debug.go:274–346  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

272}
273
274func decodeBackupMetaCommand() *cobra.Command {
275 decodeBackupMetaCmd := &cobra.Command{
276 Use: "decode",
277 Short: "decode backupmeta to json",
278 Args: cobra.NoArgs,
279 RunE: func(cmd *cobra.Command, args []string) error {
280 ctx, cancel := context.WithCancel(GetDefaultContext())
281 defer cancel()
282
283 var cfg task.Config
284 if err := cfg.ParseFromFlags(cmd.Flags()); err != nil {
285 return errors.Trace(err)
286 }
287 _, s, backupMeta, err := task.ReadBackupMeta(ctx, metautil.MetaFile, &cfg)
288 if err != nil {
289 return errors.Trace(err)
290 }
291
292 fieldName, _ := cmd.Flags().GetString("field")
293 if fieldName == "" {
294 if err := metautil.DecodeMetaFile(ctx, s, &cfg.CipherInfo, backupMeta.FileIndex); err != nil {
295 return errors.Trace(err)
296 }
297 if err := metautil.DecodeMetaFile(ctx, s, &cfg.CipherInfo, backupMeta.RawRangeIndex); err != nil {
298 return errors.Trace(err)
299 }
300 if err := metautil.DecodeMetaFile(ctx, s, &cfg.CipherInfo, backupMeta.SchemaIndex); err != nil {
301 return errors.Trace(err)
302 }
303 if err := metautil.DecodeStatsFile(ctx, s, &cfg.CipherInfo, backupMeta.Schemas); err != nil {
304 return errors.Trace(err)
305 }
306
307 // No field flag, write backupmeta to external storage in JSON format.
308 backupMetaJSON, err := utils.MarshalBackupMeta(backupMeta)
309 if err != nil {
310 return errors.Trace(err)
311 }
312 err = s.WriteFile(ctx, metautil.MetaJSONFile, backupMetaJSON)
313 if err != nil {
314 return errors.Trace(err)
315 }
316 cmd.Printf("backupmeta decoded at %s\n", path.Join(s.URI(), metautil.MetaJSONFile))
317 return nil
318 }
319
320 switch fieldName {
321 // To be compatible with older BR.
322 case "start-version":
323 fieldName = "StartVersion"
324 case "end-version":
325 fieldName = "EndVersion"
326 }
327
328 _, found := reflect.TypeOf(*backupMeta).FieldByName(fieldName)
329 if !found {
330 cmd.Printf("field '%s' not found\n", fieldName)
331 return nil

Callers 1

NewDebugCommandFunction · 0.85

Calls 14

ParseFromFlagsMethod · 0.95
ReadBackupMetaFunction · 0.92
DecodeMetaFileFunction · 0.92
DecodeStatsFileFunction · 0.92
MarshalBackupMetaFunction · 0.92
GetDefaultContextFunction · 0.85
WithCancelMethod · 0.80
FlagsMethod · 0.80
PrintfMethod · 0.80
GetStringMethod · 0.65
WriteFileMethod · 0.65
JoinMethod · 0.65

Tested by

no test coverage detected