mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-20 10:52:25 +00:00
revert cleanup: add missing functions and variables to download headers loop
This commit is contained in:
parent
e7489873aa
commit
ff5813f810
1 changed files with 25 additions and 0 deletions
|
|
@ -1275,9 +1275,34 @@ func (d *Downloader) fetchReceipts(from uint64, beaconMode bool) error {
|
||||||
// queue until the stream ends or a failure occurs.
|
// queue until the stream ends or a failure occurs.
|
||||||
func (d *Downloader) processHeaders(origin uint64, td, ttd *big.Int, beaconMode bool) error {
|
func (d *Downloader) processHeaders(origin uint64, td, ttd *big.Int, beaconMode bool) error {
|
||||||
var (
|
var (
|
||||||
|
rollback uint64 // Zero means no rollback (fine as you can't unroll the genesis)
|
||||||
|
rollbackErr error
|
||||||
mode = d.getMode()
|
mode = d.getMode()
|
||||||
gotHeaders = false // Wait for batches of headers to process
|
gotHeaders = false // Wait for batches of headers to process
|
||||||
)
|
)
|
||||||
|
defer func() {
|
||||||
|
if rollback > 0 {
|
||||||
|
lastHeader, lastFastBlock, lastBlock := d.lightchain.CurrentHeader().Number, common.Big0, common.Big0
|
||||||
|
if mode != LightSync {
|
||||||
|
lastFastBlock = d.blockchain.CurrentSnapBlock().Number
|
||||||
|
lastBlock = d.blockchain.CurrentBlock().Number
|
||||||
|
}
|
||||||
|
if err := d.lightchain.SetHead(rollback - 1); err != nil { // -1 to target the parent of the first uncertain block
|
||||||
|
// We're already unwinding the stack, only print the error to make it more visible
|
||||||
|
log.Error("Failed to roll back chain segment", "head", rollback-1, "err", err)
|
||||||
|
}
|
||||||
|
curFastBlock, curBlock := common.Big0, common.Big0
|
||||||
|
if mode != LightSync {
|
||||||
|
curFastBlock = d.blockchain.CurrentSnapBlock().Number
|
||||||
|
curBlock = d.blockchain.CurrentBlock().Number
|
||||||
|
}
|
||||||
|
log.Warn("Rolled back chain segment",
|
||||||
|
"header", fmt.Sprintf("%d->%d", lastHeader, d.lightchain.CurrentHeader().Number),
|
||||||
|
"snap", fmt.Sprintf("%d->%d", lastFastBlock, curFastBlock),
|
||||||
|
"block", fmt.Sprintf("%d->%d", lastBlock, curBlock), "reason", rollbackErr)
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
for {
|
for {
|
||||||
select {
|
select {
|
||||||
case <-d.cancelCh:
|
case <-d.cancelCh:
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue