Skip to content

Commit 1489c3f

Browse files
authored
Merge pull request #22334 from karalabe/fix-snap-cancel
eth: fix snap sync cancellation
2 parents f9445e9 + bfdff4c commit 1489c3f

File tree

3 files changed

+6
-4
lines changed

3 files changed

+6
-4
lines changed

eth/downloader/downloader.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -346,7 +346,6 @@ func (d *Downloader) Synchronise(id string, head common.Hash, td *big.Int, mode
346346
case nil, errBusy, errCanceled:
347347
return err
348348
}
349-
350349
if errors.Is(err, errInvalidChain) || errors.Is(err, errBadPeer) || errors.Is(err, errTimeout) ||
351350
errors.Is(err, errStallingPeer) || errors.Is(err, errUnsyncedPeer) || errors.Is(err, errEmptyHeaderSet) ||
352351
errors.Is(err, errPeersUnavailable) || errors.Is(err, errTooOld) || errors.Is(err, errInvalidAncestor) {
@@ -1764,7 +1763,7 @@ func (d *Downloader) processFastSyncContent() error {
17641763
}()
17651764

17661765
closeOnErr := func(s *stateSync) {
1767-
if err := s.Wait(); err != nil && err != errCancelStateFetch && err != errCanceled {
1766+
if err := s.Wait(); err != nil && err != errCancelStateFetch && err != errCanceled && err != snap.ErrCancelled {
17681767
d.queue.Close() // wake up Results
17691768
}
17701769
}

eth/protocols/snap/protocol.go

-1
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,6 @@ var (
6161
errDecode = errors.New("invalid message")
6262
errInvalidMsgCode = errors.New("invalid message code")
6363
errBadRequest = errors.New("bad request")
64-
errCancelled = errors.New("sync cancelled")
6564
)
6665

6766
// Packet represents a p2p message in the `snap` protocol.

eth/protocols/snap/sync.go

+5-1
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,10 @@ var (
8888
requestTimeout = 10 * time.Second // TODO(karalabe): Make it dynamic ala fast-sync?
8989
)
9090

91+
// ErrCancelled is returned from snap syncing if the operation was prematurely
92+
// terminated.
93+
var ErrCancelled = errors.New("sync cancelled")
94+
9195
// accountRequest tracks a pending account range request to ensure responses are
9296
// to actual requests and to validate any security constraints.
9397
//
@@ -615,7 +619,7 @@ func (s *Syncer) Sync(root common.Hash, cancel chan struct{}) error {
615619
case id := <-peerDrop:
616620
s.revertRequests(id)
617621
case <-cancel:
618-
return errCancelled
622+
return ErrCancelled
619623

620624
case req := <-s.accountReqFails:
621625
s.revertAccountRequest(req)

0 commit comments

Comments
 (0)