Skip to content

Commit ac97564

Browse files
committed
Expose max_manifest_space_amp_pct and target_file_size_is_upper_bound in the C API
1 parent e18d41e commit ac97564

4 files changed

Lines changed: 48 additions & 1 deletion

File tree

‎db/c.cc‎

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4585,11 +4585,20 @@ void rocksdb_options_set_target_file_size_multiplier(rocksdb_options_t* opt,
45854585
int n) {
45864586
opt->rep.target_file_size_multiplier = n;
45874587
}
4588-
45894588
int rocksdb_options_get_target_file_size_multiplier(rocksdb_options_t* opt) {
45904589
return opt->rep.target_file_size_multiplier;
45914590
}
45924591

4592+
void rocksdb_options_set_target_file_size_is_upper_bound(rocksdb_options_t* opt,
4593+
unsigned char v) {
4594+
opt->rep.target_file_size_is_upper_bound = v;
4595+
}
4596+
4597+
unsigned char rocksdb_options_get_target_file_size_is_upper_bound(
4598+
rocksdb_options_t* opt) {
4599+
return opt->rep.target_file_size_is_upper_bound;
4600+
}
4601+
45934602
void rocksdb_options_set_max_bytes_for_level_base(rocksdb_options_t* opt,
45944603
uint64_t n) {
45954604
opt->rep.max_bytes_for_level_base = n;
@@ -5039,6 +5048,15 @@ void rocksdb_options_set_manifest_preallocation_size(rocksdb_options_t* opt,
50395048
opt->rep.manifest_preallocation_size = v;
50405049
}
50415050

5051+
int rocksdb_options_get_max_manifest_space_amp_pct(rocksdb_options_t* opt) {
5052+
return opt->rep.max_manifest_space_amp_pct;
5053+
}
5054+
5055+
void rocksdb_options_set_max_manifest_space_amp_pct(rocksdb_options_t* opt,
5056+
int v) {
5057+
opt->rep.max_manifest_space_amp_pct = v;
5058+
}
5059+
50425060
size_t rocksdb_options_get_manifest_preallocation_size(rocksdb_options_t* opt) {
50435061
return opt->rep.manifest_preallocation_size;
50445062
}

‎db/c_test.c‎

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2935,6 +2935,12 @@ int main(int argc, char** argv) {
29352935
rocksdb_options_set_prepopulate_blob_cache(o, 1 /* flush only */);
29362936
CheckCondition(1 == rocksdb_options_get_prepopulate_blob_cache(o));
29372937

2938+
rocksdb_options_set_target_file_size_is_upper_bound(o, 1);
2939+
CheckCondition(1 == rocksdb_options_get_target_file_size_is_upper_bound(o));
2940+
2941+
rocksdb_options_set_max_manifest_space_amp_pct(o, 31);
2942+
CheckCondition(31 == rocksdb_options_get_max_manifest_space_amp_pct(o));
2943+
29382944
// Create a copy that should be equal to the original.
29392945
rocksdb_options_t* copy;
29402946
copy = rocksdb_options_create_copy(o);
@@ -3036,6 +3042,9 @@ int main(int argc, char** argv) {
30363042
CheckCondition(1 == rocksdb_options_get_atomic_flush(copy));
30373043
CheckCondition(29.0 ==
30383044
rocksdb_options_get_experimental_mempurge_threshold(copy));
3045+
CheckCondition(31 == rocksdb_options_get_max_manifest_space_amp_pct(copy));
3046+
CheckCondition(1 ==
3047+
rocksdb_options_get_target_file_size_is_upper_bound(copy));
30393048

30403049
// Copies should be independent.
30413050
rocksdb_options_set_allow_ingest_behind(copy, 0);
@@ -3411,6 +3420,15 @@ int main(int argc, char** argv) {
34113420
CheckCondition(29.0 ==
34123421
rocksdb_options_get_experimental_mempurge_threshold(o));
34133422

3423+
rocksdb_options_set_max_manifest_space_amp_pct(copy, 330);
3424+
CheckCondition(330 == rocksdb_options_get_max_manifest_space_amp_pct(copy));
3425+
CheckCondition(31 == rocksdb_options_get_max_manifest_space_amp_pct(o));
3426+
3427+
rocksdb_options_set_target_file_size_is_upper_bound(copy, 0);
3428+
CheckCondition(0 ==
3429+
rocksdb_options_get_target_file_size_is_upper_bound(copy));
3430+
CheckCondition(1 == rocksdb_options_get_target_file_size_is_upper_bound(o));
3431+
34143432
rocksdb_options_destroy(copy);
34153433
rocksdb_options_destroy(o);
34163434
}

‎include/rocksdb/c.h‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1645,6 +1645,11 @@ extern ROCKSDB_LIBRARY_API void rocksdb_options_set_target_file_size_multiplier(
16451645
rocksdb_options_t*, int);
16461646
extern ROCKSDB_LIBRARY_API int rocksdb_options_get_target_file_size_multiplier(
16471647
rocksdb_options_t*);
1648+
extern ROCKSDB_LIBRARY_API void
1649+
rocksdb_options_set_target_file_size_is_upper_bound(rocksdb_options_t*,
1650+
unsigned char);
1651+
extern ROCKSDB_LIBRARY_API unsigned char
1652+
rocksdb_options_get_target_file_size_is_upper_bound(rocksdb_options_t*);
16481653
extern ROCKSDB_LIBRARY_API void rocksdb_options_set_max_bytes_for_level_base(
16491654
rocksdb_options_t*, uint64_t);
16501655
extern ROCKSDB_LIBRARY_API uint64_t
@@ -1863,6 +1868,10 @@ extern ROCKSDB_LIBRARY_API void rocksdb_options_set_max_manifest_file_size(
18631868
rocksdb_options_t*, size_t);
18641869
extern ROCKSDB_LIBRARY_API size_t
18651870
rocksdb_options_get_max_manifest_file_size(rocksdb_options_t*);
1871+
extern ROCKSDB_LIBRARY_API void rocksdb_options_set_max_manifest_space_amp_pct(
1872+
rocksdb_options_t*, int);
1873+
extern ROCKSDB_LIBRARY_API int rocksdb_options_get_max_manifest_space_amp_pct(
1874+
rocksdb_options_t*);
18661875
extern ROCKSDB_LIBRARY_API void rocksdb_options_set_table_cache_numshardbits(
18671876
rocksdb_options_t*, int);
18681877
extern ROCKSDB_LIBRARY_API int rocksdb_options_get_table_cache_numshardbits(
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Added `rocksdb_options_set_target_file_size_is_upper_bound`, `rocksdb_options_get_target_file_size_is_upper_bound`, `rocksdb_options_get_max_manifest_space_amp_pct`, `rocksdb_options_set_max_manifest_space_amp_pct` to the C API, exposing the exisiting options - max_manifest_space_amp_pct , target_file_size_is_upper_bound. This allows C API users (and downstream language bindings) for finer-grained control over manifest and SST file sizings.
2+

0 commit comments

Comments
 (0)