2
2
mirror of https://github.com/octoleo/restic.git synced 2024-12-22 02:48:55 +00:00

Merge pull request #2681 from MichaelEischer/optimize-debug

Reduce memory usage and startup time of debug command
This commit is contained in:
rawtaz 2020-04-04 00:08:14 +02:00 committed by GitHub
commit 5a7c27ddb6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -7,7 +7,6 @@ import (
"encoding/json"
"fmt"
"io"
"os"
"github.com/spf13/cobra"
@ -90,7 +89,7 @@ func printPacks(repo *repository.Repository, wr io.Writer) error {
blobs, err := pack.List(repo.Key(), restic.ReaderAt(repo.Backend(), h), size)
if err != nil {
fmt.Fprintf(os.Stderr, "error for pack %v: %v\n", id.Str(), err)
fmt.Fprintf(globalOptions.stderr, "error for pack %v: %v\n", id.Str(), err)
return nil
}
@ -107,13 +106,11 @@ func printPacks(repo *repository.Repository, wr io.Writer) error {
}
}
return prettyPrintJSON(os.Stdout, p)
return prettyPrintJSON(wr, p)
})
return nil
}
func dumpIndexes(repo restic.Repository) error {
func dumpIndexes(repo restic.Repository, wr io.Writer) error {
return repo.List(context.TODO(), restic.IndexFile, func(id restic.ID, size int64) error {
fmt.Printf("index_id: %v\n", id)
@ -122,7 +119,7 @@ func dumpIndexes(repo restic.Repository) error {
return err
}
return idx.Dump(os.Stdout)
return idx.Dump(wr)
})
}
@ -144,29 +141,24 @@ func runDebugDump(gopts GlobalOptions, args []string) error {
}
}
err = repo.LoadIndex(gopts.ctx)
if err != nil {
return err
}
tpe := args[0]
switch tpe {
case "indexes":
return dumpIndexes(repo)
return dumpIndexes(repo, gopts.stdout)
case "snapshots":
return debugPrintSnapshots(repo, os.Stdout)
return debugPrintSnapshots(repo, gopts.stdout)
case "packs":
return printPacks(repo, os.Stdout)
return printPacks(repo, gopts.stdout)
case "all":
fmt.Printf("snapshots:\n")
err := debugPrintSnapshots(repo, os.Stdout)
err := debugPrintSnapshots(repo, gopts.stdout)
if err != nil {
return err
}
fmt.Printf("\nindexes:\n")
err = dumpIndexes(repo)
err = dumpIndexes(repo, gopts.stdout)
if err != nil {
return err
}