From 84ec662faf3eec9e35eaf58adc545e29c9ca8cd7 Mon Sep 17 00:00:00 2001 From: arkpar Date: Thu, 6 Sep 2018 21:36:41 +0200 Subject: [PATCH] Fixed sync stalling when import queue is full --- substrate/network/src/sync.rs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/substrate/network/src/sync.rs b/substrate/network/src/sync.rs index 025afd5d3e3e2..33c3e57d7842a 100644 --- a/substrate/network/src/sync.rs +++ b/substrate/network/src/sync.rs @@ -237,6 +237,14 @@ impl ChainSync { let is_best = new_blocks.first().and_then(|b| b.block.header.as_ref()).map(|h| best_seen.as_ref().map_or(false, |n| h.number() >= n)); let origin = if is_best.unwrap_or_default() { BlockOrigin::NetworkBroadcast } else { BlockOrigin::NetworkInitialSync }; let import_queue = self.import_queue.clone(); + if let Some((hash, number)) = new_blocks.last() + .and_then(|b| b.block.header.as_ref().map(|h|(b.block.hash.clone(), *h.number()))) + { + if number > self.best_queued_number { + self.best_queued_number = number; + self.best_queued_hash = hash; + } + } import_queue.import_blocks(self, protocol, (origin, new_blocks)); self.maintain_sync(protocol); }