Sync progress and error handling fixes (#6560)

This commit is contained in:
Arkadiy Paronyan 2017-09-21 10:12:27 +02:00 committed by Gav Wood
parent 4dc7d3dc45
commit 684b142711
2 changed files with 8 additions and 5 deletions

View File

@ -90,6 +90,7 @@ pub struct SyncInfo {
last_imported_old_block_number: Option<BlockNumber>, last_imported_old_block_number: Option<BlockNumber>,
num_peers: usize, num_peers: usize,
max_peers: u32, max_peers: u32,
snapshot_sync: bool,
} }
pub struct Report { pub struct Report {
@ -152,6 +153,7 @@ impl InformantData for FullNodeInformantData {
last_imported_old_block_number: status.last_imported_old_block_number, last_imported_old_block_number: status.last_imported_old_block_number,
num_peers: status.num_peers, num_peers: status.num_peers,
max_peers: status.current_max_peers(net_config.min_peers, net_config.max_peers), max_peers: status.current_max_peers(net_config.min_peers, net_config.max_peers),
snapshot_sync: status.is_snapshot_syncing(),
})) }))
} }
_ => (is_major_importing(self.sync.as_ref().map(|s| s.status().state), queue_info.clone()), None), _ => (is_major_importing(self.sync.as_ref().map(|s| s.status().state), queue_info.clone()), None),
@ -196,6 +198,7 @@ impl InformantData for LightNodeInformantData {
last_imported_old_block_number: None, last_imported_old_block_number: None,
num_peers: peer_numbers.connected, num_peers: peer_numbers.connected,
max_peers: peer_numbers.max as u32, max_peers: peer_numbers.max as u32,
snapshot_sync: false,
}); });
Report { Report {
@ -282,7 +285,7 @@ impl<T: InformantData> Informant<T> {
_ => (false, 0, 0), _ => (false, 0, 0),
} }
); );
let snapshot_sync = snapshot_sync && sync_info.as_ref().map_or(false, |s| s.snapshot_sync);
if !importing && !snapshot_sync && elapsed < Duration::from_secs(30) { if !importing && !snapshot_sync && elapsed < Duration::from_secs(30) {
return; return;
} }

View File

@ -695,7 +695,7 @@ impl ChainSync {
} }
} else { } else {
trace!(target: "sync", "{}: Fork mismatch", peer_id); trace!(target: "sync", "{}: Fork mismatch", peer_id);
io.disconnect_peer(peer_id); io.disable_peer(peer_id);
return Ok(()); return Ok(());
} }
} }
@ -1153,7 +1153,7 @@ impl ChainSync {
trace!(target: "sync", "== Connected {}: {}", peer, io.peer_info(peer)); trace!(target: "sync", "== Connected {}: {}", peer, io.peer_info(peer));
if let Err(e) = self.send_status(io, peer) { if let Err(e) = self.send_status(io, peer) {
debug!(target:"sync", "Error sending status request: {:?}", e); debug!(target:"sync", "Error sending status request: {:?}", e);
io.disable_peer(peer); io.disconnect_peer(peer);
} else { } else {
self.handshaking_peers.insert(peer, time::precise_time_ns()); self.handshaking_peers.insert(peer, time::precise_time_ns());
} }
@ -1454,7 +1454,7 @@ impl ChainSync {
}; };
if let Err(e) = result { if let Err(e) = result {
debug!(target:"sync", "Error sending request: {:?}", e); debug!(target:"sync", "Error sending request: {:?}", e);
sync.disable_peer(peer_id); sync.disconnect_peer(peer_id);
} }
} }
} }
@ -1463,7 +1463,7 @@ impl ChainSync {
fn send_packet(&mut self, sync: &mut SyncIo, peer_id: PeerId, packet_id: PacketId, packet: Bytes) { fn send_packet(&mut self, sync: &mut SyncIo, peer_id: PeerId, packet_id: PacketId, packet: Bytes) {
if let Err(e) = sync.send(peer_id, packet_id, packet) { if let Err(e) = sync.send(peer_id, packet_id, packet) {
debug!(target:"sync", "Error sending packet: {:?}", e); debug!(target:"sync", "Error sending packet: {:?}", e);
sync.disable_peer(peer_id); sync.disconnect_peer(peer_id);
} }
} }