From f542987ba715a0849e44827ebf76f39e7cd629e7 Mon Sep 17 00:00:00 2001 From: zhangjinpeng1987 Date: Wed, 14 Sep 2016 13:22:49 +0800 Subject: [PATCH] wal recovery mode --- src/ffi.rs | 10 ++++++++++ src/lib.rs | 2 +- src/rocksdb_options.rs | 8 +++++++- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/ffi.rs b/src/ffi.rs index 3ffceff..23f641d 100644 --- a/src/ffi.rs +++ b/src/ffi.rs @@ -94,6 +94,15 @@ pub enum DBUniversalCompactionStyle { rocksdb_total_size_compaction_stop_style = 1, } +#[derive(Copy, Clone, PartialEq)] +#[repr(C)] +pub enum DBRecoveryMode { + TolerateCorruptedTailRecords = 0, + AbsoluteConsistency = 1, + PointInTime = 2, + SkipAnyCorruptedRecords = 3, +} + pub fn error_message(ptr: *const i8) -> String { let c_str = unsafe { CStr::from_ptr(ptr as *const _) }; let s = from_utf8(c_str.to_bytes()).unwrap().to_owned(); @@ -196,6 +205,7 @@ extern "C" { pub fn rocksdb_options_set_disable_auto_compactions(options: DBOptions, v: c_int); pub fn rocksdb_options_set_report_bg_io_stats(options: DBOptions, v: c_int); + pub fn rocksdb_options_set_wal_recovery_mode(options: DBOptions, mode: DBRecoveryMode); pub fn rocksdb_filterpolicy_create_bloom_full(bits_per_key: c_int) -> DBFilterPolicy; pub fn rocksdb_filterpolicy_create_bloom(bits_per_key: c_int) diff --git a/src/lib.rs b/src/lib.rs index dbadb71..3b9d1ad 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -13,7 +13,7 @@ // limitations under the License. // pub use ffi as rocksdb_ffi; -pub use ffi::{DBCompactionStyle, DBComparator, DBCompressionType, new_bloom_filter}; +pub use ffi::{DBCompactionStyle, DBComparator, DBCompressionType, DBRecoveryMode, new_bloom_filter}; pub use rocksdb::{DB, DBIterator, DBVector, Direction, IteratorMode, Writable, WriteBatch}; pub use rocksdb_options::{BlockBasedOptions, Options, WriteOptions}; diff --git a/src/rocksdb_options.rs b/src/rocksdb_options.rs index 78a8dcc..c6112cb 100644 --- a/src/rocksdb_options.rs +++ b/src/rocksdb_options.rs @@ -17,7 +17,7 @@ use self::libc::{c_int,size_t}; use std::ffi::CString; use std::mem; -use rocksdb_ffi::{self, DBCompressionType}; +use rocksdb_ffi::{self, DBCompressionType, DBRecoveryMode}; use merge_operator::{self, MergeFn, MergeOperatorCallback, full_merge_callback, partial_merge_callback}; use comparator::{self, ComparatorCallback, compare_callback}; @@ -366,6 +366,12 @@ impl Options { } } } + + pub fn set_wal_recovery_mode(&mut self, mode: DBRecoveryMode) { + unsafe { + rocksdb_ffi::rocksdb_options_set_wal_recovery_mode(self.inner, mode); + } + } } impl Default for Options {