Commit 773015be authored by zhangjinpeng1987's avatar zhangjinpeng1987 Committed by siddontang

soft/hard pending compaction bytes limit (#18)

parent 38ee726a
...@@ -1903,6 +1903,14 @@ void crocksdb_options_set_hard_rate_limit(crocksdb_options_t* opt, double v) { ...@@ -1903,6 +1903,14 @@ void crocksdb_options_set_hard_rate_limit(crocksdb_options_t* opt, double v) {
opt->rep.hard_rate_limit = v; opt->rep.hard_rate_limit = v;
} }
void crocksdb_options_set_soft_pending_compaction_bytes_limit(crocksdb_options_t* opt, size_t v) {
opt->rep.soft_pending_compaction_bytes_limit = v;
}
void crocksdb_options_set_hard_pending_compaction_bytes_limit(crocksdb_options_t* opt, size_t v) {
opt->rep.hard_pending_compaction_bytes_limit = v;
}
void crocksdb_options_set_rate_limit_delay_max_milliseconds( void crocksdb_options_set_rate_limit_delay_max_milliseconds(
crocksdb_options_t* opt, unsigned int v) { crocksdb_options_t* opt, unsigned int v) {
opt->rep.rate_limit_delay_max_milliseconds = v; opt->rep.rate_limit_delay_max_milliseconds = v;
......
...@@ -679,6 +679,10 @@ extern C_ROCKSDB_LIBRARY_API void crocksdb_options_set_soft_rate_limit( ...@@ -679,6 +679,10 @@ extern C_ROCKSDB_LIBRARY_API void crocksdb_options_set_soft_rate_limit(
crocksdb_options_t*, double); crocksdb_options_t*, double);
extern C_ROCKSDB_LIBRARY_API void crocksdb_options_set_hard_rate_limit( extern C_ROCKSDB_LIBRARY_API void crocksdb_options_set_hard_rate_limit(
crocksdb_options_t*, double); crocksdb_options_t*, double);
extern C_ROCKSDB_LIBRARY_API void crocksdb_options_set_soft_pending_compaction_bytes_limit(
crocksdb_options_t* opt, size_t v);
extern C_ROCKSDB_LIBRARY_API void crocksdb_options_set_hard_pending_compaction_bytes_limit(
crocksdb_options_t* opt, size_t v);
extern C_ROCKSDB_LIBRARY_API void extern C_ROCKSDB_LIBRARY_API void
crocksdb_options_set_rate_limit_delay_max_milliseconds(crocksdb_options_t*, crocksdb_options_set_rate_limit_delay_max_milliseconds(crocksdb_options_t*,
unsigned int); unsigned int);
......
...@@ -295,6 +295,10 @@ extern "C" { ...@@ -295,6 +295,10 @@ extern "C" {
fairness: i32) fairness: i32)
-> *mut DBRateLimiter; -> *mut DBRateLimiter;
pub fn crocksdb_ratelimiter_destroy(limiter: *mut DBRateLimiter); pub fn crocksdb_ratelimiter_destroy(limiter: *mut DBRateLimiter);
pub fn crocksdb_options_set_soft_pending_compaction_bytes_limit(options: *mut DBOptions,
v: u64);
pub fn crocksdb_options_set_hard_pending_compaction_bytes_limit(options: *mut DBOptions,
v: u64);
pub fn crocksdb_filterpolicy_create_bloom_full(bits_per_key: c_int) -> *mut DBFilterPolicy; pub fn crocksdb_filterpolicy_create_bloom_full(bits_per_key: c_int) -> *mut DBFilterPolicy;
pub fn crocksdb_filterpolicy_create_bloom(bits_per_key: c_int) -> *mut DBFilterPolicy; pub fn crocksdb_filterpolicy_create_bloom(bits_per_key: c_int) -> *mut DBFilterPolicy;
pub fn crocksdb_open(options: *mut DBOptions, pub fn crocksdb_open(options: *mut DBOptions,
......
...@@ -473,6 +473,20 @@ impl Options { ...@@ -473,6 +473,20 @@ impl Options {
} }
} }
pub fn set_soft_pending_compaction_bytes_limit(&mut self, size: u64) {
unsafe {
crocksdb_ffi::crocksdb_options_set_soft_pending_compaction_bytes_limit(self.inner,
size);
}
}
pub fn set_hard_pending_compaction_bytes_limit(&mut self, size: u64) {
unsafe {
crocksdb_ffi::crocksdb_options_set_hard_pending_compaction_bytes_limit(self.inner,
size);
}
}
pub fn set_max_manifest_file_size(&mut self, size: u64) { pub fn set_max_manifest_file_size(&mut self, size: u64) {
unsafe { unsafe {
crocksdb_ffi::crocksdb_options_set_max_manifest_file_size(self.inner, size); crocksdb_ffi::crocksdb_options_set_max_manifest_file_size(self.inner, size);
......
...@@ -193,4 +193,13 @@ fn test_set_pin_l0_filter_and_index_blocks_in_cache() { ...@@ -193,4 +193,13 @@ fn test_set_pin_l0_filter_and_index_blocks_in_cache() {
opts.set_block_based_table_factory(&block_opts); opts.set_block_based_table_factory(&block_opts);
let db = DB::open(opts, path.path().to_str().unwrap()).unwrap(); let db = DB::open(opts, path.path().to_str().unwrap()).unwrap();
drop(db); drop(db);
} }
\ No newline at end of file #[test]
fn test_pending_compaction_bytes_limit() {
let path = TempDir::new("_rust_rocksdb_pending_compaction_bytes_limit").expect("");
let mut opts = Options::new();
opts.create_if_missing(true);
opts.set_soft_pending_compaction_bytes_limit(64 * 1024 * 1024 * 1024);
opts.set_hard_pending_compaction_bytes_limit(256 * 1024 * 1024 * 1024);
let db = DB::open(opts, path.path().to_str().unwrap()).unwrap();
}
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