diff --git a/substrate/network/src/import_queue.rs b/substrate/network/src/import_queue.rs index 024ae627519d8..9e010c2bee89e 100644 --- a/substrate/network/src/import_queue.rs +++ b/substrate/network/src/import_queue.rs @@ -133,6 +133,10 @@ impl ImportQueue for AsyncImportQueue { } fn import_blocks(&self, _sync: &mut ChainSync, _protocol: &mut Context, blocks: (BlockOrigin, Vec>)) { + if blocks.1.is_empty() { + return; + } + trace!(target:"sync", "Scheduling {} blocks for import", blocks.1.len()); let mut queue = self.data.queue.lock(); @@ -249,6 +253,16 @@ fn import_many_blocks<'a, B: BlockT>( let count = blocks.len(); let mut imported = 0; + let blocks_range = match ( + blocks.first().and_then(|b| b.block.header.as_ref().map(|h| h.number())), + blocks.last().and_then(|b| b.block.header.as_ref().map(|h| h.number())), + ) { + (Some(first), Some(last)) if first != last => format!(" ({}..{})", first, last), + (Some(first), Some(_)) => format!(" ({})", first), + _ => Default::default(), + }; + trace!(target:"sync", "Starting import of {} blocks{}", count, blocks_range); + // Blocks in the response/drain should be in ascending order. for block in blocks { let import_result = import_single_block(link.chain(), blocks_origin.clone(), block); diff --git a/substrate/network/src/protocol.rs b/substrate/network/src/protocol.rs index e798536c451a9..e8de0f218b580 100644 --- a/substrate/network/src/protocol.rs +++ b/substrate/network/src/protocol.rs @@ -353,7 +353,17 @@ impl> Protocol { fn on_block_response(&self, io: &mut SyncIo, peer: NodeIndex, request: message::BlockRequest, response: message::BlockResponse) { // TODO: validate response - trace!(target: "sync", "BlockResponse {} from {} with {} blocks", response.id, peer, response.blocks.len()); + let blocks_range = match ( + response.blocks.first().and_then(|b| b.header.as_ref().map(|h| h.number())), + response.blocks.last().and_then(|b| b.header.as_ref().map(|h| h.number())), + ) { + (Some(first), Some(last)) if first != last => format!(" ({}..{})", first, last), + (Some(first), Some(_)) => format!(" ({})", first), + _ => Default::default(), + }; + trace!(target: "sync", "BlockResponse {} from {} with {} blocks{}", + response.id, peer, response.blocks.len(), blocks_range); + self.sync.write().on_block_data(&mut ProtocolContext::new(&self.context_data, io), peer, request, response); }