aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPéter Szilágyi <peterke@gmail.com>2019-03-07 18:37:03 +0800
committerPéter Szilágyi <peterke@gmail.com>2019-03-07 18:37:03 +0800
commit1612267a4bcb2f26ca623d7b19bb8a0c9a876455 (patch)
tree40376591baad3a138eb7463b6eed155de7c81f09
parent72b21db2d31d77d956c09353457a0c2db45249b0 (diff)
downloadgo-tangerine-1612267a4bcb2f26ca623d7b19bb8a0c9a876455.tar
go-tangerine-1612267a4bcb2f26ca623d7b19bb8a0c9a876455.tar.gz
go-tangerine-1612267a4bcb2f26ca623d7b19bb8a0c9a876455.tar.bz2
go-tangerine-1612267a4bcb2f26ca623d7b19bb8a0c9a876455.tar.lz
go-tangerine-1612267a4bcb2f26ca623d7b19bb8a0c9a876455.tar.xz
go-tangerine-1612267a4bcb2f26ca623d7b19bb8a0c9a876455.tar.zst
go-tangerine-1612267a4bcb2f26ca623d7b19bb8a0c9a876455.zip
eth/downloader: fix nil droppeer in state sync
-rw-r--r--eth/downloader/statesync.go8
1 files changed, 7 insertions, 1 deletions
diff --git a/eth/downloader/statesync.go b/eth/downloader/statesync.go
index 0675a91cd..f294600b3 100644
--- a/eth/downloader/statesync.go
+++ b/eth/downloader/statesync.go
@@ -310,7 +310,13 @@ func (s *stateSync) loop() (err error) {
// 2 items are the minimum requested, if even that times out, we've no use of
// this peer at the moment.
log.Warn("Stalling state sync, dropping peer", "peer", req.peer.id)
- s.d.dropPeer(req.peer.id)
+ if s.d.dropPeer == nil {
+ // The dropPeer method is nil when `--copydb` is used for a local copy.
+ // Timeouts can occur if e.g. compaction hits at the wrong time, and can be ignored
+ req.peer.log.Warn("Downloader wants to drop peer, but peerdrop-function is not set", "peer", req.peer.id)
+ } else {
+ s.d.dropPeer(req.peer.id)
+ }
}
// Process all the received blobs and check for stale delivery
delivered, err := s.process(req)