refactor importChain and exportChain function

This commit is contained in:
user 2025-06-10 14:53:03 +03:00
parent 0983cd789e
commit 3a28e229ad

View file

@ -398,7 +398,7 @@ func importChain(ctx *cli.Context) error {
fmt.Printf("GC pause: %v\n\n", time.Duration(mem.PauseTotalNs)) fmt.Printf("GC pause: %v\n\n", time.Duration(mem.PauseTotalNs))
if ctx.Bool(utils.NoCompactionFlag.Name) { if ctx.Bool(utils.NoCompactionFlag.Name) {
return nil return importErr
} }
// Compact the entire database to more accurately measure disk io and print the stats // Compact the entire database to more accurately measure disk io and print the stats
@ -425,26 +425,25 @@ func exportChain(ctx *cli.Context) error {
defer db.Close() defer db.Close()
start := time.Now() start := time.Now()
var err error filepath := ctx.Args().First()
fp := ctx.Args().First()
if ctx.Args().Len() < 3 { if ctx.Args().Len() < 3 {
err = utils.ExportChain(chain, fp) if err := utils.ExportChain(chain, filepath); err != nil {
} else { utils.Fatalf("Export error: %v\n", err)
// This can be improved to allow for numbers larger than 9223372036854775807 }
first, ferr := strconv.ParseInt(ctx.Args().Get(1), 10, 64) return nil
last, lerr := strconv.ParseInt(ctx.Args().Get(2), 10, 64) }
first, ferr := strconv.ParseUint(ctx.Args().Get(1), 10, 64)
last, lerr := strconv.ParseUint(ctx.Args().Get(2), 10, 64)
if ferr != nil || lerr != nil { if ferr != nil || lerr != nil {
utils.Fatalf("Export error in parsing parameters: block number not an integer\n") utils.Fatalf("Export error in parsing parameters: block number not an integer\n")
} }
if first < 0 || last < 0 {
utils.Fatalf("Export error: block number must be greater than 0\n") if head := chain.CurrentSnapBlock(); last > head.Number.Uint64() {
utils.Fatalf("Export error: block number %d larger than head block %d\n", last, head.Number.Uint64())
} }
if head := chain.CurrentSnapBlock(); uint64(last) > head.Number.Uint64() {
utils.Fatalf("Export error: block number %d larger than head block %d\n", uint64(last), head.Number.Uint64()) if err := utils.ExportAppendChain(chain, filepath, first, last); err != nil {
}
err = utils.ExportAppendChain(chain, fp, uint64(first), uint64(last))
}
if err != nil {
utils.Fatalf("Export error: %v\n", err) utils.Fatalf("Export error: %v\n", err)
} }
fmt.Printf("Export done in %v\n", time.Since(start)) fmt.Printf("Export done in %v\n", time.Since(start))