@nxtedition/rocksdb 13.5.13 → 14.0.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 +33 -2
- package/binding.gyp +2 -2
- package/chained-batch.js +9 -16
- package/deps/rocksdb/rocksdb/BUCK +18 -1
- package/deps/rocksdb/rocksdb/CMakeLists.txt +10 -3
- package/deps/rocksdb/rocksdb/Makefile +20 -9
- package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +90 -13
- package/deps/rocksdb/rocksdb/cache/clock_cache.cc +88 -75
- package/deps/rocksdb/rocksdb/cache/clock_cache.h +44 -36
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +184 -148
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +5 -11
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +116 -47
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +1 -1
- package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +3 -6
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +1 -1
- package/deps/rocksdb/rocksdb/db/builder.cc +4 -2
- package/deps/rocksdb/rocksdb/db/c.cc +207 -0
- package/deps/rocksdb/rocksdb/db/c_test.c +72 -0
- package/deps/rocksdb/rocksdb/db/column_family.cc +3 -2
- package/deps/rocksdb/rocksdb/db/column_family.h +5 -0
- package/deps/rocksdb/rocksdb/db/compact_files_test.cc +4 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +2 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +51 -38
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +29 -12
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +5 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +566 -366
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +131 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +1 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +7 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +4 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +13 -14
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +12 -7
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +8 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +97 -76
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +11 -14
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +1 -1
- package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +8 -0
- package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +16 -3
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +448 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +22 -20
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +4 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +5 -5
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +7 -3
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_iter.cc +104 -0
- package/deps/rocksdb/rocksdb/db/db_iter.h +4 -11
- package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +331 -58
- package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +129 -0
- package/deps/rocksdb/rocksdb/db/db_sst_test.cc +64 -0
- package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +40 -0
- package/deps/rocksdb/rocksdb/db/db_test2.cc +25 -15
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +42 -24
- package/deps/rocksdb/rocksdb/db/db_test_util.h +29 -14
- package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +69 -36
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/event_helpers.cc +1 -0
- package/deps/rocksdb/rocksdb/db/experimental.cc +5 -4
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +8 -1
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +275 -79
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +23 -5
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +591 -175
- package/deps/rocksdb/rocksdb/db/flush_job.cc +3 -4
- package/deps/rocksdb/rocksdb/db/log_reader.cc +5 -2
- package/deps/rocksdb/rocksdb/db/memtable.cc +84 -35
- package/deps/rocksdb/rocksdb/db/memtable.h +39 -34
- package/deps/rocksdb/rocksdb/db/merge_helper.cc +1 -0
- package/deps/rocksdb/rocksdb/db/merge_operator.cc +1 -1
- package/deps/rocksdb/rocksdb/db/multi_scan.cc +11 -5
- package/deps/rocksdb/rocksdb/db/version_edit.cc +1 -1
- package/deps/rocksdb/rocksdb/db/version_edit.h +1 -1
- package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +34 -14
- package/deps/rocksdb/rocksdb/db/version_edit_handler.h +28 -5
- package/deps/rocksdb/rocksdb/db/version_set.cc +159 -14
- package/deps/rocksdb/rocksdb/db/version_set.h +2 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/CMakeLists.txt +1 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +60 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +16 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compaction_service.h +75 -10
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compression_manager.cc +28 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compression_manager.h +2 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +31 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +50 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +57 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_stat.h +0 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +266 -35
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +5 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +0 -6
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +18 -2
- package/deps/rocksdb/rocksdb/env/env.cc +12 -0
- package/deps/rocksdb/rocksdb/env/env_test.cc +18 -0
- package/deps/rocksdb/rocksdb/env/file_system_tracer.cc +2 -0
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +9 -5
- package/deps/rocksdb/rocksdb/env/io_posix.cc +4 -2
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +19 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_compression.h +33 -31
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +42 -9
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +93 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +43 -49
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +4 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/compression_type.h +8 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/data_structure.h +487 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +11 -12
- package/deps/rocksdb/rocksdb/include/rocksdb/env.h +135 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +5 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +12 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/ldb_tool.h +8 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +12 -8
- package/deps/rocksdb/rocksdb/include/rocksdb/metadata.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/multi_scan.h +19 -9
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +219 -24
- package/deps/rocksdb/rocksdb/include/rocksdb/point_lock_bench_tool.h +14 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/slice.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +7 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/status.h +16 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/table.h +16 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +13 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/types.h +4 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +0 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/user_defined_index.h +45 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/cache_dump_load.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +6 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +21 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
- package/deps/rocksdb/rocksdb/memory/memory_allocator_impl.h +3 -3
- package/deps/rocksdb/rocksdb/memtable/inlineskiplist.h +77 -51
- package/deps/rocksdb/rocksdb/memtable/skiplist.h +10 -13
- package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +16 -7
- package/deps/rocksdb/rocksdb/memtable/vectorrep.cc +9 -4
- package/deps/rocksdb/rocksdb/monitoring/iostats_context.cc +2 -0
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +6 -0
- package/deps/rocksdb/rocksdb/options/cf_options.cc +13 -1
- package/deps/rocksdb/rocksdb/options/cf_options.h +6 -2
- package/deps/rocksdb/rocksdb/options/options.cc +2 -0
- package/deps/rocksdb/rocksdb/options/options_helper.cc +9 -8
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +9 -5
- package/deps/rocksdb/rocksdb/port/mmap.cc +1 -1
- package/deps/rocksdb/rocksdb/port/win/xpress_win.cc +51 -0
- package/deps/rocksdb/rocksdb/port/win/xpress_win.h +4 -0
- package/deps/rocksdb/rocksdb/src.mk +8 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +1125 -765
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +35 -24
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +29 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +732 -256
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +225 -16
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +102 -26
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +2 -75
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +433 -141
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +2 -0
- package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.cc +17 -10
- package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy_impl.h +20 -0
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +112 -85
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +191 -36
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +2 -2
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/user_defined_index_wrapper.h +108 -31
- package/deps/rocksdb/rocksdb/table/external_table.cc +7 -3
- package/deps/rocksdb/rocksdb/table/format.cc +6 -12
- package/deps/rocksdb/rocksdb/table/format.h +10 -0
- package/deps/rocksdb/rocksdb/table/internal_iterator.h +1 -1
- package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +1 -1
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +1 -1
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +5 -0
- package/deps/rocksdb/rocksdb/table/multiget_context.h +3 -1
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +118 -46
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +9 -8
- package/deps/rocksdb/rocksdb/table/table_builder.h +5 -0
- package/deps/rocksdb/rocksdb/table/table_properties.cc +16 -0
- package/deps/rocksdb/rocksdb/table/table_test.cc +1540 -155
- package/deps/rocksdb/rocksdb/test_util/testutil.h +21 -5
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +26 -5
- package/deps/rocksdb/rocksdb/tools/ldb.cc +1 -2
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +2 -0
- package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +9 -3
- package/deps/rocksdb/rocksdb/tools/sst_dump_test.cc +133 -165
- package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +173 -64
- package/deps/rocksdb/rocksdb/util/aligned_buffer.h +69 -0
- package/deps/rocksdb/rocksdb/util/atomic.h +6 -0
- package/deps/rocksdb/rocksdb/util/auto_tune_compressor.cc +29 -20
- package/deps/rocksdb/rocksdb/util/auto_tune_compressor.h +10 -6
- package/deps/rocksdb/rocksdb/util/bit_fields.h +338 -0
- package/deps/rocksdb/rocksdb/util/coding.h +3 -3
- package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +2 -2
- package/deps/rocksdb/rocksdb/util/compression.cc +777 -82
- package/deps/rocksdb/rocksdb/util/compression.h +5 -0
- package/deps/rocksdb/rocksdb/util/compression_test.cc +5 -3
- package/deps/rocksdb/rocksdb/util/dynamic_bloom.cc +2 -2
- package/deps/rocksdb/rocksdb/util/dynamic_bloom.h +15 -14
- package/deps/rocksdb/rocksdb/util/interval_test.cc +102 -0
- package/deps/rocksdb/rocksdb/util/semaphore.h +164 -0
- package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.cc +10 -6
- package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.h +4 -2
- package/deps/rocksdb/rocksdb/util/slice_test.cc +136 -0
- package/deps/rocksdb/rocksdb/util/status.cc +1 -0
- package/deps/rocksdb/rocksdb/util/string_util.cc +2 -16
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +7 -4
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +35 -14
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_test.cc +2 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/lock_manager.cc +5 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/any_lock_manager_test.h +244 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_bench.cc +18 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_bench_tool.cc +159 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.cc +1244 -161
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.h +66 -12
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_stress_test.cc +103 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.cc +1275 -8
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.h +40 -262
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test_common.h +78 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_validation_test_runner.h +469 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +2 -6
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +4 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +9 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/timestamped_snapshot_test.cc +18 -9
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +2 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_db_mutex_impl.cc +2 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +72 -44
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +92 -15
- package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +6 -20
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +143 -112
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +23 -16
- package/index.js +3 -3
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/@nxtedition+rocksdb.node +0 -0
- package/prebuilds/linux-x64/@nxtedition+rocksdb.node +0 -0
- package/util.h +38 -12
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_stat.cc +0 -17
|
@@ -787,6 +787,46 @@ TEST_P(DBTablePropertiesTest, RatioBasedDeletionTriggeredCompactionMarking) {
|
|
|
787
787
|
}
|
|
788
788
|
}
|
|
789
789
|
|
|
790
|
+
TEST_F(DBTablePropertiesTest, KeyLargestSmallestSeqno) {
|
|
791
|
+
ASSERT_OK(db_->Put(WriteOptions(), "key1", "value1"));
|
|
792
|
+
ASSERT_OK(db_->Put(WriteOptions(), "key2", "value2"));
|
|
793
|
+
ASSERT_OK(db_->Put(WriteOptions(), "key3", "value3"));
|
|
794
|
+
ASSERT_OK(db_->Flush(FlushOptions()));
|
|
795
|
+
|
|
796
|
+
{
|
|
797
|
+
TablePropertiesCollection props;
|
|
798
|
+
ASSERT_OK(db_->GetPropertiesOfAllTables(&props));
|
|
799
|
+
ASSERT_EQ(1U, props.size());
|
|
800
|
+
|
|
801
|
+
auto table_props = props.begin()->second;
|
|
802
|
+
|
|
803
|
+
ASSERT_TRUE(table_props->HasKeyLargestSeqno());
|
|
804
|
+
ASSERT_TRUE(table_props->HasKeySmallestSeqno());
|
|
805
|
+
|
|
806
|
+
ASSERT_EQ(table_props->key_largest_seqno,
|
|
807
|
+
table_props->key_smallest_seqno + 2);
|
|
808
|
+
ASSERT_GT(table_props->key_largest_seqno, 0U);
|
|
809
|
+
ASSERT_GT(table_props->key_smallest_seqno, 0U);
|
|
810
|
+
}
|
|
811
|
+
|
|
812
|
+
// Becomes zero after compaction
|
|
813
|
+
{
|
|
814
|
+
CompactRangeOptions cro;
|
|
815
|
+
cro.bottommost_level_compaction = BottommostLevelCompaction::kForce;
|
|
816
|
+
ASSERT_OK(db_->CompactRange(cro, nullptr, nullptr));
|
|
817
|
+
TablePropertiesCollection props;
|
|
818
|
+
ASSERT_OK(db_->GetPropertiesOfAllTables(&props));
|
|
819
|
+
ASSERT_EQ(1U, props.size());
|
|
820
|
+
|
|
821
|
+
auto table_props = props.begin()->second;
|
|
822
|
+
ASSERT_TRUE(table_props->HasKeyLargestSeqno());
|
|
823
|
+
ASSERT_TRUE(table_props->HasKeySmallestSeqno());
|
|
824
|
+
|
|
825
|
+
ASSERT_EQ(table_props->key_largest_seqno, table_props->key_smallest_seqno);
|
|
826
|
+
ASSERT_EQ(table_props->key_largest_seqno, 0U);
|
|
827
|
+
}
|
|
828
|
+
}
|
|
829
|
+
|
|
790
830
|
INSTANTIATE_TEST_CASE_P(DBTablePropertiesTest, DBTablePropertiesTest,
|
|
791
831
|
::testing::Values("kCompactionStyleLevel",
|
|
792
832
|
"kCompactionStyleUniversal"));
|
|
@@ -6063,15 +6063,9 @@ TEST_F(DBTest2, VariousFileTemperatures) {
|
|
|
6063
6063
|
};
|
|
6064
6064
|
|
|
6065
6065
|
// We don't have enough non-unknown temps to confidently distinguish that
|
|
6066
|
-
// a specific setting caused a specific outcome, in a single run.
|
|
6067
|
-
// reasonable work-around without blowing up
|
|
6068
|
-
//
|
|
6069
|
-
auto RandomTemp = [] {
|
|
6070
|
-
static std::vector<Temperature> temps = {
|
|
6071
|
-
Temperature::kHot, Temperature::kWarm, Temperature::kCold};
|
|
6072
|
-
return temps[Random::GetTLSInstance()->Uniform(
|
|
6073
|
-
static_cast<int>(temps.size()))];
|
|
6074
|
-
};
|
|
6066
|
+
// a specific setting caused a specific outcome, in a single run. Using
|
|
6067
|
+
// RandomKnownTemperature() is a reasonable work-around without blowing up
|
|
6068
|
+
// test time.
|
|
6075
6069
|
|
|
6076
6070
|
auto test_fs = std::make_shared<MyTestFS>(env_->GetFileSystem());
|
|
6077
6071
|
std::unique_ptr<Env> env(new CompositeEnvWrapper(env_, test_fs));
|
|
@@ -6087,22 +6081,22 @@ TEST_F(DBTest2, VariousFileTemperatures) {
|
|
|
6087
6081
|
options.env = env.get();
|
|
6088
6082
|
test_fs->Reset();
|
|
6089
6083
|
if (use_optimize) {
|
|
6090
|
-
test_fs->optimize_manifest_temperature =
|
|
6084
|
+
test_fs->optimize_manifest_temperature = RandomKnownTemperature();
|
|
6091
6085
|
test_fs->expected_manifest_temperature =
|
|
6092
6086
|
test_fs->optimize_manifest_temperature;
|
|
6093
|
-
test_fs->optimize_wal_temperature =
|
|
6087
|
+
test_fs->optimize_wal_temperature = RandomKnownTemperature();
|
|
6094
6088
|
test_fs->expected_wal_temperature = test_fs->optimize_wal_temperature;
|
|
6095
6089
|
}
|
|
6096
6090
|
if (use_temp_options) {
|
|
6097
|
-
options.metadata_write_temperature =
|
|
6091
|
+
options.metadata_write_temperature = RandomKnownTemperature();
|
|
6098
6092
|
test_fs->expected_manifest_temperature =
|
|
6099
6093
|
options.metadata_write_temperature;
|
|
6100
6094
|
test_fs->expected_other_metadata_temperature =
|
|
6101
6095
|
options.metadata_write_temperature;
|
|
6102
|
-
options.wal_write_temperature =
|
|
6096
|
+
options.wal_write_temperature = RandomKnownTemperature();
|
|
6103
6097
|
test_fs->expected_wal_temperature = options.wal_write_temperature;
|
|
6104
|
-
options.last_level_temperature =
|
|
6105
|
-
options.default_write_temperature =
|
|
6098
|
+
options.last_level_temperature = RandomKnownTemperature();
|
|
6099
|
+
options.default_write_temperature = RandomKnownTemperature();
|
|
6106
6100
|
}
|
|
6107
6101
|
|
|
6108
6102
|
DestroyAndReopen(options);
|
|
@@ -7466,11 +7460,27 @@ TEST_F(DBTest2, GetFileChecksumsFromCurrentManifest_CRC32) {
|
|
|
7466
7460
|
FlushOptions fopts;
|
|
7467
7461
|
fopts.wait = true;
|
|
7468
7462
|
Random rnd(test::RandomSeed());
|
|
7463
|
+
|
|
7464
|
+
// Write 4 files into the default column family.
|
|
7469
7465
|
for (int i = 0; i < 4; i++) {
|
|
7470
7466
|
ASSERT_OK(db->Put(wopts, Key(i), rnd.RandomString(100)));
|
|
7471
7467
|
ASSERT_OK(db->Flush(fopts));
|
|
7472
7468
|
}
|
|
7473
7469
|
|
|
7470
|
+
// Create a new column family, write 1 file into it and drop it.
|
|
7471
|
+
ColumnFamilyHandle* cf;
|
|
7472
|
+
ASSERT_OK(
|
|
7473
|
+
db->CreateColumnFamily(ColumnFamilyOptions(), "soon_to_be_deleted", &cf));
|
|
7474
|
+
ASSERT_OK(db->Put(wopts, cf, "some_key", "some_value"));
|
|
7475
|
+
ASSERT_OK(db->Flush(fopts, cf));
|
|
7476
|
+
|
|
7477
|
+
// Drop column family should generate corresponding version edit
|
|
7478
|
+
// in manifest, which we expect to be correctly interpreted by
|
|
7479
|
+
// GetFileChecksumsFromCurrentManifest API after db close.
|
|
7480
|
+
ASSERT_OK(db->DropColumnFamily(cf));
|
|
7481
|
+
delete cf;
|
|
7482
|
+
cf = nullptr;
|
|
7483
|
+
|
|
7474
7484
|
// Obtain rich files metadata for source of truth.
|
|
7475
7485
|
std::vector<LiveFileMetaData> live_files;
|
|
7476
7486
|
db->GetLiveFilesMetaData(&live_files);
|
|
@@ -71,9 +71,9 @@ DBTestBase::DBTestBase(const std::string path, bool env_do_fsync)
|
|
|
71
71
|
if (getenv("MEM_ENV")) {
|
|
72
72
|
mem_env_ = MockEnv::Create(base_env, base_env->GetSystemClock());
|
|
73
73
|
}
|
|
74
|
-
if (getenv("ENCRYPTED_ENV")) {
|
|
74
|
+
if (auto ee = getenv("ENCRYPTED_ENV")) {
|
|
75
75
|
std::shared_ptr<EncryptionProvider> provider;
|
|
76
|
-
std::string provider_id =
|
|
76
|
+
std::string provider_id = ee;
|
|
77
77
|
if (provider_id.find('=') == std::string::npos &&
|
|
78
78
|
!EndsWith(provider_id, "://test")) {
|
|
79
79
|
provider_id = provider_id + "://test";
|
|
@@ -366,11 +366,6 @@ Options DBTestBase::GetOptions(
|
|
|
366
366
|
table_options.block_cache = NewLRUCache(/* too small */ 1);
|
|
367
367
|
}
|
|
368
368
|
|
|
369
|
-
// Test anticipated new default as much as reasonably possible (and remove
|
|
370
|
-
// this code when obsolete)
|
|
371
|
-
assert(!table_options.decouple_partitioned_filters);
|
|
372
|
-
table_options.decouple_partitioned_filters = true;
|
|
373
|
-
|
|
374
369
|
bool can_allow_mmap = IsMemoryMappedAccessSupported();
|
|
375
370
|
switch (option_config) {
|
|
376
371
|
case kHashSkipList:
|
|
@@ -1159,16 +1154,18 @@ size_t DBTestBase::CountLiveFiles() {
|
|
|
1159
1154
|
}
|
|
1160
1155
|
|
|
1161
1156
|
int DBTestBase::NumTableFilesAtLevel(int level, int cf) {
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
&property));
|
|
1157
|
+
return NumTableFilesAtLevel(level,
|
|
1158
|
+
cf ? handles_[cf] : db_->DefaultColumnFamily());
|
|
1159
|
+
}
|
|
1160
|
+
|
|
1161
|
+
int DBTestBase::NumTableFilesAtLevel(int level, ColumnFamilyHandle* cfh,
|
|
1162
|
+
DB* db) {
|
|
1163
|
+
if (!db) {
|
|
1164
|
+
db = db_;
|
|
1171
1165
|
}
|
|
1166
|
+
std::string property;
|
|
1167
|
+
EXPECT_TRUE(db->GetProperty(
|
|
1168
|
+
cfh, "rocksdb.num-files-at-level" + std::to_string(level), &property));
|
|
1172
1169
|
return atoi(property.c_str());
|
|
1173
1170
|
}
|
|
1174
1171
|
|
|
@@ -1201,12 +1198,22 @@ int DBTestBase::TotalTableFiles(int cf, int levels) {
|
|
|
1201
1198
|
|
|
1202
1199
|
// Return spread of files per level
|
|
1203
1200
|
std::string DBTestBase::FilesPerLevel(int cf) {
|
|
1204
|
-
|
|
1205
|
-
|
|
1201
|
+
if (cf == 0) {
|
|
1202
|
+
return FilesPerLevel(db_->DefaultColumnFamily());
|
|
1203
|
+
} else {
|
|
1204
|
+
return FilesPerLevel(handles_[cf]);
|
|
1205
|
+
}
|
|
1206
|
+
}
|
|
1207
|
+
|
|
1208
|
+
std::string DBTestBase::FilesPerLevel(ColumnFamilyHandle* cfh, DB* db) {
|
|
1209
|
+
if (!db) {
|
|
1210
|
+
db = db_;
|
|
1211
|
+
}
|
|
1212
|
+
int num_levels = db->NumberLevels(cfh);
|
|
1206
1213
|
std::string result;
|
|
1207
1214
|
size_t last_non_zero_offset = 0;
|
|
1208
1215
|
for (int level = 0; level < num_levels; level++) {
|
|
1209
|
-
int f = NumTableFilesAtLevel(level,
|
|
1216
|
+
int f = NumTableFilesAtLevel(level, cfh, db);
|
|
1210
1217
|
char buf[100];
|
|
1211
1218
|
snprintf(buf, sizeof(buf), "%s%d", (level ? "," : ""), f);
|
|
1212
1219
|
result += buf;
|
|
@@ -1339,12 +1346,14 @@ void DBTestBase::FillLevels(const std::string& smallest,
|
|
|
1339
1346
|
}
|
|
1340
1347
|
|
|
1341
1348
|
void DBTestBase::MoveFilesToLevel(int level, int cf) {
|
|
1349
|
+
MoveFilesToLevel(level, cf ? handles_[cf] : db_->DefaultColumnFamily());
|
|
1350
|
+
}
|
|
1351
|
+
|
|
1352
|
+
void DBTestBase::MoveFilesToLevel(int level, ColumnFamilyHandle* column_family,
|
|
1353
|
+
DB* db) {
|
|
1354
|
+
DBImpl* db_impl = db ? static_cast<DBImpl*>(db) : dbfull();
|
|
1342
1355
|
for (int l = 0; l < level; ++l) {
|
|
1343
|
-
|
|
1344
|
-
EXPECT_OK(dbfull()->TEST_CompactRange(l, nullptr, nullptr, handles_[cf]));
|
|
1345
|
-
} else {
|
|
1346
|
-
EXPECT_OK(dbfull()->TEST_CompactRange(l, nullptr, nullptr));
|
|
1347
|
-
}
|
|
1356
|
+
EXPECT_OK(db_impl->TEST_CompactRange(l, nullptr, nullptr, column_family));
|
|
1348
1357
|
}
|
|
1349
1358
|
}
|
|
1350
1359
|
|
|
@@ -1863,4 +1872,13 @@ template class TargetCacheChargeTrackingCache<
|
|
|
1863
1872
|
CacheEntryRole::kBlockBasedTableReader>;
|
|
1864
1873
|
template class TargetCacheChargeTrackingCache<CacheEntryRole::kFileMetadata>;
|
|
1865
1874
|
|
|
1875
|
+
const std::vector<Temperature> kKnownTemperatures = {
|
|
1876
|
+
Temperature::kHot, Temperature::kWarm, Temperature::kCool,
|
|
1877
|
+
Temperature::kCold, Temperature::kIce};
|
|
1878
|
+
|
|
1879
|
+
Temperature RandomKnownTemperature() {
|
|
1880
|
+
return kKnownTemperatures[Random::GetTLSInstance()->Uniform(
|
|
1881
|
+
static_cast<int>(kKnownTemperatures.size()))];
|
|
1882
|
+
}
|
|
1883
|
+
|
|
1866
1884
|
} // namespace ROCKSDB_NAMESPACE
|
|
@@ -1280,6 +1280,9 @@ class DBTestBase : public testing::Test {
|
|
|
1280
1280
|
|
|
1281
1281
|
int NumTableFilesAtLevel(int level, int cf = 0);
|
|
1282
1282
|
|
|
1283
|
+
int NumTableFilesAtLevel(int level, ColumnFamilyHandle* column_family,
|
|
1284
|
+
DB* db = nullptr);
|
|
1285
|
+
|
|
1283
1286
|
double CompressionRatioAtLevel(int level, int cf = 0);
|
|
1284
1287
|
|
|
1285
1288
|
int TotalTableFiles(int cf = 0, int levels = -1);
|
|
@@ -1289,6 +1292,8 @@ class DBTestBase : public testing::Test {
|
|
|
1289
1292
|
// Return spread of files per level
|
|
1290
1293
|
std::string FilesPerLevel(int cf = 0);
|
|
1291
1294
|
|
|
1295
|
+
std::string FilesPerLevel(ColumnFamilyHandle* cfh, DB* db = nullptr);
|
|
1296
|
+
|
|
1292
1297
|
size_t CountFiles();
|
|
1293
1298
|
|
|
1294
1299
|
Status CountFiles(size_t* count);
|
|
@@ -1320,6 +1325,9 @@ class DBTestBase : public testing::Test {
|
|
|
1320
1325
|
|
|
1321
1326
|
void MoveFilesToLevel(int level, int cf = 0);
|
|
1322
1327
|
|
|
1328
|
+
void MoveFilesToLevel(int level, ColumnFamilyHandle* column_family,
|
|
1329
|
+
DB* db = nullptr);
|
|
1330
|
+
|
|
1323
1331
|
void DumpFileCounts(const char* label);
|
|
1324
1332
|
|
|
1325
1333
|
std::string DumpSSTableList();
|
|
@@ -1430,20 +1438,23 @@ class DBTestBase : public testing::Test {
|
|
|
1430
1438
|
std::replace(tp_string.begin(), tp_string.end(), ';', ' ');
|
|
1431
1439
|
std::replace(tp_string.begin(), tp_string.end(), '=', ' ');
|
|
1432
1440
|
ResetTableProperties(tp);
|
|
1433
|
-
sscanf(
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
|
|
1445
|
-
|
|
1446
|
-
|
|
1441
|
+
int count = sscanf(
|
|
1442
|
+
tp_string.c_str(),
|
|
1443
|
+
"# data blocks %" SCNu64 " # entries %" SCNu64 " # deletions %" SCNu64
|
|
1444
|
+
" # merge operands %" SCNu64 " # range deletions %" SCNu64
|
|
1445
|
+
" raw key size %" SCNu64
|
|
1446
|
+
" raw average key size %lf "
|
|
1447
|
+
" raw value size %" SCNu64
|
|
1448
|
+
" raw average value size %lf "
|
|
1449
|
+
" data block size %" SCNu64 " data uncompressed size %" SCNu64
|
|
1450
|
+
" index block size (user-key? %" SCNu64 ", delta-value? %" SCNu64
|
|
1451
|
+
") %" SCNu64 " filter block size %" SCNu64,
|
|
1452
|
+
&tp->num_data_blocks, &tp->num_entries, &tp->num_deletions,
|
|
1453
|
+
&tp->num_merge_operands, &tp->num_range_deletions, &tp->raw_key_size,
|
|
1454
|
+
&dummy_double, &tp->raw_value_size, &dummy_double, &tp->data_size,
|
|
1455
|
+
&tp->uncompressed_data_size, &tp->index_key_is_user_key,
|
|
1456
|
+
&tp->index_value_is_delta_encoded, &tp->index_size, &tp->filter_size);
|
|
1457
|
+
ASSERT_EQ(count, 15);
|
|
1447
1458
|
}
|
|
1448
1459
|
|
|
1449
1460
|
private: // Prone to error on direct use
|
|
@@ -1456,4 +1467,8 @@ class DBTestBase : public testing::Test {
|
|
|
1456
1467
|
// unique ids.
|
|
1457
1468
|
void VerifySstUniqueIds(const TablePropertiesCollection& props);
|
|
1458
1469
|
|
|
1470
|
+
// Excludes kUnknown
|
|
1471
|
+
extern const std::vector<Temperature> kKnownTemperatures;
|
|
1472
|
+
Temperature RandomKnownTemperature();
|
|
1473
|
+
|
|
1459
1474
|
} // namespace ROCKSDB_NAMESPACE
|
|
@@ -2106,46 +2106,79 @@ TEST_F(DBTestUniversalCompaction2, OverlappingL0) {
|
|
|
2106
2106
|
}
|
|
2107
2107
|
|
|
2108
2108
|
TEST_F(DBTestUniversalCompaction2, IngestBehind) {
|
|
2109
|
-
|
|
2110
|
-
|
|
2111
|
-
|
|
2112
|
-
|
|
2113
|
-
|
|
2114
|
-
|
|
2115
|
-
|
|
2116
|
-
|
|
2117
|
-
|
|
2118
|
-
|
|
2119
|
-
|
|
2120
|
-
|
|
2121
|
-
|
|
2122
|
-
|
|
2123
|
-
Reopen(opts);
|
|
2124
|
-
|
|
2125
|
-
// add an L1 file to prevent tombstones from dropping due to obsolescence
|
|
2126
|
-
// during flush
|
|
2127
|
-
int i;
|
|
2128
|
-
for (i = 0; i < 2000; ++i) {
|
|
2129
|
-
ASSERT_OK(Put(Key(i), "val"));
|
|
2130
|
-
}
|
|
2131
|
-
ASSERT_OK(Flush());
|
|
2132
|
-
// MoveFilesToLevel(6);
|
|
2133
|
-
ASSERT_OK(dbfull()->CompactRange(CompactRangeOptions(), nullptr, nullptr));
|
|
2134
|
-
|
|
2135
|
-
for (i = 1999; i < kNumKeys; ++i) {
|
|
2136
|
-
if (i >= kNumKeys - kWindowSize &&
|
|
2137
|
-
i < kNumKeys - kWindowSize + kNumDelsTrigger) {
|
|
2138
|
-
ASSERT_OK(Delete(Key(i)));
|
|
2109
|
+
for (bool cf_option : {false, true}) {
|
|
2110
|
+
SCOPED_TRACE("cf_option = " + std::to_string(cf_option));
|
|
2111
|
+
const int kNumKeys = 3000;
|
|
2112
|
+
const int kWindowSize = 100;
|
|
2113
|
+
const int kNumDelsTrigger = 90;
|
|
2114
|
+
|
|
2115
|
+
Options opts = CurrentOptions();
|
|
2116
|
+
opts.table_properties_collector_factories.emplace_back(
|
|
2117
|
+
NewCompactOnDeletionCollectorFactory(kWindowSize, kNumDelsTrigger));
|
|
2118
|
+
opts.compaction_style = kCompactionStyleUniversal;
|
|
2119
|
+
opts.level0_file_num_compaction_trigger = 2;
|
|
2120
|
+
opts.compression = kNoCompression;
|
|
2121
|
+
if (cf_option) {
|
|
2122
|
+
opts.cf_allow_ingest_behind = true;
|
|
2139
2123
|
} else {
|
|
2124
|
+
opts.allow_ingest_behind = true;
|
|
2125
|
+
}
|
|
2126
|
+
opts.compaction_options_universal.size_ratio = 10;
|
|
2127
|
+
opts.compaction_options_universal.min_merge_width = 2;
|
|
2128
|
+
opts.compaction_options_universal.max_size_amplification_percent = 200;
|
|
2129
|
+
Reopen(opts);
|
|
2130
|
+
|
|
2131
|
+
// add an L1 file to prevent tombstones from dropping due to obsolescence
|
|
2132
|
+
// during flush
|
|
2133
|
+
int i;
|
|
2134
|
+
for (i = 0; i < 2000; ++i) {
|
|
2140
2135
|
ASSERT_OK(Put(Key(i), "val"));
|
|
2141
2136
|
}
|
|
2142
|
-
|
|
2143
|
-
|
|
2137
|
+
ASSERT_OK(Flush());
|
|
2138
|
+
// MoveFilesToLevel(6);
|
|
2139
|
+
ASSERT_OK(dbfull()->CompactRange(CompactRangeOptions(), nullptr, nullptr));
|
|
2140
|
+
|
|
2141
|
+
for (i = 1999; i < kNumKeys; ++i) {
|
|
2142
|
+
if (i >= kNumKeys - kWindowSize &&
|
|
2143
|
+
i < kNumKeys - kWindowSize + kNumDelsTrigger) {
|
|
2144
|
+
ASSERT_OK(Delete(Key(i)));
|
|
2145
|
+
} else {
|
|
2146
|
+
ASSERT_OK(Put(Key(i), "val"));
|
|
2147
|
+
}
|
|
2148
|
+
}
|
|
2149
|
+
ASSERT_OK(Flush());
|
|
2144
2150
|
|
|
2145
|
-
|
|
2146
|
-
|
|
2147
|
-
|
|
2148
|
-
|
|
2151
|
+
ASSERT_OK(dbfull()->TEST_WaitForCompact());
|
|
2152
|
+
ASSERT_EQ(0, NumTableFilesAtLevel(0));
|
|
2153
|
+
ASSERT_EQ(0, NumTableFilesAtLevel(6));
|
|
2154
|
+
ASSERT_GT(NumTableFilesAtLevel(5), 0);
|
|
2155
|
+
|
|
2156
|
+
if (cf_option) {
|
|
2157
|
+
// Test that another CF does not allow ingest behind
|
|
2158
|
+
ColumnFamilyHandle* new_cfh;
|
|
2159
|
+
Options new_cf_option;
|
|
2160
|
+
new_cf_option.compaction_style = kCompactionStyleUniversal;
|
|
2161
|
+
new_cf_option.num_levels = 7;
|
|
2162
|
+
// CreateColumnFamilies({"new_cf"}, new_cf_option);
|
|
2163
|
+
ASSERT_OK(db_->CreateColumnFamily(new_cf_option, "new_cf", &new_cfh));
|
|
2164
|
+
// handles_.push_back(new_cfh);
|
|
2165
|
+
for (i = 0; i < 10; ++i) {
|
|
2166
|
+
// ASSERT_OK(Put(1, Key(i), "val"));
|
|
2167
|
+
ASSERT_OK(db_->Put(WriteOptions(), new_cfh, Key(i), "val"));
|
|
2168
|
+
}
|
|
2169
|
+
ASSERT_OK(
|
|
2170
|
+
db_->CompactRange(CompactRangeOptions(), new_cfh, nullptr, nullptr));
|
|
2171
|
+
// This CF can use the last leve.
|
|
2172
|
+
std::string property;
|
|
2173
|
+
EXPECT_TRUE(db_->GetProperty(
|
|
2174
|
+
new_cfh, "rocksdb.num-files-at-level" + std::to_string(6),
|
|
2175
|
+
&property));
|
|
2176
|
+
ASSERT_EQ(1, atoi(property.c_str()));
|
|
2177
|
+
|
|
2178
|
+
ASSERT_OK(db_->DropColumnFamily(new_cfh));
|
|
2179
|
+
ASSERT_OK(db_->DestroyColumnFamilyHandle(new_cfh));
|
|
2180
|
+
}
|
|
2181
|
+
}
|
|
2149
2182
|
}
|
|
2150
2183
|
|
|
2151
2184
|
TEST_F(DBTestUniversalCompaction2, PeriodicCompactionDefault) {
|
|
@@ -129,6 +129,7 @@ void EventHelpers::LogAndNotifyTableFileCreationFinished(
|
|
|
129
129
|
<< "user_defined_timestamps_persisted"
|
|
130
130
|
<< table_properties.user_defined_timestamps_persisted
|
|
131
131
|
<< "key_largest_seqno" << table_properties.key_largest_seqno
|
|
132
|
+
<< "key_smallest_seqno" << table_properties.key_smallest_seqno
|
|
132
133
|
<< "merge_operator" << table_properties.merge_operator_name
|
|
133
134
|
<< "prefix_extractor_name"
|
|
134
135
|
<< table_properties.prefix_extractor_name << "property_collectors"
|
|
@@ -88,11 +88,12 @@ Status GetFileChecksumsFromCurrentManifest(FileSystem* fs,
|
|
|
88
88
|
|
|
89
89
|
// Read all records from the manifest file...
|
|
90
90
|
uint64_t manifest_file_size = std::numeric_limits<uint64_t>::max();
|
|
91
|
-
FileChecksumRetriever retriever(read_options, manifest_file_size
|
|
92
|
-
*checksum_list);
|
|
91
|
+
FileChecksumRetriever retriever(read_options, manifest_file_size);
|
|
93
92
|
retriever.Iterate(reader, &s);
|
|
94
|
-
|
|
95
|
-
|
|
93
|
+
if (!retriever.status().ok()) {
|
|
94
|
+
return retriever.status();
|
|
95
|
+
}
|
|
96
|
+
return retriever.FetchFileChecksumList(*checksum_list);
|
|
96
97
|
}
|
|
97
98
|
|
|
98
99
|
Status UpdateManifestForFilesState(
|
|
@@ -2567,7 +2567,14 @@ TEST_F(ExternalSSTFileBasicTest, IngestWithTemperature) {
|
|
|
2567
2567
|
options.default_write_temperature = Temperature::kHot;
|
|
2568
2568
|
SstFileWriter sst_file_writer(EnvOptions(), options);
|
|
2569
2569
|
options.level0_file_num_compaction_trigger = 2;
|
|
2570
|
-
|
|
2570
|
+
bool cf_option = Random::GetTLSInstance()->OneIn(2);
|
|
2571
|
+
SCOPED_TRACE(std::string("Use ") + (cf_option ? "CF" : "DB") +
|
|
2572
|
+
" option for ingest behind");
|
|
2573
|
+
if (cf_option) {
|
|
2574
|
+
options.cf_allow_ingest_behind = (mode == "ingest_behind");
|
|
2575
|
+
} else {
|
|
2576
|
+
options.allow_ingest_behind = (mode == "ingest_behind");
|
|
2577
|
+
}
|
|
2571
2578
|
Reopen(options);
|
|
2572
2579
|
Defer destroyer([&]() { Destroy(options); });
|
|
2573
2580
|
|