@nxtedition/rocksdb 8.2.7 → 9.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/deps/rocksdb/rocksdb/CMakeLists.txt +7 -1
- package/deps/rocksdb/rocksdb/Makefile +22 -19
- package/deps/rocksdb/rocksdb/TARGETS +8 -0
- package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +157 -61
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +43 -92
- package/deps/rocksdb/rocksdb/cache/clock_cache.cc +632 -455
- package/deps/rocksdb/rocksdb/cache/clock_cache.h +244 -149
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +41 -13
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +11 -1
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +216 -17
- package/deps/rocksdb/rocksdb/cache/lru_cache.cc +7 -5
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +279 -199
- package/deps/rocksdb/rocksdb/cache/secondary_cache.cc +2 -1
- package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +159 -8
- package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.h +28 -2
- package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +1 -1
- package/deps/rocksdb/rocksdb/cache/sharded_cache.h +8 -0
- package/deps/rocksdb/rocksdb/crash_test.mk +14 -0
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +3 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +1 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.cc +2 -2
- package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.h +1 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +18 -21
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +1 -2
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.cc +2 -3
- package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/builder.cc +32 -7
- package/deps/rocksdb/rocksdb/db/c.cc +169 -6
- package/deps/rocksdb/rocksdb/db/c_test.c +104 -6
- package/deps/rocksdb/rocksdb/db/column_family.cc +98 -47
- package/deps/rocksdb/rocksdb/db/column_family.h +25 -2
- package/deps/rocksdb/rocksdb/db/column_family_test.cc +213 -2
- package/deps/rocksdb/rocksdb/db/compact_files_test.cc +4 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +93 -23
- package/deps/rocksdb/rocksdb/db/compaction/compaction.h +33 -9
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +7 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +17 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +107 -43
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +15 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +2 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +4 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +25 -17
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +13 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +11 -11
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +29 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +24 -31
- package/deps/rocksdb/rocksdb/db/compaction/file_pri.h +3 -1
- package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +19 -19
- package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +2 -1
- package/deps/rocksdb/rocksdb/db/convenience.cc +20 -3
- package/deps/rocksdb/rocksdb/db/convenience_impl.h +15 -0
- package/deps/rocksdb/rocksdb/db/corruption_test.cc +17 -0
- package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +17 -3
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +5 -0
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +15 -15
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +666 -44
- package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +2 -29
- package/deps/rocksdb/rocksdb/db/db_flush_test.cc +274 -1
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +40 -19
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +6 -5
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +250 -116
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +51 -23
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +354 -96
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +6 -3
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +2 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +5 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +50 -21
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +26 -13
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +13 -5
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +61 -21
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +8 -87
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +7 -1
- package/deps/rocksdb/rocksdb/db/db_iter.cc +2 -2
- package/deps/rocksdb/rocksdb/db/db_iter.h +1 -0
- package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +4 -11
- package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/db_options_test.cc +39 -29
- package/deps/rocksdb/rocksdb/db/db_properties_test.cc +26 -36
- package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +106 -0
- package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +12 -3
- package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +279 -166
- package/deps/rocksdb/rocksdb/db/db_test.cc +48 -21
- package/deps/rocksdb/rocksdb/db/db_test2.cc +81 -12
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +14 -6
- package/deps/rocksdb/rocksdb/db/db_test_util.h +40 -0
- package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +13 -1
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +233 -0
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +143 -0
- package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/db_write_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/dbformat.cc +36 -0
- package/deps/rocksdb/rocksdb/db/dbformat.h +169 -20
- package/deps/rocksdb/rocksdb/db/dbformat_test.cc +129 -0
- package/deps/rocksdb/rocksdb/db/error_handler.cc +16 -0
- package/deps/rocksdb/rocksdb/db/error_handler.h +6 -3
- package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/event_helpers.cc +4 -0
- package/deps/rocksdb/rocksdb/db/experimental.cc +2 -1
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +17 -8
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +86 -4
- package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/file_indexer.cc +2 -4
- package/deps/rocksdb/rocksdb/db/flush_job.cc +101 -11
- package/deps/rocksdb/rocksdb/db/flush_job.h +24 -1
- package/deps/rocksdb/rocksdb/db/flush_job_test.cc +88 -11
- package/deps/rocksdb/rocksdb/db/forward_iterator.cc +2 -3
- package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +159 -91
- package/deps/rocksdb/rocksdb/db/import_column_family_job.h +19 -10
- package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +143 -0
- package/deps/rocksdb/rocksdb/db/internal_stats.cc +13 -1
- package/deps/rocksdb/rocksdb/db/internal_stats.h +2 -0
- package/deps/rocksdb/rocksdb/db/listener_test.cc +2 -1
- package/deps/rocksdb/rocksdb/db/log_reader.h +3 -2
- package/deps/rocksdb/rocksdb/db/log_test.cc +17 -21
- package/deps/rocksdb/rocksdb/db/log_writer.cc +1 -1
- package/deps/rocksdb/rocksdb/db/log_writer.h +3 -2
- package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +4 -3
- package/deps/rocksdb/rocksdb/db/memtable.cc +52 -13
- package/deps/rocksdb/rocksdb/db/memtable.h +45 -1
- package/deps/rocksdb/rocksdb/db/memtable_list.cc +44 -10
- package/deps/rocksdb/rocksdb/db/memtable_list.h +32 -1
- package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +90 -4
- package/deps/rocksdb/rocksdb/db/perf_context_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/repair.cc +21 -4
- package/deps/rocksdb/rocksdb/db/repair_test.cc +143 -2
- package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +5 -4
- package/deps/rocksdb/rocksdb/db/table_cache.cc +44 -35
- package/deps/rocksdb/rocksdb/db/table_cache.h +6 -6
- package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +2 -2
- package/deps/rocksdb/rocksdb/db/version_builder.cc +0 -1
- package/deps/rocksdb/rocksdb/db/version_builder_test.cc +236 -204
- package/deps/rocksdb/rocksdb/db/version_edit.cc +66 -4
- package/deps/rocksdb/rocksdb/db/version_edit.h +48 -6
- package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +80 -8
- package/deps/rocksdb/rocksdb/db/version_edit_handler.h +12 -0
- package/deps/rocksdb/rocksdb/db/version_edit_test.cc +86 -17
- package/deps/rocksdb/rocksdb/db/version_set.cc +136 -41
- package/deps/rocksdb/rocksdb/db/version_set.h +28 -7
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +25 -15
- package/deps/rocksdb/rocksdb/db/write_batch.cc +11 -0
- package/deps/rocksdb/rocksdb/db/write_batch_internal.h +3 -0
- package/deps/rocksdb/rocksdb/db/write_batch_test.cc +16 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +22 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +2 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +42 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +32 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +7 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +247 -120
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +9 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +13 -6
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_value.h +2 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +15 -27
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +264 -69
- package/deps/rocksdb/rocksdb/env/env.cc +1 -2
- package/deps/rocksdb/rocksdb/env/env_encryption.cc +11 -165
- package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +0 -17
- package/deps/rocksdb/rocksdb/env/env_posix.cc +6 -2
- package/deps/rocksdb/rocksdb/env/env_test.cc +86 -2
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +6 -4
- package/deps/rocksdb/rocksdb/env/unique_id_gen.cc +78 -0
- package/deps/rocksdb/rocksdb/env/unique_id_gen.h +34 -0
- package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +1 -0
- package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +15 -4
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +52 -43
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +34 -18
- package/deps/rocksdb/rocksdb/file/file_util.cc +10 -5
- package/deps/rocksdb/rocksdb/file/file_util.h +13 -1
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +724 -79
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +64 -33
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +3 -16
- package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +23 -12
- package/deps/rocksdb/rocksdb/file/sequence_file_reader.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_cache.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +153 -88
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +70 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +50 -11
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/comparator.h +16 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +55 -8
- package/deps/rocksdb/rocksdb/include/rocksdb/env.h +32 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/env_encryption.h +9 -109
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +90 -13
- package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +85 -17
- package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +13 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_manager.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +5 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +21 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/table.h +7 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +6 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +5 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/optimistic_transaction_db.h +33 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +14 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +33 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +0 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +3 -0
- package/deps/rocksdb/rocksdb/memory/arena_test.cc +18 -11
- package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +2 -1
- package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +69 -34
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +16 -1
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +10 -0
- package/deps/rocksdb/rocksdb/options/cf_options.cc +19 -0
- package/deps/rocksdb/rocksdb/options/cf_options.h +10 -2
- package/deps/rocksdb/rocksdb/options/customizable_test.cc +2 -1
- package/deps/rocksdb/rocksdb/options/db_options.cc +7 -0
- package/deps/rocksdb/rocksdb/options/db_options.h +1 -0
- package/deps/rocksdb/rocksdb/options/options.cc +15 -1
- package/deps/rocksdb/rocksdb/options/options_helper.cc +6 -0
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +11 -3
- package/deps/rocksdb/rocksdb/options/options_test.cc +8 -0
- package/deps/rocksdb/rocksdb/port/mmap.h +20 -0
- package/deps/rocksdb/rocksdb/port/stack_trace.cc +27 -12
- package/deps/rocksdb/rocksdb/port/win/env_win.h +1 -1
- package/deps/rocksdb/rocksdb/src.mk +3 -0
- package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/block.cc +48 -22
- package/deps/rocksdb/rocksdb/table/block_based/block.h +60 -12
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +115 -42
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +6 -5
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +60 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +2 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +62 -44
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +36 -14
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +38 -15
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +219 -51
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +41 -8
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +25 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +50 -21
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +11 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +195 -55
- package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +31 -16
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +97 -58
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +6 -0
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +27 -12
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +3 -1
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +114 -70
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +1 -2
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +9 -6
- package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +15 -3
- package/deps/rocksdb/rocksdb/table/block_based/reader_common.h +6 -3
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +11 -11
- package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +3 -0
- package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.cc +1 -0
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +6 -2
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +1 -2
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.cc +2 -3
- package/deps/rocksdb/rocksdb/table/format.cc +175 -33
- package/deps/rocksdb/rocksdb/table/format.h +63 -10
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +10 -2
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +12 -4
- package/deps/rocksdb/rocksdb/table/meta_blocks.h +1 -0
- package/deps/rocksdb/rocksdb/table/mock_table.cc +8 -3
- package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +10 -5
- package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.h +10 -1
- package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.cc +1 -2
- package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +3 -3
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +12 -3
- package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +26 -1
- package/deps/rocksdb/rocksdb/table/table_builder.h +6 -2
- package/deps/rocksdb/rocksdb/table/table_properties.cc +6 -0
- package/deps/rocksdb/rocksdb/table/table_test.cc +52 -22
- package/deps/rocksdb/rocksdb/test_util/secondary_cache_test_util.h +19 -7
- package/deps/rocksdb/rocksdb/test_util/sync_point.h +3 -1
- package/deps/rocksdb/rocksdb/test_util/testutil.cc +29 -0
- package/deps/rocksdb/rocksdb/test_util/testutil.h +19 -0
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +65 -26
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +8 -5
- package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +1 -0
- package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +1 -0
- package/deps/rocksdb/rocksdb/tools/sst_dump_test.cc +0 -1
- package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +4 -0
- package/deps/rocksdb/rocksdb/unreleased_history/README.txt +73 -0
- package/deps/rocksdb/rocksdb/unreleased_history/add.sh +27 -0
- package/deps/rocksdb/rocksdb/unreleased_history/behavior_changes/.gitkeep +0 -0
- package/deps/rocksdb/rocksdb/unreleased_history/bug_fixes/.gitkeep +0 -0
- package/deps/rocksdb/rocksdb/unreleased_history/new_features/.gitkeep +0 -0
- package/deps/rocksdb/rocksdb/unreleased_history/performance_improvements/.gitkeep +0 -0
- package/deps/rocksdb/rocksdb/unreleased_history/public_api_changes/.gitkeep +0 -0
- package/deps/rocksdb/rocksdb/unreleased_history/release.sh +104 -0
- package/deps/rocksdb/rocksdb/util/async_file_reader.cc +5 -0
- package/deps/rocksdb/rocksdb/util/bloom_impl.h +3 -3
- package/deps/rocksdb/rocksdb/util/cast_util.h +14 -0
- package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +2 -0
- package/deps/rocksdb/rocksdb/util/comparator.cc +29 -7
- package/deps/rocksdb/rocksdb/util/compression.cc +4 -4
- package/deps/rocksdb/rocksdb/util/compression.h +110 -32
- package/deps/rocksdb/rocksdb/util/core_local.h +2 -1
- package/deps/rocksdb/rocksdb/util/dynamic_bloom.h +4 -4
- package/deps/rocksdb/rocksdb/util/filelock_test.cc +3 -0
- package/deps/rocksdb/rocksdb/util/hash.h +7 -3
- package/deps/rocksdb/rocksdb/util/hash_test.cc +44 -0
- package/deps/rocksdb/rocksdb/util/math.h +58 -6
- package/deps/rocksdb/rocksdb/util/math128.h +29 -7
- package/deps/rocksdb/rocksdb/util/mutexlock.h +35 -27
- package/deps/rocksdb/rocksdb/util/single_thread_executor.h +1 -0
- package/deps/rocksdb/rocksdb/util/stop_watch.h +1 -1
- package/deps/rocksdb/rocksdb/util/thread_operation.h +8 -1
- package/deps/rocksdb/rocksdb/util/udt_util.cc +343 -0
- package/deps/rocksdb/rocksdb/util/udt_util.h +173 -1
- package/deps/rocksdb/rocksdb/util/udt_util_test.cc +447 -0
- package/deps/rocksdb/rocksdb/util/write_batch_util.cc +25 -0
- package/deps/rocksdb/rocksdb/util/write_batch_util.h +80 -0
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +4 -4
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +69 -25
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +7 -6
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +2 -3
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +6 -11
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.h +1 -2
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +4 -5
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.h +2 -1
- package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration_test.cc +3 -3
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +1 -2
- package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.cc +2 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.cc +23 -8
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +9 -6
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +37 -12
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +231 -33
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +0 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +76 -20
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +18 -9
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +40 -23
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +13 -12
- package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +7 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +41 -11
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.h +6 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +71 -24
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.h +19 -4
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +60 -107
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +39 -11
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.h +6 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +14 -8
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +10 -5
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +2 -1
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +6 -6
- package/deps/rocksdb/rocksdb.gyp +2 -0
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/prebuilds/linux-x64/node.napi.node +0 -0
|
@@ -386,7 +386,8 @@ class CompactionJobTestBase : public testing::Test {
|
|
|
386
386
|
kUnknownFileCreationTime,
|
|
387
387
|
versions_->GetColumnFamilySet()->GetDefault()->NewEpochNumber(),
|
|
388
388
|
kUnknownFileChecksum, kUnknownFileChecksumFuncName, kNullUniqueId64x2,
|
|
389
|
-
0, 0
|
|
389
|
+
/*compensated_range_deletion_size=*/0, /*tail_size=*/0,
|
|
390
|
+
/*user_defined_timestamps_persisted=*/true);
|
|
390
391
|
|
|
391
392
|
mutex_.Lock();
|
|
392
393
|
EXPECT_OK(versions_->LogAndApply(
|
|
@@ -654,11 +655,12 @@ class CompactionJobTestBase : public testing::Test {
|
|
|
654
655
|
ASSERT_TRUE(full_history_ts_low_.empty() ||
|
|
655
656
|
ucmp_->timestamp_size() == full_history_ts_low_.size());
|
|
656
657
|
const std::atomic<bool> kManualCompactionCanceledFalse{false};
|
|
658
|
+
JobContext job_context(1, false /* create_superversion */);
|
|
657
659
|
CompactionJob compaction_job(
|
|
658
660
|
0, &compaction, db_options_, mutable_db_options_, env_options_,
|
|
659
661
|
versions_.get(), &shutting_down_, &log_buffer, nullptr, nullptr,
|
|
660
662
|
nullptr, nullptr, &mutex_, &error_handler_, snapshots,
|
|
661
|
-
earliest_write_conflict_snapshot, snapshot_checker,
|
|
663
|
+
earliest_write_conflict_snapshot, snapshot_checker, &job_context,
|
|
662
664
|
table_cache_, &event_logger, false, false, dbname_,
|
|
663
665
|
&compaction_job_stats_, Env::Priority::USER, nullptr /* IOTracer */,
|
|
664
666
|
/*manual_compaction_canceled=*/kManualCompactionCanceledFalse,
|
|
@@ -45,6 +45,8 @@ Status CompactionOutputs::Finish(const Status& intput_status,
|
|
|
45
45
|
meta->fd.file_size = current_bytes;
|
|
46
46
|
meta->tail_size = builder_->GetTailSize();
|
|
47
47
|
meta->marked_for_compaction = builder_->NeedCompact();
|
|
48
|
+
meta->user_defined_timestamps_persisted = static_cast<bool>(
|
|
49
|
+
builder_->GetTableProperties().user_defined_timestamps_persisted);
|
|
48
50
|
}
|
|
49
51
|
current_output().finished = true;
|
|
50
52
|
stats_.bytes_written += current_bytes;
|
|
@@ -125,11 +127,6 @@ size_t CompactionOutputs::UpdateGrandparentBoundaryInfo(
|
|
|
125
127
|
if (grandparents.empty()) {
|
|
126
128
|
return curr_key_boundary_switched_num;
|
|
127
129
|
}
|
|
128
|
-
assert(!internal_key.empty());
|
|
129
|
-
InternalKey ikey;
|
|
130
|
-
ikey.DecodeFrom(internal_key);
|
|
131
|
-
assert(ikey.Valid());
|
|
132
|
-
|
|
133
130
|
const Comparator* ucmp = compaction_->column_family_data()->user_comparator();
|
|
134
131
|
|
|
135
132
|
// Move the grandparent_index_ to the file containing the current user_key.
|
|
@@ -137,7 +134,7 @@ size_t CompactionOutputs::UpdateGrandparentBoundaryInfo(
|
|
|
137
134
|
// index points to the last file containing the key.
|
|
138
135
|
while (grandparent_index_ < grandparents.size()) {
|
|
139
136
|
if (being_grandparent_gap_) {
|
|
140
|
-
if (sstableKeyCompare(ucmp,
|
|
137
|
+
if (sstableKeyCompare(ucmp, internal_key,
|
|
141
138
|
grandparents[grandparent_index_]->smallest) < 0) {
|
|
142
139
|
break;
|
|
143
140
|
}
|
|
@@ -150,13 +147,13 @@ size_t CompactionOutputs::UpdateGrandparentBoundaryInfo(
|
|
|
150
147
|
being_grandparent_gap_ = false;
|
|
151
148
|
} else {
|
|
152
149
|
int cmp_result = sstableKeyCompare(
|
|
153
|
-
ucmp,
|
|
150
|
+
ucmp, internal_key, grandparents[grandparent_index_]->largest);
|
|
154
151
|
// If it's same key, make sure grandparent_index_ is pointing to the last
|
|
155
152
|
// one.
|
|
156
153
|
if (cmp_result < 0 ||
|
|
157
154
|
(cmp_result == 0 &&
|
|
158
155
|
(grandparent_index_ == grandparents.size() - 1 ||
|
|
159
|
-
sstableKeyCompare(ucmp,
|
|
156
|
+
sstableKeyCompare(ucmp, internal_key,
|
|
160
157
|
grandparents[grandparent_index_ + 1]->smallest) <
|
|
161
158
|
0))) {
|
|
162
159
|
break;
|
|
@@ -598,10 +595,12 @@ Status CompactionOutputs::AddRangeDels(
|
|
|
598
595
|
// in any snapshot. trim_ts_ is passed to the constructor for
|
|
599
596
|
// range_del_agg_, and range_del_agg_ internally drops tombstones above
|
|
600
597
|
// trim_ts_.
|
|
601
|
-
|
|
598
|
+
bool consider_drop =
|
|
599
|
+
tombstone.seq_ <= earliest_snapshot &&
|
|
602
600
|
(ts_sz == 0 ||
|
|
603
601
|
(!full_history_ts_low.empty() &&
|
|
604
|
-
ucmp->CompareTimestamp(tombstone.ts_, full_history_ts_low) < 0))
|
|
602
|
+
ucmp->CompareTimestamp(tombstone.ts_, full_history_ts_low) < 0));
|
|
603
|
+
if (consider_drop && bottommost_level) {
|
|
605
604
|
// TODO(andrewkr): tombstones that span multiple output files are
|
|
606
605
|
// counted for each compaction output file, so lots of double
|
|
607
606
|
// counting.
|
|
@@ -635,6 +634,20 @@ Status CompactionOutputs::AddRangeDels(
|
|
|
635
634
|
icmp.Compare(*upper_bound, tombstone_start.Encode()) < 0) {
|
|
636
635
|
break;
|
|
637
636
|
}
|
|
637
|
+
if (lower_bound &&
|
|
638
|
+
icmp.Compare(tombstone_start.Encode(), *lower_bound) < 0) {
|
|
639
|
+
tombstone_start.DecodeFrom(*lower_bound);
|
|
640
|
+
}
|
|
641
|
+
if (upper_bound && icmp.Compare(*upper_bound, tombstone_end.Encode()) < 0) {
|
|
642
|
+
tombstone_end.DecodeFrom(*upper_bound);
|
|
643
|
+
}
|
|
644
|
+
if (consider_drop && compaction_->KeyRangeNotExistsBeyondOutputLevel(
|
|
645
|
+
tombstone_start.user_key(),
|
|
646
|
+
tombstone_end.user_key(), &level_ptrs_)) {
|
|
647
|
+
range_del_out_stats.num_range_del_drop_obsolete++;
|
|
648
|
+
range_del_out_stats.num_record_drop_obsolete++;
|
|
649
|
+
continue;
|
|
650
|
+
}
|
|
638
651
|
// Here we show that *only* range tombstones that overlap with
|
|
639
652
|
// [lower_bound, upper_bound] are added to the current file, and
|
|
640
653
|
// sanity checking invariants that should hold:
|
|
@@ -688,13 +701,6 @@ Status CompactionOutputs::AddRangeDels(
|
|
|
688
701
|
|
|
689
702
|
// Range tombstone is not supported by output validator yet.
|
|
690
703
|
builder_->Add(kv.first.Encode(), kv.second);
|
|
691
|
-
if (lower_bound &&
|
|
692
|
-
icmp.Compare(tombstone_start.Encode(), *lower_bound) < 0) {
|
|
693
|
-
tombstone_start.DecodeFrom(*lower_bound);
|
|
694
|
-
}
|
|
695
|
-
if (upper_bound && icmp.Compare(*upper_bound, tombstone_end.Encode()) < 0) {
|
|
696
|
-
tombstone_end.DecodeFrom(*upper_bound);
|
|
697
|
-
}
|
|
698
704
|
assert(icmp.Compare(tombstone_start, tombstone_end) <= 0);
|
|
699
705
|
meta.UpdateBoundariesForRange(tombstone_start, tombstone_end,
|
|
700
706
|
tombstone.seq_, icmp);
|
|
@@ -779,6 +785,8 @@ CompactionOutputs::CompactionOutputs(const Compaction* compaction,
|
|
|
779
785
|
if (compaction->output_level() != 0) {
|
|
780
786
|
FillFilesToCutForTtl();
|
|
781
787
|
}
|
|
788
|
+
|
|
789
|
+
level_ptrs_ = std::vector<size_t>(compaction_->number_levels(), 0);
|
|
782
790
|
}
|
|
783
791
|
|
|
784
792
|
} // namespace ROCKSDB_NAMESPACE
|
|
@@ -206,10 +206,10 @@ class CompactionOutputs {
|
|
|
206
206
|
// We may only split the output when the cursor is in the range. Split
|
|
207
207
|
if ((!end.has_value() ||
|
|
208
208
|
icmp->user_comparator()->Compare(
|
|
209
|
-
ExtractUserKey(output_split_key->Encode()), end
|
|
210
|
-
(!start.has_value() ||
|
|
211
|
-
|
|
212
|
-
|
|
209
|
+
ExtractUserKey(output_split_key->Encode()), *end) < 0) &&
|
|
210
|
+
(!start.has_value() ||
|
|
211
|
+
icmp->user_comparator()->Compare(
|
|
212
|
+
ExtractUserKey(output_split_key->Encode()), *start) > 0)) {
|
|
213
213
|
local_output_split_key_ = output_split_key;
|
|
214
214
|
}
|
|
215
215
|
}
|
|
@@ -356,6 +356,15 @@ class CompactionOutputs {
|
|
|
356
356
|
// The smallest key of the current output file, this is set when current
|
|
357
357
|
// output file's smallest key is a range tombstone start key.
|
|
358
358
|
InternalKey range_tombstone_lower_bound_;
|
|
359
|
+
|
|
360
|
+
// Used for calls to compaction->KeyRangeNotExistsBeyondOutputLevel() in
|
|
361
|
+
// CompactionOutputs::AddRangeDels().
|
|
362
|
+
// level_ptrs_[i] holds index of the file that was checked during the last
|
|
363
|
+
// call to compaction->KeyRangeNotExistsBeyondOutputLevel(). This allows
|
|
364
|
+
// future calls to the function to pick up where it left off, since each
|
|
365
|
+
// range tombstone added to output file within each subcompaction is in
|
|
366
|
+
// increasing key range.
|
|
367
|
+
std::vector<size_t> level_ptrs_;
|
|
359
368
|
};
|
|
360
369
|
|
|
361
370
|
// helper struct to concatenate the last level and penultimate level outputs
|
|
@@ -611,23 +611,21 @@ Compaction* CompactionPicker::CompactRange(
|
|
|
611
611
|
// Universal compaction with more than one level always compacts all the
|
|
612
612
|
// files together to the last level.
|
|
613
613
|
assert(vstorage->num_levels() > 1);
|
|
614
|
+
int max_output_level =
|
|
615
|
+
vstorage->MaxOutputLevel(ioptions_.allow_ingest_behind);
|
|
614
616
|
// DBImpl::CompactRange() set output level to be the last level
|
|
615
|
-
|
|
616
|
-
assert(output_level == vstorage->num_levels() - 2);
|
|
617
|
-
} else {
|
|
618
|
-
assert(output_level == vstorage->num_levels() - 1);
|
|
619
|
-
}
|
|
617
|
+
assert(output_level == max_output_level);
|
|
620
618
|
// DBImpl::RunManualCompaction will make full range for universal compaction
|
|
621
619
|
assert(begin == nullptr);
|
|
622
620
|
assert(end == nullptr);
|
|
623
621
|
*compaction_end = nullptr;
|
|
624
622
|
|
|
625
623
|
int start_level = 0;
|
|
626
|
-
for (; start_level
|
|
624
|
+
for (; start_level <= max_output_level &&
|
|
627
625
|
vstorage->NumLevelFiles(start_level) == 0;
|
|
628
626
|
start_level++) {
|
|
629
627
|
}
|
|
630
|
-
if (start_level
|
|
628
|
+
if (start_level > max_output_level) {
|
|
631
629
|
return nullptr;
|
|
632
630
|
}
|
|
633
631
|
|
|
@@ -637,9 +635,9 @@ Compaction* CompactionPicker::CompactRange(
|
|
|
637
635
|
return nullptr;
|
|
638
636
|
}
|
|
639
637
|
|
|
640
|
-
std::vector<CompactionInputFiles> inputs(
|
|
638
|
+
std::vector<CompactionInputFiles> inputs(max_output_level + 1 -
|
|
641
639
|
start_level);
|
|
642
|
-
for (int level = start_level; level
|
|
640
|
+
for (int level = start_level; level <= max_output_level; level++) {
|
|
643
641
|
inputs[level - start_level].level = level;
|
|
644
642
|
auto& files = inputs[level - start_level].files;
|
|
645
643
|
for (FileMetaData* f : vstorage->LevelFiles(level)) {
|
|
@@ -753,8 +751,10 @@ Compaction* CompactionPicker::CompactRange(
|
|
|
753
751
|
|
|
754
752
|
// for BOTTOM LEVEL compaction only, use max_file_num_to_ignore to filter out
|
|
755
753
|
// files that are created during the current compaction.
|
|
756
|
-
if (compact_range_options.bottommost_level_compaction ==
|
|
757
|
-
|
|
754
|
+
if ((compact_range_options.bottommost_level_compaction ==
|
|
755
|
+
BottommostLevelCompaction::kForceOptimized ||
|
|
756
|
+
compact_range_options.bottommost_level_compaction ==
|
|
757
|
+
BottommostLevelCompaction::kIfHaveCompactionFilter) &&
|
|
758
758
|
max_file_num_to_ignore != std::numeric_limits<uint64_t>::max()) {
|
|
759
759
|
assert(input_level == output_level);
|
|
760
760
|
// inputs_shrunk holds a continuous subset of input files which were all
|
|
@@ -70,6 +70,11 @@ class CompactionPickerTestBase : public testing::Test {
|
|
|
70
70
|
mutable_cf_options_.RefreshDerivedOptions(ioptions_);
|
|
71
71
|
ioptions_.cf_paths.emplace_back("dummy",
|
|
72
72
|
std::numeric_limits<uint64_t>::max());
|
|
73
|
+
// When the default value of this option is true, universal compaction
|
|
74
|
+
// tests can encounter assertion failure since SanitizeOption() is
|
|
75
|
+
// not run to set this option to false. So we do the sanitization
|
|
76
|
+
// here. Tests that test this option set this option to true explicitly.
|
|
77
|
+
ioptions_.level_compaction_dynamic_level_bytes = false;
|
|
73
78
|
}
|
|
74
79
|
|
|
75
80
|
~CompactionPickerTestBase() override {}
|
|
@@ -79,7 +84,8 @@ class CompactionPickerTestBase : public testing::Test {
|
|
|
79
84
|
options_.num_levels = num_levels;
|
|
80
85
|
vstorage_.reset(new VersionStorageInfo(
|
|
81
86
|
&icmp_, ucmp_, options_.num_levels, style, nullptr, false,
|
|
82
|
-
EpochNumberRequirement::kMustPresent
|
|
87
|
+
EpochNumberRequirement::kMustPresent, ioptions_.clock,
|
|
88
|
+
options_.bottommost_file_compaction_delay));
|
|
83
89
|
vstorage_->PrepareForVersionAppend(ioptions_, mutable_cf_options_);
|
|
84
90
|
}
|
|
85
91
|
|
|
@@ -88,7 +94,8 @@ class CompactionPickerTestBase : public testing::Test {
|
|
|
88
94
|
void AddVersionStorage() {
|
|
89
95
|
temp_vstorage_.reset(new VersionStorageInfo(
|
|
90
96
|
&icmp_, ucmp_, options_.num_levels, ioptions_.compaction_style,
|
|
91
|
-
vstorage_.get(), false, EpochNumberRequirement::kMustPresent
|
|
97
|
+
vstorage_.get(), false, EpochNumberRequirement::kMustPresent,
|
|
98
|
+
ioptions_.clock, options_.bottommost_file_compaction_delay));
|
|
92
99
|
}
|
|
93
100
|
|
|
94
101
|
void DeleteVersionStorage() {
|
|
@@ -148,7 +155,8 @@ class CompactionPickerTestBase : public testing::Test {
|
|
|
148
155
|
smallest_seq, largest_seq, marked_for_compact, temperature,
|
|
149
156
|
kInvalidBlobFileNumber, kUnknownOldestAncesterTime,
|
|
150
157
|
kUnknownFileCreationTime, epoch_number, kUnknownFileChecksum,
|
|
151
|
-
kUnknownFileChecksumFuncName, kNullUniqueId64x2, 0, 0
|
|
158
|
+
kUnknownFileChecksumFuncName, kNullUniqueId64x2, 0, 0,
|
|
159
|
+
true /* user_defined_timestamps_persisted */);
|
|
152
160
|
f->compensated_file_size =
|
|
153
161
|
(compensated_file_size != 0) ? compensated_file_size : file_size;
|
|
154
162
|
f->oldest_ancester_time = oldest_ancestor_time;
|
|
@@ -505,7 +513,7 @@ TEST_F(CompactionPickerTest, NeedsCompactionUniversal) {
|
|
|
505
513
|
|
|
506
514
|
TEST_F(CompactionPickerTest, CompactionUniversalIngestBehindReservedLevel) {
|
|
507
515
|
const uint64_t kFileSize = 100000;
|
|
508
|
-
NewVersionStorage(
|
|
516
|
+
NewVersionStorage(3 /* num_levels */, kCompactionStyleUniversal);
|
|
509
517
|
ioptions_.allow_ingest_behind = true;
|
|
510
518
|
ioptions_.num_levels = 3;
|
|
511
519
|
UniversalCompactionPicker universal_compaction_picker(ioptions_, &icmp_);
|
|
@@ -532,6 +540,14 @@ TEST_F(CompactionPickerTest, CompactionUniversalIngestBehindReservedLevel) {
|
|
|
532
540
|
|
|
533
541
|
// output level should be the one above the bottom-most
|
|
534
542
|
ASSERT_EQ(1, compaction->output_level());
|
|
543
|
+
|
|
544
|
+
// input should not include the reserved level
|
|
545
|
+
const std::vector<CompactionInputFiles>* inputs = compaction->inputs();
|
|
546
|
+
for (const auto& compaction_input : *inputs) {
|
|
547
|
+
if (!compaction_input.empty()) {
|
|
548
|
+
ASSERT_LT(compaction_input.level, 2);
|
|
549
|
+
}
|
|
550
|
+
}
|
|
535
551
|
}
|
|
536
552
|
// Tests if the files can be trivially moved in multi level
|
|
537
553
|
// universal compaction when allow_trivial_move option is set
|
|
@@ -1954,6 +1970,15 @@ TEST_F(CompactionPickerTest, OverlappingUserKeys11) {
|
|
|
1954
1970
|
ASSERT_EQ(7U, compaction->input(1, 0)->fd.GetNumber());
|
|
1955
1971
|
}
|
|
1956
1972
|
|
|
1973
|
+
TEST_F(CompactionPickerTest, FileTtlBoosterLargeNumLevels) {
|
|
1974
|
+
const uint64_t kCurrentTime = 1000000;
|
|
1975
|
+
FileTtlBooster booster(kCurrentTime, /*ttl=*/2048,
|
|
1976
|
+
/*num_non_empty_levels=*/100, /*level=*/1);
|
|
1977
|
+
FileMetaData meta;
|
|
1978
|
+
meta.oldest_ancester_time = kCurrentTime - 1023;
|
|
1979
|
+
ASSERT_EQ(1, booster.GetBoostScore(&meta));
|
|
1980
|
+
}
|
|
1981
|
+
|
|
1957
1982
|
TEST_F(CompactionPickerTest, FileTtlBooster) {
|
|
1958
1983
|
// Set TTL to 2048
|
|
1959
1984
|
// TTL boosting for all levels starts at 1024,
|
|
@@ -133,8 +133,8 @@ class UniversalCompactionBuilder {
|
|
|
133
133
|
UniversalCompactionPicker* picker_;
|
|
134
134
|
LogBuffer* log_buffer_;
|
|
135
135
|
|
|
136
|
-
static std::vector<SortedRun> CalculateSortedRuns(
|
|
137
|
-
const VersionStorageInfo& vstorage);
|
|
136
|
+
static std::vector<UniversalCompactionBuilder::SortedRun> CalculateSortedRuns(
|
|
137
|
+
const VersionStorageInfo& vstorage, int last_level);
|
|
138
138
|
|
|
139
139
|
// Pick a path ID to place a newly generated file, with its estimated file
|
|
140
140
|
// size.
|
|
@@ -339,13 +339,13 @@ void UniversalCompactionBuilder::SortedRun::DumpSizeInfo(
|
|
|
339
339
|
|
|
340
340
|
std::vector<UniversalCompactionBuilder::SortedRun>
|
|
341
341
|
UniversalCompactionBuilder::CalculateSortedRuns(
|
|
342
|
-
const VersionStorageInfo& vstorage) {
|
|
342
|
+
const VersionStorageInfo& vstorage, int last_level) {
|
|
343
343
|
std::vector<UniversalCompactionBuilder::SortedRun> ret;
|
|
344
344
|
for (FileMetaData* f : vstorage.LevelFiles(0)) {
|
|
345
345
|
ret.emplace_back(0, f, f->fd.GetFileSize(), f->compensated_file_size,
|
|
346
346
|
f->being_compacted);
|
|
347
347
|
}
|
|
348
|
-
for (int level = 1; level
|
|
348
|
+
for (int level = 1; level <= last_level; level++) {
|
|
349
349
|
uint64_t total_compensated_size = 0U;
|
|
350
350
|
uint64_t total_size = 0U;
|
|
351
351
|
bool being_compacted = false;
|
|
@@ -374,7 +374,9 @@ UniversalCompactionBuilder::CalculateSortedRuns(
|
|
|
374
374
|
Compaction* UniversalCompactionBuilder::PickCompaction() {
|
|
375
375
|
const int kLevel0 = 0;
|
|
376
376
|
score_ = vstorage_->CompactionScore(kLevel0);
|
|
377
|
-
|
|
377
|
+
int max_output_level =
|
|
378
|
+
vstorage_->MaxOutputLevel(ioptions_.allow_ingest_behind);
|
|
379
|
+
sorted_runs_ = CalculateSortedRuns(*vstorage_, max_output_level);
|
|
378
380
|
|
|
379
381
|
if (sorted_runs_.size() == 0 ||
|
|
380
382
|
(vstorage_->FilesMarkedForPeriodicCompaction().empty() &&
|
|
@@ -471,6 +473,8 @@ Compaction* UniversalCompactionBuilder::PickCompaction() {
|
|
|
471
473
|
"UniversalCompactionBuilder::PickCompaction:Return", nullptr);
|
|
472
474
|
return nullptr;
|
|
473
475
|
}
|
|
476
|
+
assert(c->output_level() <=
|
|
477
|
+
vstorage_->MaxOutputLevel(ioptions_.allow_ingest_behind));
|
|
474
478
|
|
|
475
479
|
if (mutable_cf_options_.compaction_options_universal.allow_trivial_move ==
|
|
476
480
|
true &&
|
|
@@ -698,22 +702,18 @@ Compaction* UniversalCompactionBuilder::PickCompactionToReduceSortedRuns(
|
|
|
698
702
|
GetPathId(ioptions_, mutable_cf_options_, estimated_total_size);
|
|
699
703
|
int start_level = sorted_runs_[start_index].level;
|
|
700
704
|
int output_level;
|
|
705
|
+
// last level is reserved for the files ingested behind
|
|
706
|
+
int max_output_level =
|
|
707
|
+
vstorage_->MaxOutputLevel(ioptions_.allow_ingest_behind);
|
|
701
708
|
if (first_index_after == sorted_runs_.size()) {
|
|
702
|
-
output_level =
|
|
709
|
+
output_level = max_output_level;
|
|
703
710
|
} else if (sorted_runs_[first_index_after].level == 0) {
|
|
704
711
|
output_level = 0;
|
|
705
712
|
} else {
|
|
706
713
|
output_level = sorted_runs_[first_index_after].level - 1;
|
|
707
714
|
}
|
|
708
715
|
|
|
709
|
-
|
|
710
|
-
if (ioptions_.allow_ingest_behind &&
|
|
711
|
-
(output_level == vstorage_->num_levels() - 1)) {
|
|
712
|
-
assert(output_level > 1);
|
|
713
|
-
output_level--;
|
|
714
|
-
}
|
|
715
|
-
|
|
716
|
-
std::vector<CompactionInputFiles> inputs(vstorage_->num_levels());
|
|
716
|
+
std::vector<CompactionInputFiles> inputs(max_output_level + 1);
|
|
717
717
|
for (size_t i = 0; i < inputs.size(); ++i) {
|
|
718
718
|
inputs[i].level = start_level + static_cast<int>(i);
|
|
719
719
|
}
|
|
@@ -1192,8 +1192,10 @@ Compaction* UniversalCompactionBuilder::PickDeleteTriggeredCompaction() {
|
|
|
1192
1192
|
return nullptr;
|
|
1193
1193
|
}
|
|
1194
1194
|
|
|
1195
|
+
int max_output_level =
|
|
1196
|
+
vstorage_->MaxOutputLevel(ioptions_.allow_ingest_behind);
|
|
1195
1197
|
// Pick the first non-empty level after the start_level
|
|
1196
|
-
for (output_level = start_level + 1; output_level
|
|
1198
|
+
for (output_level = start_level + 1; output_level <= max_output_level;
|
|
1197
1199
|
output_level++) {
|
|
1198
1200
|
if (vstorage_->NumLevelFiles(output_level) != 0) {
|
|
1199
1201
|
break;
|
|
@@ -1201,9 +1203,9 @@ Compaction* UniversalCompactionBuilder::PickDeleteTriggeredCompaction() {
|
|
|
1201
1203
|
}
|
|
1202
1204
|
|
|
1203
1205
|
// If all higher levels are empty, pick the highest level as output level
|
|
1204
|
-
if (output_level
|
|
1206
|
+
if (output_level > max_output_level) {
|
|
1205
1207
|
if (start_level == 0) {
|
|
1206
|
-
output_level =
|
|
1208
|
+
output_level = max_output_level;
|
|
1207
1209
|
} else {
|
|
1208
1210
|
// If start level is non-zero and all higher levels are empty, this
|
|
1209
1211
|
// compaction will translate into a trivial move. Since the idea is
|
|
@@ -1212,11 +1214,7 @@ Compaction* UniversalCompactionBuilder::PickDeleteTriggeredCompaction() {
|
|
|
1212
1214
|
return nullptr;
|
|
1213
1215
|
}
|
|
1214
1216
|
}
|
|
1215
|
-
|
|
1216
|
-
output_level == vstorage_->num_levels() - 1) {
|
|
1217
|
-
assert(output_level > 1);
|
|
1218
|
-
output_level--;
|
|
1219
|
-
}
|
|
1217
|
+
assert(output_level <= max_output_level);
|
|
1220
1218
|
|
|
1221
1219
|
if (output_level != 0) {
|
|
1222
1220
|
if (start_level == 0) {
|
|
@@ -1293,8 +1291,9 @@ Compaction* UniversalCompactionBuilder::PickCompactionWithSortedRunRange(
|
|
|
1293
1291
|
uint32_t path_id =
|
|
1294
1292
|
GetPathId(ioptions_, mutable_cf_options_, estimated_total_size);
|
|
1295
1293
|
int start_level = sorted_runs_[start_index].level;
|
|
1296
|
-
|
|
1297
|
-
|
|
1294
|
+
int max_output_level =
|
|
1295
|
+
vstorage_->MaxOutputLevel(ioptions_.allow_ingest_behind);
|
|
1296
|
+
std::vector<CompactionInputFiles> inputs(max_output_level + 1);
|
|
1298
1297
|
for (size_t i = 0; i < inputs.size(); ++i) {
|
|
1299
1298
|
inputs[i].level = start_level + static_cast<int>(i);
|
|
1300
1299
|
}
|
|
@@ -1331,13 +1330,7 @@ Compaction* UniversalCompactionBuilder::PickCompactionWithSortedRunRange(
|
|
|
1331
1330
|
|
|
1332
1331
|
int output_level;
|
|
1333
1332
|
if (end_index == sorted_runs_.size() - 1) {
|
|
1334
|
-
|
|
1335
|
-
output_level = vstorage_->num_levels() - 1;
|
|
1336
|
-
// last level is reserved for the files ingested behind
|
|
1337
|
-
if (ioptions_.allow_ingest_behind) {
|
|
1338
|
-
assert(output_level > 1);
|
|
1339
|
-
output_level--;
|
|
1340
|
-
}
|
|
1333
|
+
output_level = max_output_level;
|
|
1341
1334
|
} else {
|
|
1342
1335
|
// if it's not including all sorted_runs, it can only output to the level
|
|
1343
1336
|
// above the `end_index + 1` sorted_run.
|
|
@@ -53,8 +53,10 @@ class FileTtlBooster {
|
|
|
53
53
|
enabled_ = true;
|
|
54
54
|
uint64_t all_boost_start_age = ttl / 2;
|
|
55
55
|
uint64_t all_boost_age_range = (ttl / 32) * 31 - all_boost_start_age;
|
|
56
|
+
// TODO(cbi): more reasonable algorithm that gives different values
|
|
57
|
+
// when num_non_empty_levels - level - 1 > 63.
|
|
56
58
|
uint64_t boost_age_range =
|
|
57
|
-
all_boost_age_range >> (num_non_empty_levels - level - 1);
|
|
59
|
+
all_boost_age_range >> std::min(63, num_non_empty_levels - level - 1);
|
|
58
60
|
boost_age_start_ = all_boost_start_age + boost_age_range;
|
|
59
61
|
const uint64_t kBoostRatio = 16;
|
|
60
62
|
// prevent 0 value to avoid divide 0 error.
|
|
@@ -209,7 +209,7 @@ TEST_P(TieredCompactionTest, SequenceBasedTieredStorageUniversal) {
|
|
|
209
209
|
seq_history.emplace_back(dbfull()->GetLatestSequenceNumber());
|
|
210
210
|
expect_stats[0].Add(kBasicFlushStats);
|
|
211
211
|
}
|
|
212
|
-
ASSERT_OK(dbfull()->
|
|
212
|
+
ASSERT_OK(dbfull()->TEST_WaitForCompact());
|
|
213
213
|
|
|
214
214
|
// the penultimate level file temperature is not cold, all data are output to
|
|
215
215
|
// the penultimate level.
|
|
@@ -374,7 +374,7 @@ TEST_P(TieredCompactionTest, RangeBasedTieredStorageUniversal) {
|
|
|
374
374
|
ASSERT_OK(Flush());
|
|
375
375
|
expect_stats[0].Add(kBasicFlushStats);
|
|
376
376
|
}
|
|
377
|
-
ASSERT_OK(dbfull()->
|
|
377
|
+
ASSERT_OK(dbfull()->TEST_WaitForCompact());
|
|
378
378
|
ASSERT_EQ("0,0,0,0,0,1,1", FilesPerLevel());
|
|
379
379
|
ASSERT_GT(GetSstSizeHelper(Temperature::kUnknown), 0);
|
|
380
380
|
ASSERT_GT(GetSstSizeHelper(Temperature::kCold), 0);
|
|
@@ -446,7 +446,7 @@ TEST_P(TieredCompactionTest, RangeBasedTieredStorageUniversal) {
|
|
|
446
446
|
ASSERT_OK(Flush());
|
|
447
447
|
}
|
|
448
448
|
// make sure the compaction is able to finish
|
|
449
|
-
ASSERT_OK(dbfull()->
|
|
449
|
+
ASSERT_OK(dbfull()->TEST_WaitForCompact());
|
|
450
450
|
ASSERT_EQ("0,0,0,0,0,1,1", FilesPerLevel());
|
|
451
451
|
ASSERT_GT(GetSstSizeHelper(Temperature::kUnknown), 0);
|
|
452
452
|
ASSERT_GT(GetSstSizeHelper(Temperature::kCold), 0);
|
|
@@ -911,7 +911,7 @@ TEST_P(TieredCompactionTest, SequenceBasedTieredStorageLevel) {
|
|
|
911
911
|
ASSERT_OK(Flush());
|
|
912
912
|
expect_stats[0].Add(kBasicFlushStats);
|
|
913
913
|
}
|
|
914
|
-
ASSERT_OK(dbfull()->
|
|
914
|
+
ASSERT_OK(dbfull()->TEST_WaitForCompact());
|
|
915
915
|
|
|
916
916
|
// non last level is hot
|
|
917
917
|
ASSERT_EQ("0,1", FilesPerLevel());
|
|
@@ -954,7 +954,7 @@ TEST_P(TieredCompactionTest, SequenceBasedTieredStorageLevel) {
|
|
|
954
954
|
ASSERT_OK(Flush());
|
|
955
955
|
seq_history.emplace_back(dbfull()->GetLatestSequenceNumber());
|
|
956
956
|
}
|
|
957
|
-
ASSERT_OK(dbfull()->
|
|
957
|
+
ASSERT_OK(dbfull()->TEST_WaitForCompact());
|
|
958
958
|
ASSERT_EQ("0,1,0,0,0,0,1", FilesPerLevel());
|
|
959
959
|
ASSERT_GT(GetSstSizeHelper(Temperature::kUnknown), 0);
|
|
960
960
|
ASSERT_GT(GetSstSizeHelper(Temperature::kCold), 0);
|
|
@@ -1005,7 +1005,7 @@ TEST_P(TieredCompactionTest, SequenceBasedTieredStorageLevel) {
|
|
|
1005
1005
|
ASSERT_OK(Flush());
|
|
1006
1006
|
seq_history.emplace_back(dbfull()->GetLatestSequenceNumber());
|
|
1007
1007
|
}
|
|
1008
|
-
ASSERT_OK(dbfull()->
|
|
1008
|
+
ASSERT_OK(dbfull()->TEST_WaitForCompact());
|
|
1009
1009
|
|
|
1010
1010
|
latest_cold_seq = seq_history[0];
|
|
1011
1011
|
ASSERT_OK(db_->CompactRange(cro, nullptr, nullptr));
|
|
@@ -1135,7 +1135,7 @@ TEST_P(TieredCompactionTest, RangeBasedTieredStorageLevel) {
|
|
|
1135
1135
|
}
|
|
1136
1136
|
ASSERT_OK(Flush());
|
|
1137
1137
|
}
|
|
1138
|
-
ASSERT_OK(dbfull()->
|
|
1138
|
+
ASSERT_OK(dbfull()->TEST_WaitForCompact());
|
|
1139
1139
|
ASSERT_EQ("0,0,0,0,0,1,1", FilesPerLevel());
|
|
1140
1140
|
ASSERT_GT(GetSstSizeHelper(Temperature::kUnknown), 0);
|
|
1141
1141
|
ASSERT_GT(GetSstSizeHelper(Temperature::kCold), 0);
|
|
@@ -1265,7 +1265,7 @@ TEST_F(PrecludeLastLevelTest, MigrationFromPreserveTimeManualCompaction) {
|
|
|
1265
1265
|
}
|
|
1266
1266
|
ASSERT_OK(Flush());
|
|
1267
1267
|
}
|
|
1268
|
-
ASSERT_OK(dbfull()->
|
|
1268
|
+
ASSERT_OK(dbfull()->TEST_WaitForCompact());
|
|
1269
1269
|
|
|
1270
1270
|
// all data is pushed to the last level
|
|
1271
1271
|
ASSERT_EQ("0,0,0,0,0,0,1", FilesPerLevel());
|
|
@@ -1327,7 +1327,7 @@ TEST_F(PrecludeLastLevelTest, MigrationFromPreserveTimeAutoCompaction) {
|
|
|
1327
1327
|
}
|
|
1328
1328
|
ASSERT_OK(Flush());
|
|
1329
1329
|
}
|
|
1330
|
-
ASSERT_OK(dbfull()->
|
|
1330
|
+
ASSERT_OK(dbfull()->TEST_WaitForCompact());
|
|
1331
1331
|
|
|
1332
1332
|
// all data is pushed to the last level
|
|
1333
1333
|
ASSERT_EQ("0,0,0,0,0,0,1", FilesPerLevel());
|
|
@@ -1360,7 +1360,7 @@ TEST_F(PrecludeLastLevelTest, MigrationFromPreserveTimeAutoCompaction) {
|
|
|
1360
1360
|
});
|
|
1361
1361
|
}
|
|
1362
1362
|
ASSERT_OK(Flush());
|
|
1363
|
-
ASSERT_OK(dbfull()->
|
|
1363
|
+
ASSERT_OK(dbfull()->TEST_WaitForCompact());
|
|
1364
1364
|
}
|
|
1365
1365
|
|
|
1366
1366
|
// all data is moved up to the penultimate level
|
|
@@ -1403,7 +1403,7 @@ TEST_F(PrecludeLastLevelTest, MigrationFromPreserveTimePartial) {
|
|
|
1403
1403
|
}
|
|
1404
1404
|
ASSERT_OK(Flush());
|
|
1405
1405
|
}
|
|
1406
|
-
ASSERT_OK(dbfull()->
|
|
1406
|
+
ASSERT_OK(dbfull()->TEST_WaitForCompact());
|
|
1407
1407
|
|
|
1408
1408
|
// all data is pushed to the last level
|
|
1409
1409
|
ASSERT_EQ("0,0,0,0,0,0,1", FilesPerLevel());
|
|
@@ -1530,7 +1530,7 @@ TEST_F(PrecludeLastLevelTest, LastLevelOnlyCompactionPartial) {
|
|
|
1530
1530
|
}
|
|
1531
1531
|
ASSERT_OK(Flush());
|
|
1532
1532
|
}
|
|
1533
|
-
ASSERT_OK(dbfull()->
|
|
1533
|
+
ASSERT_OK(dbfull()->TEST_WaitForCompact());
|
|
1534
1534
|
|
|
1535
1535
|
// all data is pushed to the last level
|
|
1536
1536
|
ASSERT_EQ("0,0,0,0,0,0,1", FilesPerLevel());
|
|
@@ -1609,7 +1609,7 @@ TEST_P(PrecludeLastLevelTestWithParms, LastLevelOnlyCompactionNoPreclude) {
|
|
|
1609
1609
|
}
|
|
1610
1610
|
ASSERT_OK(Flush());
|
|
1611
1611
|
}
|
|
1612
|
-
ASSERT_OK(dbfull()->
|
|
1612
|
+
ASSERT_OK(dbfull()->TEST_WaitForCompact());
|
|
1613
1613
|
|
|
1614
1614
|
// all data is pushed to the last level
|
|
1615
1615
|
ASSERT_EQ("0,0,0,0,0,0,1", FilesPerLevel());
|
|
@@ -1705,7 +1705,7 @@ TEST_P(PrecludeLastLevelTestWithParms, LastLevelOnlyCompactionNoPreclude) {
|
|
|
1705
1705
|
|
|
1706
1706
|
manual_compaction_thread.join();
|
|
1707
1707
|
|
|
1708
|
-
ASSERT_OK(dbfull()->
|
|
1708
|
+
ASSERT_OK(dbfull()->TEST_WaitForCompact());
|
|
1709
1709
|
|
|
1710
1710
|
if (enable_preclude_last_level) {
|
|
1711
1711
|
ASSERT_NE("0,0,0,0,0,1,1", FilesPerLevel());
|
|
@@ -1841,7 +1841,7 @@ TEST_P(PrecludeLastLevelTestWithParms, PeriodicCompactionToPenultimateLevel) {
|
|
|
1841
1841
|
}
|
|
1842
1842
|
ASSERT_OK(Flush());
|
|
1843
1843
|
|
|
1844
|
-
ASSERT_OK(dbfull()->
|
|
1844
|
+
ASSERT_OK(dbfull()->TEST_WaitForCompact());
|
|
1845
1845
|
|
|
1846
1846
|
stop_token.reset();
|
|
1847
1847
|
|
|
@@ -1940,7 +1940,7 @@ TEST_F(PrecludeLastLevelTest, PartialPenultimateLevelCompaction) {
|
|
|
1940
1940
|
ASSERT_OK(Flush());
|
|
1941
1941
|
}
|
|
1942
1942
|
|
|
1943
|
-
ASSERT_OK(dbfull()->
|
|
1943
|
+
ASSERT_OK(dbfull()->TEST_WaitForCompact());
|
|
1944
1944
|
|
|
1945
1945
|
// L5: [0,19] [20,39] [40,299]
|
|
1946
1946
|
// L6: [0, 299]
|
|
@@ -2106,7 +2106,7 @@ TEST_F(PrecludeLastLevelTest, RangeDelsCauseFileEndpointsToOverlap) {
|
|
|
2106
2106
|
Slice begin_key(begin_key_buf), end_key(end_key_buf);
|
|
2107
2107
|
ASSERT_OK(db_->SuggestCompactRange(db_->DefaultColumnFamily(), &begin_key,
|
|
2108
2108
|
&end_key));
|
|
2109
|
-
ASSERT_OK(dbfull()->
|
|
2109
|
+
ASSERT_OK(dbfull()->TEST_WaitForCompact());
|
|
2110
2110
|
ASSERT_EQ("0,0,0,0,0,3,3", FilesPerLevel());
|
|
2111
2111
|
ASSERT_EQ(1, per_key_comp_num);
|
|
2112
2112
|
verify_db();
|
|
@@ -2116,7 +2116,7 @@ TEST_F(PrecludeLastLevelTest, RangeDelsCauseFileEndpointsToOverlap) {
|
|
|
2116
2116
|
db_->ReleaseSnapshot(snap2);
|
|
2117
2117
|
ASSERT_OK(db_->SuggestCompactRange(db_->DefaultColumnFamily(), &begin_key,
|
|
2118
2118
|
&end_key));
|
|
2119
|
-
ASSERT_OK(dbfull()->
|
|
2119
|
+
ASSERT_OK(dbfull()->TEST_WaitForCompact());
|
|
2120
2120
|
ASSERT_EQ("0,0,0,0,0,3,3", FilesPerLevel());
|
|
2121
2121
|
ASSERT_EQ(2, per_key_comp_num);
|
|
2122
2122
|
verify_db();
|
|
@@ -2126,7 +2126,7 @@ TEST_F(PrecludeLastLevelTest, RangeDelsCauseFileEndpointsToOverlap) {
|
|
|
2126
2126
|
db_->ReleaseSnapshot(snap1);
|
|
2127
2127
|
ASSERT_OK(db_->SuggestCompactRange(db_->DefaultColumnFamily(), &begin_key,
|
|
2128
2128
|
&end_key));
|
|
2129
|
-
ASSERT_OK(dbfull()->
|
|
2129
|
+
ASSERT_OK(dbfull()->TEST_WaitForCompact());
|
|
2130
2130
|
ASSERT_EQ("0,0,0,0,0,2,3", FilesPerLevel());
|
|
2131
2131
|
ASSERT_EQ(3, per_key_comp_num);
|
|
2132
2132
|
verify_db();
|
|
@@ -77,7 +77,7 @@ void DoRandomIteraratorTest(DB* db, std::vector<std::string> source_strings,
|
|
|
77
77
|
|
|
78
78
|
for (int i = 0; i < num_writes; i++) {
|
|
79
79
|
if (num_trigger_flush > 0 && i != 0 && i % num_trigger_flush == 0) {
|
|
80
|
-
db->Flush(FlushOptions());
|
|
80
|
+
ASSERT_OK(db->Flush(FlushOptions()));
|
|
81
81
|
}
|
|
82
82
|
|
|
83
83
|
int type = rnd->Uniform(2);
|
|
@@ -156,6 +156,7 @@ void DoRandomIteraratorTest(DB* db, std::vector<std::string> source_strings,
|
|
|
156
156
|
if (map.find(key) == map.end()) {
|
|
157
157
|
ASSERT_TRUE(status.IsNotFound());
|
|
158
158
|
} else {
|
|
159
|
+
ASSERT_OK(status);
|
|
159
160
|
ASSERT_EQ(map[key], result);
|
|
160
161
|
}
|
|
161
162
|
break;
|