Commit 33630bea authored by Yann Autissier's avatar Yann Autissier

Add RocksDB options for in memory configurations.

When you set the path to rocksdb directory in memory like in /dev/shm,
you need to set the wal_dir and WAL_ttl_seconds options if you want to
recover your in-memory RocksDB database after a machine reboot.

See: https://github.com/facebook/rocksdb/wiki/How-to-persist-in-memory-RocksDB-database
parent 99f4edd6
...@@ -263,6 +263,9 @@ extern "C" { ...@@ -263,6 +263,9 @@ extern "C" {
pub fn crocksdb_options_set_stats_dump_period_sec(options: *mut DBOptions, v: usize); pub fn crocksdb_options_set_stats_dump_period_sec(options: *mut DBOptions, v: usize);
pub fn crocksdb_options_set_num_levels(options: *mut DBOptions, v: c_int); pub fn crocksdb_options_set_num_levels(options: *mut DBOptions, v: c_int);
pub fn crocksdb_options_set_db_log_dir(options: *mut DBOptions, path: *const c_char); pub fn crocksdb_options_set_db_log_dir(options: *mut DBOptions, path: *const c_char);
pub fn crocksdb_options_set_wal_dir(options: *mut DBOptions, path: *const c_char);
pub fn crocksdb_options_set_WAL_ttl_seconds(options: *mut DBOptions, ttl: u64);
pub fn crocksdb_options_set_WAL_size_limit_MB(options: *mut DBOptions, limit: u64);
pub fn crocksdb_options_set_prefix_extractor(options: *mut DBOptions, pub fn crocksdb_options_set_prefix_extractor(options: *mut DBOptions,
prefix_extractor: *mut DBSliceTransform); prefix_extractor: *mut DBSliceTransform);
pub fn crocksdb_options_set_memtable_insert_with_hint_prefix_extractor(options: *mut DBOptions, pub fn crocksdb_options_set_memtable_insert_with_hint_prefix_extractor(options: *mut DBOptions,
......
...@@ -654,6 +654,25 @@ impl Options { ...@@ -654,6 +654,25 @@ impl Options {
} }
} }
pub fn set_wal_dir(&mut self, path: &str) {
let path = CString::new(path.as_bytes()).unwrap();
unsafe {
crocksdb_ffi::crocksdb_options_set_wal_dir(self.inner, path.as_ptr());
}
}
pub fn set_wal_ttl_seconds(&mut self, ttl: u64) {
unsafe {
crocksdb_ffi::crocksdb_options_set_WAL_ttl_seconds(self.inner, ttl as u64);
}
}
pub fn set_wal_size_limit_mb(&mut self, limit: u64) {
unsafe {
crocksdb_ffi::crocksdb_options_set_WAL_size_limit_MB(self.inner, limit as u64);
}
}
pub fn set_max_log_file_size(&mut self, size: u64) { pub fn set_max_log_file_size(&mut self, size: u64) {
unsafe { unsafe {
crocksdb_ffi::crocksdb_options_set_max_log_file_size(self.inner, size as size_t); crocksdb_ffi::crocksdb_options_set_max_log_file_size(self.inner, size as size_t);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment