Bump snap version and tweak importing detection logic (#6079)
* bump last tick just before printing info and restore sync detection * bump kovan snapshot version * Fixed sync tests * Fixed rpc tests
This commit is contained in:
parent
d157930f2c
commit
298ea1d748
@ -558,9 +558,9 @@ impl SnapshotService for Service {
|
|||||||
self.reader.read().as_ref().map(|r| r.manifest().clone())
|
self.reader.read().as_ref().map(|r| r.manifest().clone())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn min_supported_version(&self) -> Option<u64> {
|
fn supported_versions(&self) -> Option<(u64, u64)> {
|
||||||
self.engine.snapshot_components()
|
self.engine.snapshot_components()
|
||||||
.map(|c| c.min_supported_version())
|
.map(|c| (c.min_supported_version(), c.current_version()))
|
||||||
}
|
}
|
||||||
|
|
||||||
fn chunk(&self, hash: H256) -> Option<Bytes> {
|
fn chunk(&self, hash: H256) -> Option<Bytes> {
|
||||||
|
@ -27,9 +27,9 @@ pub trait SnapshotService : Sync + Send {
|
|||||||
/// Query the most recent manifest data.
|
/// Query the most recent manifest data.
|
||||||
fn manifest(&self) -> Option<ManifestData>;
|
fn manifest(&self) -> Option<ManifestData>;
|
||||||
|
|
||||||
/// Get the minimum supported snapshot version number.
|
/// Get the supported range of snapshot version numbers.
|
||||||
/// `None` indicates warp sync isn't supported by the consensus engine.
|
/// `None` indicates warp sync isn't supported by the consensus engine.
|
||||||
fn min_supported_version(&self) -> Option<u64>;
|
fn supported_versions(&self) -> Option<(u64, u64)>;
|
||||||
|
|
||||||
/// Get raw chunk for a given hash.
|
/// Get raw chunk for a given hash.
|
||||||
fn chunk(&self, hash: H256) -> Option<Bytes>;
|
fn chunk(&self, hash: H256) -> Option<Bytes>;
|
||||||
|
@ -152,7 +152,7 @@ impl InformantData for FullNodeInformantData {
|
|||||||
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),
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
_ => (is_major_importing(None, queue_info.clone()), None),
|
_ => (is_major_importing(self.sync.as_ref().map(|s| s.status().state), queue_info.clone()), None),
|
||||||
};
|
};
|
||||||
|
|
||||||
Report {
|
Report {
|
||||||
@ -254,8 +254,6 @@ impl<T: InformantData> Informant<T> {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
*self.last_tick.write() = Instant::now();
|
|
||||||
|
|
||||||
let (client_report, full_report) = {
|
let (client_report, full_report) = {
|
||||||
let mut last_report = self.last_report.lock();
|
let mut last_report = self.last_report.lock();
|
||||||
let full_report = self.target.report();
|
let full_report = self.target.report();
|
||||||
@ -287,6 +285,8 @@ impl<T: InformantData> Informant<T> {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
*self.last_tick.write() = Instant::now();
|
||||||
|
|
||||||
let paint = |c: Style, t: String| match self.with_color && stdout_isatty() {
|
let paint = |c: Style, t: String| match self.with_color && stdout_isatty() {
|
||||||
true => format!("{}", c.paint(t)),
|
true => format!("{}", c.paint(t)),
|
||||||
false => t,
|
false => t,
|
||||||
|
@ -21,9 +21,10 @@ use ethsync::SyncState;
|
|||||||
|
|
||||||
/// Check if client is during major sync or during block import.
|
/// Check if client is during major sync or during block import.
|
||||||
pub fn is_major_importing(sync_state: Option<SyncState>, queue_info: BlockQueueInfo) -> bool {
|
pub fn is_major_importing(sync_state: Option<SyncState>, queue_info: BlockQueueInfo) -> bool {
|
||||||
let is_syncing_state = sync_state.map_or(false, |s|
|
let is_syncing_state = sync_state.map_or(false, |s| match s {
|
||||||
s != SyncState::Idle && s != SyncState::NewBlocks
|
SyncState::Idle | SyncState::NewBlocks | SyncState::WaitingPeers => false,
|
||||||
);
|
_ => true,
|
||||||
|
});
|
||||||
let is_verifying = queue_info.unverified_queue_size + queue_info.verified_queue_size > 3;
|
let is_verifying = queue_info.unverified_queue_size + queue_info.verified_queue_size > 3;
|
||||||
is_verifying || is_syncing_state
|
is_verifying || is_syncing_state
|
||||||
}
|
}
|
||||||
|
@ -41,7 +41,7 @@ impl TestSnapshotService {
|
|||||||
|
|
||||||
impl SnapshotService for TestSnapshotService {
|
impl SnapshotService for TestSnapshotService {
|
||||||
fn manifest(&self) -> Option<ManifestData> { None }
|
fn manifest(&self) -> Option<ManifestData> { None }
|
||||||
fn min_supported_version(&self) -> Option<u64> { None }
|
fn supported_versions(&self) -> Option<(u64, u64)> { None }
|
||||||
fn chunk(&self, _hash: H256) -> Option<Bytes> { None }
|
fn chunk(&self, _hash: H256) -> Option<Bytes> { None }
|
||||||
fn status(&self) -> RestorationStatus { self.status.lock().clone() }
|
fn status(&self) -> RestorationStatus { self.status.lock().clone() }
|
||||||
fn begin_restore(&self, _manifest: ManifestData) { }
|
fn begin_restore(&self, _manifest: ManifestData) { }
|
||||||
|
@ -504,7 +504,7 @@ impl ChainSync {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn maybe_start_snapshot_sync(&mut self, io: &mut SyncIo) {
|
fn maybe_start_snapshot_sync(&mut self, io: &mut SyncIo) {
|
||||||
if !self.enable_warp_sync || io.snapshot_service().min_supported_version().is_none() {
|
if !self.enable_warp_sync || io.snapshot_service().supported_versions().is_none() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if self.state != SyncState::WaitingPeers && self.state != SyncState::Blocks && self.state != SyncState::Waiting {
|
if self.state != SyncState::WaitingPeers && self.state != SyncState::Blocks && self.state != SyncState::Waiting {
|
||||||
@ -1044,11 +1044,11 @@ impl ChainSync {
|
|||||||
Ok(manifest) => manifest,
|
Ok(manifest) => manifest,
|
||||||
};
|
};
|
||||||
|
|
||||||
let is_supported_version = io.snapshot_service().min_supported_version()
|
let is_supported_version = io.snapshot_service().supported_versions()
|
||||||
.map_or(false, |v| manifest.version >= v);
|
.map_or(false, |(l, h)| manifest.version >= l && manifest.version <= h);
|
||||||
|
|
||||||
if !is_supported_version {
|
if !is_supported_version {
|
||||||
trace!(target: "sync", "{}: Snapshot manifest version too low: {}", peer_id, manifest.version);
|
trace!(target: "sync", "{}: Snapshot manifest version not supported: {}", peer_id, manifest.version);
|
||||||
io.disable_peer(peer_id);
|
io.disable_peer(peer_id);
|
||||||
self.continue_sync(io);
|
self.continue_sync(io);
|
||||||
return Ok(());
|
return Ok(());
|
||||||
|
@ -71,8 +71,8 @@ impl SnapshotService for TestSnapshotService {
|
|||||||
self.manifest.as_ref().cloned()
|
self.manifest.as_ref().cloned()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn min_supported_version(&self) -> Option<u64> {
|
fn supported_versions(&self) -> Option<(u64, u64)> {
|
||||||
Some(1)
|
Some((1, 2))
|
||||||
}
|
}
|
||||||
|
|
||||||
fn chunk(&self, hash: H256) -> Option<Bytes> {
|
fn chunk(&self, hash: H256) -> Option<Bytes> {
|
||||||
|
Loading…
Reference in New Issue
Block a user