DB WAL size limit (#1935)
* Limit WAL size * Check pruning by db modification date (#1924)
This commit is contained in:
parent
46f029e65c
commit
e2cf8a894f
@ -15,11 +15,10 @@
|
||||
// along with Parity. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
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()
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user