Browse Source

Use Path::join() for DB directory

refactor-mempool
Roman Zeyde 6 years ago
parent
commit
e4a3581da1
No known key found for this signature in database GPG Key ID: 87CAE5FA46917CBB
  1. 4
      examples/bench_parse.rs
  2. 10
      src/config.rs
  3. 10
      src/store.rs

4
examples/bench_parse.rs

@ -5,6 +5,8 @@ extern crate electrs;
extern crate log;
extern crate error_chain;
use std::path::Path;
use electrs::{
bulk::Parser, config::Config, daemon::Daemon, errors::*, metrics::Metrics,
store::{DBStore, StoreOptions, WriteStore},
@ -17,7 +19,7 @@ fn run(config: Config) -> Result<()> {
metrics.start();
let daemon = Daemon::new(&config.daemon_dir, config.network_type, &metrics)?;
let store = DBStore::open("./test-db", StoreOptions { bulk_import: true });
let store = DBStore::open(Path::new("./test-db"), StoreOptions { bulk_import: true });
let parser = Parser::new(&daemon, &store, &metrics)?;
for rows in parser.start().iter() {

10
src/config.rs

@ -1,7 +1,7 @@
use clap::{App, Arg};
use std::env::home_dir;
use std::net::SocketAddr;
use std::path::PathBuf;
use std::path::{Path, PathBuf};
use stderrlog;
use daemon::Network;
@ -10,7 +10,7 @@ use daemon::Network;
pub struct Config {
pub log: stderrlog::StdErrLog,
pub network_type: Network, // bitcoind JSONRPC endpoint
pub db_path: String, // RocksDB directory path
pub db_path: PathBuf, // RocksDB directory path
pub daemon_dir: PathBuf, // Bitcoind data directory
pub rpc_addr: SocketAddr, // for serving Electrum clients
pub monitoring_addr: SocketAddr, // for Prometheus monitoring
@ -53,7 +53,7 @@ impl Config {
false => Network::Mainnet,
true => Network::Testnet,
};
let db_dir = m.value_of("db_dir").unwrap_or("./db");
let db_dir = Path::new(m.value_of("db_dir").unwrap_or("./db"));
let mut daemon_dir = m.value_of("daemon_dir")
.map(|p| PathBuf::from(p))
.unwrap_or_else(|| {
@ -77,8 +77,8 @@ impl Config {
log,
network_type,
db_path: match network_type {
Network::Mainnet => format!("{}/mainnet", db_dir),
Network::Testnet => format!("{}/testnet", db_dir),
Network::Mainnet => db_dir.join("mainnet"),
Network::Testnet => db_dir.join("testnet"),
},
daemon_dir,
rpc_addr: match network_type {

10
src/store.rs

@ -1,5 +1,7 @@
use rocksdb;
use std::path::Path;
use util::Bytes;
pub struct Row {
@ -25,7 +27,6 @@ pub trait WriteStore: Sync {
pub struct DBStore {
db: rocksdb::DB,
path: String,
opts: StoreOptions,
}
@ -36,8 +37,8 @@ pub struct StoreOptions {
impl DBStore {
/// Opens a new RocksDB at the specified location.
pub fn open(path: &str, opts: StoreOptions) -> DBStore {
debug!("opening {} with {:?}", path, &opts);
pub fn open(path: &Path, opts: StoreOptions) -> DBStore {
debug!("opening {:?} with {:?}", path, &opts);
let mut db_opts = rocksdb::Options::default();
db_opts.create_if_missing(true);
db_opts.set_compaction_style(rocksdb::DBCompactionStyle::Level);
@ -54,7 +55,6 @@ impl DBStore {
block_opts.set_block_size(256 << 10);
DBStore {
db: rocksdb::DB::open(&db_opts, &path).unwrap(),
path: path.to_owned(),
opts: opts,
}
}
@ -120,6 +120,6 @@ impl WriteStore for DBStore {
impl Drop for DBStore {
fn drop(&mut self) {
debug!("closing {}", self.path);
trace!("closing DB");
}
}

Loading…
Cancel
Save