@nxtedition/rocksdb 13.1.4 → 13.2.0
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/binding.cc +43 -16
- package/deps/rocksdb/rocksdb/{TARGETS → BUCK} +27 -0
- package/deps/rocksdb/rocksdb/CMakeLists.txt +3 -1
- package/deps/rocksdb/rocksdb/Makefile +2 -2
- package/deps/rocksdb/rocksdb/cache/cache.cc +3 -1
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +2 -0
- package/deps/rocksdb/rocksdb/db/attribute_group_iterator_impl.h +34 -9
- package/deps/rocksdb/rocksdb/db/blob/blob_source.cc +7 -6
- package/deps/rocksdb/rocksdb/db/blob/blob_source.h +5 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +22 -14
- package/deps/rocksdb/rocksdb/db/blob/db_blob_basic_test.cc +149 -0
- package/deps/rocksdb/rocksdb/db/builder.cc +13 -24
- package/deps/rocksdb/rocksdb/db/coalescing_iterator.h +35 -10
- package/deps/rocksdb/rocksdb/db/column_family.cc +21 -10
- package/deps/rocksdb/rocksdb/db/column_family.h +15 -8
- package/deps/rocksdb/rocksdb/db/column_family_test.cc +98 -7
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +126 -16
- package/deps/rocksdb/rocksdb/db/compaction/compaction.h +51 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +2 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +2 -8
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +24 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +52 -22
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +9 -7
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +36 -9
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +6 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +30 -17
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +26 -23
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +43 -33
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +6 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +19 -9
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +6 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +632 -411
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +171 -51
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +7 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +37 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +51 -11
- package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.cc +10 -3
- package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +350 -154
- package/deps/rocksdb/rocksdb/db/convenience.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +62 -27
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +68 -1
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +91 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +134 -70
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +71 -23
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +43 -16
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +47 -33
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +27 -19
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +38 -25
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +3 -3
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +7 -4
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +258 -42
- package/deps/rocksdb/rocksdb/db/db_io_failure_test.cc +161 -9
- package/deps/rocksdb/rocksdb/db/db_iter.cc +118 -86
- package/deps/rocksdb/rocksdb/db/db_iter.h +44 -17
- package/deps/rocksdb/rocksdb/db/db_options_test.cc +27 -6
- package/deps/rocksdb/rocksdb/db/db_test.cc +48 -16
- package/deps/rocksdb/rocksdb/db/db_test2.cc +60 -15
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +97 -44
- package/deps/rocksdb/rocksdb/db/db_test_util.h +7 -1
- package/deps/rocksdb/rocksdb/db/dbformat.cc +15 -5
- package/deps/rocksdb/rocksdb/db/dbformat.h +137 -55
- package/deps/rocksdb/rocksdb/db/event_helpers.cc +1 -0
- package/deps/rocksdb/rocksdb/db/experimental.cc +54 -0
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +663 -8
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +152 -91
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +134 -11
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +55 -9
- package/deps/rocksdb/rocksdb/db/flush_job.cc +52 -29
- package/deps/rocksdb/rocksdb/db/flush_job.h +5 -3
- package/deps/rocksdb/rocksdb/db/flush_job_test.cc +18 -12
- package/deps/rocksdb/rocksdb/db/forward_iterator.cc +23 -29
- package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +3 -2
- package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +2 -0
- package/deps/rocksdb/rocksdb/db/internal_stats.cc +9 -6
- package/deps/rocksdb/rocksdb/db/internal_stats.h +54 -0
- package/deps/rocksdb/rocksdb/db/job_context.h +1 -1
- package/deps/rocksdb/rocksdb/db/log_reader.cc +6 -7
- package/deps/rocksdb/rocksdb/db/manifest_ops.cc +47 -0
- package/deps/rocksdb/rocksdb/db/manifest_ops.h +20 -0
- package/deps/rocksdb/rocksdb/db/memtable.cc +165 -64
- package/deps/rocksdb/rocksdb/db/memtable.h +422 -243
- package/deps/rocksdb/rocksdb/db/memtable_list.cc +99 -68
- package/deps/rocksdb/rocksdb/db/memtable_list.h +63 -38
- package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +28 -25
- package/deps/rocksdb/rocksdb/db/multi_cf_iterator_impl.h +118 -60
- package/deps/rocksdb/rocksdb/db/multi_cf_iterator_test.cc +344 -89
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +2 -3
- package/deps/rocksdb/rocksdb/db/repair.cc +15 -14
- package/deps/rocksdb/rocksdb/db/repair_test.cc +0 -13
- package/deps/rocksdb/rocksdb/db/snapshot_checker.h +7 -0
- package/deps/rocksdb/rocksdb/db/table_cache.cc +62 -65
- package/deps/rocksdb/rocksdb/db/table_cache.h +70 -76
- package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +5 -6
- package/deps/rocksdb/rocksdb/db/table_properties_collector_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/transaction_log_impl.cc +8 -7
- package/deps/rocksdb/rocksdb/db/version_builder.cc +17 -19
- package/deps/rocksdb/rocksdb/db/version_builder.h +13 -12
- package/deps/rocksdb/rocksdb/db/version_edit.h +30 -0
- package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +3 -5
- package/deps/rocksdb/rocksdb/db/version_set.cc +89 -129
- package/deps/rocksdb/rocksdb/db/version_set.h +12 -4
- package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +1 -2
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +12 -8
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.cc +0 -15
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.h +0 -2
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization_test.cc +9 -7
- package/deps/rocksdb/rocksdb/db/wide/wide_columns_helper.cc +0 -8
- package/deps/rocksdb/rocksdb/db/wide/wide_columns_helper.h +28 -2
- package/deps/rocksdb/rocksdb/db/write_batch.cc +32 -10
- package/deps/rocksdb/rocksdb/db/write_batch_internal.h +9 -0
- package/deps/rocksdb/rocksdb/db/write_batch_test.cc +2 -1
- package/deps/rocksdb/rocksdb/db/write_thread.cc +3 -1
- package/deps/rocksdb/rocksdb/db/write_thread.h +6 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +15 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +7 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +4 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +18 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +100 -22
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +15 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +34 -8
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +223 -78
- package/deps/rocksdb/rocksdb/env/file_system.cc +6 -1
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +53 -0
- package/deps/rocksdb/rocksdb/env/io_posix.cc +63 -17
- package/deps/rocksdb/rocksdb/env/io_posix.h +30 -1
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +132 -48
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +92 -24
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +727 -109
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +3 -4
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +1 -1
- package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +8 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/attribute_groups.h +20 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +9 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/configurable.h +9 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +2 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +10 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/env.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/experimental.h +7 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +34 -37
- package/deps/rocksdb/rocksdb/include/rocksdb/iterator_base.h +21 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +56 -28
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/table.h +36 -28
- package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +11 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +84 -60
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/secondary_index.h +102 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/table_properties_collectors.h +89 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +32 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +30 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +23 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +2 -0
- package/deps/rocksdb/rocksdb/memtable/inlineskiplist.h +79 -21
- package/deps/rocksdb/rocksdb/memtable/skiplist.h +41 -18
- package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +1 -5
- package/deps/rocksdb/rocksdb/memtable/wbwi_memtable.cc +169 -0
- package/deps/rocksdb/rocksdb/memtable/wbwi_memtable.h +400 -0
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +2 -0
- package/deps/rocksdb/rocksdb/options/cf_options.cc +137 -82
- package/deps/rocksdb/rocksdb/options/cf_options.h +18 -6
- package/deps/rocksdb/rocksdb/options/configurable.cc +31 -17
- package/deps/rocksdb/rocksdb/options/configurable_helper.h +7 -6
- package/deps/rocksdb/rocksdb/options/options_helper.cc +10 -8
- package/deps/rocksdb/rocksdb/options/options_parser.cc +74 -54
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +89 -0
- package/deps/rocksdb/rocksdb/options/options_test.cc +112 -26
- package/deps/rocksdb/rocksdb/port/port.h +5 -9
- package/deps/rocksdb/rocksdb/src.mk +8 -0
- package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.h +4 -0
- package/deps/rocksdb/rocksdb/table/block_based/block.h +1 -7
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +2 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +62 -80
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +13 -3
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +16 -5
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +38 -7
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +12 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +4 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +4 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +204 -1
- package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +3 -3
- package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +2 -1
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_factory.h +4 -0
- package/deps/rocksdb/rocksdb/table/format.cc +3 -3
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +4 -1
- package/deps/rocksdb/rocksdb/table/mock_table.cc +0 -50
- package/deps/rocksdb/rocksdb/table/mock_table.h +53 -0
- package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.h +4 -0
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +1 -1
- package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +10 -5
- package/deps/rocksdb/rocksdb/table/table_builder.h +3 -1
- package/deps/rocksdb/rocksdb/table/table_properties.cc +181 -0
- package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +5 -5
- package/deps/rocksdb/rocksdb/table/table_test.cc +71 -64
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_pysim.py +45 -45
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_pysim_test.py +35 -35
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_plot.py +43 -43
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +41 -4
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +1 -0
- package/deps/rocksdb/rocksdb/tools/sst_dump_test.cc +1 -1
- package/deps/rocksdb/rocksdb/unreleased_history/add.sh +13 -0
- package/deps/rocksdb/rocksdb/util/aligned_buffer.h +24 -5
- package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +7 -0
- package/deps/rocksdb/rocksdb/util/file_checksum_helper.cc +0 -52
- package/deps/rocksdb/rocksdb/util/file_checksum_helper.h +1 -10
- package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +92 -0
- package/deps/rocksdb/rocksdb/util/thread_operation.h +1 -0
- package/deps/rocksdb/rocksdb/util/udt_util.cc +50 -4
- package/deps/rocksdb/rocksdb/util/udt_util.h +24 -11
- package/deps/rocksdb/rocksdb/util/udt_util_test.cc +26 -13
- package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +1 -16
- package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +2 -0
- package/deps/rocksdb/rocksdb/utilities/secondary_index/faiss_ivf_index.cc +214 -0
- package/deps/rocksdb/rocksdb/utilities/secondary_index/faiss_ivf_index.h +60 -0
- package/deps/rocksdb/rocksdb/utilities/secondary_index/faiss_ivf_index_test.cc +124 -0
- package/deps/rocksdb/rocksdb/utilities/secondary_index/secondary_index_mixin.h +441 -0
- package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_for_tiering_collector.cc +34 -3
- package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_for_tiering_collector.h +7 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +437 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +34 -11
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +14 -7
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.cc +7 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/snapshot_checker.cc +17 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +69 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +20 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +1290 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +324 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +18 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.h +8 -1
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +57 -12
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +32 -3
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +33 -2
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +721 -9
- package/deps/rocksdb/rocksdb.gyp +2 -0
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/@nxtedition+rocksdb.node +0 -0
- package/prebuilds/linux-x64/@nxtedition+rocksdb.node +0 -0
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
#include "db/compaction/compaction_picker_universal.h"
|
|
14
14
|
#include "db/compaction/file_pri.h"
|
|
15
15
|
#include "rocksdb/advanced_options.h"
|
|
16
|
+
#include "table/mock_table.h"
|
|
16
17
|
#include "table/unique_id_impl.h"
|
|
17
18
|
#include "test_util/testharness.h"
|
|
18
19
|
#include "test_util/testutil.h"
|
|
@@ -77,7 +78,7 @@ class CompactionPickerTestBase : public testing::Test {
|
|
|
77
78
|
ioptions_.level_compaction_dynamic_level_bytes = false;
|
|
78
79
|
}
|
|
79
80
|
|
|
80
|
-
~CompactionPickerTestBase() override
|
|
81
|
+
~CompactionPickerTestBase() override { ClearFiles(); }
|
|
81
82
|
|
|
82
83
|
void NewVersionStorage(int num_levels, CompactionStyle style) {
|
|
83
84
|
DeleteVersionStorage();
|
|
@@ -103,7 +104,7 @@ class CompactionPickerTestBase : public testing::Test {
|
|
|
103
104
|
void DeleteVersionStorage() {
|
|
104
105
|
vstorage_.reset();
|
|
105
106
|
temp_vstorage_.reset();
|
|
106
|
-
|
|
107
|
+
ClearFiles();
|
|
107
108
|
file_map_.clear();
|
|
108
109
|
input_files_.clear();
|
|
109
110
|
}
|
|
@@ -115,6 +116,7 @@ class CompactionPickerTestBase : public testing::Test {
|
|
|
115
116
|
size_t compensated_file_size = 0, bool marked_for_compact = false,
|
|
116
117
|
Temperature temperature = Temperature::kUnknown,
|
|
117
118
|
uint64_t oldest_ancestor_time = kUnknownOldestAncesterTime,
|
|
119
|
+
uint64_t newest_key_time = kUnknownNewestKeyTime,
|
|
118
120
|
Slice ts_of_smallest = Slice(), Slice ts_of_largest = Slice(),
|
|
119
121
|
uint64_t epoch_number = kUnknownEpochNumber) {
|
|
120
122
|
assert(ts_of_smallest.size() == ucmp_->timestamp_size());
|
|
@@ -161,7 +163,12 @@ class CompactionPickerTestBase : public testing::Test {
|
|
|
161
163
|
true /* user_defined_timestamps_persisted */);
|
|
162
164
|
f->compensated_file_size =
|
|
163
165
|
(compensated_file_size != 0) ? compensated_file_size : file_size;
|
|
166
|
+
// oldest_ancester_time is only used if newest_key_time is not available
|
|
164
167
|
f->oldest_ancester_time = oldest_ancestor_time;
|
|
168
|
+
TableProperties tp;
|
|
169
|
+
tp.newest_key_time = newest_key_time;
|
|
170
|
+
f->fd.table_reader = new mock::MockTableReader(mock::KVVector{}, tp);
|
|
171
|
+
|
|
165
172
|
vstorage->AddFile(level, f);
|
|
166
173
|
files_.emplace_back(f);
|
|
167
174
|
file_map_.insert({file_number, {f, level}});
|
|
@@ -206,6 +213,15 @@ class CompactionPickerTestBase : public testing::Test {
|
|
|
206
213
|
return opts;
|
|
207
214
|
}
|
|
208
215
|
|
|
216
|
+
void ClearFiles() {
|
|
217
|
+
for (auto& file : files_) {
|
|
218
|
+
if (file->fd.table_reader != nullptr) {
|
|
219
|
+
delete file->fd.table_reader;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
files_.clear();
|
|
223
|
+
}
|
|
224
|
+
|
|
209
225
|
std::unique_ptr<VersionStorageInfo> temp_vstorage_;
|
|
210
226
|
};
|
|
211
227
|
|
|
@@ -232,8 +248,9 @@ TEST_F(CompactionPickerTest, Empty) {
|
|
|
232
248
|
NewVersionStorage(6, kCompactionStyleLevel);
|
|
233
249
|
UpdateVersionStorageInfo();
|
|
234
250
|
std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
|
|
235
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
236
|
-
|
|
251
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
252
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
253
|
+
vstorage_.get(), &log_buffer_));
|
|
237
254
|
ASSERT_TRUE(compaction.get() == nullptr);
|
|
238
255
|
}
|
|
239
256
|
|
|
@@ -244,8 +261,9 @@ TEST_F(CompactionPickerTest, Single) {
|
|
|
244
261
|
UpdateVersionStorageInfo();
|
|
245
262
|
|
|
246
263
|
std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
|
|
247
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
248
|
-
|
|
264
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
265
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
266
|
+
vstorage_.get(), &log_buffer_));
|
|
249
267
|
ASSERT_TRUE(compaction.get() == nullptr);
|
|
250
268
|
}
|
|
251
269
|
|
|
@@ -258,8 +276,9 @@ TEST_F(CompactionPickerTest, Level0Trigger) {
|
|
|
258
276
|
UpdateVersionStorageInfo();
|
|
259
277
|
|
|
260
278
|
std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
|
|
261
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
262
|
-
|
|
279
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
280
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
281
|
+
vstorage_.get(), &log_buffer_));
|
|
263
282
|
ASSERT_TRUE(compaction.get() != nullptr);
|
|
264
283
|
ASSERT_EQ(2U, compaction->num_input_files(0));
|
|
265
284
|
ASSERT_EQ(1U, compaction->input(0, 0)->fd.GetNumber());
|
|
@@ -272,8 +291,9 @@ TEST_F(CompactionPickerTest, Level1Trigger) {
|
|
|
272
291
|
UpdateVersionStorageInfo();
|
|
273
292
|
|
|
274
293
|
std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
|
|
275
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
276
|
-
|
|
294
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
295
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
296
|
+
vstorage_.get(), &log_buffer_));
|
|
277
297
|
ASSERT_TRUE(compaction.get() != nullptr);
|
|
278
298
|
ASSERT_EQ(1U, compaction->num_input_files(0));
|
|
279
299
|
ASSERT_EQ(66U, compaction->input(0, 0)->fd.GetNumber());
|
|
@@ -291,8 +311,9 @@ TEST_F(CompactionPickerTest, Level1Trigger2) {
|
|
|
291
311
|
UpdateVersionStorageInfo();
|
|
292
312
|
|
|
293
313
|
std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
|
|
294
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
295
|
-
|
|
314
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
315
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
316
|
+
vstorage_.get(), &log_buffer_));
|
|
296
317
|
ASSERT_TRUE(compaction.get() != nullptr);
|
|
297
318
|
ASSERT_EQ(1U, compaction->num_input_files(0));
|
|
298
319
|
ASSERT_EQ(2U, compaction->num_input_files(1));
|
|
@@ -323,8 +344,9 @@ TEST_F(CompactionPickerTest, LevelMaxScore) {
|
|
|
323
344
|
UpdateVersionStorageInfo();
|
|
324
345
|
|
|
325
346
|
std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
|
|
326
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
327
|
-
|
|
347
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
348
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
349
|
+
vstorage_.get(), &log_buffer_));
|
|
328
350
|
ASSERT_TRUE(compaction.get() != nullptr);
|
|
329
351
|
ASSERT_EQ(1U, compaction->num_input_files(0));
|
|
330
352
|
ASSERT_EQ(7U, compaction->input(0, 0)->fd.GetNumber());
|
|
@@ -371,8 +393,9 @@ TEST_F(CompactionPickerTest, Level0TriggerDynamic) {
|
|
|
371
393
|
UpdateVersionStorageInfo();
|
|
372
394
|
|
|
373
395
|
std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
|
|
374
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
375
|
-
|
|
396
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
397
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
398
|
+
vstorage_.get(), &log_buffer_));
|
|
376
399
|
ASSERT_TRUE(compaction.get() != nullptr);
|
|
377
400
|
ASSERT_EQ(2U, compaction->num_input_files(0));
|
|
378
401
|
ASSERT_EQ(1U, compaction->input(0, 0)->fd.GetNumber());
|
|
@@ -396,8 +419,9 @@ TEST_F(CompactionPickerTest, Level0TriggerDynamic2) {
|
|
|
396
419
|
ASSERT_EQ(vstorage_->base_level(), num_levels - 2);
|
|
397
420
|
|
|
398
421
|
std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
|
|
399
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
400
|
-
|
|
422
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
423
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
424
|
+
vstorage_.get(), &log_buffer_));
|
|
401
425
|
ASSERT_TRUE(compaction.get() != nullptr);
|
|
402
426
|
ASSERT_EQ(2U, compaction->num_input_files(0));
|
|
403
427
|
ASSERT_EQ(1U, compaction->input(0, 0)->fd.GetNumber());
|
|
@@ -422,8 +446,9 @@ TEST_F(CompactionPickerTest, Level0TriggerDynamic3) {
|
|
|
422
446
|
ASSERT_EQ(vstorage_->base_level(), num_levels - 3);
|
|
423
447
|
|
|
424
448
|
std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
|
|
425
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
426
|
-
|
|
449
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
450
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
451
|
+
vstorage_.get(), &log_buffer_));
|
|
427
452
|
ASSERT_TRUE(compaction.get() != nullptr);
|
|
428
453
|
ASSERT_EQ(2U, compaction->num_input_files(0));
|
|
429
454
|
ASSERT_EQ(1U, compaction->input(0, 0)->fd.GetNumber());
|
|
@@ -452,8 +477,9 @@ TEST_F(CompactionPickerTest, Level0TriggerDynamic4) {
|
|
|
452
477
|
ASSERT_EQ(vstorage_->base_level(), num_levels - 3);
|
|
453
478
|
|
|
454
479
|
std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
|
|
455
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
456
|
-
|
|
480
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
481
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
482
|
+
vstorage_.get(), &log_buffer_));
|
|
457
483
|
ASSERT_TRUE(compaction.get() != nullptr);
|
|
458
484
|
ASSERT_EQ(2U, compaction->num_input_files(0));
|
|
459
485
|
ASSERT_EQ(1U, compaction->input(0, 0)->fd.GetNumber());
|
|
@@ -485,8 +511,9 @@ TEST_F(CompactionPickerTest, LevelTriggerDynamic4) {
|
|
|
485
511
|
UpdateVersionStorageInfo();
|
|
486
512
|
|
|
487
513
|
std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
|
|
488
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
489
|
-
|
|
514
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
515
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
516
|
+
vstorage_.get(), &log_buffer_));
|
|
490
517
|
ASSERT_TRUE(compaction.get() != nullptr);
|
|
491
518
|
ASSERT_EQ(1U, compaction->num_input_files(0));
|
|
492
519
|
ASSERT_EQ(5U, compaction->input(0, 0)->fd.GetNumber());
|
|
@@ -540,8 +567,9 @@ TEST_F(CompactionPickerTest, CompactionUniversalIngestBehindReservedLevel) {
|
|
|
540
567
|
|
|
541
568
|
std::unique_ptr<Compaction> compaction(
|
|
542
569
|
universal_compaction_picker.PickCompaction(
|
|
543
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
544
|
-
|
|
570
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
571
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
572
|
+
vstorage_.get(), &log_buffer_));
|
|
545
573
|
|
|
546
574
|
// output level should be the one above the bottom-most
|
|
547
575
|
ASSERT_EQ(1, compaction->output_level());
|
|
@@ -583,8 +611,9 @@ TEST_F(CompactionPickerTest, CannotTrivialMoveUniversal) {
|
|
|
583
611
|
|
|
584
612
|
std::unique_ptr<Compaction> compaction(
|
|
585
613
|
universal_compaction_picker.PickCompaction(
|
|
586
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
587
|
-
|
|
614
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
615
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
616
|
+
vstorage_.get(), &log_buffer_));
|
|
588
617
|
|
|
589
618
|
ASSERT_TRUE(!compaction->is_trivial_move());
|
|
590
619
|
}
|
|
@@ -610,8 +639,9 @@ TEST_F(CompactionPickerTest, AllowsTrivialMoveUniversal) {
|
|
|
610
639
|
|
|
611
640
|
std::unique_ptr<Compaction> compaction(
|
|
612
641
|
universal_compaction_picker.PickCompaction(
|
|
613
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
614
|
-
|
|
642
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
643
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
644
|
+
vstorage_.get(), &log_buffer_));
|
|
615
645
|
|
|
616
646
|
ASSERT_TRUE(compaction->is_trivial_move());
|
|
617
647
|
}
|
|
@@ -639,8 +669,9 @@ TEST_F(CompactionPickerTest, UniversalPeriodicCompaction1) {
|
|
|
639
669
|
|
|
640
670
|
std::unique_ptr<Compaction> compaction(
|
|
641
671
|
universal_compaction_picker.PickCompaction(
|
|
642
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
643
|
-
|
|
672
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
673
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
674
|
+
vstorage_.get(), &log_buffer_));
|
|
644
675
|
|
|
645
676
|
ASSERT_TRUE(compaction);
|
|
646
677
|
ASSERT_EQ(4, compaction->output_level());
|
|
@@ -670,8 +701,9 @@ TEST_F(CompactionPickerTest, UniversalPeriodicCompaction2) {
|
|
|
670
701
|
|
|
671
702
|
std::unique_ptr<Compaction> compaction(
|
|
672
703
|
universal_compaction_picker.PickCompaction(
|
|
673
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
674
|
-
|
|
704
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
705
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
706
|
+
vstorage_.get(), &log_buffer_));
|
|
675
707
|
|
|
676
708
|
ASSERT_FALSE(compaction);
|
|
677
709
|
}
|
|
@@ -697,8 +729,9 @@ TEST_F(CompactionPickerTest, UniversalPeriodicCompaction3) {
|
|
|
697
729
|
|
|
698
730
|
std::unique_ptr<Compaction> compaction(
|
|
699
731
|
universal_compaction_picker.PickCompaction(
|
|
700
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
701
|
-
|
|
732
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
733
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
734
|
+
vstorage_.get(), &log_buffer_));
|
|
702
735
|
|
|
703
736
|
ASSERT_FALSE(compaction);
|
|
704
737
|
}
|
|
@@ -728,8 +761,9 @@ TEST_F(CompactionPickerTest, UniversalPeriodicCompaction4) {
|
|
|
728
761
|
|
|
729
762
|
std::unique_ptr<Compaction> compaction(
|
|
730
763
|
universal_compaction_picker.PickCompaction(
|
|
731
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
732
|
-
|
|
764
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
765
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
766
|
+
vstorage_.get(), &log_buffer_));
|
|
733
767
|
ASSERT_TRUE(!compaction ||
|
|
734
768
|
compaction->start_level() != compaction->output_level());
|
|
735
769
|
}
|
|
@@ -749,8 +783,9 @@ TEST_F(CompactionPickerTest, UniversalPeriodicCompaction5) {
|
|
|
749
783
|
|
|
750
784
|
std::unique_ptr<Compaction> compaction(
|
|
751
785
|
universal_compaction_picker.PickCompaction(
|
|
752
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
753
|
-
|
|
786
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
787
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
788
|
+
vstorage_.get(), &log_buffer_));
|
|
754
789
|
ASSERT_TRUE(compaction);
|
|
755
790
|
ASSERT_EQ(0, compaction->start_level());
|
|
756
791
|
ASSERT_EQ(1U, compaction->num_input_files(0));
|
|
@@ -774,8 +809,9 @@ TEST_F(CompactionPickerTest, UniversalPeriodicCompaction6) {
|
|
|
774
809
|
|
|
775
810
|
std::unique_ptr<Compaction> compaction(
|
|
776
811
|
universal_compaction_picker.PickCompaction(
|
|
777
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
778
|
-
|
|
812
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
813
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
814
|
+
vstorage_.get(), &log_buffer_));
|
|
779
815
|
ASSERT_TRUE(compaction);
|
|
780
816
|
ASSERT_EQ(4, compaction->start_level());
|
|
781
817
|
ASSERT_EQ(2U, compaction->num_input_files(0));
|
|
@@ -812,8 +848,9 @@ TEST_F(CompactionPickerTest, UniversalIncrementalSpace1) {
|
|
|
812
848
|
|
|
813
849
|
std::unique_ptr<Compaction> compaction(
|
|
814
850
|
universal_compaction_picker.PickCompaction(
|
|
815
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
816
|
-
|
|
851
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
852
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
853
|
+
vstorage_.get(), &log_buffer_));
|
|
817
854
|
ASSERT_TRUE(compaction);
|
|
818
855
|
ASSERT_EQ(4, compaction->output_level());
|
|
819
856
|
ASSERT_EQ(3, compaction->start_level());
|
|
@@ -854,8 +891,9 @@ TEST_F(CompactionPickerTest, UniversalIncrementalSpace2) {
|
|
|
854
891
|
|
|
855
892
|
std::unique_ptr<Compaction> compaction(
|
|
856
893
|
universal_compaction_picker.PickCompaction(
|
|
857
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
858
|
-
|
|
894
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
895
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
896
|
+
vstorage_.get(), &log_buffer_));
|
|
859
897
|
ASSERT_TRUE(compaction);
|
|
860
898
|
ASSERT_EQ(4, compaction->output_level());
|
|
861
899
|
ASSERT_EQ(2, compaction->start_level());
|
|
@@ -896,8 +934,9 @@ TEST_F(CompactionPickerTest, UniversalIncrementalSpace3) {
|
|
|
896
934
|
|
|
897
935
|
std::unique_ptr<Compaction> compaction(
|
|
898
936
|
universal_compaction_picker.PickCompaction(
|
|
899
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
900
|
-
|
|
937
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
938
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
939
|
+
vstorage_.get(), &log_buffer_));
|
|
901
940
|
ASSERT_TRUE(compaction);
|
|
902
941
|
ASSERT_EQ(4, compaction->output_level());
|
|
903
942
|
ASSERT_EQ(2, compaction->start_level());
|
|
@@ -944,8 +983,9 @@ TEST_F(CompactionPickerTest, UniversalIncrementalSpace4) {
|
|
|
944
983
|
|
|
945
984
|
std::unique_ptr<Compaction> compaction(
|
|
946
985
|
universal_compaction_picker.PickCompaction(
|
|
947
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
948
|
-
|
|
986
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
987
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
988
|
+
vstorage_.get(), &log_buffer_));
|
|
949
989
|
ASSERT_TRUE(compaction);
|
|
950
990
|
ASSERT_EQ(4, compaction->output_level());
|
|
951
991
|
ASSERT_EQ(3, compaction->start_level());
|
|
@@ -988,8 +1028,9 @@ TEST_F(CompactionPickerTest, UniversalIncrementalSpace5) {
|
|
|
988
1028
|
|
|
989
1029
|
std::unique_ptr<Compaction> compaction(
|
|
990
1030
|
universal_compaction_picker.PickCompaction(
|
|
991
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
992
|
-
|
|
1031
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
1032
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
1033
|
+
vstorage_.get(), &log_buffer_));
|
|
993
1034
|
ASSERT_TRUE(compaction);
|
|
994
1035
|
ASSERT_EQ(4, compaction->output_level());
|
|
995
1036
|
ASSERT_EQ(3, compaction->start_level());
|
|
@@ -1040,8 +1081,9 @@ TEST_F(CompactionPickerTest,
|
|
|
1040
1081
|
ASSERT_TRUE(universal_compaction_picker.NeedsCompaction(vstorage_.get()));
|
|
1041
1082
|
std::unique_ptr<Compaction> compaction(
|
|
1042
1083
|
universal_compaction_picker.PickCompaction(
|
|
1043
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
1044
|
-
|
|
1084
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
1085
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
1086
|
+
vstorage_.get(), &log_buffer_));
|
|
1045
1087
|
ASSERT_TRUE(compaction.get() != nullptr);
|
|
1046
1088
|
ASSERT_EQ(compaction->compaction_reason(),
|
|
1047
1089
|
CompactionReason::kUniversalSizeAmplification);
|
|
@@ -1082,230 +1124,326 @@ TEST_F(CompactionPickerTest, NeedsCompactionFIFO) {
|
|
|
1082
1124
|
}
|
|
1083
1125
|
|
|
1084
1126
|
TEST_F(CompactionPickerTest, FIFOToCold1) {
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1127
|
+
// Test fallback behavior from newest_key_time to oldest_ancestor_time
|
|
1128
|
+
for (bool newestKeyTimeKnown : {false, true}) {
|
|
1129
|
+
NewVersionStorage(1, kCompactionStyleFIFO);
|
|
1130
|
+
const uint64_t kFileSize = 100000;
|
|
1131
|
+
const uint64_t kMaxSize = kFileSize * 100000;
|
|
1132
|
+
uint64_t kColdThreshold = 2000;
|
|
1133
|
+
|
|
1134
|
+
fifo_options_.max_table_files_size = kMaxSize;
|
|
1135
|
+
fifo_options_.file_temperature_age_thresholds = {
|
|
1136
|
+
{Temperature::kCold, kColdThreshold}};
|
|
1137
|
+
mutable_cf_options_.compaction_options_fifo = fifo_options_;
|
|
1138
|
+
mutable_cf_options_.level0_file_num_compaction_trigger = 100;
|
|
1139
|
+
mutable_cf_options_.max_compaction_bytes = kFileSize * 100;
|
|
1140
|
+
FIFOCompactionPicker fifo_compaction_picker(ioptions_, &icmp_);
|
|
1141
|
+
|
|
1142
|
+
int64_t current_time = 0;
|
|
1143
|
+
ASSERT_OK(Env::Default()->GetCurrentTime(¤t_time));
|
|
1144
|
+
uint64_t threshold_time =
|
|
1145
|
+
static_cast<uint64_t>(current_time) - kColdThreshold;
|
|
1146
|
+
Add(0 /* level */, 4U /* file_number */, "260", "300", 1 * kFileSize, 0,
|
|
1147
|
+
2500, 2600, 0, true, Temperature::kUnknown,
|
|
1148
|
+
newestKeyTimeKnown ? kUnknownOldestAncesterTime
|
|
1149
|
+
: threshold_time - 2000 /* oldest_ancestor_time */,
|
|
1150
|
+
newestKeyTimeKnown ? threshold_time - 2000
|
|
1151
|
+
: kUnknownNewestKeyTime /* newest_key_time */);
|
|
1152
|
+
// Qualifies for compaction to kCold.
|
|
1153
|
+
Add(0, 3U, "200", "300", 4 * kFileSize, 0, 2300, 2400, 0, true,
|
|
1154
|
+
Temperature::kUnknown,
|
|
1155
|
+
newestKeyTimeKnown ? kUnknownOldestAncesterTime : threshold_time - 3000,
|
|
1156
|
+
newestKeyTimeKnown ? threshold_time - 3000
|
|
1157
|
+
: kUnknownNewestKeyTime /* newest_key_time */);
|
|
1158
|
+
UpdateVersionStorageInfo();
|
|
1109
1159
|
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1160
|
+
ASSERT_EQ(fifo_compaction_picker.NeedsCompaction(vstorage_.get()), true);
|
|
1161
|
+
std::unique_ptr<Compaction> compaction(
|
|
1162
|
+
fifo_compaction_picker.PickCompaction(
|
|
1163
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
1164
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
1165
|
+
vstorage_.get(), &log_buffer_));
|
|
1166
|
+
ASSERT_TRUE(compaction.get() != nullptr);
|
|
1167
|
+
ASSERT_EQ(compaction->compaction_reason(),
|
|
1168
|
+
CompactionReason::kChangeTemperature);
|
|
1169
|
+
ASSERT_EQ(compaction->output_temperature(), Temperature::kCold);
|
|
1170
|
+
ASSERT_EQ(1U, compaction->num_input_files(0));
|
|
1171
|
+
ASSERT_EQ(3U, compaction->input(0, 0)->fd.GetNumber());
|
|
1172
|
+
}
|
|
1120
1173
|
}
|
|
1121
1174
|
|
|
1122
1175
|
TEST_F(CompactionPickerTest, FIFOToColdMaxCompactionSize) {
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1176
|
+
// Test fallback behavior from newest_key_time to oldest_ancestor_time
|
|
1177
|
+
for (bool newestKeyTimeKnown : {false, true}) {
|
|
1178
|
+
NewVersionStorage(1, kCompactionStyleFIFO);
|
|
1179
|
+
const uint64_t kFileSize = 100000;
|
|
1180
|
+
const uint64_t kMaxSize = kFileSize * 100000;
|
|
1181
|
+
uint64_t kColdThreshold = 2000;
|
|
1182
|
+
|
|
1183
|
+
fifo_options_.max_table_files_size = kMaxSize;
|
|
1184
|
+
fifo_options_.file_temperature_age_thresholds = {
|
|
1185
|
+
{Temperature::kCold, kColdThreshold}};
|
|
1186
|
+
mutable_cf_options_.compaction_options_fifo = fifo_options_;
|
|
1187
|
+
mutable_cf_options_.level0_file_num_compaction_trigger = 100;
|
|
1188
|
+
mutable_cf_options_.max_compaction_bytes = kFileSize * 9;
|
|
1189
|
+
FIFOCompactionPicker fifo_compaction_picker(ioptions_, &icmp_);
|
|
1190
|
+
|
|
1191
|
+
int64_t current_time = 0;
|
|
1192
|
+
ASSERT_OK(Env::Default()->GetCurrentTime(¤t_time));
|
|
1193
|
+
uint64_t threshold_time =
|
|
1194
|
+
static_cast<uint64_t>(current_time) - kColdThreshold;
|
|
1195
|
+
Add(0, 6U, "240", "290", 2 * kFileSize, 0, 2900, 3000, 0, true,
|
|
1196
|
+
Temperature::kUnknown,
|
|
1197
|
+
newestKeyTimeKnown ? kUnknownOldestAncesterTime
|
|
1198
|
+
: static_cast<uint64_t>(current_time) - 100,
|
|
1199
|
+
newestKeyTimeKnown ? static_cast<uint64_t>(current_time) - 100
|
|
1200
|
+
: kUnknownNewestKeyTime);
|
|
1201
|
+
Add(0, 5U, "240", "290", 2 * kFileSize, 0, 2700, 2800, 0, true,
|
|
1202
|
+
Temperature::kUnknown,
|
|
1203
|
+
newestKeyTimeKnown ? kUnknownOldestAncesterTime : threshold_time + 100,
|
|
1204
|
+
newestKeyTimeKnown ? threshold_time + 100 : kUnknownNewestKeyTime);
|
|
1205
|
+
Add(0, 4U, "260", "300", 1 * kFileSize, 0, 2500, 2600, 0, true,
|
|
1206
|
+
Temperature::kUnknown,
|
|
1207
|
+
newestKeyTimeKnown ? kUnknownOldestAncesterTime : threshold_time - 2000,
|
|
1208
|
+
newestKeyTimeKnown ? threshold_time - 2000 : kUnknownNewestKeyTime);
|
|
1209
|
+
// The following two files qualify for compaction to kCold.
|
|
1210
|
+
// But only the last two should be included to respect
|
|
1211
|
+
// `max_compaction_bytes`.
|
|
1212
|
+
Add(0, 3U, "200", "300", 4 * kFileSize, 0, 2300, 2400, 0, true,
|
|
1213
|
+
Temperature::kUnknown,
|
|
1214
|
+
newestKeyTimeKnown ? kUnknownOldestAncesterTime : threshold_time - 3000,
|
|
1215
|
+
newestKeyTimeKnown ? threshold_time - 3000 : kUnknownNewestKeyTime);
|
|
1216
|
+
Add(0, 2U, "200", "300", 4 * kFileSize, 0, 2100, 2200, 0, true,
|
|
1217
|
+
Temperature::kUnknown,
|
|
1218
|
+
newestKeyTimeKnown ? kUnknownOldestAncesterTime : threshold_time - 4000,
|
|
1219
|
+
newestKeyTimeKnown ? threshold_time - 4000 : kUnknownNewestKeyTime);
|
|
1220
|
+
Add(0, 1U, "200", "300", 4 * kFileSize, 0, 2000, 2100, 0, true,
|
|
1221
|
+
Temperature::kUnknown,
|
|
1222
|
+
newestKeyTimeKnown ? kUnknownOldestAncesterTime : threshold_time - 5000,
|
|
1223
|
+
newestKeyTimeKnown ? threshold_time - 5000 : kUnknownNewestKeyTime);
|
|
1224
|
+
UpdateVersionStorageInfo();
|
|
1155
1225
|
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1226
|
+
ASSERT_EQ(fifo_compaction_picker.NeedsCompaction(vstorage_.get()), true);
|
|
1227
|
+
std::unique_ptr<Compaction> compaction(
|
|
1228
|
+
fifo_compaction_picker.PickCompaction(
|
|
1229
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
1230
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
1231
|
+
vstorage_.get(), &log_buffer_));
|
|
1232
|
+
ASSERT_TRUE(compaction.get() != nullptr);
|
|
1233
|
+
ASSERT_EQ(compaction->compaction_reason(),
|
|
1234
|
+
CompactionReason::kChangeTemperature);
|
|
1235
|
+
// Compaction picker picks older files first and picks one file at a time.
|
|
1236
|
+
ASSERT_EQ(compaction->output_temperature(), Temperature::kCold);
|
|
1237
|
+
ASSERT_EQ(1U, compaction->num_input_files(0));
|
|
1238
|
+
ASSERT_EQ(1U, compaction->input(0, 0)->fd.GetNumber());
|
|
1239
|
+
}
|
|
1167
1240
|
}
|
|
1168
1241
|
|
|
1169
1242
|
TEST_F(CompactionPickerTest, FIFOToColdWithExistingCold) {
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1243
|
+
// Test fallback behavior from newest_key_time to oldest_ancestor_time
|
|
1244
|
+
for (bool newestKeyTimeKnown : {false, true}) {
|
|
1245
|
+
NewVersionStorage(1, kCompactionStyleFIFO);
|
|
1246
|
+
const uint64_t kFileSize = 100000;
|
|
1247
|
+
const uint64_t kMaxSize = kFileSize * 100000;
|
|
1248
|
+
uint64_t kColdThreshold = 2000;
|
|
1249
|
+
|
|
1250
|
+
fifo_options_.max_table_files_size = kMaxSize;
|
|
1251
|
+
fifo_options_.file_temperature_age_thresholds = {
|
|
1252
|
+
{Temperature::kCold, kColdThreshold}};
|
|
1253
|
+
mutable_cf_options_.compaction_options_fifo = fifo_options_;
|
|
1254
|
+
mutable_cf_options_.level0_file_num_compaction_trigger = 100;
|
|
1255
|
+
mutable_cf_options_.max_compaction_bytes = kFileSize * 100;
|
|
1256
|
+
FIFOCompactionPicker fifo_compaction_picker(ioptions_, &icmp_);
|
|
1257
|
+
|
|
1258
|
+
int64_t current_time = 0;
|
|
1259
|
+
ASSERT_OK(Env::Default()->GetCurrentTime(¤t_time));
|
|
1260
|
+
uint64_t threshold_time =
|
|
1261
|
+
static_cast<uint64_t>(current_time) - kColdThreshold;
|
|
1262
|
+
Add(0, 6U, "240", "290", 2 * kFileSize, 0, 2900, 3000, 0, true,
|
|
1263
|
+
Temperature::kUnknown,
|
|
1264
|
+
newestKeyTimeKnown ? kUnknownOldestAncesterTime
|
|
1265
|
+
: static_cast<uint64_t>(current_time) - 100,
|
|
1266
|
+
newestKeyTimeKnown ? static_cast<uint64_t>(current_time) - 100
|
|
1267
|
+
: kUnknownNewestKeyTime);
|
|
1268
|
+
Add(0, 5U, "240", "290", 2 * kFileSize, 0, 2700, 2800, 0, true,
|
|
1269
|
+
Temperature::kUnknown,
|
|
1270
|
+
newestKeyTimeKnown ? kUnknownOldestAncesterTime : threshold_time + 100,
|
|
1271
|
+
newestKeyTimeKnown ? threshold_time + 100 : kUnknownNewestKeyTime);
|
|
1272
|
+
Add(0, 4U, "260", "300", 1 * kFileSize, 0, 2500, 2600, 0, true,
|
|
1273
|
+
Temperature::kUnknown,
|
|
1274
|
+
newestKeyTimeKnown ? kUnknownOldestAncesterTime : threshold_time - 2000,
|
|
1275
|
+
newestKeyTimeKnown ? threshold_time - 2000 : kUnknownNewestKeyTime);
|
|
1276
|
+
// The following two files qualify for compaction to kCold.
|
|
1277
|
+
Add(0, 3U, "200", "300", 4 * kFileSize, 0, 2300, 2400, 0, true,
|
|
1278
|
+
Temperature::kUnknown,
|
|
1279
|
+
newestKeyTimeKnown ? kUnknownOldestAncesterTime : threshold_time - 3000,
|
|
1280
|
+
newestKeyTimeKnown ? threshold_time - 3000 : kUnknownNewestKeyTime);
|
|
1281
|
+
Add(0, 2U, "200", "300", 4 * kFileSize, 0, 2100, 2200, 0, true,
|
|
1282
|
+
Temperature::kUnknown,
|
|
1283
|
+
newestKeyTimeKnown ? kUnknownOldestAncesterTime : threshold_time - 4000,
|
|
1284
|
+
newestKeyTimeKnown ? threshold_time - 4000 : kUnknownNewestKeyTime);
|
|
1285
|
+
Add(0, 1U, "200", "300", 4 * kFileSize, 0, 2000, 2100, 0, true,
|
|
1286
|
+
Temperature::kCold,
|
|
1287
|
+
newestKeyTimeKnown ? kUnknownOldestAncesterTime : threshold_time - 5000,
|
|
1288
|
+
newestKeyTimeKnown ? threshold_time - 5000 : kUnknownNewestKeyTime);
|
|
1289
|
+
UpdateVersionStorageInfo();
|
|
1201
1290
|
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1291
|
+
ASSERT_EQ(fifo_compaction_picker.NeedsCompaction(vstorage_.get()), true);
|
|
1292
|
+
std::unique_ptr<Compaction> compaction(
|
|
1293
|
+
fifo_compaction_picker.PickCompaction(
|
|
1294
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
1295
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
1296
|
+
vstorage_.get(), &log_buffer_));
|
|
1297
|
+
ASSERT_TRUE(compaction.get() != nullptr);
|
|
1298
|
+
ASSERT_EQ(compaction->compaction_reason(),
|
|
1299
|
+
CompactionReason::kChangeTemperature);
|
|
1300
|
+
// Compaction picker picks older files first and picks one file at a time.
|
|
1301
|
+
ASSERT_EQ(compaction->output_temperature(), Temperature::kCold);
|
|
1302
|
+
ASSERT_EQ(1U, compaction->num_input_files(0));
|
|
1303
|
+
ASSERT_EQ(2U, compaction->input(0, 0)->fd.GetNumber());
|
|
1304
|
+
}
|
|
1213
1305
|
}
|
|
1214
1306
|
|
|
1215
1307
|
TEST_F(CompactionPickerTest, FIFOToColdWithHotBetweenCold) {
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1308
|
+
// Test fallback behavior from newest_key_time to oldest_ancestor_time
|
|
1309
|
+
for (bool newestKeyTimeKnown : {false, true}) {
|
|
1310
|
+
NewVersionStorage(1, kCompactionStyleFIFO);
|
|
1311
|
+
const uint64_t kFileSize = 100000;
|
|
1312
|
+
const uint64_t kMaxSize = kFileSize * 100000;
|
|
1313
|
+
uint64_t kColdThreshold = 2000;
|
|
1314
|
+
|
|
1315
|
+
fifo_options_.max_table_files_size = kMaxSize;
|
|
1316
|
+
fifo_options_.file_temperature_age_thresholds = {
|
|
1317
|
+
{Temperature::kCold, kColdThreshold}};
|
|
1318
|
+
mutable_cf_options_.compaction_options_fifo = fifo_options_;
|
|
1319
|
+
mutable_cf_options_.level0_file_num_compaction_trigger = 100;
|
|
1320
|
+
mutable_cf_options_.max_compaction_bytes = kFileSize * 100;
|
|
1321
|
+
FIFOCompactionPicker fifo_compaction_picker(ioptions_, &icmp_);
|
|
1322
|
+
|
|
1323
|
+
int64_t current_time = 0;
|
|
1324
|
+
ASSERT_OK(Env::Default()->GetCurrentTime(¤t_time));
|
|
1325
|
+
uint64_t threshold_time =
|
|
1326
|
+
static_cast<uint64_t>(current_time) - kColdThreshold;
|
|
1327
|
+
Add(0, 6U, "240", "290", 2 * kFileSize, 0, 2900, 3000, 0, true,
|
|
1328
|
+
Temperature::kUnknown,
|
|
1329
|
+
newestKeyTimeKnown ? kUnknownOldestAncesterTime
|
|
1330
|
+
: static_cast<uint64_t>(current_time) - 100,
|
|
1331
|
+
newestKeyTimeKnown ? static_cast<uint64_t>(current_time) - 100
|
|
1332
|
+
: kUnknownNewestKeyTime);
|
|
1333
|
+
Add(0, 5U, "240", "290", 2 * kFileSize, 0, 2700, 2800, 0, true,
|
|
1334
|
+
Temperature::kUnknown,
|
|
1335
|
+
newestKeyTimeKnown ? kUnknownOldestAncesterTime : threshold_time + 100,
|
|
1336
|
+
newestKeyTimeKnown ? threshold_time + 100 : kUnknownNewestKeyTime);
|
|
1337
|
+
Add(0, 4U, "260", "300", 1 * kFileSize, 0, 2500, 2600, 0, true,
|
|
1338
|
+
Temperature::kUnknown,
|
|
1339
|
+
newestKeyTimeKnown ? kUnknownOldestAncesterTime : threshold_time - 2000,
|
|
1340
|
+
newestKeyTimeKnown ? threshold_time - 2000 : kUnknownNewestKeyTime);
|
|
1341
|
+
Add(0, 3U, "200", "300", 4 * kFileSize, 0, 2300, 2400, 0, true,
|
|
1342
|
+
Temperature::kCold,
|
|
1343
|
+
newestKeyTimeKnown ? kUnknownOldestAncesterTime : threshold_time - 3000,
|
|
1344
|
+
newestKeyTimeKnown ? threshold_time - 3000 : kUnknownNewestKeyTime);
|
|
1345
|
+
// Qualifies for compaction to kCold.
|
|
1346
|
+
Add(0, 2U, "200", "300", 4 * kFileSize, 0, 2100, 2200, 0, true,
|
|
1347
|
+
Temperature::kUnknown,
|
|
1348
|
+
newestKeyTimeKnown ? kUnknownOldestAncesterTime : threshold_time - 4000,
|
|
1349
|
+
newestKeyTimeKnown ? threshold_time - 4000 : kUnknownNewestKeyTime);
|
|
1350
|
+
Add(0, 1U, "200", "300", 4 * kFileSize, 0, 2000, 2100, 0, true,
|
|
1351
|
+
Temperature::kCold,
|
|
1352
|
+
newestKeyTimeKnown ? kUnknownOldestAncesterTime : threshold_time - 5000,
|
|
1353
|
+
newestKeyTimeKnown ? threshold_time - 5000 : kUnknownNewestKeyTime);
|
|
1354
|
+
UpdateVersionStorageInfo();
|
|
1247
1355
|
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1356
|
+
ASSERT_EQ(fifo_compaction_picker.NeedsCompaction(vstorage_.get()), true);
|
|
1357
|
+
std::unique_ptr<Compaction> compaction(
|
|
1358
|
+
fifo_compaction_picker.PickCompaction(
|
|
1359
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
1360
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
1361
|
+
vstorage_.get(), &log_buffer_));
|
|
1362
|
+
ASSERT_TRUE(compaction.get() != nullptr);
|
|
1363
|
+
ASSERT_EQ(compaction->compaction_reason(),
|
|
1364
|
+
CompactionReason::kChangeTemperature);
|
|
1365
|
+
ASSERT_EQ(compaction->output_temperature(), Temperature::kCold);
|
|
1366
|
+
ASSERT_EQ(1U, compaction->num_input_files(0));
|
|
1367
|
+
ASSERT_EQ(2U, compaction->input(0, 0)->fd.GetNumber());
|
|
1368
|
+
}
|
|
1258
1369
|
}
|
|
1259
1370
|
|
|
1260
1371
|
TEST_F(CompactionPickerTest, FIFOToHotAndWarm) {
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
|
|
1288
|
-
|
|
1289
|
-
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
|
|
1296
|
-
|
|
1372
|
+
// Test fallback behavior from newest_key_time to oldest_ancestor_time
|
|
1373
|
+
for (bool newestKeyTimeKnown : {false, true}) {
|
|
1374
|
+
NewVersionStorage(1, kCompactionStyleFIFO);
|
|
1375
|
+
const uint64_t kFileSize = 100000;
|
|
1376
|
+
const uint64_t kMaxSize = kFileSize * 100000;
|
|
1377
|
+
uint64_t kWarmThreshold = 10000;
|
|
1378
|
+
uint64_t kHotThreshold = 2000;
|
|
1379
|
+
|
|
1380
|
+
fifo_options_.max_table_files_size = kMaxSize;
|
|
1381
|
+
// Test that multiple threshold works.
|
|
1382
|
+
fifo_options_.file_temperature_age_thresholds = {
|
|
1383
|
+
{Temperature::kHot, kHotThreshold},
|
|
1384
|
+
{Temperature::kWarm, kWarmThreshold}};
|
|
1385
|
+
mutable_cf_options_.compaction_options_fifo = fifo_options_;
|
|
1386
|
+
mutable_cf_options_.level0_file_num_compaction_trigger = 100;
|
|
1387
|
+
mutable_cf_options_.max_compaction_bytes = kFileSize * 100;
|
|
1388
|
+
FIFOCompactionPicker fifo_compaction_picker(ioptions_, &icmp_);
|
|
1389
|
+
|
|
1390
|
+
int64_t current_time = 0;
|
|
1391
|
+
ASSERT_OK(Env::Default()->GetCurrentTime(¤t_time));
|
|
1392
|
+
uint64_t hot_threshold_time =
|
|
1393
|
+
static_cast<uint64_t>(current_time) - kHotThreshold;
|
|
1394
|
+
uint64_t warm_threshold_time =
|
|
1395
|
+
static_cast<uint64_t>(current_time) - kWarmThreshold;
|
|
1396
|
+
Add(0, 6U, "240", "290", 2 * kFileSize, 0, 2900, 3000, 0, true,
|
|
1397
|
+
Temperature::kUnknown,
|
|
1398
|
+
newestKeyTimeKnown ? kUnknownOldestAncesterTime
|
|
1399
|
+
: static_cast<uint64_t>(current_time) - 100,
|
|
1400
|
+
newestKeyTimeKnown ? static_cast<uint64_t>(current_time) - 100
|
|
1401
|
+
: kUnknownNewestKeyTime);
|
|
1402
|
+
Add(0, 5U, "240", "290", 2 * kFileSize, 0, 2700, 2800, 0, true,
|
|
1403
|
+
Temperature::kUnknown,
|
|
1404
|
+
newestKeyTimeKnown ? kUnknownOldestAncesterTime
|
|
1405
|
+
: hot_threshold_time + 100,
|
|
1406
|
+
newestKeyTimeKnown ? hot_threshold_time + 100 : kUnknownNewestKeyTime);
|
|
1407
|
+
Add(0, 4U, "260", "300", 1 * kFileSize, 0, 2500, 2600, 0, true,
|
|
1408
|
+
Temperature::kUnknown,
|
|
1409
|
+
newestKeyTimeKnown ? kUnknownOldestAncesterTime
|
|
1410
|
+
: hot_threshold_time - 200,
|
|
1411
|
+
newestKeyTimeKnown ? hot_threshold_time - 200 : kUnknownNewestKeyTime);
|
|
1412
|
+
// Qualifies for Hot
|
|
1413
|
+
Add(0, 3U, "200", "300", 4 * kFileSize, 0, 2300, 2400, 0, true,
|
|
1414
|
+
Temperature::kUnknown,
|
|
1415
|
+
newestKeyTimeKnown ? kUnknownOldestAncesterTime
|
|
1416
|
+
: warm_threshold_time - 100,
|
|
1417
|
+
newestKeyTimeKnown ? warm_threshold_time - 100 : kUnknownNewestKeyTime);
|
|
1418
|
+
// Qualifies for Warm
|
|
1419
|
+
Add(0, 2U, "200", "300", 4 * kFileSize, 0, 2100, 2200, 0, true,
|
|
1420
|
+
Temperature::kUnknown,
|
|
1421
|
+
newestKeyTimeKnown ? kUnknownOldestAncesterTime
|
|
1422
|
+
: warm_threshold_time - 4000,
|
|
1423
|
+
newestKeyTimeKnown ? warm_threshold_time - 4000
|
|
1424
|
+
: kUnknownNewestKeyTime);
|
|
1425
|
+
Add(0, 1U, "200", "300", 4 * kFileSize, 0, 2000, 2100, 0, true,
|
|
1426
|
+
Temperature::kUnknown,
|
|
1427
|
+
newestKeyTimeKnown ? kUnknownOldestAncesterTime
|
|
1428
|
+
: warm_threshold_time - 5000,
|
|
1429
|
+
newestKeyTimeKnown ? warm_threshold_time - 5000
|
|
1430
|
+
: kUnknownNewestKeyTime);
|
|
1431
|
+
UpdateVersionStorageInfo();
|
|
1297
1432
|
|
|
1298
|
-
|
|
1299
|
-
|
|
1300
|
-
|
|
1301
|
-
|
|
1302
|
-
|
|
1303
|
-
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1433
|
+
ASSERT_EQ(fifo_compaction_picker.NeedsCompaction(vstorage_.get()), true);
|
|
1434
|
+
std::unique_ptr<Compaction> compaction(
|
|
1435
|
+
fifo_compaction_picker.PickCompaction(
|
|
1436
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
1437
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
1438
|
+
vstorage_.get(), &log_buffer_));
|
|
1439
|
+
ASSERT_TRUE(compaction.get() != nullptr);
|
|
1440
|
+
ASSERT_EQ(compaction->compaction_reason(),
|
|
1441
|
+
CompactionReason::kChangeTemperature);
|
|
1442
|
+
// Compaction picker picks older files first and picks one file at a time.
|
|
1443
|
+
ASSERT_EQ(compaction->output_temperature(), Temperature::kWarm);
|
|
1444
|
+
ASSERT_EQ(1U, compaction->num_input_files(0));
|
|
1445
|
+
ASSERT_EQ(1U, compaction->input(0, 0)->fd.GetNumber());
|
|
1446
|
+
}
|
|
1309
1447
|
}
|
|
1310
1448
|
|
|
1311
1449
|
TEST_F(CompactionPickerTest, CompactionPriMinOverlapping1) {
|
|
@@ -1329,8 +1467,9 @@ TEST_F(CompactionPickerTest, CompactionPriMinOverlapping1) {
|
|
|
1329
1467
|
UpdateVersionStorageInfo();
|
|
1330
1468
|
|
|
1331
1469
|
std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
|
|
1332
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
1333
|
-
|
|
1470
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
1471
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
1472
|
+
vstorage_.get(), &log_buffer_));
|
|
1334
1473
|
ASSERT_TRUE(compaction.get() != nullptr);
|
|
1335
1474
|
ASSERT_EQ(1U, compaction->num_input_files(0));
|
|
1336
1475
|
// Pick file 8 because it overlaps with 0 files on level 3.
|
|
@@ -1362,8 +1501,9 @@ TEST_F(CompactionPickerTest, CompactionPriMinOverlapping2) {
|
|
|
1362
1501
|
UpdateVersionStorageInfo();
|
|
1363
1502
|
|
|
1364
1503
|
std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
|
|
1365
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
1366
|
-
|
|
1504
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
1505
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
1506
|
+
vstorage_.get(), &log_buffer_));
|
|
1367
1507
|
ASSERT_TRUE(compaction.get() != nullptr);
|
|
1368
1508
|
ASSERT_EQ(1U, compaction->num_input_files(0));
|
|
1369
1509
|
// Picking file 7 because overlapping ratio is the biggest.
|
|
@@ -1390,8 +1530,9 @@ TEST_F(CompactionPickerTest, CompactionPriMinOverlapping3) {
|
|
|
1390
1530
|
UpdateVersionStorageInfo();
|
|
1391
1531
|
|
|
1392
1532
|
std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
|
|
1393
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
1394
|
-
|
|
1533
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
1534
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
1535
|
+
vstorage_.get(), &log_buffer_));
|
|
1395
1536
|
ASSERT_TRUE(compaction.get() != nullptr);
|
|
1396
1537
|
ASSERT_EQ(1U, compaction->num_input_files(0));
|
|
1397
1538
|
// Picking file 8 because overlapping ratio is the biggest.
|
|
@@ -1418,8 +1559,9 @@ TEST_F(CompactionPickerTest, CompactionPriMinOverlapping4) {
|
|
|
1418
1559
|
UpdateVersionStorageInfo();
|
|
1419
1560
|
|
|
1420
1561
|
std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
|
|
1421
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
1422
|
-
|
|
1562
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
1563
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
1564
|
+
vstorage_.get(), &log_buffer_));
|
|
1423
1565
|
ASSERT_TRUE(compaction.get() != nullptr);
|
|
1424
1566
|
ASSERT_EQ(1U, compaction->num_input_files(0));
|
|
1425
1567
|
// Picking file 6 because overlapping ratio is the biggest.
|
|
@@ -1454,8 +1596,9 @@ TEST_F(CompactionPickerTest, CompactionPriRoundRobin) {
|
|
|
1454
1596
|
LevelCompactionPicker(ioptions_, &icmp_);
|
|
1455
1597
|
std::unique_ptr<Compaction> compaction(
|
|
1456
1598
|
local_level_compaction_picker.PickCompaction(
|
|
1457
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
1458
|
-
|
|
1599
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
1600
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
1601
|
+
vstorage_.get(), &log_buffer_));
|
|
1459
1602
|
ASSERT_TRUE(compaction.get() != nullptr);
|
|
1460
1603
|
// Since the max bytes for level 2 is 120M, picking one file to compact
|
|
1461
1604
|
// makes the post-compaction level size less than 120M, there is exactly one
|
|
@@ -1494,8 +1637,9 @@ TEST_F(CompactionPickerTest, CompactionPriMultipleFilesRoundRobin1) {
|
|
|
1494
1637
|
LevelCompactionPicker(ioptions_, &icmp_);
|
|
1495
1638
|
std::unique_ptr<Compaction> compaction(
|
|
1496
1639
|
local_level_compaction_picker.PickCompaction(
|
|
1497
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
1498
|
-
|
|
1640
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
1641
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
1642
|
+
vstorage_.get(), &log_buffer_));
|
|
1499
1643
|
ASSERT_TRUE(compaction.get() != nullptr);
|
|
1500
1644
|
|
|
1501
1645
|
// The maximum compaction bytes is very large in this case so we can igore its
|
|
@@ -1537,8 +1681,9 @@ TEST_F(CompactionPickerTest, CompactionPriMultipleFilesRoundRobin2) {
|
|
|
1537
1681
|
LevelCompactionPicker(ioptions_, &icmp_);
|
|
1538
1682
|
std::unique_ptr<Compaction> compaction(
|
|
1539
1683
|
local_level_compaction_picker.PickCompaction(
|
|
1540
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
1541
|
-
|
|
1684
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
1685
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
1686
|
+
vstorage_.get(), &log_buffer_));
|
|
1542
1687
|
ASSERT_TRUE(compaction.get() != nullptr);
|
|
1543
1688
|
|
|
1544
1689
|
// The maximum compaction bytes is only 2500 bytes now. Even though we are
|
|
@@ -1581,8 +1726,9 @@ TEST_F(CompactionPickerTest, CompactionPriMultipleFilesRoundRobin3) {
|
|
|
1581
1726
|
LevelCompactionPicker(ioptions_, &icmp_);
|
|
1582
1727
|
std::unique_ptr<Compaction> compaction(
|
|
1583
1728
|
local_level_compaction_picker.PickCompaction(
|
|
1584
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
1585
|
-
|
|
1729
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
1730
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
1731
|
+
vstorage_.get(), &log_buffer_));
|
|
1586
1732
|
ASSERT_TRUE(compaction.get() != nullptr);
|
|
1587
1733
|
|
|
1588
1734
|
// Cannot pick more files since we reach the last file in level 2
|
|
@@ -1640,8 +1786,9 @@ TEST_F(CompactionPickerTest, CompactionPriMinOverlappingManyFiles) {
|
|
|
1640
1786
|
UpdateVersionStorageInfo();
|
|
1641
1787
|
|
|
1642
1788
|
std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
|
|
1643
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
1644
|
-
|
|
1789
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
1790
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
1791
|
+
vstorage_.get(), &log_buffer_));
|
|
1645
1792
|
ASSERT_TRUE(compaction.get() != nullptr);
|
|
1646
1793
|
ASSERT_EQ(1U, compaction->num_input_files(0));
|
|
1647
1794
|
// Picking file 8 because overlapping ratio is the biggest.
|
|
@@ -1668,8 +1815,9 @@ TEST_F(CompactionPickerTest, ParentIndexResetBug) {
|
|
|
1668
1815
|
UpdateVersionStorageInfo();
|
|
1669
1816
|
|
|
1670
1817
|
std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
|
|
1671
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
1672
|
-
|
|
1818
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
1819
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
1820
|
+
vstorage_.get(), &log_buffer_));
|
|
1673
1821
|
}
|
|
1674
1822
|
|
|
1675
1823
|
// This test checks ExpandWhileOverlapping() by having overlapping user keys
|
|
@@ -1686,8 +1834,9 @@ TEST_F(CompactionPickerTest, OverlappingUserKeys) {
|
|
|
1686
1834
|
UpdateVersionStorageInfo();
|
|
1687
1835
|
|
|
1688
1836
|
std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
|
|
1689
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
1690
|
-
|
|
1837
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
1838
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
1839
|
+
vstorage_.get(), &log_buffer_));
|
|
1691
1840
|
ASSERT_TRUE(compaction.get() != nullptr);
|
|
1692
1841
|
ASSERT_EQ(1U, compaction->num_input_levels());
|
|
1693
1842
|
ASSERT_EQ(2U, compaction->num_input_files(0));
|
|
@@ -1706,8 +1855,9 @@ TEST_F(CompactionPickerTest, OverlappingUserKeys2) {
|
|
|
1706
1855
|
UpdateVersionStorageInfo();
|
|
1707
1856
|
|
|
1708
1857
|
std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
|
|
1709
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
1710
|
-
|
|
1858
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
1859
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
1860
|
+
vstorage_.get(), &log_buffer_));
|
|
1711
1861
|
ASSERT_TRUE(compaction.get() != nullptr);
|
|
1712
1862
|
ASSERT_EQ(2U, compaction->num_input_levels());
|
|
1713
1863
|
ASSERT_EQ(2U, compaction->num_input_files(0));
|
|
@@ -1734,8 +1884,9 @@ TEST_F(CompactionPickerTest, OverlappingUserKeys3) {
|
|
|
1734
1884
|
UpdateVersionStorageInfo();
|
|
1735
1885
|
|
|
1736
1886
|
std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
|
|
1737
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
1738
|
-
|
|
1887
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
1888
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
1889
|
+
vstorage_.get(), &log_buffer_));
|
|
1739
1890
|
ASSERT_TRUE(compaction.get() != nullptr);
|
|
1740
1891
|
ASSERT_EQ(2U, compaction->num_input_levels());
|
|
1741
1892
|
ASSERT_EQ(5U, compaction->num_input_files(0));
|
|
@@ -1765,8 +1916,9 @@ TEST_F(CompactionPickerTest, OverlappingUserKeys4) {
|
|
|
1765
1916
|
UpdateVersionStorageInfo();
|
|
1766
1917
|
|
|
1767
1918
|
std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
|
|
1768
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
1769
|
-
|
|
1919
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
1920
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
1921
|
+
vstorage_.get(), &log_buffer_));
|
|
1770
1922
|
ASSERT_TRUE(compaction.get() != nullptr);
|
|
1771
1923
|
ASSERT_EQ(2U, compaction->num_input_levels());
|
|
1772
1924
|
ASSERT_EQ(1U, compaction->num_input_files(0));
|
|
@@ -1789,8 +1941,9 @@ TEST_F(CompactionPickerTest, OverlappingUserKeys5) {
|
|
|
1789
1941
|
UpdateVersionStorageInfo();
|
|
1790
1942
|
|
|
1791
1943
|
std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
|
|
1792
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
1793
|
-
|
|
1944
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
1945
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
1946
|
+
vstorage_.get(), &log_buffer_));
|
|
1794
1947
|
ASSERT_TRUE(compaction.get() == nullptr);
|
|
1795
1948
|
}
|
|
1796
1949
|
|
|
@@ -1811,8 +1964,9 @@ TEST_F(CompactionPickerTest, OverlappingUserKeys6) {
|
|
|
1811
1964
|
UpdateVersionStorageInfo();
|
|
1812
1965
|
|
|
1813
1966
|
std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
|
|
1814
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
1815
|
-
|
|
1967
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
1968
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
1969
|
+
vstorage_.get(), &log_buffer_));
|
|
1816
1970
|
ASSERT_TRUE(compaction.get() != nullptr);
|
|
1817
1971
|
ASSERT_EQ(2U, compaction->num_input_levels());
|
|
1818
1972
|
ASSERT_EQ(1U, compaction->num_input_files(0));
|
|
@@ -1832,8 +1986,9 @@ TEST_F(CompactionPickerTest, OverlappingUserKeys7) {
|
|
|
1832
1986
|
UpdateVersionStorageInfo();
|
|
1833
1987
|
|
|
1834
1988
|
std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
|
|
1835
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
1836
|
-
|
|
1989
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
1990
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
1991
|
+
vstorage_.get(), &log_buffer_));
|
|
1837
1992
|
ASSERT_TRUE(compaction.get() != nullptr);
|
|
1838
1993
|
ASSERT_EQ(2U, compaction->num_input_levels());
|
|
1839
1994
|
ASSERT_GE(1U, compaction->num_input_files(0));
|
|
@@ -1861,8 +2016,9 @@ TEST_F(CompactionPickerTest, OverlappingUserKeys8) {
|
|
|
1861
2016
|
UpdateVersionStorageInfo();
|
|
1862
2017
|
|
|
1863
2018
|
std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
|
|
1864
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
1865
|
-
|
|
2019
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
2020
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
2021
|
+
vstorage_.get(), &log_buffer_));
|
|
1866
2022
|
ASSERT_TRUE(compaction.get() != nullptr);
|
|
1867
2023
|
ASSERT_EQ(2U, compaction->num_input_levels());
|
|
1868
2024
|
ASSERT_EQ(3U, compaction->num_input_files(0));
|
|
@@ -1894,8 +2050,9 @@ TEST_F(CompactionPickerTest, OverlappingUserKeys9) {
|
|
|
1894
2050
|
UpdateVersionStorageInfo();
|
|
1895
2051
|
|
|
1896
2052
|
std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
|
|
1897
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
1898
|
-
|
|
2053
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
2054
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
2055
|
+
vstorage_.get(), &log_buffer_));
|
|
1899
2056
|
ASSERT_TRUE(compaction.get() != nullptr);
|
|
1900
2057
|
ASSERT_EQ(2U, compaction->num_input_levels());
|
|
1901
2058
|
ASSERT_EQ(5U, compaction->num_input_files(0));
|
|
@@ -1935,8 +2092,9 @@ TEST_F(CompactionPickerTest, OverlappingUserKeys10) {
|
|
|
1935
2092
|
UpdateVersionStorageInfo();
|
|
1936
2093
|
|
|
1937
2094
|
std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
|
|
1938
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
1939
|
-
|
|
2095
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
2096
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
2097
|
+
vstorage_.get(), &log_buffer_));
|
|
1940
2098
|
ASSERT_TRUE(compaction.get() != nullptr);
|
|
1941
2099
|
ASSERT_EQ(2U, compaction->num_input_levels());
|
|
1942
2100
|
ASSERT_EQ(1U, compaction->num_input_files(0));
|
|
@@ -1974,8 +2132,9 @@ TEST_F(CompactionPickerTest, OverlappingUserKeys11) {
|
|
|
1974
2132
|
UpdateVersionStorageInfo();
|
|
1975
2133
|
|
|
1976
2134
|
std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
|
|
1977
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
1978
|
-
|
|
2135
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
2136
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
2137
|
+
vstorage_.get(), &log_buffer_));
|
|
1979
2138
|
ASSERT_TRUE(compaction.get() != nullptr);
|
|
1980
2139
|
ASSERT_EQ(2U, compaction->num_input_levels());
|
|
1981
2140
|
ASSERT_EQ(1U, compaction->num_input_files(0));
|
|
@@ -2081,8 +2240,9 @@ TEST_F(CompactionPickerTest, NotScheduleL1IfL0WithHigherPri1) {
|
|
|
2081
2240
|
ASSERT_EQ(0, vstorage_->CompactionScoreLevel(0));
|
|
2082
2241
|
ASSERT_EQ(1, vstorage_->CompactionScoreLevel(1));
|
|
2083
2242
|
std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
|
|
2084
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
2085
|
-
|
|
2243
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
2244
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
2245
|
+
vstorage_.get(), &log_buffer_));
|
|
2086
2246
|
ASSERT_TRUE(compaction.get() == nullptr);
|
|
2087
2247
|
}
|
|
2088
2248
|
|
|
@@ -2112,8 +2272,9 @@ TEST_F(CompactionPickerTest, NotScheduleL1IfL0WithHigherPri2) {
|
|
|
2112
2272
|
ASSERT_EQ(0, vstorage_->CompactionScoreLevel(0));
|
|
2113
2273
|
ASSERT_EQ(1, vstorage_->CompactionScoreLevel(1));
|
|
2114
2274
|
std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
|
|
2115
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
2116
|
-
|
|
2275
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
2276
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
2277
|
+
vstorage_.get(), &log_buffer_));
|
|
2117
2278
|
ASSERT_TRUE(compaction.get() != nullptr);
|
|
2118
2279
|
}
|
|
2119
2280
|
|
|
@@ -2146,8 +2307,9 @@ TEST_F(CompactionPickerTest, NotScheduleL1IfL0WithHigherPri3) {
|
|
|
2146
2307
|
ASSERT_EQ(1, vstorage_->CompactionScoreLevel(0));
|
|
2147
2308
|
ASSERT_EQ(0, vstorage_->CompactionScoreLevel(1));
|
|
2148
2309
|
std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
|
|
2149
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
2150
|
-
|
|
2310
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
2311
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
2312
|
+
vstorage_.get(), &log_buffer_));
|
|
2151
2313
|
ASSERT_TRUE(compaction.get() != nullptr);
|
|
2152
2314
|
}
|
|
2153
2315
|
|
|
@@ -2447,8 +2609,9 @@ TEST_F(CompactionPickerTest, CompactionLimitWhenAddFileFromInputLevel) {
|
|
|
2447
2609
|
UpdateVersionStorageInfo();
|
|
2448
2610
|
|
|
2449
2611
|
std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
|
|
2450
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
2451
|
-
|
|
2612
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
2613
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
2614
|
+
vstorage_.get(), &log_buffer_));
|
|
2452
2615
|
ASSERT_TRUE(compaction.get() != nullptr);
|
|
2453
2616
|
ASSERT_EQ(2U, compaction->num_input_levels());
|
|
2454
2617
|
ASSERT_EQ(4U, compaction->num_input_files(0));
|
|
@@ -2482,8 +2645,9 @@ TEST_F(CompactionPickerTest, HitCompactionLimitWhenAddFileFromInputLevel) {
|
|
|
2482
2645
|
UpdateVersionStorageInfo();
|
|
2483
2646
|
|
|
2484
2647
|
std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
|
|
2485
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
2486
|
-
|
|
2648
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
2649
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
2650
|
+
vstorage_.get(), &log_buffer_));
|
|
2487
2651
|
ASSERT_TRUE(compaction.get() != nullptr);
|
|
2488
2652
|
ASSERT_EQ(2U, compaction->num_input_levels());
|
|
2489
2653
|
ASSERT_EQ(1U, compaction->num_input_files(0));
|
|
@@ -2510,8 +2674,9 @@ TEST_F(CompactionPickerTest, IsTrivialMoveOn) {
|
|
|
2510
2674
|
UpdateVersionStorageInfo();
|
|
2511
2675
|
|
|
2512
2676
|
std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
|
|
2513
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
2514
|
-
|
|
2677
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
2678
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
2679
|
+
vstorage_.get(), &log_buffer_));
|
|
2515
2680
|
ASSERT_TRUE(compaction.get() != nullptr);
|
|
2516
2681
|
ASSERT_TRUE(compaction->IsTrivialMove());
|
|
2517
2682
|
}
|
|
@@ -2535,8 +2700,9 @@ TEST_F(CompactionPickerTest, L0TrivialMove1) {
|
|
|
2535
2700
|
UpdateVersionStorageInfo();
|
|
2536
2701
|
|
|
2537
2702
|
std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
|
|
2538
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
2539
|
-
|
|
2703
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
2704
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
2705
|
+
vstorage_.get(), &log_buffer_));
|
|
2540
2706
|
ASSERT_TRUE(compaction.get() != nullptr);
|
|
2541
2707
|
ASSERT_EQ(1, compaction->num_input_levels());
|
|
2542
2708
|
ASSERT_EQ(2, compaction->num_input_files(0));
|
|
@@ -2564,8 +2730,9 @@ TEST_F(CompactionPickerTest, L0TrivialMoveOneFile) {
|
|
|
2564
2730
|
UpdateVersionStorageInfo();
|
|
2565
2731
|
|
|
2566
2732
|
std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
|
|
2567
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
2568
|
-
|
|
2733
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
2734
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
2735
|
+
vstorage_.get(), &log_buffer_));
|
|
2569
2736
|
ASSERT_TRUE(compaction.get() != nullptr);
|
|
2570
2737
|
ASSERT_EQ(1, compaction->num_input_levels());
|
|
2571
2738
|
ASSERT_EQ(1, compaction->num_input_files(0));
|
|
@@ -2590,8 +2757,9 @@ TEST_F(CompactionPickerTest, L0TrivialMoveWholeL0) {
|
|
|
2590
2757
|
UpdateVersionStorageInfo();
|
|
2591
2758
|
|
|
2592
2759
|
std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
|
|
2593
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
2594
|
-
|
|
2760
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
2761
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
2762
|
+
vstorage_.get(), &log_buffer_));
|
|
2595
2763
|
ASSERT_TRUE(compaction.get() != nullptr);
|
|
2596
2764
|
ASSERT_EQ(1, compaction->num_input_levels());
|
|
2597
2765
|
ASSERT_EQ(4, compaction->num_input_files(0));
|
|
@@ -2618,8 +2786,9 @@ TEST_F(CompactionPickerTest, NonL0TrivialMoveExtendBothDirection) {
|
|
|
2618
2786
|
// File #2 should be picked first, and expand both directions to include
|
|
2619
2787
|
// files #1 and #3.
|
|
2620
2788
|
std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
|
|
2621
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
2622
|
-
|
|
2789
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
2790
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
2791
|
+
vstorage_.get(), &log_buffer_));
|
|
2623
2792
|
ASSERT_TRUE(compaction.get() != nullptr);
|
|
2624
2793
|
ASSERT_EQ(1, compaction->num_input_levels());
|
|
2625
2794
|
ASSERT_EQ(3, compaction->num_input_files(0));
|
|
@@ -2648,8 +2817,9 @@ TEST_F(CompactionPickerTest, L0TrivialMoveToEmptyLevel) {
|
|
|
2648
2817
|
UpdateVersionStorageInfo();
|
|
2649
2818
|
|
|
2650
2819
|
std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
|
|
2651
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
2652
|
-
|
|
2820
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
2821
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
2822
|
+
vstorage_.get(), &log_buffer_));
|
|
2653
2823
|
ASSERT_TRUE(compaction.get() != nullptr);
|
|
2654
2824
|
ASSERT_EQ(1, compaction->num_input_levels());
|
|
2655
2825
|
ASSERT_EQ(1, compaction->num_input_files(0));
|
|
@@ -2676,8 +2846,9 @@ TEST_F(CompactionPickerTest, IsTrivialMoveOffSstPartitioned) {
|
|
|
2676
2846
|
UpdateVersionStorageInfo();
|
|
2677
2847
|
|
|
2678
2848
|
std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
|
|
2679
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
2680
|
-
|
|
2849
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
2850
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
2851
|
+
vstorage_.get(), &log_buffer_));
|
|
2681
2852
|
ASSERT_TRUE(compaction.get() != nullptr);
|
|
2682
2853
|
// No trivial move, because partitioning is applied
|
|
2683
2854
|
ASSERT_TRUE(!compaction->IsTrivialMove());
|
|
@@ -2699,8 +2870,9 @@ TEST_F(CompactionPickerTest, IsTrivialMoveOff) {
|
|
|
2699
2870
|
UpdateVersionStorageInfo();
|
|
2700
2871
|
|
|
2701
2872
|
std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
|
|
2702
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
2703
|
-
|
|
2873
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
2874
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
2875
|
+
vstorage_.get(), &log_buffer_));
|
|
2704
2876
|
ASSERT_TRUE(compaction.get() != nullptr);
|
|
2705
2877
|
ASSERT_FALSE(compaction->IsTrivialMove());
|
|
2706
2878
|
}
|
|
@@ -2728,8 +2900,9 @@ TEST_F(CompactionPickerTest, TrivialMoveMultipleFiles1) {
|
|
|
2728
2900
|
UpdateVersionStorageInfo();
|
|
2729
2901
|
|
|
2730
2902
|
std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
|
|
2731
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
2732
|
-
|
|
2903
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
2904
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
2905
|
+
vstorage_.get(), &log_buffer_));
|
|
2733
2906
|
ASSERT_TRUE(compaction.get() != nullptr);
|
|
2734
2907
|
ASSERT_TRUE(compaction->IsTrivialMove());
|
|
2735
2908
|
ASSERT_EQ(1, compaction->num_input_levels());
|
|
@@ -2762,8 +2935,9 @@ TEST_F(CompactionPickerTest, TrivialMoveMultipleFiles2) {
|
|
|
2762
2935
|
UpdateVersionStorageInfo();
|
|
2763
2936
|
|
|
2764
2937
|
std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
|
|
2765
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
2766
|
-
|
|
2938
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
2939
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
2940
|
+
vstorage_.get(), &log_buffer_));
|
|
2767
2941
|
ASSERT_TRUE(compaction.get() != nullptr);
|
|
2768
2942
|
ASSERT_TRUE(compaction->IsTrivialMove());
|
|
2769
2943
|
ASSERT_EQ(1, compaction->num_input_levels());
|
|
@@ -2795,8 +2969,9 @@ TEST_F(CompactionPickerTest, TrivialMoveMultipleFiles3) {
|
|
|
2795
2969
|
UpdateVersionStorageInfo();
|
|
2796
2970
|
|
|
2797
2971
|
std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
|
|
2798
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
2799
|
-
|
|
2972
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
2973
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
2974
|
+
vstorage_.get(), &log_buffer_));
|
|
2800
2975
|
ASSERT_TRUE(compaction.get() != nullptr);
|
|
2801
2976
|
ASSERT_TRUE(compaction->IsTrivialMove());
|
|
2802
2977
|
ASSERT_EQ(1, compaction->num_input_levels());
|
|
@@ -2821,8 +2996,9 @@ TEST_F(CompactionPickerTest, TrivialMoveMultipleFiles4) {
|
|
|
2821
2996
|
UpdateVersionStorageInfo();
|
|
2822
2997
|
|
|
2823
2998
|
std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
|
|
2824
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
2825
|
-
|
|
2999
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
3000
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
3001
|
+
vstorage_.get(), &log_buffer_));
|
|
2826
3002
|
ASSERT_TRUE(compaction.get() != nullptr);
|
|
2827
3003
|
ASSERT_TRUE(compaction->IsTrivialMove());
|
|
2828
3004
|
ASSERT_EQ(1, compaction->num_input_levels());
|
|
@@ -2851,8 +3027,9 @@ TEST_F(CompactionPickerTest, TrivialMoveMultipleFiles5) {
|
|
|
2851
3027
|
UpdateVersionStorageInfo();
|
|
2852
3028
|
|
|
2853
3029
|
std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
|
|
2854
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
2855
|
-
|
|
3030
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
3031
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
3032
|
+
vstorage_.get(), &log_buffer_));
|
|
2856
3033
|
ASSERT_TRUE(compaction.get() != nullptr);
|
|
2857
3034
|
ASSERT_TRUE(compaction->IsTrivialMove());
|
|
2858
3035
|
ASSERT_EQ(1, compaction->num_input_levels());
|
|
@@ -2885,8 +3062,9 @@ TEST_F(CompactionPickerTest, TrivialMoveMultipleFiles6) {
|
|
|
2885
3062
|
UpdateVersionStorageInfo();
|
|
2886
3063
|
|
|
2887
3064
|
std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
|
|
2888
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
2889
|
-
|
|
3065
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
3066
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
3067
|
+
vstorage_.get(), &log_buffer_));
|
|
2890
3068
|
ASSERT_TRUE(compaction.get() != nullptr);
|
|
2891
3069
|
ASSERT_TRUE(compaction->IsTrivialMove());
|
|
2892
3070
|
ASSERT_EQ(1, compaction->num_input_levels());
|
|
@@ -2920,8 +3098,9 @@ TEST_F(CompactionPickerTest, CacheNextCompactionIndex) {
|
|
|
2920
3098
|
UpdateVersionStorageInfo();
|
|
2921
3099
|
|
|
2922
3100
|
std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
|
|
2923
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
2924
|
-
|
|
3101
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
3102
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
3103
|
+
vstorage_.get(), &log_buffer_));
|
|
2925
3104
|
ASSERT_TRUE(compaction.get() != nullptr);
|
|
2926
3105
|
ASSERT_EQ(2U, compaction->num_input_levels());
|
|
2927
3106
|
ASSERT_EQ(1U, compaction->num_input_files(0));
|
|
@@ -2930,8 +3109,9 @@ TEST_F(CompactionPickerTest, CacheNextCompactionIndex) {
|
|
|
2930
3109
|
ASSERT_EQ(2, vstorage_->NextCompactionIndex(1 /* level */));
|
|
2931
3110
|
|
|
2932
3111
|
compaction.reset(level_compaction_picker.PickCompaction(
|
|
2933
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
2934
|
-
|
|
3112
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
3113
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
3114
|
+
vstorage_.get(), &log_buffer_));
|
|
2935
3115
|
ASSERT_TRUE(compaction.get() != nullptr);
|
|
2936
3116
|
ASSERT_EQ(2U, compaction->num_input_levels());
|
|
2937
3117
|
ASSERT_EQ(1U, compaction->num_input_files(0));
|
|
@@ -2940,8 +3120,9 @@ TEST_F(CompactionPickerTest, CacheNextCompactionIndex) {
|
|
|
2940
3120
|
ASSERT_EQ(3, vstorage_->NextCompactionIndex(1 /* level */));
|
|
2941
3121
|
|
|
2942
3122
|
compaction.reset(level_compaction_picker.PickCompaction(
|
|
2943
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
2944
|
-
|
|
3123
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
3124
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
3125
|
+
vstorage_.get(), &log_buffer_));
|
|
2945
3126
|
ASSERT_TRUE(compaction.get() == nullptr);
|
|
2946
3127
|
ASSERT_EQ(4, vstorage_->NextCompactionIndex(1 /* level */));
|
|
2947
3128
|
}
|
|
@@ -2966,8 +3147,9 @@ TEST_F(CompactionPickerTest, IntraL0MaxCompactionBytesNotHit) {
|
|
|
2966
3147
|
UpdateVersionStorageInfo();
|
|
2967
3148
|
|
|
2968
3149
|
std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
|
|
2969
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
2970
|
-
|
|
3150
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
3151
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
3152
|
+
vstorage_.get(), &log_buffer_));
|
|
2971
3153
|
ASSERT_TRUE(compaction.get() != nullptr);
|
|
2972
3154
|
ASSERT_EQ(1U, compaction->num_input_levels());
|
|
2973
3155
|
ASSERT_EQ(5U, compaction->num_input_files(0));
|
|
@@ -2997,8 +3179,9 @@ TEST_F(CompactionPickerTest, IntraL0MaxCompactionBytesHit) {
|
|
|
2997
3179
|
UpdateVersionStorageInfo();
|
|
2998
3180
|
|
|
2999
3181
|
std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
|
|
3000
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
3001
|
-
|
|
3182
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
3183
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
3184
|
+
vstorage_.get(), &log_buffer_));
|
|
3002
3185
|
ASSERT_TRUE(compaction.get() != nullptr);
|
|
3003
3186
|
ASSERT_EQ(1U, compaction->num_input_levels());
|
|
3004
3187
|
ASSERT_EQ(4U, compaction->num_input_files(0));
|
|
@@ -3021,18 +3204,21 @@ TEST_F(CompactionPickerTest, UniversalMarkedCompactionFullOverlap) {
|
|
|
3021
3204
|
Add(0, 1U, "150", "200", kFileSize, 0, 500, 550, /*compensated_file_size*/ 0,
|
|
3022
3205
|
/*marked_for_compact*/ false, /* temperature*/ Temperature::kUnknown,
|
|
3023
3206
|
/*oldest_ancestor_time*/ kUnknownOldestAncesterTime,
|
|
3207
|
+
/*newest_key_time*/ kUnknownNewestKeyTime,
|
|
3024
3208
|
/*ts_of_smallest*/ Slice(), /*ts_of_largest*/ Slice(),
|
|
3025
3209
|
/*epoch_number*/ 3);
|
|
3026
3210
|
Add(0, 2U, "201", "250", 2 * kFileSize, 0, 401, 450,
|
|
3027
3211
|
/*compensated_file_size*/ 0, /*marked_for_compact*/ false,
|
|
3028
3212
|
/* temperature*/ Temperature::kUnknown,
|
|
3029
3213
|
/*oldest_ancestor_time*/ kUnknownOldestAncesterTime,
|
|
3214
|
+
/*newest_key_time*/ kUnknownNewestKeyTime,
|
|
3030
3215
|
/*ts_of_smallest*/ Slice(), /*ts_of_largest*/ Slice(),
|
|
3031
3216
|
/*epoch_number*/ 2);
|
|
3032
3217
|
Add(0, 4U, "260", "300", 4 * kFileSize, 0, 260, 300,
|
|
3033
3218
|
/*compensated_file_size*/ 0, /*marked_for_compact*/ false,
|
|
3034
3219
|
/* temperature*/ Temperature::kUnknown,
|
|
3035
3220
|
/*oldest_ancestor_time*/ kUnknownOldestAncesterTime,
|
|
3221
|
+
/*newest_key_time*/ kUnknownNewestKeyTime,
|
|
3036
3222
|
/*ts_of_smallest*/ Slice(), /*ts_of_largest*/ Slice(),
|
|
3037
3223
|
/*epoch_number*/ 1);
|
|
3038
3224
|
Add(3, 5U, "010", "080", 8 * kFileSize, 0, 200, 251);
|
|
@@ -3043,8 +3229,9 @@ TEST_F(CompactionPickerTest, UniversalMarkedCompactionFullOverlap) {
|
|
|
3043
3229
|
|
|
3044
3230
|
std::unique_ptr<Compaction> compaction(
|
|
3045
3231
|
universal_compaction_picker.PickCompaction(
|
|
3046
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
3047
|
-
|
|
3232
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
3233
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
3234
|
+
vstorage_.get(), &log_buffer_));
|
|
3048
3235
|
|
|
3049
3236
|
ASSERT_TRUE(compaction);
|
|
3050
3237
|
// Validate that its a compaction to reduce sorted runs
|
|
@@ -3059,14 +3246,16 @@ TEST_F(CompactionPickerTest, UniversalMarkedCompactionFullOverlap) {
|
|
|
3059
3246
|
Add(0, 7U, "150", "200", kFileSize, 0, 551, 600, 0, true,
|
|
3060
3247
|
/* temperature*/ Temperature::kUnknown,
|
|
3061
3248
|
/*oldest_ancestor_time*/ kUnknownOldestAncesterTime,
|
|
3249
|
+
/*newest_key_time*/ kUnknownNewestKeyTime,
|
|
3062
3250
|
/*ts_of_smallest*/ Slice(), /*ts_of_largest*/ Slice(),
|
|
3063
3251
|
/*epoch_number*/ 4);
|
|
3064
3252
|
UpdateVersionStorageInfo();
|
|
3065
3253
|
|
|
3066
3254
|
std::unique_ptr<Compaction> compaction2(
|
|
3067
3255
|
universal_compaction_picker.PickCompaction(
|
|
3068
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
3069
|
-
|
|
3256
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
3257
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
3258
|
+
vstorage_.get(), &log_buffer_));
|
|
3070
3259
|
ASSERT_FALSE(compaction2);
|
|
3071
3260
|
}
|
|
3072
3261
|
|
|
@@ -3085,6 +3274,7 @@ TEST_F(CompactionPickerTest, UniversalMarkedCompactionFullOverlap2) {
|
|
|
3085
3274
|
Add(0, 4U, "260", "300", 4 * kFileSize, 0, 260, 300, 0, true,
|
|
3086
3275
|
/* temperature*/ Temperature::kUnknown,
|
|
3087
3276
|
/*oldest_ancestor_time*/ kUnknownOldestAncesterTime,
|
|
3277
|
+
/*newest_key_time*/ kUnknownNewestKeyTime,
|
|
3088
3278
|
/*ts_of_smallest*/ Slice(), /*ts_of_largest*/ Slice(),
|
|
3089
3279
|
/*epoch_number*/ 1);
|
|
3090
3280
|
Add(3, 5U, "240", "290", 8 * kFileSize, 0, 201, 250);
|
|
@@ -3094,8 +3284,9 @@ TEST_F(CompactionPickerTest, UniversalMarkedCompactionFullOverlap2) {
|
|
|
3094
3284
|
|
|
3095
3285
|
std::unique_ptr<Compaction> compaction(
|
|
3096
3286
|
universal_compaction_picker.PickCompaction(
|
|
3097
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
3098
|
-
|
|
3287
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
3288
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
3289
|
+
vstorage_.get(), &log_buffer_));
|
|
3099
3290
|
|
|
3100
3291
|
ASSERT_TRUE(compaction);
|
|
3101
3292
|
// Validate that its a delete triggered compaction
|
|
@@ -3110,20 +3301,23 @@ TEST_F(CompactionPickerTest, UniversalMarkedCompactionFullOverlap2) {
|
|
|
3110
3301
|
Add(0, 1U, "150", "200", kFileSize, 0, 500, 550, /*compensated_file_size*/ 0,
|
|
3111
3302
|
/*marked_for_compact*/ false, /* temperature*/ Temperature::kUnknown,
|
|
3112
3303
|
/*oldest_ancestor_time*/ kUnknownOldestAncesterTime,
|
|
3304
|
+
/*newest_key_time*/ kUnknownNewestKeyTime,
|
|
3113
3305
|
/*ts_of_smallest*/ Slice(), /*ts_of_largest*/ Slice(),
|
|
3114
3306
|
/*epoch_number*/ 3);
|
|
3115
3307
|
Add(0, 2U, "201", "250", 2 * kFileSize, 0, 401, 450,
|
|
3116
3308
|
/*compensated_file_size*/ 0, /*marked_for_compact*/ false,
|
|
3117
3309
|
/* temperature*/ Temperature::kUnknown,
|
|
3118
3310
|
/*oldest_ancestor_time*/ kUnknownOldestAncesterTime,
|
|
3311
|
+
/*newest_key_time*/ kUnknownNewestKeyTime,
|
|
3119
3312
|
/*ts_of_smallest*/ Slice(), /*ts_of_largest*/ Slice(),
|
|
3120
3313
|
/*epoch_number*/ 2);
|
|
3121
3314
|
UpdateVersionStorageInfo();
|
|
3122
3315
|
|
|
3123
3316
|
std::unique_ptr<Compaction> compaction2(
|
|
3124
3317
|
universal_compaction_picker.PickCompaction(
|
|
3125
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
3126
|
-
|
|
3318
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
3319
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
3320
|
+
vstorage_.get(), &log_buffer_));
|
|
3127
3321
|
ASSERT_FALSE(compaction2);
|
|
3128
3322
|
}
|
|
3129
3323
|
|
|
@@ -3163,8 +3357,9 @@ TEST_F(CompactionPickerTest, UniversalMarkedCompactionStartOutputOverlap) {
|
|
|
3163
3357
|
|
|
3164
3358
|
std::unique_ptr<Compaction> compaction(
|
|
3165
3359
|
universal_compaction_picker.PickCompaction(
|
|
3166
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
3167
|
-
|
|
3360
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
3361
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
3362
|
+
vstorage_.get(), &log_buffer_));
|
|
3168
3363
|
|
|
3169
3364
|
ASSERT_TRUE(compaction);
|
|
3170
3365
|
// Validate that its a delete triggered compaction
|
|
@@ -3194,8 +3389,9 @@ TEST_F(CompactionPickerTest, UniversalMarkedCompactionStartOutputOverlap) {
|
|
|
3194
3389
|
random_index = 0;
|
|
3195
3390
|
std::unique_ptr<Compaction> compaction2(
|
|
3196
3391
|
universal_compaction_picker.PickCompaction(
|
|
3197
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
3198
|
-
|
|
3392
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
3393
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
3394
|
+
vstorage_.get(), &log_buffer_));
|
|
3199
3395
|
ASSERT_FALSE(compaction2);
|
|
3200
3396
|
DeleteVersionStorage();
|
|
3201
3397
|
}
|
|
@@ -3220,8 +3416,9 @@ TEST_F(CompactionPickerTest, UniversalMarkedL0NoOverlap) {
|
|
|
3220
3416
|
|
|
3221
3417
|
std::unique_ptr<Compaction> compaction(
|
|
3222
3418
|
universal_compaction_picker.PickCompaction(
|
|
3223
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
3224
|
-
|
|
3419
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
3420
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
3421
|
+
vstorage_.get(), &log_buffer_));
|
|
3225
3422
|
|
|
3226
3423
|
ASSERT_TRUE(compaction);
|
|
3227
3424
|
// Validate that its a delete triggered compaction
|
|
@@ -3257,8 +3454,9 @@ TEST_F(CompactionPickerTest, UniversalMarkedL0WithOverlap) {
|
|
|
3257
3454
|
|
|
3258
3455
|
std::unique_ptr<Compaction> compaction(
|
|
3259
3456
|
universal_compaction_picker.PickCompaction(
|
|
3260
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
3261
|
-
|
|
3457
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
3458
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
3459
|
+
vstorage_.get(), &log_buffer_));
|
|
3262
3460
|
|
|
3263
3461
|
ASSERT_TRUE(compaction);
|
|
3264
3462
|
// Validate that its a delete triggered compaction
|
|
@@ -3287,31 +3485,36 @@ TEST_F(CompactionPickerTest, UniversalMarkedL0Overlap2) {
|
|
|
3287
3485
|
/*compensated_file_size*/ 0, /*marked_for_compact*/ false,
|
|
3288
3486
|
/* temperature*/ Temperature::kUnknown,
|
|
3289
3487
|
/*oldest_ancestor_time*/ kUnknownOldestAncesterTime,
|
|
3488
|
+
/*newest_key_time*/ kUnknownNewestKeyTime,
|
|
3290
3489
|
/*ts_of_smallest*/ Slice(), /*ts_of_largest*/ Slice(),
|
|
3291
3490
|
/*epoch_number*/ 4);
|
|
3292
3491
|
Add(0, 5U, "240", "290", 2 * kFileSize, 0, 201, 250, 0, true,
|
|
3293
3492
|
/* temperature*/ Temperature::kUnknown,
|
|
3294
3493
|
/*oldest_ancestor_time*/ kUnknownOldestAncesterTime,
|
|
3494
|
+
/*newest_key_time*/ kUnknownNewestKeyTime,
|
|
3295
3495
|
/*ts_of_smallest*/ Slice(), /*ts_of_largest*/ Slice(),
|
|
3296
3496
|
/*epoch_number*/ 3);
|
|
3297
3497
|
Add(0, 3U, "301", "350", 4 * kFileSize, 0, 101, 150,
|
|
3298
3498
|
/*compensated_file_size*/ 0, /*marked_for_compact*/ false,
|
|
3299
3499
|
/* temperature*/ Temperature::kUnknown,
|
|
3300
3500
|
/*oldest_ancestor_time*/ kUnknownOldestAncesterTime,
|
|
3501
|
+
/*newest_key_time*/ kUnknownNewestKeyTime,
|
|
3301
3502
|
/*ts_of_smallest*/ Slice(), /*ts_of_largest*/ Slice(),
|
|
3302
3503
|
/*epoch_number*/ 2);
|
|
3303
3504
|
Add(0, 6U, "501", "750", 8 * kFileSize, 0, 50, 100,
|
|
3304
3505
|
/*compensated_file_size*/ 0, /*marked_for_compact*/ false,
|
|
3305
3506
|
/* temperature*/ Temperature::kUnknown,
|
|
3306
3507
|
/*oldest_ancestor_time*/ kUnknownOldestAncesterTime,
|
|
3508
|
+
/*newest_key_time*/ kUnknownNewestKeyTime,
|
|
3307
3509
|
/*ts_of_smallest*/ Slice(), /*ts_of_largest*/ Slice(),
|
|
3308
3510
|
/*epoch_number*/ 1);
|
|
3309
3511
|
UpdateVersionStorageInfo();
|
|
3310
3512
|
|
|
3311
3513
|
std::unique_ptr<Compaction> compaction(
|
|
3312
3514
|
universal_compaction_picker.PickCompaction(
|
|
3313
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
3314
|
-
|
|
3515
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
3516
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
3517
|
+
vstorage_.get(), &log_buffer_));
|
|
3315
3518
|
|
|
3316
3519
|
ASSERT_TRUE(compaction);
|
|
3317
3520
|
// Validate that its a delete triggered compaction
|
|
@@ -3329,20 +3532,23 @@ TEST_F(CompactionPickerTest, UniversalMarkedL0Overlap2) {
|
|
|
3329
3532
|
/*marked_for_compact*/ false,
|
|
3330
3533
|
/* temperature*/ Temperature::kUnknown,
|
|
3331
3534
|
/*oldest_ancestor_time*/ kUnknownOldestAncesterTime,
|
|
3535
|
+
/*newest_key_time*/ kUnknownNewestKeyTime,
|
|
3332
3536
|
/*ts_of_smallest*/ Slice(), /*ts_of_largest*/ Slice(),
|
|
3333
3537
|
/*epoch_number*/ 6);
|
|
3334
3538
|
Add(0, 2U, "201", "250", kFileSize, 0, 401, 450, /*compensated_file_size*/ 0,
|
|
3335
3539
|
/*marked_for_compact*/ false,
|
|
3336
3540
|
/* temperature*/ Temperature::kUnknown,
|
|
3337
3541
|
/*oldest_ancestor_time*/ kUnknownOldestAncesterTime,
|
|
3542
|
+
/*newest_key_time*/ kUnknownNewestKeyTime,
|
|
3338
3543
|
/*ts_of_smallest*/ Slice(), /*ts_of_largest*/ Slice(),
|
|
3339
3544
|
/*epoch_number*/ 5);
|
|
3340
3545
|
UpdateVersionStorageInfo();
|
|
3341
3546
|
|
|
3342
3547
|
std::unique_ptr<Compaction> compaction2(
|
|
3343
3548
|
universal_compaction_picker.PickCompaction(
|
|
3344
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
3345
|
-
|
|
3549
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
3550
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
3551
|
+
vstorage_.get(), &log_buffer_));
|
|
3346
3552
|
ASSERT_TRUE(compaction2);
|
|
3347
3553
|
ASSERT_EQ(3U, compaction->num_input_files(0));
|
|
3348
3554
|
ASSERT_TRUE(file_map_[1].first->being_compacted);
|
|
@@ -3403,7 +3609,7 @@ TEST_F(CompactionPickerTest, UniversalSizeAmpTierCompactionNonLastLevel) {
|
|
|
3403
3609
|
const int kLastLevel = kNumLevels - 1;
|
|
3404
3610
|
|
|
3405
3611
|
ioptions_.compaction_style = kCompactionStyleUniversal;
|
|
3406
|
-
|
|
3612
|
+
mutable_cf_options_.preclude_last_level_data_seconds = 1000;
|
|
3407
3613
|
mutable_cf_options_.compaction_options_universal
|
|
3408
3614
|
.max_size_amplification_percent = 200;
|
|
3409
3615
|
// To avoid any L0 file exclusion in size amp compaction intended for reducing
|
|
@@ -3420,8 +3626,9 @@ TEST_F(CompactionPickerTest, UniversalSizeAmpTierCompactionNonLastLevel) {
|
|
|
3420
3626
|
|
|
3421
3627
|
std::unique_ptr<Compaction> compaction(
|
|
3422
3628
|
universal_compaction_picker.PickCompaction(
|
|
3423
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
3424
|
-
|
|
3629
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
3630
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
3631
|
+
vstorage_.get(), &log_buffer_));
|
|
3425
3632
|
|
|
3426
3633
|
// Make sure it's a size amp compaction and includes all files
|
|
3427
3634
|
ASSERT_EQ(compaction->compaction_reason(),
|
|
@@ -3442,7 +3649,7 @@ TEST_F(CompactionPickerTest, UniversalSizeRatioTierCompactionLastLevel) {
|
|
|
3442
3649
|
const int kPenultimateLevel = kLastLevel - 1;
|
|
3443
3650
|
|
|
3444
3651
|
ioptions_.compaction_style = kCompactionStyleUniversal;
|
|
3445
|
-
|
|
3652
|
+
mutable_cf_options_.preclude_last_level_data_seconds = 1000;
|
|
3446
3653
|
mutable_cf_options_.compaction_options_universal
|
|
3447
3654
|
.max_size_amplification_percent = 200;
|
|
3448
3655
|
UniversalCompactionPicker universal_compaction_picker(ioptions_, &icmp_);
|
|
@@ -3456,8 +3663,9 @@ TEST_F(CompactionPickerTest, UniversalSizeRatioTierCompactionLastLevel) {
|
|
|
3456
3663
|
|
|
3457
3664
|
std::unique_ptr<Compaction> compaction(
|
|
3458
3665
|
universal_compaction_picker.PickCompaction(
|
|
3459
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
3460
|
-
|
|
3666
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
3667
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
3668
|
+
vstorage_.get(), &log_buffer_));
|
|
3461
3669
|
|
|
3462
3670
|
// Internally, size amp compaction is evaluated before size ratio compaction.
|
|
3463
3671
|
// Here to make sure it's size ratio compaction instead of size amp
|
|
@@ -3479,7 +3687,7 @@ TEST_F(CompactionPickerTest, UniversalSizeAmpTierCompactionNotSuport) {
|
|
|
3479
3687
|
const int kLastLevel = kNumLevels - 1;
|
|
3480
3688
|
|
|
3481
3689
|
ioptions_.compaction_style = kCompactionStyleUniversal;
|
|
3482
|
-
|
|
3690
|
+
mutable_cf_options_.preclude_last_level_data_seconds = 1000;
|
|
3483
3691
|
mutable_cf_options_.compaction_options_universal
|
|
3484
3692
|
.max_size_amplification_percent = 200;
|
|
3485
3693
|
// To avoid any L0 file exclusion in size amp compaction intended for reducing
|
|
@@ -3496,8 +3704,9 @@ TEST_F(CompactionPickerTest, UniversalSizeAmpTierCompactionNotSuport) {
|
|
|
3496
3704
|
|
|
3497
3705
|
std::unique_ptr<Compaction> compaction(
|
|
3498
3706
|
universal_compaction_picker.PickCompaction(
|
|
3499
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
3500
|
-
|
|
3707
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
3708
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
3709
|
+
vstorage_.get(), &log_buffer_));
|
|
3501
3710
|
|
|
3502
3711
|
// size amp compaction is still triggered even preclude_last_level is set
|
|
3503
3712
|
ASSERT_EQ(compaction->compaction_reason(),
|
|
@@ -3516,7 +3725,7 @@ TEST_F(CompactionPickerTest, UniversalSizeAmpTierCompactionLastLevel) {
|
|
|
3516
3725
|
const int kPenultimateLevel = kLastLevel - 1;
|
|
3517
3726
|
|
|
3518
3727
|
ioptions_.compaction_style = kCompactionStyleUniversal;
|
|
3519
|
-
|
|
3728
|
+
mutable_cf_options_.preclude_last_level_data_seconds = 1000;
|
|
3520
3729
|
mutable_cf_options_.compaction_options_universal
|
|
3521
3730
|
.max_size_amplification_percent = 200;
|
|
3522
3731
|
UniversalCompactionPicker universal_compaction_picker(ioptions_, &icmp_);
|
|
@@ -3530,8 +3739,9 @@ TEST_F(CompactionPickerTest, UniversalSizeAmpTierCompactionLastLevel) {
|
|
|
3530
3739
|
|
|
3531
3740
|
std::unique_ptr<Compaction> compaction(
|
|
3532
3741
|
universal_compaction_picker.PickCompaction(
|
|
3533
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
3534
|
-
|
|
3742
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
3743
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
3744
|
+
vstorage_.get(), &log_buffer_));
|
|
3535
3745
|
|
|
3536
3746
|
// It's a Size Amp compaction, but doesn't include the last level file and
|
|
3537
3747
|
// output to the penultimate level.
|
|
@@ -3563,7 +3773,8 @@ TEST_F(CompactionPickerU64TsTest, Overlap) {
|
|
|
3563
3773
|
/*file_size=*/1U, /*path_id=*/0,
|
|
3564
3774
|
/*smallest_seq=*/100, /*largest_seq=*/100, /*compensated_file_size=*/0,
|
|
3565
3775
|
/*marked_for_compact=*/false, /*temperature=*/Temperature::kUnknown,
|
|
3566
|
-
/*oldest_ancestor_time
|
|
3776
|
+
/*oldest_ancestor_time*/ kUnknownOldestAncesterTime,
|
|
3777
|
+
/*newest_key_time*/ kUnknownNewestKeyTime, ts1, ts2);
|
|
3567
3778
|
UpdateVersionStorageInfo();
|
|
3568
3779
|
}
|
|
3569
3780
|
|
|
@@ -3629,17 +3840,20 @@ TEST_F(CompactionPickerU64TsTest, CannotTrivialMoveUniversal) {
|
|
|
3629
3840
|
Add(1, 1U, "150", "150", kFileSize, /*path_id=*/0, /*smallest_seq=*/100,
|
|
3630
3841
|
/*largest_seq=*/100, /*compensated_file_size=*/kFileSize,
|
|
3631
3842
|
/*marked_for_compact=*/false, Temperature::kUnknown,
|
|
3632
|
-
kUnknownOldestAncesterTime,
|
|
3843
|
+
/*oldest_ancestor_time*/ kUnknownOldestAncesterTime,
|
|
3844
|
+
/*newest_key_time*/ kUnknownNewestKeyTime, ts1, ts2);
|
|
3633
3845
|
Add(2, 2U, "150", "150", kFileSize, /*path_id=*/0, /*smallest_seq=*/100,
|
|
3634
3846
|
/*largest_seq=*/100, /*compensated_file_size=*/kFileSize,
|
|
3635
3847
|
/*marked_for_compact=*/false, Temperature::kUnknown,
|
|
3636
|
-
kUnknownOldestAncesterTime,
|
|
3848
|
+
/*oldest_ancestor_time*/ kUnknownOldestAncesterTime,
|
|
3849
|
+
/*newest_key_time*/ kUnknownNewestKeyTime, ts3, ts4);
|
|
3637
3850
|
UpdateVersionStorageInfo();
|
|
3638
3851
|
|
|
3639
3852
|
std::unique_ptr<Compaction> compaction(
|
|
3640
3853
|
universal_compaction_picker.PickCompaction(
|
|
3641
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
3642
|
-
|
|
3854
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
3855
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
3856
|
+
vstorage_.get(), &log_buffer_));
|
|
3643
3857
|
assert(compaction);
|
|
3644
3858
|
ASSERT_TRUE(!compaction->is_trivial_move());
|
|
3645
3859
|
}
|
|
@@ -3695,8 +3909,8 @@ TEST_P(PerKeyPlacementCompactionPickerTest, OverlapWithNormalCompaction) {
|
|
|
3695
3909
|
ASSERT_EQ(enable_per_key_placement_,
|
|
3696
3910
|
level_compaction_picker.FilesRangeOverlapWithCompaction(
|
|
3697
3911
|
input_files, 6,
|
|
3698
|
-
Compaction::EvaluatePenultimateLevel(
|
|
3699
|
-
|
|
3912
|
+
Compaction::EvaluatePenultimateLevel(
|
|
3913
|
+
vstorage_.get(), mutable_cf_options_, ioptions_, 0, 6)));
|
|
3700
3914
|
}
|
|
3701
3915
|
|
|
3702
3916
|
TEST_P(PerKeyPlacementCompactionPickerTest, NormalCompactionOverlap) {
|
|
@@ -3783,8 +3997,8 @@ TEST_P(PerKeyPlacementCompactionPickerTest,
|
|
|
3783
3997
|
ASSERT_EQ(enable_per_key_placement_,
|
|
3784
3998
|
universal_compaction_picker.FilesRangeOverlapWithCompaction(
|
|
3785
3999
|
input_files, 6,
|
|
3786
|
-
Compaction::EvaluatePenultimateLevel(
|
|
3787
|
-
|
|
4000
|
+
Compaction::EvaluatePenultimateLevel(
|
|
4001
|
+
vstorage_.get(), mutable_cf_options_, ioptions_, 0, 6)));
|
|
3788
4002
|
}
|
|
3789
4003
|
|
|
3790
4004
|
TEST_P(PerKeyPlacementCompactionPickerTest, NormalCompactionOverlapUniversal) {
|
|
@@ -3835,7 +4049,7 @@ TEST_P(PerKeyPlacementCompactionPickerTest, PenultimateOverlapUniversal) {
|
|
|
3835
4049
|
// This test is make sure the Tiered compaction would lock whole range of
|
|
3836
4050
|
// both output level and penultimate level
|
|
3837
4051
|
if (enable_per_key_placement_) {
|
|
3838
|
-
|
|
4052
|
+
mutable_cf_options_.preclude_last_level_data_seconds = 10000;
|
|
3839
4053
|
}
|
|
3840
4054
|
|
|
3841
4055
|
int num_levels = ioptions_.num_levels;
|
|
@@ -3890,7 +4104,7 @@ TEST_P(PerKeyPlacementCompactionPickerTest, PenultimateOverlapUniversal) {
|
|
|
3890
4104
|
|
|
3891
4105
|
TEST_P(PerKeyPlacementCompactionPickerTest, LastLevelOnlyOverlapUniversal) {
|
|
3892
4106
|
if (enable_per_key_placement_) {
|
|
3893
|
-
|
|
4107
|
+
mutable_cf_options_.preclude_last_level_data_seconds = 10000;
|
|
3894
4108
|
}
|
|
3895
4109
|
|
|
3896
4110
|
int num_levels = ioptions_.num_levels;
|
|
@@ -3949,7 +4163,7 @@ TEST_P(PerKeyPlacementCompactionPickerTest,
|
|
|
3949
4163
|
// This should rarely happen in universal compaction, as the non-empty L5
|
|
3950
4164
|
// should be included in the compaction.
|
|
3951
4165
|
if (enable_per_key_placement_) {
|
|
3952
|
-
|
|
4166
|
+
mutable_cf_options_.preclude_last_level_data_seconds = 10000;
|
|
3953
4167
|
}
|
|
3954
4168
|
|
|
3955
4169
|
int num_levels = ioptions_.num_levels;
|
|
@@ -4003,7 +4217,7 @@ TEST_P(PerKeyPlacementCompactionPickerTest,
|
|
|
4003
4217
|
// penultimate level compaction if there's already an ongoing compaction to
|
|
4004
4218
|
// the penultimate level
|
|
4005
4219
|
if (enable_per_key_placement_) {
|
|
4006
|
-
|
|
4220
|
+
mutable_cf_options_.preclude_last_level_data_seconds = 10000;
|
|
4007
4221
|
}
|
|
4008
4222
|
|
|
4009
4223
|
int num_levels = ioptions_.num_levels;
|
|
@@ -4044,8 +4258,8 @@ TEST_P(PerKeyPlacementCompactionPickerTest,
|
|
|
4044
4258
|
ASSERT_EQ(enable_per_key_placement_,
|
|
4045
4259
|
universal_compaction_picker.FilesRangeOverlapWithCompaction(
|
|
4046
4260
|
input_files, 6,
|
|
4047
|
-
Compaction::EvaluatePenultimateLevel(
|
|
4048
|
-
|
|
4261
|
+
Compaction::EvaluatePenultimateLevel(
|
|
4262
|
+
vstorage_.get(), mutable_cf_options_, ioptions_, 6, 6)));
|
|
4049
4263
|
|
|
4050
4264
|
if (!enable_per_key_placement_) {
|
|
4051
4265
|
std::unique_ptr<Compaction> comp2(universal_compaction_picker.CompactFiles(
|
|
@@ -4063,7 +4277,7 @@ TEST_P(PerKeyPlacementCompactionPickerTest,
|
|
|
4063
4277
|
// compaction, so it's safe to move data from the last level to the
|
|
4064
4278
|
// penultimate level.
|
|
4065
4279
|
if (enable_per_key_placement_) {
|
|
4066
|
-
|
|
4280
|
+
mutable_cf_options_.preclude_last_level_data_seconds = 10000;
|
|
4067
4281
|
}
|
|
4068
4282
|
|
|
4069
4283
|
int num_levels = ioptions_.num_levels;
|
|
@@ -4104,7 +4318,8 @@ TEST_P(PerKeyPlacementCompactionPickerTest,
|
|
|
4104
4318
|
// always safe to move data up
|
|
4105
4319
|
ASSERT_FALSE(universal_compaction_picker.FilesRangeOverlapWithCompaction(
|
|
4106
4320
|
input_files, 6,
|
|
4107
|
-
Compaction::EvaluatePenultimateLevel(vstorage_.get(),
|
|
4321
|
+
Compaction::EvaluatePenultimateLevel(vstorage_.get(), mutable_cf_options_,
|
|
4322
|
+
ioptions_, 6, 6)));
|
|
4108
4323
|
|
|
4109
4324
|
// 2 compactions can be run in parallel
|
|
4110
4325
|
std::unique_ptr<Compaction> comp2(universal_compaction_picker.CompactFiles(
|
|
@@ -4169,8 +4384,9 @@ TEST_F(CompactionPickerTest,
|
|
|
4169
4384
|
UpdateVersionStorageInfo();
|
|
4170
4385
|
|
|
4171
4386
|
std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
|
|
4172
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
4173
|
-
|
|
4387
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
4388
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
4389
|
+
vstorage_.get(), &log_buffer_));
|
|
4174
4390
|
ASSERT_TRUE(compaction);
|
|
4175
4391
|
ASSERT_EQ(num_levels - 2, compaction->start_level());
|
|
4176
4392
|
ASSERT_EQ(num_levels - 1, compaction->output_level());
|
|
@@ -4178,9 +4394,10 @@ TEST_F(CompactionPickerTest,
|
|
|
4178
4394
|
ASSERT_EQ(5U, compaction->input(0, 0)->fd.GetNumber());
|
|
4179
4395
|
|
|
4180
4396
|
std::unique_ptr<Compaction> second_compaction(
|
|
4181
|
-
level_compaction_picker.PickCompaction(
|
|
4182
|
-
|
|
4183
|
-
|
|
4397
|
+
level_compaction_picker.PickCompaction(
|
|
4398
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
4399
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
4400
|
+
vstorage_.get(), &log_buffer_));
|
|
4184
4401
|
ASSERT_TRUE(second_compaction);
|
|
4185
4402
|
ASSERT_EQ(num_levels - 1, compaction->output_level());
|
|
4186
4403
|
ASSERT_EQ(num_levels - 2, compaction->start_level());
|
|
@@ -4225,8 +4442,9 @@ TEST_F(CompactionPickerTest,
|
|
|
4225
4442
|
UpdateVersionStorageInfo();
|
|
4226
4443
|
|
|
4227
4444
|
std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
|
|
4228
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
4229
|
-
|
|
4445
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
4446
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
4447
|
+
vstorage_.get(), &log_buffer_));
|
|
4230
4448
|
ASSERT_TRUE(compaction);
|
|
4231
4449
|
ASSERT_EQ(num_levels - 3, compaction->start_level());
|
|
4232
4450
|
ASSERT_EQ(num_levels - 2, compaction->output_level());
|
|
@@ -4274,8 +4492,9 @@ TEST_F(CompactionPickerTest, IntraL0WhenL0IsSmall) {
|
|
|
4274
4492
|
|
|
4275
4493
|
LevelCompactionPicker compaction_picker(ioptions_, &icmp_);
|
|
4276
4494
|
std::unique_ptr<Compaction> compaction(compaction_picker.PickCompaction(
|
|
4277
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
4278
|
-
|
|
4495
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
4496
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
4497
|
+
vstorage_.get(), &log_buffer_));
|
|
4279
4498
|
ASSERT_TRUE(compaction.get() != nullptr);
|
|
4280
4499
|
ASSERT_EQ(CompactionReason::kLevelL0FilesNum,
|
|
4281
4500
|
compaction->compaction_reason());
|
|
@@ -4351,6 +4570,7 @@ TEST_F(CompactionPickerTest, UniversalMaxReadAmpLargeDB) {
|
|
|
4351
4570
|
std::unique_ptr<Compaction> compaction(
|
|
4352
4571
|
universal_compaction_picker.PickCompaction(
|
|
4353
4572
|
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
4573
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
4354
4574
|
vstorage_.get(), &log_buffer_));
|
|
4355
4575
|
if (i == kMaxRuns) {
|
|
4356
4576
|
// There are in total i + 1 > kMaxRuns sorted runs.
|
|
@@ -4397,8 +4617,9 @@ TEST_F(CompactionPickerTest, UniversalMaxReadAmpSmallDB) {
|
|
|
4397
4617
|
ASSERT_TRUE(universal_compaction_picker.NeedsCompaction(vstorage_.get()));
|
|
4398
4618
|
std::unique_ptr<Compaction> compaction(
|
|
4399
4619
|
universal_compaction_picker.PickCompaction(
|
|
4400
|
-
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
4401
|
-
|
|
4620
|
+
cf_name_, mutable_cf_options_, mutable_db_options_,
|
|
4621
|
+
/*existing_snapshots=*/{}, /* snapshot_checker */ nullptr,
|
|
4622
|
+
vstorage_.get(), &log_buffer_));
|
|
4402
4623
|
ASSERT_EQ(nullptr, compaction);
|
|
4403
4624
|
}
|
|
4404
4625
|
}
|