eth: fix snap sync cancellation

parent 6291fc92
...@@ -346,7 +346,6 @@ func (d *Downloader) Synchronise(id string, head common.Hash, td *big.Int, mode ...@@ -346,7 +346,6 @@ func (d *Downloader) Synchronise(id string, head common.Hash, td *big.Int, mode
case nil, errBusy, errCanceled: case nil, errBusy, errCanceled:
return err return err
} }
if errors.Is(err, errInvalidChain) || errors.Is(err, errBadPeer) || errors.Is(err, errTimeout) || if errors.Is(err, errInvalidChain) || errors.Is(err, errBadPeer) || errors.Is(err, errTimeout) ||
errors.Is(err, errStallingPeer) || errors.Is(err, errUnsyncedPeer) || errors.Is(err, errEmptyHeaderSet) || errors.Is(err, errStallingPeer) || errors.Is(err, errUnsyncedPeer) || errors.Is(err, errEmptyHeaderSet) ||
errors.Is(err, errPeersUnavailable) || errors.Is(err, errTooOld) || errors.Is(err, errInvalidAncestor) { errors.Is(err, errPeersUnavailable) || errors.Is(err, errTooOld) || errors.Is(err, errInvalidAncestor) {
...@@ -1764,7 +1763,7 @@ func (d *Downloader) processFastSyncContent() error { ...@@ -1764,7 +1763,7 @@ func (d *Downloader) processFastSyncContent() error {
}() }()
closeOnErr := func(s *stateSync) { closeOnErr := func(s *stateSync) {
if err := s.Wait(); err != nil && err != errCancelStateFetch && err != errCanceled { if err := s.Wait(); err != nil && err != errCancelStateFetch && err != errCanceled && err != snap.ErrCancelled {
d.queue.Close() // wake up Results d.queue.Close() // wake up Results
} }
} }
......
...@@ -61,7 +61,6 @@ var ( ...@@ -61,7 +61,6 @@ var (
errDecode = errors.New("invalid message") errDecode = errors.New("invalid message")
errInvalidMsgCode = errors.New("invalid message code") errInvalidMsgCode = errors.New("invalid message code")
errBadRequest = errors.New("bad request") errBadRequest = errors.New("bad request")
errCancelled = errors.New("sync cancelled")
) )
// Packet represents a p2p message in the `snap` protocol. // Packet represents a p2p message in the `snap` protocol.
......
...@@ -88,6 +88,10 @@ var ( ...@@ -88,6 +88,10 @@ var (
requestTimeout = 10 * time.Second // TODO(karalabe): Make it dynamic ala fast-sync? requestTimeout = 10 * time.Second // TODO(karalabe): Make it dynamic ala fast-sync?
) )
// ErrCancelled is returned from snap syncing if the operation was prematurely
// terminated.
var ErrCancelled = errors.New("sync cancelled")
// accountRequest tracks a pending account range request to ensure responses are // accountRequest tracks a pending account range request to ensure responses are
// to actual requests and to validate any security constraints. // to actual requests and to validate any security constraints.
// //
...@@ -615,7 +619,7 @@ func (s *Syncer) Sync(root common.Hash, cancel chan struct{}) error { ...@@ -615,7 +619,7 @@ func (s *Syncer) Sync(root common.Hash, cancel chan struct{}) error {
case id := <-peerDrop: case id := <-peerDrop:
s.revertRequests(id) s.revertRequests(id)
case <-cancel: case <-cancel:
return errCancelled return ErrCancelled
case req := <-s.accountReqFails: case req := <-s.accountReqFails:
s.revertAccountRequest(req) s.revertAccountRequest(req)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment