From 3a28e229addc0115baf810a41e2963fdeb50566c Mon Sep 17 00:00:00 2001 From: user Date: Tue, 10 Jun 2025 14:53:03 +0300 Subject: [PATCH] refactor importChain and exportChain function --- cmd/geth/chaincmd.go | 35 +++++++++++++++++------------------ 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/cmd/geth/chaincmd.go b/cmd/geth/chaincmd.go index e0606f0d0b..02f8d4323a 100644 --- a/cmd/geth/chaincmd.go +++ b/cmd/geth/chaincmd.go @@ -398,7 +398,7 @@ func importChain(ctx *cli.Context) error { fmt.Printf("GC pause: %v\n\n", time.Duration(mem.PauseTotalNs)) if ctx.Bool(utils.NoCompactionFlag.Name) { - return nil + return importErr } // 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() start := time.Now() - var err error - fp := ctx.Args().First() + filepath := ctx.Args().First() if ctx.Args().Len() < 3 { - err = utils.ExportChain(chain, fp) - } else { - // This can be improved to allow for numbers larger than 9223372036854775807 - first, ferr := strconv.ParseInt(ctx.Args().Get(1), 10, 64) - last, lerr := strconv.ParseInt(ctx.Args().Get(2), 10, 64) - if ferr != nil || lerr != nil { - utils.Fatalf("Export error in parsing parameters: block number not an integer\n") + if err := utils.ExportChain(chain, filepath); err != nil { + utils.Fatalf("Export error: %v\n", err) } - if first < 0 || last < 0 { - utils.Fatalf("Export error: block number must be greater than 0\n") - } - 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()) - } - err = utils.ExportAppendChain(chain, fp, uint64(first), uint64(last)) + return nil } - if err != nil { + + 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 { + utils.Fatalf("Export error in parsing parameters: block number not an integer\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 err := utils.ExportAppendChain(chain, filepath, first, last); err != nil { utils.Fatalf("Export error: %v\n", err) } fmt.Printf("Export done in %v\n", time.Since(start))