Update downloader.go

This commit is contained in:
songzhibin97 2024-03-20 16:27:06 +08:00
parent c17bb93d7a
commit 697a63675d

View file

@ -1015,14 +1015,11 @@ func (d *Downloader) fetchHeaders(p *peerConnection, from uint64, head uint64) e
// Start pulling the header chain skeleton until all is done // Start pulling the header chain skeleton until all is done
var ( var (
skeleton = true // Skeleton assembly phase or finishing up skeleton = true // Skeleton assembly phase or finishing up
pivoting = false // Whether the next request is pivot verification pivoting = false // Whether the next request is pivot verification
ancestor = from ancestor = from
mode = d.getMode() mode = d.getMode()
fsHeaderContCheckTimer = time.NewTimer(fsHeaderContCheck)
) )
defer fsHeaderContCheckTimer.Stop()
for { for {
// Pull the next batch of headers, it either: // Pull the next batch of headers, it either:
// - Pivot check to see if the chain moved too far // - Pivot check to see if the chain moved too far
@ -1127,9 +1124,8 @@ func (d *Downloader) fetchHeaders(p *peerConnection, from uint64, head uint64) e
// Don't abort header fetches while the pivot is downloading // Don't abort header fetches while the pivot is downloading
if !d.committed.Load() && pivot <= from { if !d.committed.Load() && pivot <= from {
p.log.Debug("No headers, waiting for pivot commit") p.log.Debug("No headers, waiting for pivot commit")
fsHeaderContCheckTimer.Reset(fsHeaderContCheck)
select { select {
case <-fsHeaderContCheckTimer.C: case <-time.After(fsHeaderContCheck):
continue continue
case <-d.cancelCh: case <-d.cancelCh:
return errCanceled return errCanceled
@ -1198,10 +1194,9 @@ func (d *Downloader) fetchHeaders(p *peerConnection, from uint64, head uint64) e
// sleep a bit and retry. Take care with headers already consumed during // sleep a bit and retry. Take care with headers already consumed during
// skeleton filling // skeleton filling
if len(headers) == 0 && !progressed { if len(headers) == 0 && !progressed {
fsHeaderContCheckTimer.Reset(fsHeaderContCheck)
p.log.Trace("All headers delayed, waiting") p.log.Trace("All headers delayed, waiting")
select { select {
case <-fsHeaderContCheckTimer.C: case <-time.After(fsHeaderContCheck):
continue continue
case <-d.cancelCh: case <-d.cancelCh:
return errCanceled return errCanceled