Summary
After an incomplete reindex the blocks will need to be replayed.
This results in excessive Rolling back
and Rolling forward
messages which quickly triggers the recently introduced log rate limiter.
Change the logging strategy to:
- Add single
LogInfo
messages showing the full range being replayed for both rollback and roll forward; - Log progress at
LogInfo
level only every 10,000 blocks to track the long operations.
Reproducer:
- Start a normal ibd, stop after some progress
- Do a reindex, stop before it finishes
- Restart the node normally without specifying the reindex parameter It should start rolling the blocks forward.
Before this change the excessive logging would show:
0[*] Rolling forward 000000002f4f55aecfccc911076dc3f73ac0288c83dc1d79db0a026441031d40 (46245)
1[*] Rolling forward 0000000017ffcf34c8eac010c529670ba6745ea59cf1edf7b820928e3b40acf6 (46246)
After the change it shows:
0Replaying blocks
1Rolling forward to 00000000000000001034012d7e4facaf16ca747ea94b8ea66743086cfe298ef8 (326223 to 340991)
2Rolling forward 00000000000000000faabab19f17c0178c754dbed023e6c871dcaf74159c5f02 (330000)
3Rolling forward 00000000000000000d9b2508615d569e18f00c034d71474fc44a43af8d4a5003 (340000)
4...
5Rolled forward to 00000000000000001034012d7e4facaf16ca747ea94b8ea66743086cfe298ef8
(similarly to rolling back)