diff --git a/parity/configuration.rs b/parity/configuration.rs index 007d2d911..a9c776c39 100644 --- a/parity/configuration.rs +++ b/parity/configuration.rs @@ -15,7 +15,7 @@ // along with Parity. If not, see . use std::time::Duration; -use std::io::{Read, Write, stderr}; +use std::io::Read; use std::net::SocketAddr; use std::path::{Path, PathBuf}; use std::collections::BTreeMap; @@ -27,7 +27,6 @@ use bigint::prelude::U256; use bigint::hash::H256; use util::{version_data, Address}; use bytes::Bytes; -use util::journaldb::Algorithm; use ansi_term::Colour; use ethsync::{NetworkConfiguration, is_valid_node_url}; use ethcore::ethstore::ethkey::{Secret, Public}; @@ -41,7 +40,7 @@ use parity_rpc::NetworkSettings; use cache::CacheConfig; use helpers::{to_duration, to_mode, to_block_id, to_u256, to_pending_set, to_price, replace_home, replace_home_and_local, geth_ipc_path, parity_ipc_path, to_bootnodes, to_addresses, to_address, to_gas_limit, to_queue_strategy}; -use params::{ResealPolicy, AccountsConfig, GasPricerConfig, MinerExtras, Pruning, Switch}; +use params::{ResealPolicy, AccountsConfig, GasPricerConfig, MinerExtras}; use ethcore_logger::Config as LogConfig; use dir::{self, Directories, default_hypervisor_path, default_local_path, default_data_path}; use dapps::Configuration as DappsConfiguration; @@ -129,17 +128,7 @@ impl Configuration { let compaction = self.args.arg_db_compaction.parse()?; let wal = !self.args.flag_fast_and_loose; let public_node = self.args.flag_public_node; - if !self.args.flag_no_warp { - // Logging is not initialized yet, so we print directly to stderr - if fat_db == Switch::On { - writeln!(&mut stderr(), "Warning: Warp Sync is disabled because Fat DB is turned on").expect("Error writing to stderr"); - } else if tracing == Switch::On { - writeln!(&mut stderr(), "Warning: Warp Sync is disabled because tracing is turned on").expect("Error writing to stderr"); - } else if pruning == Pruning::Specific(Algorithm::Archive) { - writeln!(&mut stderr(), "Warning: Warp Sync is disabled because pruning mode is set to archive").expect("Error writing to stderr"); - } - } - let warp_sync = !self.args.flag_no_warp && fat_db != Switch::On && tracing != Switch::On && pruning != Pruning::Specific(Algorithm::Archive); + let warp_sync = !self.args.flag_no_warp; let geth_compatibility = self.args.flag_geth; let dapps_conf = self.dapps_config(); let ipfs_conf = self.ipfs_config(); diff --git a/parity/run.rs b/parity/run.rs index 4b971f837..e11a176e4 100644 --- a/parity/run.rs +++ b/parity/run.rs @@ -42,6 +42,7 @@ use ansi_term::Colour; use util::version; use parking_lot::{Condvar, Mutex}; use node_filter::NodeFilter; +use util::journaldb::Algorithm; use params::{ SpecType, Pruning, AccountsConfig, GasPricerConfig, MinerExtras, Switch, @@ -496,7 +497,21 @@ pub fn execute(cmd: RunCmd, can_restart: bool, logger: Arc) -> R } sync_config.fork_block = spec.fork_block(); - sync_config.warp_sync = spec.engine.supports_warp() && cmd.warp_sync; + let mut warp_sync = cmd.warp_sync; + if warp_sync { + // Logging is not initialized yet, so we print directly to stderr + if fat_db { + warn!("Warning: Warp Sync is disabled because Fat DB is turned on."); + warp_sync = false; + } else if tracing { + warn!("Warning: Warp Sync is disabled because tracing is turned on."); + warp_sync = false; + } else if algorithm != Algorithm::OverlayRecent { + warn!("Warning: Warp Sync is disabled because of non-default pruning mode."); + warp_sync = false; + } + } + sync_config.warp_sync = spec.engine.supports_warp() && warp_sync; sync_config.download_old_blocks = cmd.download_old_blocks; sync_config.serve_light = cmd.serve_light;