@nxtedition/rocksdb 8.1.3 → 8.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/deps/rocksdb/rocksdb/CMakeLists.txt +0 -9
- package/deps/rocksdb/rocksdb/Makefile +1 -13
- package/deps/rocksdb/rocksdb/TARGETS +0 -4
- package/deps/rocksdb/rocksdb/db/blob/blob_counting_iterator.h +0 -11
- package/deps/rocksdb/rocksdb/db/builder.cc +4 -13
- package/deps/rocksdb/rocksdb/db/builder.h +1 -2
- package/deps/rocksdb/rocksdb/db/c.cc +0 -15
- package/deps/rocksdb/rocksdb/db/c_test.c +0 -3
- package/deps/rocksdb/rocksdb/db/column_family.cc +5 -11
- package/deps/rocksdb/rocksdb/db/column_family.h +0 -20
- package/deps/rocksdb/rocksdb/db/compaction/clipping_iterator.h +0 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +37 -31
- package/deps/rocksdb/rocksdb/db/compaction/compaction.h +0 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +7 -24
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +1 -17
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +1 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +2 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +6 -9
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +26 -104
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +0 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +18 -11
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +16 -17
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +6 -19
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +5 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +22 -22
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +5 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +52 -81
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +1 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +5 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +2 -8
- package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +0 -8
- package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +138 -266
- package/deps/rocksdb/rocksdb/db/corruption_test.cc +1 -86
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +3 -2
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +123 -897
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +20 -31
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +9 -5
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +28 -121
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +2 -3
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +0 -3
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +4 -8
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +0 -10
- package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +4 -325
- package/deps/rocksdb/rocksdb/db/db_test.cc +0 -3
- package/deps/rocksdb/rocksdb/db/db_test2.cc +8 -233
- package/deps/rocksdb/rocksdb/db/db_test_util.h +0 -3
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +0 -129
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_compaction_test.cc +0 -21
- package/deps/rocksdb/rocksdb/db/dbformat.cc +0 -25
- package/deps/rocksdb/rocksdb/db/dbformat.h +0 -2
- package/deps/rocksdb/rocksdb/db/experimental.cc +2 -3
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +0 -3
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +13 -92
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +1 -38
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +110 -14
- package/deps/rocksdb/rocksdb/db/flush_job.cc +4 -6
- package/deps/rocksdb/rocksdb/db/history_trimming_iterator.h +0 -4
- package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +53 -56
- package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +4 -3
- package/deps/rocksdb/rocksdb/db/memtable.cc +1 -1
- package/deps/rocksdb/rocksdb/db/merge_helper.cc +0 -4
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler_test.cc +10 -10
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/repair.cc +22 -65
- package/deps/rocksdb/rocksdb/db/repair_test.cc +0 -54
- package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +26 -26
- package/deps/rocksdb/rocksdb/db/table_properties_collector.h +1 -3
- package/deps/rocksdb/rocksdb/db/version_builder.cc +43 -90
- package/deps/rocksdb/rocksdb/db/version_builder.h +0 -20
- package/deps/rocksdb/rocksdb/db/version_builder_test.cc +93 -218
- package/deps/rocksdb/rocksdb/db/version_edit.cc +1 -27
- package/deps/rocksdb/rocksdb/db/version_edit.h +9 -33
- package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +6 -13
- package/deps/rocksdb/rocksdb/db/version_edit_handler.h +6 -17
- package/deps/rocksdb/rocksdb/db/version_edit_test.cc +17 -19
- package/deps/rocksdb/rocksdb/db/version_set.cc +26 -166
- package/deps/rocksdb/rocksdb/db/version_set.h +2 -32
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +31 -65
- package/deps/rocksdb/rocksdb/db/write_thread.cc +2 -5
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +0 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +32 -31
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.h +1 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +6 -8
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +0 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +4 -11
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +15 -16
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +1 -13
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +75 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +0 -8
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +0 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +1 -7
- package/deps/rocksdb/rocksdb/include/rocksdb/metadata.h +3 -9
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +1 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/status.h +0 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/backup_engine.h +9 -69
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
- package/deps/rocksdb/rocksdb/memory/arena.cc +87 -23
- package/deps/rocksdb/rocksdb/memory/arena.h +31 -25
- package/deps/rocksdb/rocksdb/memory/arena_test.cc +0 -90
- package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +26 -26
- package/deps/rocksdb/rocksdb/src.mk +0 -2
- package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.cc +2 -3
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +2 -3
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +2 -6
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +3 -3
- package/deps/rocksdb/rocksdb/table/format.cc +20 -24
- package/deps/rocksdb/rocksdb/table/format.h +2 -5
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +105 -54
- package/deps/rocksdb/rocksdb/table/merging_iterator.h +0 -80
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +2 -2
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +1 -1
- package/deps/rocksdb/rocksdb/table/table_test.cc +6 -7
- package/deps/rocksdb/rocksdb/test_util/testutil.h +0 -10
- package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.h +2 -2
- package/deps/rocksdb/rocksdb/util/bloom_test.cc +1 -1
- package/deps/rocksdb/rocksdb/util/status.cc +0 -7
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +74 -250
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +4 -199
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +0 -39
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +0 -9
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +0 -59
- package/deps/rocksdb/rocksdb.gyp +0 -3
- package/index.js +2 -2
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/prebuilds/linux-x64/node.napi.node +0 -0
- package/deps/rocksdb/rocksdb/port/mmap.cc +0 -98
- package/deps/rocksdb/rocksdb/port/mmap.h +0 -70
- package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.cc +0 -142
- package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.h +0 -241
|
@@ -77,9 +77,8 @@ class CompactionPickerTestBase : public testing::Test {
|
|
|
77
77
|
void NewVersionStorage(int num_levels, CompactionStyle style) {
|
|
78
78
|
DeleteVersionStorage();
|
|
79
79
|
options_.num_levels = num_levels;
|
|
80
|
-
vstorage_.reset(new VersionStorageInfo(
|
|
81
|
-
|
|
82
|
-
EpochNumberRequirement::kMustPresent));
|
|
80
|
+
vstorage_.reset(new VersionStorageInfo(&icmp_, ucmp_, options_.num_levels,
|
|
81
|
+
style, nullptr, false));
|
|
83
82
|
vstorage_->PrepareForVersionAppend(ioptions_, mutable_cf_options_);
|
|
84
83
|
}
|
|
85
84
|
|
|
@@ -88,7 +87,7 @@ class CompactionPickerTestBase : public testing::Test {
|
|
|
88
87
|
void AddVersionStorage() {
|
|
89
88
|
temp_vstorage_.reset(new VersionStorageInfo(
|
|
90
89
|
&icmp_, ucmp_, options_.num_levels, ioptions_.compaction_style,
|
|
91
|
-
vstorage_.get(), false
|
|
90
|
+
vstorage_.get(), false));
|
|
92
91
|
}
|
|
93
92
|
|
|
94
93
|
void DeleteVersionStorage() {
|
|
@@ -106,8 +105,7 @@ class CompactionPickerTestBase : public testing::Test {
|
|
|
106
105
|
size_t compensated_file_size = 0, bool marked_for_compact = false,
|
|
107
106
|
Temperature temperature = Temperature::kUnknown,
|
|
108
107
|
uint64_t oldest_ancestor_time = kUnknownOldestAncesterTime,
|
|
109
|
-
Slice ts_of_smallest = Slice(), Slice ts_of_largest = Slice()
|
|
110
|
-
uint64_t epoch_number = kUnknownEpochNumber) {
|
|
108
|
+
Slice ts_of_smallest = Slice(), Slice ts_of_largest = Slice()) {
|
|
111
109
|
assert(ts_of_smallest.size() == ucmp_->timestamp_size());
|
|
112
110
|
assert(ts_of_largest.size() == ucmp_->timestamp_size());
|
|
113
111
|
|
|
@@ -147,8 +145,8 @@ class CompactionPickerTestBase : public testing::Test {
|
|
|
147
145
|
file_number, path_id, file_size, smallest_ikey, largest_ikey,
|
|
148
146
|
smallest_seq, largest_seq, marked_for_compact, temperature,
|
|
149
147
|
kInvalidBlobFileNumber, kUnknownOldestAncesterTime,
|
|
150
|
-
kUnknownFileCreationTime,
|
|
151
|
-
kUnknownFileChecksumFuncName, kNullUniqueId64x2
|
|
148
|
+
kUnknownFileCreationTime, kUnknownFileChecksum,
|
|
149
|
+
kUnknownFileChecksumFuncName, kNullUniqueId64x2);
|
|
152
150
|
f->compensated_file_size =
|
|
153
151
|
(compensated_file_size != 0) ? compensated_file_size : file_size;
|
|
154
152
|
f->oldest_ancester_time = oldest_ancestor_time;
|
|
@@ -2873,6 +2871,39 @@ TEST_F(CompactionPickerTest, IntraL0MaxCompactionBytesHit) {
|
|
|
2873
2871
|
ASSERT_EQ(0, compaction->output_level());
|
|
2874
2872
|
}
|
|
2875
2873
|
|
|
2874
|
+
TEST_F(CompactionPickerTest, IntraL0ForEarliestSeqno) {
|
|
2875
|
+
// Intra L0 compaction triggers only if there are at least
|
|
2876
|
+
// level0_file_num_compaction_trigger + 2 L0 files.
|
|
2877
|
+
mutable_cf_options_.level0_file_num_compaction_trigger = 3;
|
|
2878
|
+
mutable_cf_options_.max_compaction_bytes = 999999u;
|
|
2879
|
+
NewVersionStorage(6, kCompactionStyleLevel);
|
|
2880
|
+
|
|
2881
|
+
// 4 out of 6 L0 files will be picked for intra L0 compaction due to
|
|
2882
|
+
// being_compact limit. And the latest one L0 will be skipped due to earliest
|
|
2883
|
+
// seqno. The one L1 file spans entire L0 key range and is marked as being
|
|
2884
|
+
// compacted to avoid L0->L1 compaction.
|
|
2885
|
+
Add(1, 1U, "100", "350", 200000U, 0, 110, 111);
|
|
2886
|
+
Add(0, 2U, "301", "350", 1U, 0, 108, 109);
|
|
2887
|
+
Add(0, 3U, "251", "300", 1U, 0, 106, 107);
|
|
2888
|
+
Add(0, 4U, "201", "250", 1U, 0, 104, 105);
|
|
2889
|
+
Add(0, 5U, "151", "200", 1U, 0, 102, 103);
|
|
2890
|
+
Add(0, 6U, "100", "150", 1U, 0, 100, 101);
|
|
2891
|
+
Add(0, 7U, "100", "100", 1U, 0, 99, 100);
|
|
2892
|
+
vstorage_->LevelFiles(0)[5]->being_compacted = true;
|
|
2893
|
+
vstorage_->LevelFiles(1)[0]->being_compacted = true;
|
|
2894
|
+
UpdateVersionStorageInfo();
|
|
2895
|
+
|
|
2896
|
+
std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
|
|
2897
|
+
cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
|
|
2898
|
+
&log_buffer_, 107));
|
|
2899
|
+
ASSERT_TRUE(compaction.get() != nullptr);
|
|
2900
|
+
ASSERT_EQ(1U, compaction->num_input_levels());
|
|
2901
|
+
ASSERT_EQ(4U, compaction->num_input_files(0));
|
|
2902
|
+
ASSERT_EQ(CompactionReason::kLevelL0FilesNum,
|
|
2903
|
+
compaction->compaction_reason());
|
|
2904
|
+
ASSERT_EQ(0, compaction->output_level());
|
|
2905
|
+
}
|
|
2906
|
+
|
|
2876
2907
|
#ifndef ROCKSDB_LITE
|
|
2877
2908
|
TEST_F(CompactionPickerTest, UniversalMarkedCompactionFullOverlap) {
|
|
2878
2909
|
const uint64_t kFileSize = 100000;
|
|
@@ -2885,23 +2916,9 @@ TEST_F(CompactionPickerTest, UniversalMarkedCompactionFullOverlap) {
|
|
|
2885
2916
|
// should fail
|
|
2886
2917
|
NewVersionStorage(5, kCompactionStyleUniversal);
|
|
2887
2918
|
|
|
2888
|
-
Add(0, 1U, "150", "200", kFileSize, 0, 500, 550
|
|
2889
|
-
|
|
2890
|
-
|
|
2891
|
-
/*ts_of_smallest*/ Slice(), /*ts_of_largest*/ Slice(),
|
|
2892
|
-
/*epoch_number*/ 3);
|
|
2893
|
-
Add(0, 2U, "201", "250", 2 * kFileSize, 0, 401, 450,
|
|
2894
|
-
/*compensated_file_size*/ 0, /*marked_for_compact*/ false,
|
|
2895
|
-
/* temperature*/ Temperature::kUnknown,
|
|
2896
|
-
/*oldest_ancestor_time*/ kUnknownOldestAncesterTime,
|
|
2897
|
-
/*ts_of_smallest*/ Slice(), /*ts_of_largest*/ Slice(),
|
|
2898
|
-
/*epoch_number*/ 2);
|
|
2899
|
-
Add(0, 4U, "260", "300", 4 * kFileSize, 0, 260, 300,
|
|
2900
|
-
/*compensated_file_size*/ 0, /*marked_for_compact*/ false,
|
|
2901
|
-
/* temperature*/ Temperature::kUnknown,
|
|
2902
|
-
/*oldest_ancestor_time*/ kUnknownOldestAncesterTime,
|
|
2903
|
-
/*ts_of_smallest*/ Slice(), /*ts_of_largest*/ Slice(),
|
|
2904
|
-
/*epoch_number*/ 1);
|
|
2919
|
+
Add(0, 1U, "150", "200", kFileSize, 0, 500, 550);
|
|
2920
|
+
Add(0, 2U, "201", "250", 2 * kFileSize, 0, 401, 450);
|
|
2921
|
+
Add(0, 4U, "260", "300", 4 * kFileSize, 0, 260, 300);
|
|
2905
2922
|
Add(3, 5U, "010", "080", 8 * kFileSize, 0, 200, 251);
|
|
2906
2923
|
Add(4, 3U, "301", "350", 8 * kFileSize, 0, 101, 150);
|
|
2907
2924
|
Add(4, 6U, "501", "750", 8 * kFileSize, 0, 101, 150);
|
|
@@ -2923,11 +2940,7 @@ TEST_F(CompactionPickerTest, UniversalMarkedCompactionFullOverlap) {
|
|
|
2923
2940
|
|
|
2924
2941
|
AddVersionStorage();
|
|
2925
2942
|
// Simulate a flush and mark the file for compaction
|
|
2926
|
-
Add(0, 7U, "150", "200", kFileSize, 0, 551, 600, 0, true
|
|
2927
|
-
/* temperature*/ Temperature::kUnknown,
|
|
2928
|
-
/*oldest_ancestor_time*/ kUnknownOldestAncesterTime,
|
|
2929
|
-
/*ts_of_smallest*/ Slice(), /*ts_of_largest*/ Slice(),
|
|
2930
|
-
/*epoch_number*/ 4);
|
|
2943
|
+
Add(0, 7U, "150", "200", kFileSize, 0, 551, 600, 0, true);
|
|
2931
2944
|
UpdateVersionStorageInfo();
|
|
2932
2945
|
|
|
2933
2946
|
std::unique_ptr<Compaction> compaction2(
|
|
@@ -2949,11 +2962,7 @@ TEST_F(CompactionPickerTest, UniversalMarkedCompactionFullOverlap2) {
|
|
|
2949
2962
|
NewVersionStorage(5, kCompactionStyleUniversal);
|
|
2950
2963
|
|
|
2951
2964
|
// Mark file number 4 for compaction
|
|
2952
|
-
Add(0, 4U, "260", "300", 4 * kFileSize, 0, 260, 300, 0, true
|
|
2953
|
-
/* temperature*/ Temperature::kUnknown,
|
|
2954
|
-
/*oldest_ancestor_time*/ kUnknownOldestAncesterTime,
|
|
2955
|
-
/*ts_of_smallest*/ Slice(), /*ts_of_largest*/ Slice(),
|
|
2956
|
-
/*epoch_number*/ 1);
|
|
2965
|
+
Add(0, 4U, "260", "300", 4 * kFileSize, 0, 260, 300, 0, true);
|
|
2957
2966
|
Add(3, 5U, "240", "290", 8 * kFileSize, 0, 201, 250);
|
|
2958
2967
|
Add(4, 3U, "301", "350", 8 * kFileSize, 0, 101, 150);
|
|
2959
2968
|
Add(4, 6U, "501", "750", 8 * kFileSize, 0, 101, 150);
|
|
@@ -2974,17 +2983,8 @@ TEST_F(CompactionPickerTest, UniversalMarkedCompactionFullOverlap2) {
|
|
|
2974
2983
|
ASSERT_EQ(1U, compaction->num_input_files(1));
|
|
2975
2984
|
|
|
2976
2985
|
AddVersionStorage();
|
|
2977
|
-
Add(0, 1U, "150", "200", kFileSize, 0, 500, 550
|
|
2978
|
-
|
|
2979
|
-
/*oldest_ancestor_time*/ kUnknownOldestAncesterTime,
|
|
2980
|
-
/*ts_of_smallest*/ Slice(), /*ts_of_largest*/ Slice(),
|
|
2981
|
-
/*epoch_number*/ 3);
|
|
2982
|
-
Add(0, 2U, "201", "250", 2 * kFileSize, 0, 401, 450,
|
|
2983
|
-
/*compensated_file_size*/ 0, /*marked_for_compact*/ false,
|
|
2984
|
-
/* temperature*/ Temperature::kUnknown,
|
|
2985
|
-
/*oldest_ancestor_time*/ kUnknownOldestAncesterTime,
|
|
2986
|
-
/*ts_of_smallest*/ Slice(), /*ts_of_largest*/ Slice(),
|
|
2987
|
-
/*epoch_number*/ 2);
|
|
2986
|
+
Add(0, 1U, "150", "200", kFileSize, 0, 500, 550);
|
|
2987
|
+
Add(0, 2U, "201", "250", 2 * kFileSize, 0, 401, 450);
|
|
2988
2988
|
UpdateVersionStorageInfo();
|
|
2989
2989
|
|
|
2990
2990
|
std::unique_ptr<Compaction> compaction2(
|
|
@@ -3150,29 +3150,10 @@ TEST_F(CompactionPickerTest, UniversalMarkedL0Overlap2) {
|
|
|
3150
3150
|
NewVersionStorage(1, kCompactionStyleUniversal);
|
|
3151
3151
|
|
|
3152
3152
|
// Mark file number 5 for compaction
|
|
3153
|
-
Add(0, 4U, "260", "300", 1 * kFileSize, 0, 260, 300
|
|
3154
|
-
|
|
3155
|
-
|
|
3156
|
-
|
|
3157
|
-
/*ts_of_smallest*/ Slice(), /*ts_of_largest*/ Slice(),
|
|
3158
|
-
/*epoch_number*/ 4);
|
|
3159
|
-
Add(0, 5U, "240", "290", 2 * kFileSize, 0, 201, 250, 0, true,
|
|
3160
|
-
/* temperature*/ Temperature::kUnknown,
|
|
3161
|
-
/*oldest_ancestor_time*/ kUnknownOldestAncesterTime,
|
|
3162
|
-
/*ts_of_smallest*/ Slice(), /*ts_of_largest*/ Slice(),
|
|
3163
|
-
/*epoch_number*/ 3);
|
|
3164
|
-
Add(0, 3U, "301", "350", 4 * kFileSize, 0, 101, 150,
|
|
3165
|
-
/*compensated_file_size*/ 0, /*marked_for_compact*/ false,
|
|
3166
|
-
/* temperature*/ Temperature::kUnknown,
|
|
3167
|
-
/*oldest_ancestor_time*/ kUnknownOldestAncesterTime,
|
|
3168
|
-
/*ts_of_smallest*/ Slice(), /*ts_of_largest*/ Slice(),
|
|
3169
|
-
/*epoch_number*/ 2);
|
|
3170
|
-
Add(0, 6U, "501", "750", 8 * kFileSize, 0, 50, 100,
|
|
3171
|
-
/*compensated_file_size*/ 0, /*marked_for_compact*/ false,
|
|
3172
|
-
/* temperature*/ Temperature::kUnknown,
|
|
3173
|
-
/*oldest_ancestor_time*/ kUnknownOldestAncesterTime,
|
|
3174
|
-
/*ts_of_smallest*/ Slice(), /*ts_of_largest*/ Slice(),
|
|
3175
|
-
/*epoch_number*/ 1);
|
|
3153
|
+
Add(0, 4U, "260", "300", 1 * kFileSize, 0, 260, 300);
|
|
3154
|
+
Add(0, 5U, "240", "290", 2 * kFileSize, 0, 201, 250, 0, true);
|
|
3155
|
+
Add(0, 3U, "301", "350", 4 * kFileSize, 0, 101, 150);
|
|
3156
|
+
Add(0, 6U, "501", "750", 8 * kFileSize, 0, 50, 100);
|
|
3176
3157
|
UpdateVersionStorageInfo();
|
|
3177
3158
|
|
|
3178
3159
|
std::unique_ptr<Compaction> compaction(
|
|
@@ -3192,18 +3173,8 @@ TEST_F(CompactionPickerTest, UniversalMarkedL0Overlap2) {
|
|
|
3192
3173
|
ASSERT_TRUE(file_map_[6].first->being_compacted);
|
|
3193
3174
|
|
|
3194
3175
|
AddVersionStorage();
|
|
3195
|
-
Add(0, 1U, "150", "200", kFileSize, 0, 500, 550
|
|
3196
|
-
|
|
3197
|
-
/* temperature*/ Temperature::kUnknown,
|
|
3198
|
-
/*oldest_ancestor_time*/ kUnknownOldestAncesterTime,
|
|
3199
|
-
/*ts_of_smallest*/ Slice(), /*ts_of_largest*/ Slice(),
|
|
3200
|
-
/*epoch_number*/ 6);
|
|
3201
|
-
Add(0, 2U, "201", "250", kFileSize, 0, 401, 450, /*compensated_file_size*/ 0,
|
|
3202
|
-
/*marked_for_compact*/ false,
|
|
3203
|
-
/* temperature*/ Temperature::kUnknown,
|
|
3204
|
-
/*oldest_ancestor_time*/ kUnknownOldestAncesterTime,
|
|
3205
|
-
/*ts_of_smallest*/ Slice(), /*ts_of_largest*/ Slice(),
|
|
3206
|
-
/*epoch_number*/ 5);
|
|
3176
|
+
Add(0, 1U, "150", "200", kFileSize, 0, 500, 550);
|
|
3177
|
+
Add(0, 2U, "201", "250", kFileSize, 0, 401, 450);
|
|
3207
3178
|
UpdateVersionStorageInfo();
|
|
3208
3179
|
|
|
3209
3180
|
std::unique_ptr<Compaction> compaction2(
|
|
@@ -293,7 +293,7 @@ bool UniversalCompactionPicker::NeedsCompaction(
|
|
|
293
293
|
Compaction* UniversalCompactionPicker::PickCompaction(
|
|
294
294
|
const std::string& cf_name, const MutableCFOptions& mutable_cf_options,
|
|
295
295
|
const MutableDBOptions& mutable_db_options, VersionStorageInfo* vstorage,
|
|
296
|
-
LogBuffer* log_buffer) {
|
|
296
|
+
LogBuffer* log_buffer, SequenceNumber /* earliest_memtable_seqno */) {
|
|
297
297
|
UniversalCompactionBuilder builder(ioptions_, icmp_, cf_name,
|
|
298
298
|
mutable_cf_options, mutable_db_options,
|
|
299
299
|
vstorage, this, log_buffer);
|
|
@@ -400,7 +400,6 @@ Compaction* UniversalCompactionBuilder::PickCompaction() {
|
|
|
400
400
|
if (!vstorage_->FilesMarkedForPeriodicCompaction().empty()) {
|
|
401
401
|
// Always need to do a full compaction for periodic compaction.
|
|
402
402
|
c = PickPeriodicCompaction();
|
|
403
|
-
TEST_SYNC_POINT_CALLBACK("PostPickPeriodicCompaction", c);
|
|
404
403
|
}
|
|
405
404
|
|
|
406
405
|
// Check for size amplification.
|
|
@@ -409,7 +408,6 @@ Compaction* UniversalCompactionBuilder::PickCompaction() {
|
|
|
409
408
|
static_cast<size_t>(
|
|
410
409
|
mutable_cf_options_.level0_file_num_compaction_trigger)) {
|
|
411
410
|
if ((c = PickCompactionToReduceSizeAmp()) != nullptr) {
|
|
412
|
-
TEST_SYNC_POINT("PickCompactionToReduceSizeAmpReturnNonnullptr");
|
|
413
411
|
ROCKS_LOG_BUFFER(log_buffer_, "[%s] Universal: compacting for size amp\n",
|
|
414
412
|
cf_name_.c_str());
|
|
415
413
|
} else {
|
|
@@ -419,7 +417,6 @@ Compaction* UniversalCompactionBuilder::PickCompaction() {
|
|
|
419
417
|
mutable_cf_options_.compaction_options_universal.size_ratio;
|
|
420
418
|
|
|
421
419
|
if ((c = PickCompactionToReduceSortedRuns(ratio, UINT_MAX)) != nullptr) {
|
|
422
|
-
TEST_SYNC_POINT("PickCompactionToReduceSortedRunsReturnNonnullptr");
|
|
423
420
|
ROCKS_LOG_BUFFER(log_buffer_,
|
|
424
421
|
"[%s] Universal: compacting for size ratio\n",
|
|
425
422
|
cf_name_.c_str());
|
|
@@ -460,7 +457,6 @@ Compaction* UniversalCompactionBuilder::PickCompaction() {
|
|
|
460
457
|
|
|
461
458
|
if (c == nullptr) {
|
|
462
459
|
if ((c = PickDeleteTriggeredCompaction()) != nullptr) {
|
|
463
|
-
TEST_SYNC_POINT("PickDeleteTriggeredCompactionReturnNonnullptr");
|
|
464
460
|
ROCKS_LOG_BUFFER(log_buffer_,
|
|
465
461
|
"[%s] Universal: delete triggered compaction\n",
|
|
466
462
|
cf_name_.c_str());
|
|
@@ -18,11 +18,11 @@ class UniversalCompactionPicker : public CompactionPicker {
|
|
|
18
18
|
UniversalCompactionPicker(const ImmutableOptions& ioptions,
|
|
19
19
|
const InternalKeyComparator* icmp)
|
|
20
20
|
: CompactionPicker(ioptions, icmp) {}
|
|
21
|
-
virtual Compaction* PickCompaction(
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
21
|
+
virtual Compaction* PickCompaction(
|
|
22
|
+
const std::string& cf_name, const MutableCFOptions& mutable_cf_options,
|
|
23
|
+
const MutableDBOptions& mutable_db_options, VersionStorageInfo* vstorage,
|
|
24
|
+
LogBuffer* log_buffer,
|
|
25
|
+
SequenceNumber earliest_memtable_seqno = kMaxSequenceNumber) override;
|
|
26
26
|
virtual int MaxOutputLevel() const override { return NumberLevels() - 1; }
|
|
27
27
|
|
|
28
28
|
virtual bool NeedsCompaction(
|
|
@@ -190,7 +190,6 @@ CompactionJob::ProcessKeyValueCompactionWithCompactionService(
|
|
|
190
190
|
meta.largest.DecodeFrom(file.largest_internal_key);
|
|
191
191
|
meta.oldest_ancester_time = file.oldest_ancester_time;
|
|
192
192
|
meta.file_creation_time = file.file_creation_time;
|
|
193
|
-
meta.epoch_number = file.epoch_number;
|
|
194
193
|
meta.marked_for_compaction = file.marked_for_compaction;
|
|
195
194
|
meta.unique_id = file.unique_id;
|
|
196
195
|
|
|
@@ -334,9 +333,8 @@ Status CompactionServiceCompactionJob::Run() {
|
|
|
334
333
|
MakeTableFileName(meta.fd.GetNumber()), meta.fd.smallest_seqno,
|
|
335
334
|
meta.fd.largest_seqno, meta.smallest.Encode().ToString(),
|
|
336
335
|
meta.largest.Encode().ToString(), meta.oldest_ancester_time,
|
|
337
|
-
meta.file_creation_time,
|
|
338
|
-
|
|
339
|
-
meta.unique_id);
|
|
336
|
+
meta.file_creation_time, output_file.validator.GetHash(),
|
|
337
|
+
meta.marked_for_compaction, meta.unique_id);
|
|
340
338
|
}
|
|
341
339
|
InternalStats::CompactionStatsFull compaction_stats;
|
|
342
340
|
sub_compact->AggregateCompactionStats(compaction_stats);
|
|
@@ -491,10 +489,6 @@ static std::unordered_map<std::string, OptionTypeInfo>
|
|
|
491
489
|
{offsetof(struct CompactionServiceOutputFile, file_creation_time),
|
|
492
490
|
OptionType::kUInt64T, OptionVerificationType::kNormal,
|
|
493
491
|
OptionTypeFlags::kNone}},
|
|
494
|
-
{"epoch_number",
|
|
495
|
-
{offsetof(struct CompactionServiceOutputFile, epoch_number),
|
|
496
|
-
OptionType::kUInt64T, OptionVerificationType::kNormal,
|
|
497
|
-
OptionTypeFlags::kNone}},
|
|
498
492
|
{"paranoid_hash",
|
|
499
493
|
{offsetof(struct CompactionServiceOutputFile, paranoid_hash),
|
|
500
494
|
OptionType::kUInt64T, OptionVerificationType::kNormal,
|
|
@@ -84,11 +84,6 @@ class SubcompactionState {
|
|
|
84
84
|
// Assign range dels aggregator, for each range_del, it can only be assigned
|
|
85
85
|
// to one output level, for per_key_placement, it's going to be the
|
|
86
86
|
// penultimate level.
|
|
87
|
-
// TODO: This does not work for per_key_placement + user-defined timestamp +
|
|
88
|
-
// DeleteRange() combo. If user-defined timestamp is enabled,
|
|
89
|
-
// it is possible for a range tombstone to belong to bottommost level (
|
|
90
|
-
// seqno < earliest snapshot) without being dropped (garbage collection
|
|
91
|
-
// for user-defined timestamp).
|
|
92
87
|
void AssignRangeDelAggregator(
|
|
93
88
|
std::unique_ptr<CompactionRangeDelAggregator>&& range_del_agg) {
|
|
94
89
|
if (compaction->SupportsPerKeyPlacement()) {
|
|
@@ -201,11 +196,8 @@ class SubcompactionState {
|
|
|
201
196
|
const CompactionFileCloseFunc& close_file_func) {
|
|
202
197
|
// Call FinishCompactionOutputFile() even if status is not ok: it needs to
|
|
203
198
|
// close the output file.
|
|
204
|
-
// CloseOutput() may open new compaction output files.
|
|
205
|
-
is_current_penultimate_level_ = true;
|
|
206
199
|
Status s = penultimate_level_outputs_.CloseOutput(
|
|
207
200
|
curr_status, open_file_func, close_file_func);
|
|
208
|
-
is_current_penultimate_level_ = false;
|
|
209
201
|
s = compaction_outputs_.CloseOutput(s, open_file_func, close_file_func);
|
|
210
202
|
return s;
|
|
211
203
|
}
|