diff --git a/parity/params.rs b/parity/params.rs index e6b195c0b..bc58e455d 100644 --- a/parity/params.rs +++ b/parity/params.rs @@ -15,11 +15,10 @@ // along with Parity. If not, see . use std::str::FromStr; -use std::sync::Arc; +use std::fs; use std::time::Duration; -use util::{contents, Database, DatabaseConfig, journaldb, H256, Address, U256, version_data}; +use util::{contents, H256, Address, U256, version_data}; use util::journaldb::Algorithm; -use ethcore::client; use ethcore::spec::Spec; use ethcore::ethereum; use ethcore::miner::{GasPricer, GasPriceCalibratorOptions}; @@ -100,20 +99,13 @@ impl Pruning { fn find_best_db(dirs: &Directories, genesis_hash: H256, fork_name: Option<&String>) -> Algorithm { let mut algo_types = Algorithm::all_types(); - - // if all dbs have the same latest era, the last element is the default one + // if all dbs have the same modification time, the last element is the default one algo_types.push(Algorithm::default()); algo_types.into_iter().max_by_key(|i| { - let client_path = dirs.client_path(genesis_hash, fork_name, *i); - let config = DatabaseConfig::with_columns(client::DB_NO_OF_COLUMNS); - let db = match Database::open(&config, client_path.to_str().unwrap()) { - Ok(db) => db, - Err(_) => return 0, - }; - let db = journaldb::new(Arc::new(db), *i, client::DB_COL_STATE); - trace!(target: "parity", "Looking for best DB: {} at {:?}", i, db.latest_era()); - db.latest_era().unwrap_or(0) + let mut client_path = dirs.client_path(genesis_hash, fork_name, *i); + client_path.push("CURRENT"); + fs::metadata(&client_path).and_then(|m| m.modified()).ok() }).unwrap() } } diff --git a/util/src/kvdb.rs b/util/src/kvdb.rs index 0aa48e45f..bbf72b152 100644 --- a/util/src/kvdb.rs +++ b/util/src/kvdb.rs @@ -213,6 +213,7 @@ impl Database { if let Some(rate_limit) = config.compaction.write_rate_limit { try!(opts.set_parsed_options(&format!("rate_limiter_bytes_per_sec={}", rate_limit))); } + try!(opts.set_parsed_options(&format!("max_total_wal_size={}", 64 * 1024 * 1024))); opts.set_max_open_files(config.max_open_files); opts.create_if_missing(true); opts.set_use_fsync(false);