From f16ddcb62287998ff1bb0e087867276648cf29bc Mon Sep 17 00:00:00 2001 From: Arkadiy Paronyan Date: Sat, 26 Jan 2019 00:09:56 +0100 Subject: [PATCH] Only request justifications from available peers (#1586) --- substrate/core/network/src/sync.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/substrate/core/network/src/sync.rs b/substrate/core/network/src/sync.rs index cf93b020b4..629e8e3d1b 100644 --- a/substrate/core/network/src/sync.rs +++ b/substrate/core/network/src/sync.rs @@ -92,8 +92,8 @@ impl PendingJustifications { } let mut available_peers = peers.iter().filter_map(|(peer, sync)| { - // don't request to any peers that already have pending requests - if self.peer_requests.contains_key(&peer) { + // don't request to any peers that already have pending requests or are unavailable + if sync.state != PeerSyncState::Available || self.peer_requests.contains_key(&peer) { None } else { Some((*peer, sync.best_number)) @@ -152,6 +152,7 @@ impl PendingJustifications { .expect("peer was is taken from available_peers; available_peers is a subset of peers; qed") .state = PeerSyncState::DownloadingJustification(request.0); + trace!(target: "sync", "Requesting justification for block #{} from {}", request.0, peer); let request = message::generic::BlockRequest { id: 0, fields: message::BlockAttributes::JUSTIFICATION,