diff --git a/eth/downloader/downloader.go b/eth/downloader/downloader.go index 3f337533bc2..0e5e9ad3837 100644 --- a/eth/downloader/downloader.go +++ b/eth/downloader/downloader.go @@ -1527,7 +1527,7 @@ func (d *Downloader) processHeaders(origin uint64, pivot uint64, blockNumber uin } } -func (d *Downloader) importBlockResults(logPrefix string, results []*fetchResult, execute bool) (uint64, error) { +func (d *Downloader) importBlockResults(logPrefix string, results []*fetchResult) (uint64, error) { // Check for any early termination requests if len(results) == 0 { return 0, nil @@ -1545,30 +1545,27 @@ func (d *Downloader) importBlockResults(logPrefix string, results []*fetchResult for i, result := range results { blocks[i] = types.NewBlockWithHeader(result.Header).WithBody(result.Transactions, result.Uncles) } + tx, err2 := d.stateDB.Begin(context.Background(), ethdb.RW) + if err2 != nil { + return 0, err2 + } + defer tx.Rollback() + var index int var stopped bool var err error - if execute { - index, err = d.blockchain.InsertChain(context.Background(), blocks) + stopped, err = core.InsertBodyChain(logPrefix, context.Background(), tx, blocks, true /* newCanonical */) + if stopped { + index = 0 } else { - tx, err2 := d.stateDB.Begin(context.Background(), ethdb.RW) - if err2 != nil { - return 0, err2 - } - defer tx.Rollback() - stopped, err = core.InsertBodyChain(logPrefix, context.Background(), tx, blocks, true /* newCanonical */) - if stopped { - index = 0 - } else { - index = len(results) - } - if err == nil { - if err1 := tx.Commit(); err1 != nil { - return 0, err1 - } - } else { - tx.Rollback() + index = len(results) + } + if err == nil { + if err1 := tx.Commit(); err1 != nil { + return 0, err1 } + } else { + tx.Rollback() } if err != nil { if index < len(results) { diff --git a/eth/downloader/downloader_stagedsync.go b/eth/downloader/downloader_stagedsync.go index 9c19f91207e..4940740272f 100644 --- a/eth/downloader/downloader_stagedsync.go +++ b/eth/downloader/downloader_stagedsync.go @@ -100,8 +100,7 @@ func (d *Downloader) SpawnBodyDownloadStage( h := hashes[prefetchedHashes] if block := prefetchedBlocks.Pop(h); block != nil { fr := fetchResultFromBlock(block) - execute := false - _, err := d.importBlockResults(logPrefix, []*fetchResult{fr}, execute) + _, err := d.importBlockResults(logPrefix, []*fetchResult{fr}) if err != nil { return false, err } @@ -160,7 +159,7 @@ func (d *Downloader) processBodiesStage(logPrefix string, to uint64) error { if len(results) == 0 { return nil } - lastNumber, err := d.importBlockResults(logPrefix, results, false /* execute */) + lastNumber, err := d.importBlockResults(logPrefix, results) if err != nil { return err }