core: report progress on log chain exports (#17066)
* core/blockchain: export progress * core: polish up chain export progress report a bit
This commit is contained in:
parent
021d6fbbbb
commit
11a402f747
@ -94,7 +94,8 @@ processing will proceed even if an individual RLP-file import failure occurs.`,
|
||||
Requires a first argument of the file to write to.
|
||||
Optional second and third arguments control the first and
|
||||
last block to write. In this mode, the file will be appended
|
||||
if already existing.`,
|
||||
if already existing. If the file ends with .gz, the output will
|
||||
be gzipped.`,
|
||||
}
|
||||
importPreimagesCommand = cli.Command{
|
||||
Action: utils.MigrateFlags(importPreimages),
|
||||
|
@ -450,15 +450,19 @@ func (bc *BlockChain) ExportN(w io.Writer, first uint64, last uint64) error {
|
||||
}
|
||||
log.Info("Exporting batch of blocks", "count", last-first+1)
|
||||
|
||||
start, reported := time.Now(), time.Now()
|
||||
for nr := first; nr <= last; nr++ {
|
||||
block := bc.GetBlockByNumber(nr)
|
||||
if block == nil {
|
||||
return fmt.Errorf("export failed on #%d: not found", nr)
|
||||
}
|
||||
|
||||
if err := block.EncodeRLP(w); err != nil {
|
||||
return err
|
||||
}
|
||||
if time.Since(reported) >= statsReportLimit {
|
||||
log.Info("Exporting blocks", "exported", block.NumberU64()-first, "elapsed", common.PrettyDuration(time.Since(start)))
|
||||
reported = time.Now()
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
@ -1203,8 +1207,8 @@ type insertStats struct {
|
||||
startTime mclock.AbsTime
|
||||
}
|
||||
|
||||
// statsReportLimit is the time limit during import after which we always print
|
||||
// out progress. This avoids the user wondering what's going on.
|
||||
// statsReportLimit is the time limit during import and export after which we
|
||||
// always print out progress. This avoids the user wondering what's going on.
|
||||
const statsReportLimit = 8 * time.Second
|
||||
|
||||
// report prints statistics if some number of blocks have been processed
|
||||
|
Loading…
Reference in New Issue
Block a user