aboutsummaryrefslogtreecommitdiffstats
path: root/core/blockchain.go
diff options
context:
space:
mode:
authorRaghav Sood <raghavsood@gmail.com>2018-07-26 19:26:24 +0800
committerPéter Szilágyi <peterke@gmail.com>2018-07-26 19:26:24 +0800
commit11a402f747956816bbf49e5f4b7fb5deeecd3017 (patch)
treebffb2615f85fb67475f3f01fff64467d78647c87 /core/blockchain.go
parent021d6fbbbbdfe295dbb3619f8ec3fc8662c1e26a (diff)
downloaddexon-11a402f747956816bbf49e5f4b7fb5deeecd3017.tar
dexon-11a402f747956816bbf49e5f4b7fb5deeecd3017.tar.gz
dexon-11a402f747956816bbf49e5f4b7fb5deeecd3017.tar.bz2
dexon-11a402f747956816bbf49e5f4b7fb5deeecd3017.tar.lz
dexon-11a402f747956816bbf49e5f4b7fb5deeecd3017.tar.xz
dexon-11a402f747956816bbf49e5f4b7fb5deeecd3017.tar.zst
dexon-11a402f747956816bbf49e5f4b7fb5deeecd3017.zip
core: report progress on log chain exports (#17066)
* core/blockchain: export progress * core: polish up chain export progress report a bit
Diffstat (limited to 'core/blockchain.go')
-rw-r--r--core/blockchain.go10
1 files changed, 7 insertions, 3 deletions
diff --git a/core/blockchain.go b/core/blockchain.go
index 2f1e78423..7b7e4e79a 100644
--- a/core/blockchain.go
+++ b/core/blockchain.go
@@ -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