@nxtedition/rocksdb 8.2.8 → 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
|
@@ -39,6 +39,7 @@
|
|
|
39
39
|
#include "db/version_builder.h"
|
|
40
40
|
#include "db/version_edit.h"
|
|
41
41
|
#include "db/version_edit_handler.h"
|
|
42
|
+
#include "file/file_util.h"
|
|
42
43
|
#include "table/compaction_merging_iterator.h"
|
|
43
44
|
|
|
44
45
|
#if USE_COROUTINES
|
|
@@ -1947,8 +1948,14 @@ double VersionStorageInfo::GetEstimatedCompressionRatioAtLevel(
|
|
|
1947
1948
|
uint64_t sum_file_size_bytes = 0;
|
|
1948
1949
|
uint64_t sum_data_size_bytes = 0;
|
|
1949
1950
|
for (auto* file_meta : files_[level]) {
|
|
1950
|
-
|
|
1951
|
-
|
|
1951
|
+
auto raw_size = file_meta->raw_key_size + file_meta->raw_value_size;
|
|
1952
|
+
// Check if the table property is properly initialized. It might not be
|
|
1953
|
+
// because in `UpdateAccumulatedStats` we limit the maximum number of
|
|
1954
|
+
// properties to read once.
|
|
1955
|
+
if (raw_size > 0) {
|
|
1956
|
+
sum_file_size_bytes += file_meta->fd.GetFileSize();
|
|
1957
|
+
sum_data_size_bytes += raw_size;
|
|
1958
|
+
}
|
|
1952
1959
|
}
|
|
1953
1960
|
if (sum_file_size_bytes == 0) {
|
|
1954
1961
|
return -1.0;
|
|
@@ -2107,7 +2114,8 @@ VersionStorageInfo::VersionStorageInfo(
|
|
|
2107
2114
|
const Comparator* user_comparator, int levels,
|
|
2108
2115
|
CompactionStyle compaction_style, VersionStorageInfo* ref_vstorage,
|
|
2109
2116
|
bool _force_consistency_checks,
|
|
2110
|
-
EpochNumberRequirement epoch_number_requirement
|
|
2117
|
+
EpochNumberRequirement epoch_number_requirement, SystemClock* clock,
|
|
2118
|
+
uint32_t bottommost_file_compaction_delay)
|
|
2111
2119
|
: internal_comparator_(internal_comparator),
|
|
2112
2120
|
user_comparator_(user_comparator),
|
|
2113
2121
|
// cfd is nullptr if Version is dummy
|
|
@@ -2135,6 +2143,8 @@ VersionStorageInfo::VersionStorageInfo(
|
|
|
2135
2143
|
current_num_deletions_(0),
|
|
2136
2144
|
current_num_samples_(0),
|
|
2137
2145
|
estimated_compaction_needed_bytes_(0),
|
|
2146
|
+
clock_(clock),
|
|
2147
|
+
bottommost_file_compaction_delay_(bottommost_file_compaction_delay),
|
|
2138
2148
|
finalized_(false),
|
|
2139
2149
|
force_consistency_checks_(_force_consistency_checks),
|
|
2140
2150
|
epoch_number_requirement_(epoch_number_requirement) {
|
|
@@ -2179,7 +2189,11 @@ Version::Version(ColumnFamilyData* column_family_data, VersionSet* vset,
|
|
|
2179
2189
|
? nullptr
|
|
2180
2190
|
: cfd_->current()->storage_info(),
|
|
2181
2191
|
cfd_ == nullptr ? false : cfd_->ioptions()->force_consistency_checks,
|
|
2182
|
-
epoch_number_requirement
|
|
2192
|
+
epoch_number_requirement,
|
|
2193
|
+
cfd_ == nullptr ? nullptr : cfd_->ioptions()->clock,
|
|
2194
|
+
cfd_ == nullptr
|
|
2195
|
+
? 0
|
|
2196
|
+
: mutable_cf_options.bottommost_file_compaction_delay),
|
|
2183
2197
|
vset_(vset),
|
|
2184
2198
|
next_(this),
|
|
2185
2199
|
prev_(this),
|
|
@@ -2190,7 +2204,12 @@ Version::Version(ColumnFamilyData* column_family_data, VersionSet* vset,
|
|
|
2190
2204
|
MaxFileSizeForL0MetaPin(mutable_cf_options_)),
|
|
2191
2205
|
version_number_(version_number),
|
|
2192
2206
|
io_tracer_(io_tracer),
|
|
2193
|
-
use_async_io_(
|
|
2207
|
+
use_async_io_(false) {
|
|
2208
|
+
if (CheckFSFeatureSupport(env_->GetFileSystem().get(),
|
|
2209
|
+
FSSupportedOps::kAsyncIO)) {
|
|
2210
|
+
use_async_io_ = true;
|
|
2211
|
+
}
|
|
2212
|
+
}
|
|
2194
2213
|
|
|
2195
2214
|
Status Version::GetBlob(const ReadOptions& read_options, const Slice& user_key,
|
|
2196
2215
|
const Slice& blob_index_slice,
|
|
@@ -3390,6 +3409,7 @@ void VersionStorageInfo::ComputeCompactionScore(
|
|
|
3390
3409
|
// maintaining it to be over 1.0, we scale the original score by 10x
|
|
3391
3410
|
// if it is larger than 1.0.
|
|
3392
3411
|
const double kScoreScale = 10.0;
|
|
3412
|
+
int max_output_level = MaxOutputLevel(immutable_options.allow_ingest_behind);
|
|
3393
3413
|
for (int level = 0; level <= MaxInputLevel(); level++) {
|
|
3394
3414
|
double score;
|
|
3395
3415
|
if (level == 0) {
|
|
@@ -3417,7 +3437,7 @@ void VersionStorageInfo::ComputeCompactionScore(
|
|
|
3417
3437
|
// For universal compaction, we use level0 score to indicate
|
|
3418
3438
|
// compaction score for the whole DB. Adding other levels as if
|
|
3419
3439
|
// they are L0 files.
|
|
3420
|
-
for (int i = 1; i
|
|
3440
|
+
for (int i = 1; i <= max_output_level; i++) {
|
|
3421
3441
|
// It's possible that a subset of the files in a level may be in a
|
|
3422
3442
|
// compaction, due to delete triggered compaction or trivial move.
|
|
3423
3443
|
// In that case, the below check may not catch a level being
|
|
@@ -3459,12 +3479,11 @@ void VersionStorageInfo::ComputeCompactionScore(
|
|
|
3459
3479
|
// Level-based involves L0->L0 compactions that can lead to oversized
|
|
3460
3480
|
// L0 files. Take into account size as well to avoid later giant
|
|
3461
3481
|
// compactions to the base level.
|
|
3462
|
-
// If score in L0 is always too high, L0->
|
|
3463
|
-
// prioritized over
|
|
3464
|
-
// too large. But if L0 score isn't high enough, L0 will
|
|
3465
|
-
// and data is not moved to
|
|
3466
|
-
//
|
|
3467
|
-
// L0 oversizing, and we also need to consider total size of L0.
|
|
3482
|
+
// If score in L0 is always too high, L0->LBase will always be
|
|
3483
|
+
// prioritized over LBase->LBase+1 compaction and LBase will
|
|
3484
|
+
// accumulate to too large. But if L0 score isn't high enough, L0 will
|
|
3485
|
+
// accumulate and data is not moved to LBase fast enough. The score
|
|
3486
|
+
// calculation below takes into account L0 size vs LBase size.
|
|
3468
3487
|
if (immutable_options.level_compaction_dynamic_level_bytes) {
|
|
3469
3488
|
if (total_size >= mutable_cf_options.max_bytes_for_level_base) {
|
|
3470
3489
|
// When calculating estimated_compaction_needed_bytes, we assume
|
|
@@ -3476,10 +3495,13 @@ void VersionStorageInfo::ComputeCompactionScore(
|
|
|
3476
3495
|
score = std::max(score, 1.01);
|
|
3477
3496
|
}
|
|
3478
3497
|
if (total_size > level_max_bytes_[base_level_]) {
|
|
3479
|
-
// In this case, we compare L0 size with actual
|
|
3480
|
-
// sure score is more than 1.0 (10.0 after scaled) if L0 is
|
|
3481
|
-
// than
|
|
3482
|
-
//
|
|
3498
|
+
// In this case, we compare L0 size with actual LBase size and
|
|
3499
|
+
// make sure score is more than 1.0 (10.0 after scaled) if L0 is
|
|
3500
|
+
// larger than LBase. Since LBase score = LBase size /
|
|
3501
|
+
// (target size + total_downcompact_bytes) where
|
|
3502
|
+
// total_downcompact_bytes = total_size > LBase size,
|
|
3503
|
+
// LBase score is lower than 10.0. So L0->LBase is prioritized
|
|
3504
|
+
// over LBase -> LBase+1.
|
|
3483
3505
|
uint64_t base_level_size = 0;
|
|
3484
3506
|
for (auto f : files_[base_level_]) {
|
|
3485
3507
|
base_level_size += f->compensated_file_size;
|
|
@@ -3561,16 +3583,18 @@ void VersionStorageInfo::ComputeCompactionScore(
|
|
|
3561
3583
|
}
|
|
3562
3584
|
}
|
|
3563
3585
|
}
|
|
3564
|
-
ComputeFilesMarkedForCompaction();
|
|
3586
|
+
ComputeFilesMarkedForCompaction(max_output_level);
|
|
3565
3587
|
if (!immutable_options.allow_ingest_behind) {
|
|
3566
3588
|
ComputeBottommostFilesMarkedForCompaction();
|
|
3567
3589
|
}
|
|
3568
|
-
if (mutable_cf_options.ttl > 0
|
|
3590
|
+
if (mutable_cf_options.ttl > 0 &&
|
|
3591
|
+
compaction_style_ == kCompactionStyleLevel) {
|
|
3569
3592
|
ComputeExpiredTtlFiles(immutable_options, mutable_cf_options.ttl);
|
|
3570
3593
|
}
|
|
3571
3594
|
if (mutable_cf_options.periodic_compaction_seconds > 0) {
|
|
3572
3595
|
ComputeFilesMarkedForPeriodicCompaction(
|
|
3573
|
-
immutable_options, mutable_cf_options.periodic_compaction_seconds
|
|
3596
|
+
immutable_options, mutable_cf_options.periodic_compaction_seconds,
|
|
3597
|
+
max_output_level);
|
|
3574
3598
|
}
|
|
3575
3599
|
|
|
3576
3600
|
if (mutable_cf_options.enable_blob_garbage_collection &&
|
|
@@ -3584,14 +3608,14 @@ void VersionStorageInfo::ComputeCompactionScore(
|
|
|
3584
3608
|
EstimateCompactionBytesNeeded(mutable_cf_options);
|
|
3585
3609
|
}
|
|
3586
3610
|
|
|
3587
|
-
void VersionStorageInfo::ComputeFilesMarkedForCompaction() {
|
|
3611
|
+
void VersionStorageInfo::ComputeFilesMarkedForCompaction(int last_level) {
|
|
3588
3612
|
files_marked_for_compaction_.clear();
|
|
3589
3613
|
int last_qualify_level = 0;
|
|
3590
3614
|
|
|
3591
3615
|
// Do not include files from the last level with data
|
|
3592
3616
|
// If table properties collector suggests a file on the last level,
|
|
3593
3617
|
// we should not move it to a new level.
|
|
3594
|
-
for (int level =
|
|
3618
|
+
for (int level = last_level; level >= 1; level--) {
|
|
3595
3619
|
if (!files_[level].empty()) {
|
|
3596
3620
|
last_qualify_level = level - 1;
|
|
3597
3621
|
break;
|
|
@@ -3635,7 +3659,7 @@ void VersionStorageInfo::ComputeExpiredTtlFiles(
|
|
|
3635
3659
|
|
|
3636
3660
|
void VersionStorageInfo::ComputeFilesMarkedForPeriodicCompaction(
|
|
3637
3661
|
const ImmutableOptions& ioptions,
|
|
3638
|
-
const uint64_t periodic_compaction_seconds) {
|
|
3662
|
+
const uint64_t periodic_compaction_seconds, int last_level) {
|
|
3639
3663
|
assert(periodic_compaction_seconds > 0);
|
|
3640
3664
|
|
|
3641
3665
|
files_marked_for_periodic_compaction_.clear();
|
|
@@ -3656,7 +3680,7 @@ void VersionStorageInfo::ComputeFilesMarkedForPeriodicCompaction(
|
|
|
3656
3680
|
const uint64_t allowed_time_limit =
|
|
3657
3681
|
current_time - periodic_compaction_seconds;
|
|
3658
3682
|
|
|
3659
|
-
for (int level = 0; level
|
|
3683
|
+
for (int level = 0; level <= last_level; level++) {
|
|
3660
3684
|
for (auto f : files_[level]) {
|
|
3661
3685
|
if (!f->being_compacted) {
|
|
3662
3686
|
// Compute a file's modification time in the following order:
|
|
@@ -4161,14 +4185,48 @@ void VersionStorageInfo::UpdateOldestSnapshot(SequenceNumber seqnum) {
|
|
|
4161
4185
|
void VersionStorageInfo::ComputeBottommostFilesMarkedForCompaction() {
|
|
4162
4186
|
bottommost_files_marked_for_compaction_.clear();
|
|
4163
4187
|
bottommost_files_mark_threshold_ = kMaxSequenceNumber;
|
|
4188
|
+
// If a file's creation time is larger than creation_time_ub,
|
|
4189
|
+
// it is too new to be marked for compaction.
|
|
4190
|
+
int64_t creation_time_ub = 0;
|
|
4191
|
+
bool needs_delay = bottommost_file_compaction_delay_ > 0;
|
|
4192
|
+
if (needs_delay) {
|
|
4193
|
+
int64_t current_time = 0;
|
|
4194
|
+
clock_->GetCurrentTime(¤t_time).PermitUncheckedError();
|
|
4195
|
+
// Note that if GetCurrentTime() fails, current_time will be 0.
|
|
4196
|
+
// We will treat it as is and treat all files as too new.
|
|
4197
|
+
// The subtraction will not underflow since
|
|
4198
|
+
// bottommost_file_compaction_delay_ is of type uint32_t.
|
|
4199
|
+
creation_time_ub =
|
|
4200
|
+
current_time - static_cast<int64_t>(bottommost_file_compaction_delay_);
|
|
4201
|
+
}
|
|
4202
|
+
|
|
4164
4203
|
for (auto& level_and_file : bottommost_files_) {
|
|
4165
4204
|
if (!level_and_file.second->being_compacted &&
|
|
4166
4205
|
level_and_file.second->fd.largest_seqno != 0) {
|
|
4167
4206
|
// largest_seqno might be nonzero due to containing the final key in an
|
|
4168
|
-
// earlier compaction, whose seqnum we didn't zero out.
|
|
4169
|
-
// ensures the file really contains deleted or overwritten keys.
|
|
4207
|
+
// earlier compaction, whose seqnum we didn't zero out.
|
|
4170
4208
|
if (level_and_file.second->fd.largest_seqno < oldest_snapshot_seqnum_) {
|
|
4171
|
-
|
|
4209
|
+
if (!needs_delay) {
|
|
4210
|
+
bottommost_files_marked_for_compaction_.push_back(level_and_file);
|
|
4211
|
+
} else if (creation_time_ub > 0) {
|
|
4212
|
+
int64_t creation_time = static_cast<int64_t>(
|
|
4213
|
+
level_and_file.second->TryGetFileCreationTime());
|
|
4214
|
+
if (creation_time == kUnknownFileCreationTime ||
|
|
4215
|
+
creation_time <= creation_time_ub) {
|
|
4216
|
+
bottommost_files_marked_for_compaction_.push_back(level_and_file);
|
|
4217
|
+
} else {
|
|
4218
|
+
// Just ignore this file for both
|
|
4219
|
+
// bottommost_files_marked_for_compaction_ and
|
|
4220
|
+
// bottommost_files_mark_threshold_. The next time
|
|
4221
|
+
// this method is called, it will try this file again. The method
|
|
4222
|
+
// is called after a new Version creation (compaction, flush, etc.),
|
|
4223
|
+
// after a compaction is picked, and after a snapshot newer than
|
|
4224
|
+
// bottommost_files_mark_threshold_ is released.
|
|
4225
|
+
}
|
|
4226
|
+
} else {
|
|
4227
|
+
// creation_time_ub <= 0, all files are too new to be marked for
|
|
4228
|
+
// compaction.
|
|
4229
|
+
}
|
|
4172
4230
|
} else {
|
|
4173
4231
|
bottommost_files_mark_threshold_ =
|
|
4174
4232
|
std::min(bottommost_files_mark_threshold_,
|
|
@@ -4700,7 +4758,7 @@ void VersionStorageInfo::CalculateBaseBytes(const ImmutableOptions& ioptions,
|
|
|
4700
4758
|
assert(base_level_ == 1);
|
|
4701
4759
|
base_level_size = base_bytes_max;
|
|
4702
4760
|
} else {
|
|
4703
|
-
base_level_size = cur_level_size;
|
|
4761
|
+
base_level_size = std::max(static_cast<uint64_t>(1), cur_level_size);
|
|
4704
4762
|
}
|
|
4705
4763
|
}
|
|
4706
4764
|
|
|
@@ -5107,6 +5165,12 @@ Status VersionSet::ProcessManifestWrites(
|
|
|
5107
5165
|
assert(manifest_writers_.front() == &first_writer);
|
|
5108
5166
|
|
|
5109
5167
|
autovector<VersionEdit*> batch_edits;
|
|
5168
|
+
// This vector keeps track of the corresponding user-defined timestamp size
|
|
5169
|
+
// for `batch_edits` side by side, which is only needed for encoding a
|
|
5170
|
+
// `VersionEdit` that adds new SST files.
|
|
5171
|
+
// Note that anytime `batch_edits` has new element added or get existing
|
|
5172
|
+
// element removed, `batch_edits_ts_sz` should be updated too.
|
|
5173
|
+
autovector<std::optional<size_t>> batch_edits_ts_sz;
|
|
5110
5174
|
autovector<Version*> versions;
|
|
5111
5175
|
autovector<const MutableCFOptions*> mutable_cf_options_ptrs;
|
|
5112
5176
|
std::vector<std::unique_ptr<BaseReferencedVersionBuilder>> builder_guards;
|
|
@@ -5122,6 +5186,7 @@ Status VersionSet::ProcessManifestWrites(
|
|
|
5122
5186
|
// No group commits for column family add or drop
|
|
5123
5187
|
LogAndApplyCFHelper(first_writer.edit_list.front(), &max_last_sequence);
|
|
5124
5188
|
batch_edits.push_back(first_writer.edit_list.front());
|
|
5189
|
+
batch_edits_ts_sz.push_back(std::nullopt);
|
|
5125
5190
|
} else {
|
|
5126
5191
|
auto it = manifest_writers_.cbegin();
|
|
5127
5192
|
size_t group_start = std::numeric_limits<size_t>::max();
|
|
@@ -5198,6 +5263,9 @@ Status VersionSet::ProcessManifestWrites(
|
|
|
5198
5263
|
TEST_SYNC_POINT_CALLBACK("VersionSet::ProcessManifestWrites:NewVersion",
|
|
5199
5264
|
version);
|
|
5200
5265
|
}
|
|
5266
|
+
const Comparator* ucmp = last_writer->cfd->user_comparator();
|
|
5267
|
+
assert(ucmp);
|
|
5268
|
+
std::optional<size_t> edit_ts_sz = ucmp->timestamp_size();
|
|
5201
5269
|
for (const auto& e : last_writer->edit_list) {
|
|
5202
5270
|
if (e->is_in_atomic_group_) {
|
|
5203
5271
|
if (batch_edits.empty() || !batch_edits.back()->is_in_atomic_group_ ||
|
|
@@ -5218,6 +5286,7 @@ Status VersionSet::ProcessManifestWrites(
|
|
|
5218
5286
|
return s;
|
|
5219
5287
|
}
|
|
5220
5288
|
batch_edits.push_back(e);
|
|
5289
|
+
batch_edits_ts_sz.push_back(edit_ts_sz);
|
|
5221
5290
|
}
|
|
5222
5291
|
}
|
|
5223
5292
|
for (int i = 0; i < static_cast<int>(versions.size()); ++i) {
|
|
@@ -5383,9 +5452,11 @@ Status VersionSet::ProcessManifestWrites(
|
|
|
5383
5452
|
#ifndef NDEBUG
|
|
5384
5453
|
size_t idx = 0;
|
|
5385
5454
|
#endif
|
|
5386
|
-
|
|
5455
|
+
assert(batch_edits.size() == batch_edits_ts_sz.size());
|
|
5456
|
+
for (size_t bidx = 0; bidx < batch_edits.size(); bidx++) {
|
|
5457
|
+
auto& e = batch_edits[bidx];
|
|
5387
5458
|
std::string record;
|
|
5388
|
-
if (!e->EncodeTo(&record)) {
|
|
5459
|
+
if (!e->EncodeTo(&record, batch_edits_ts_sz[bidx])) {
|
|
5389
5460
|
s = Status::Corruption("Unable to encode VersionEdit:" +
|
|
5390
5461
|
e->DebugString(true));
|
|
5391
5462
|
break;
|
|
@@ -6278,8 +6349,9 @@ Status VersionSet::GetLiveFilesChecksumInfo(FileChecksumList* checksum_list) {
|
|
|
6278
6349
|
return s;
|
|
6279
6350
|
}
|
|
6280
6351
|
|
|
6281
|
-
Status VersionSet::DumpManifest(
|
|
6282
|
-
|
|
6352
|
+
Status VersionSet::DumpManifest(
|
|
6353
|
+
Options& options, std::string& dscname, bool verbose, bool hex, bool json,
|
|
6354
|
+
const std::vector<ColumnFamilyDescriptor>& cf_descs) {
|
|
6283
6355
|
assert(options.env);
|
|
6284
6356
|
// TODO: plumb Env::IOActivity
|
|
6285
6357
|
const ReadOptions read_options;
|
|
@@ -6305,13 +6377,22 @@ Status VersionSet::DumpManifest(Options& options, std::string& dscname,
|
|
|
6305
6377
|
std::move(file), dscname, db_options_->log_readahead_size, io_tracer_);
|
|
6306
6378
|
}
|
|
6307
6379
|
|
|
6308
|
-
std::
|
|
6380
|
+
std::map<std::string, const ColumnFamilyDescriptor*> cf_name_to_desc;
|
|
6381
|
+
for (const auto& cf_desc : cf_descs) {
|
|
6382
|
+
cf_name_to_desc[cf_desc.name] = &cf_desc;
|
|
6383
|
+
}
|
|
6384
|
+
std::vector<ColumnFamilyDescriptor> final_cf_descs;
|
|
6309
6385
|
for (const auto& cf : column_families) {
|
|
6310
|
-
|
|
6386
|
+
const auto iter = cf_name_to_desc.find(cf);
|
|
6387
|
+
if (iter != cf_name_to_desc.cend()) {
|
|
6388
|
+
final_cf_descs.push_back(*iter->second);
|
|
6389
|
+
} else {
|
|
6390
|
+
final_cf_descs.emplace_back(cf, options);
|
|
6391
|
+
}
|
|
6311
6392
|
}
|
|
6312
6393
|
|
|
6313
|
-
DumpManifestHandler handler(
|
|
6314
|
-
hex, json);
|
|
6394
|
+
DumpManifestHandler handler(final_cf_descs, this, io_tracer_, read_options,
|
|
6395
|
+
verbose, hex, json);
|
|
6315
6396
|
{
|
|
6316
6397
|
VersionSet::LogReporter reporter;
|
|
6317
6398
|
reporter.status = &s;
|
|
@@ -6414,6 +6495,8 @@ Status VersionSet::WriteCurrentStateToManifest(
|
|
|
6414
6495
|
}
|
|
6415
6496
|
edit.SetComparatorName(
|
|
6416
6497
|
cfd->internal_comparator().user_comparator()->Name());
|
|
6498
|
+
edit.SetPersistUserDefinedTimestamps(
|
|
6499
|
+
cfd->ioptions()->persist_user_defined_timestamps);
|
|
6417
6500
|
std::string record;
|
|
6418
6501
|
if (!edit.EncodeTo(&record)) {
|
|
6419
6502
|
return Status::Corruption("Unable to Encode VersionEdit:" +
|
|
@@ -6449,7 +6532,8 @@ Status VersionSet::WriteCurrentStateToManifest(
|
|
|
6449
6532
|
f->oldest_blob_file_number, f->oldest_ancester_time,
|
|
6450
6533
|
f->file_creation_time, f->epoch_number, f->file_checksum,
|
|
6451
6534
|
f->file_checksum_func_name, f->unique_id,
|
|
6452
|
-
f->compensated_range_deletion_size, f->tail_size
|
|
6535
|
+
f->compensated_range_deletion_size, f->tail_size,
|
|
6536
|
+
f->user_defined_timestamps_persisted);
|
|
6453
6537
|
}
|
|
6454
6538
|
}
|
|
6455
6539
|
|
|
@@ -6493,8 +6577,10 @@ Status VersionSet::WriteCurrentStateToManifest(
|
|
|
6493
6577
|
|
|
6494
6578
|
edit.SetLastSequence(descriptor_last_sequence_);
|
|
6495
6579
|
|
|
6580
|
+
const Comparator* ucmp = cfd->user_comparator();
|
|
6581
|
+
assert(ucmp);
|
|
6496
6582
|
std::string record;
|
|
6497
|
-
if (!edit.EncodeTo(&record)) {
|
|
6583
|
+
if (!edit.EncodeTo(&record, ucmp->timestamp_size())) {
|
|
6498
6584
|
return Status::Corruption("Unable to Encode VersionEdit:" +
|
|
6499
6585
|
edit.DebugString(true));
|
|
6500
6586
|
}
|
|
@@ -6846,7 +6932,7 @@ InternalIterator* VersionSet::MakeInputIterator(
|
|
|
6846
6932
|
const FileMetaData& fmd = *flevel->files[i].file_metadata;
|
|
6847
6933
|
if (start.has_value() &&
|
|
6848
6934
|
cfd->user_comparator()->CompareWithoutTimestamp(
|
|
6849
|
-
start
|
|
6935
|
+
*start, fmd.largest.user_key()) > 0) {
|
|
6850
6936
|
continue;
|
|
6851
6937
|
}
|
|
6852
6938
|
// We should be able to filter out the case where the end key
|
|
@@ -6854,7 +6940,7 @@ InternalIterator* VersionSet::MakeInputIterator(
|
|
|
6854
6940
|
// We try to be extra safe here.
|
|
6855
6941
|
if (end.has_value() &&
|
|
6856
6942
|
cfd->user_comparator()->CompareWithoutTimestamp(
|
|
6857
|
-
end
|
|
6943
|
+
*end, fmd.smallest.user_key()) < 0) {
|
|
6858
6944
|
continue;
|
|
6859
6945
|
}
|
|
6860
6946
|
TruncatedRangeDelIterator* range_tombstone_iter = nullptr;
|
|
@@ -7003,6 +7089,16 @@ void VersionSet::GetObsoleteFiles(std::vector<ObsoleteFileInfo>* files,
|
|
|
7003
7089
|
obsolete_manifests_.swap(*manifest_filenames);
|
|
7004
7090
|
}
|
|
7005
7091
|
|
|
7092
|
+
uint64_t VersionSet::GetObsoleteSstFilesSize() const {
|
|
7093
|
+
uint64_t ret = 0;
|
|
7094
|
+
for (auto& f : obsolete_files_) {
|
|
7095
|
+
if (f.metadata != nullptr) {
|
|
7096
|
+
ret += f.metadata->fd.GetFileSize();
|
|
7097
|
+
}
|
|
7098
|
+
}
|
|
7099
|
+
return ret;
|
|
7100
|
+
}
|
|
7101
|
+
|
|
7006
7102
|
ColumnFamilyData* VersionSet::CreateColumnFamily(
|
|
7007
7103
|
const ColumnFamilyOptions& cf_options, const ReadOptions& read_options,
|
|
7008
7104
|
const VersionEdit* edit) {
|
|
@@ -7126,8 +7222,7 @@ Status VersionSet::VerifyFileMetadata(const ReadOptions& read_options,
|
|
|
7126
7222
|
status = table_cache->FindTable(
|
|
7127
7223
|
read_options, file_opts, *icmp, meta_copy, &handle,
|
|
7128
7224
|
cf_opts->block_protection_bytes_per_key, pe,
|
|
7129
|
-
/*no_io=*/false,
|
|
7130
|
-
internal_stats->GetFileReadHist(level), false, level,
|
|
7225
|
+
/*no_io=*/false, internal_stats->GetFileReadHist(level), false, level,
|
|
7131
7226
|
/*prefetch_index_and_filter_in_cache*/ false, max_sz_for_l0_meta_pin,
|
|
7132
7227
|
meta_copy.temperature);
|
|
7133
7228
|
if (handle) {
|
|
@@ -132,8 +132,9 @@ class VersionStorageInfo {
|
|
|
132
132
|
CompactionStyle compaction_style,
|
|
133
133
|
VersionStorageInfo* src_vstorage,
|
|
134
134
|
bool _force_consistency_checks,
|
|
135
|
-
EpochNumberRequirement epoch_number_requirement
|
|
136
|
-
|
|
135
|
+
EpochNumberRequirement epoch_number_requirement,
|
|
136
|
+
SystemClock* clock,
|
|
137
|
+
uint32_t bottommost_file_compaction_delay);
|
|
137
138
|
// No copying allowed
|
|
138
139
|
VersionStorageInfo(const VersionStorageInfo&) = delete;
|
|
139
140
|
void operator=(const VersionStorageInfo&) = delete;
|
|
@@ -204,7 +205,7 @@ class VersionStorageInfo {
|
|
|
204
205
|
|
|
205
206
|
// This computes files_marked_for_compaction_ and is called by
|
|
206
207
|
// ComputeCompactionScore()
|
|
207
|
-
void ComputeFilesMarkedForCompaction();
|
|
208
|
+
void ComputeFilesMarkedForCompaction(int last_level);
|
|
208
209
|
|
|
209
210
|
// This computes ttl_expired_files_ and is called by
|
|
210
211
|
// ComputeCompactionScore()
|
|
@@ -215,7 +216,7 @@ class VersionStorageInfo {
|
|
|
215
216
|
// ComputeCompactionScore()
|
|
216
217
|
void ComputeFilesMarkedForPeriodicCompaction(
|
|
217
218
|
const ImmutableOptions& ioptions,
|
|
218
|
-
const uint64_t periodic_compaction_seconds);
|
|
219
|
+
const uint64_t periodic_compaction_seconds, int last_level);
|
|
219
220
|
|
|
220
221
|
// This computes bottommost_files_marked_for_compaction_ and is called by
|
|
221
222
|
// ComputeCompactionScore() or UpdateOldestSnapshot().
|
|
@@ -465,6 +466,7 @@ class VersionStorageInfo {
|
|
|
465
466
|
|
|
466
467
|
// REQUIRES: ComputeCompactionScore has been called
|
|
467
468
|
// REQUIRES: DB mutex held during access
|
|
469
|
+
// Used by Leveled Compaction only.
|
|
468
470
|
const autovector<std::pair<int, FileMetaData*>>& ExpiredTtlFiles() const {
|
|
469
471
|
assert(finalized_);
|
|
470
472
|
return expired_ttl_files_;
|
|
@@ -472,6 +474,7 @@ class VersionStorageInfo {
|
|
|
472
474
|
|
|
473
475
|
// REQUIRES: ComputeCompactionScore has been called
|
|
474
476
|
// REQUIRES: DB mutex held during access
|
|
477
|
+
// Used by Leveled and Universal Compaction.
|
|
475
478
|
const autovector<std::pair<int, FileMetaData*>>&
|
|
476
479
|
FilesMarkedForPeriodicCompaction() const {
|
|
477
480
|
assert(finalized_);
|
|
@@ -680,7 +683,7 @@ class VersionStorageInfo {
|
|
|
680
683
|
|
|
681
684
|
// This vector contains list of files marked for compaction and also not
|
|
682
685
|
// currently being compacted. It is protected by DB mutex. It is calculated in
|
|
683
|
-
// ComputeCompactionScore()
|
|
686
|
+
// ComputeCompactionScore(). Used by Leveled and Universal Compaction.
|
|
684
687
|
autovector<std::pair<int, FileMetaData*>> files_marked_for_compaction_;
|
|
685
688
|
|
|
686
689
|
autovector<std::pair<int, FileMetaData*>> expired_ttl_files_;
|
|
@@ -746,6 +749,10 @@ class VersionStorageInfo {
|
|
|
746
749
|
// target sizes.
|
|
747
750
|
uint64_t estimated_compaction_needed_bytes_;
|
|
748
751
|
|
|
752
|
+
// Used for computing bottommost files marked for compaction.
|
|
753
|
+
SystemClock* clock_;
|
|
754
|
+
uint32_t bottommost_file_compaction_delay_;
|
|
755
|
+
|
|
749
756
|
bool finalized_;
|
|
750
757
|
|
|
751
758
|
// If set to true, we will run consistency checks even if RocksDB
|
|
@@ -1271,8 +1278,8 @@ class VersionSet {
|
|
|
1271
1278
|
|
|
1272
1279
|
// printf contents (for debugging)
|
|
1273
1280
|
Status DumpManifest(Options& options, std::string& manifestFileName,
|
|
1274
|
-
bool verbose, bool hex = false, bool json = false
|
|
1275
|
-
|
|
1281
|
+
bool verbose, bool hex = false, bool json = false,
|
|
1282
|
+
const std::vector<ColumnFamilyDescriptor>& cf_descs = {});
|
|
1276
1283
|
|
|
1277
1284
|
const std::string& DbSessionId() const { return db_session_id_; }
|
|
1278
1285
|
|
|
@@ -1466,7 +1473,21 @@ class VersionSet {
|
|
|
1466
1473
|
std::vector<std::string>* manifest_filenames,
|
|
1467
1474
|
uint64_t min_pending_output);
|
|
1468
1475
|
|
|
1476
|
+
// REQUIRES: DB mutex held
|
|
1477
|
+
uint64_t GetObsoleteSstFilesSize() const;
|
|
1478
|
+
|
|
1469
1479
|
ColumnFamilySet* GetColumnFamilySet() { return column_family_set_.get(); }
|
|
1480
|
+
|
|
1481
|
+
const UnorderedMap<uint32_t, size_t>& GetRunningColumnFamiliesTimestampSize()
|
|
1482
|
+
const {
|
|
1483
|
+
return column_family_set_->GetRunningColumnFamiliesTimestampSize();
|
|
1484
|
+
}
|
|
1485
|
+
|
|
1486
|
+
const UnorderedMap<uint32_t, size_t>&
|
|
1487
|
+
GetColumnFamiliesTimestampSizeForRecord() const {
|
|
1488
|
+
return column_family_set_->GetColumnFamiliesTimestampSizeForRecord();
|
|
1489
|
+
}
|
|
1490
|
+
|
|
1470
1491
|
RefedColumnFamilySet GetRefedColumnFamilySet() {
|
|
1471
1492
|
return RefedColumnFamilySet(GetColumnFamilySet());
|
|
1472
1493
|
}
|
|
@@ -51,7 +51,8 @@ class GenerateLevelFilesBriefTest : public testing::Test {
|
|
|
51
51
|
largest_seq, /* marked_for_compact */ false, Temperature::kUnknown,
|
|
52
52
|
kInvalidBlobFileNumber, kUnknownOldestAncesterTime,
|
|
53
53
|
kUnknownFileCreationTime, kUnknownEpochNumber, kUnknownFileChecksum,
|
|
54
|
-
kUnknownFileChecksumFuncName, kNullUniqueId64x2, 0, 0
|
|
54
|
+
kUnknownFileChecksumFuncName, kNullUniqueId64x2, 0, 0,
|
|
55
|
+
/* user_defined_timestamps_persisted */ true);
|
|
55
56
|
files_.push_back(f);
|
|
56
57
|
}
|
|
57
58
|
|
|
@@ -129,7 +130,9 @@ class VersionStorageInfoTestBase : public testing::Test {
|
|
|
129
130
|
mutable_cf_options_(options_),
|
|
130
131
|
vstorage_(&icmp_, ucmp_, 6, kCompactionStyleLevel,
|
|
131
132
|
/*src_vstorage=*/nullptr,
|
|
132
|
-
/*_force_consistency_checks=*/false
|
|
133
|
+
/*_force_consistency_checks=*/false,
|
|
134
|
+
EpochNumberRequirement::kMustPresent, ioptions_.clock,
|
|
135
|
+
mutable_cf_options_.bottommost_file_compaction_delay) {}
|
|
133
136
|
|
|
134
137
|
~VersionStorageInfoTestBase() override {
|
|
135
138
|
for (int i = 0; i < vstorage_.num_levels(); ++i) {
|
|
@@ -163,7 +166,8 @@ class VersionStorageInfoTestBase : public testing::Test {
|
|
|
163
166
|
Temperature::kUnknown, oldest_blob_file_number,
|
|
164
167
|
kUnknownOldestAncesterTime, kUnknownFileCreationTime,
|
|
165
168
|
kUnknownEpochNumber, kUnknownFileChecksum, kUnknownFileChecksumFuncName,
|
|
166
|
-
kNullUniqueId64x2, compensated_range_deletion_size, 0
|
|
169
|
+
kNullUniqueId64x2, compensated_range_deletion_size, 0,
|
|
170
|
+
/* user_defined_timestamps_persisted */ true);
|
|
167
171
|
vstorage_.AddFile(level, f);
|
|
168
172
|
}
|
|
169
173
|
|
|
@@ -1219,7 +1223,7 @@ class VersionSetTestBase {
|
|
|
1219
1223
|
tmp_db_options.env = env_;
|
|
1220
1224
|
std::unique_ptr<DBImpl> impl(new DBImpl(tmp_db_options, dbname_));
|
|
1221
1225
|
std::string db_id;
|
|
1222
|
-
impl->GetDbIdentityFromIdentityFile(&db_id);
|
|
1226
|
+
ASSERT_OK(impl->GetDbIdentityFromIdentityFile(&db_id));
|
|
1223
1227
|
new_db.SetDBId(db_id);
|
|
1224
1228
|
}
|
|
1225
1229
|
new_db.SetLogNumber(0);
|
|
@@ -1275,7 +1279,7 @@ class VersionSetTestBase {
|
|
|
1275
1279
|
void NewDB() {
|
|
1276
1280
|
SequenceNumber last_seqno;
|
|
1277
1281
|
std::unique_ptr<log::Writer> log_writer;
|
|
1278
|
-
SetIdentityFile(env_, dbname_);
|
|
1282
|
+
ASSERT_OK(SetIdentityFile(env_, dbname_));
|
|
1279
1283
|
PrepareManifest(&column_families_, &last_seqno, &log_writer);
|
|
1280
1284
|
log_writer.reset();
|
|
1281
1285
|
// Make "CURRENT" file point to the new manifest file.
|
|
@@ -1347,6 +1351,8 @@ class VersionSetTestBase {
|
|
|
1347
1351
|
new_cf.SetColumnFamily(new_id);
|
|
1348
1352
|
new_cf.SetLogNumber(0);
|
|
1349
1353
|
new_cf.SetComparatorName(cf_options.comparator->Name());
|
|
1354
|
+
new_cf.SetPersistUserDefinedTimestamps(
|
|
1355
|
+
cf_options.persist_user_defined_timestamps);
|
|
1350
1356
|
Status s;
|
|
1351
1357
|
mutex_.Lock();
|
|
1352
1358
|
s = versions_->LogAndApply(/*column_family_data=*/nullptr,
|
|
@@ -2858,11 +2864,12 @@ class VersionSetTestEmptyDb
|
|
|
2858
2864
|
assert(nullptr != log_writer);
|
|
2859
2865
|
VersionEdit new_db;
|
|
2860
2866
|
if (db_options_.write_dbid_to_manifest) {
|
|
2867
|
+
ASSERT_OK(SetIdentityFile(env_, dbname_));
|
|
2861
2868
|
DBOptions tmp_db_options;
|
|
2862
2869
|
tmp_db_options.env = env_;
|
|
2863
2870
|
std::unique_ptr<DBImpl> impl(new DBImpl(tmp_db_options, dbname_));
|
|
2864
2871
|
std::string db_id;
|
|
2865
|
-
impl->GetDbIdentityFromIdentityFile(&db_id);
|
|
2872
|
+
ASSERT_OK(impl->GetDbIdentityFromIdentityFile(&db_id));
|
|
2866
2873
|
new_db.SetDBId(db_id);
|
|
2867
2874
|
}
|
|
2868
2875
|
const std::string manifest_path = DescriptorFileName(dbname_, 1);
|
|
@@ -3192,7 +3199,7 @@ class VersionSetTestMissingFiles : public VersionSetTestBase,
|
|
|
3192
3199
|
tmp_db_options.env = env_;
|
|
3193
3200
|
std::unique_ptr<DBImpl> impl(new DBImpl(tmp_db_options, dbname_));
|
|
3194
3201
|
std::string db_id;
|
|
3195
|
-
impl->GetDbIdentityFromIdentityFile(&db_id);
|
|
3202
|
+
ASSERT_OK(impl->GetDbIdentityFromIdentityFile(&db_id));
|
|
3196
3203
|
new_db.SetDBId(db_id);
|
|
3197
3204
|
}
|
|
3198
3205
|
{
|
|
@@ -3292,11 +3299,11 @@ class VersionSetTestMissingFiles : public VersionSetTestBase,
|
|
|
3292
3299
|
s = fs_->GetFileSize(fname, IOOptions(), &file_size, nullptr);
|
|
3293
3300
|
ASSERT_OK(s);
|
|
3294
3301
|
ASSERT_NE(0, file_size);
|
|
3295
|
-
file_metas->emplace_back(
|
|
3296
|
-
|
|
3297
|
-
|
|
3298
|
-
|
|
3299
|
-
|
|
3302
|
+
file_metas->emplace_back(
|
|
3303
|
+
file_num, /*file_path_id=*/0, file_size, ikey, ikey, 0, 0, false,
|
|
3304
|
+
Temperature::kUnknown, 0, 0, 0, info.epoch_number,
|
|
3305
|
+
kUnknownFileChecksum, kUnknownFileChecksumFuncName, kNullUniqueId64x2,
|
|
3306
|
+
0, 0, /* user_defined_timestamps_persisted */ true);
|
|
3300
3307
|
}
|
|
3301
3308
|
}
|
|
3302
3309
|
|
|
@@ -3318,7 +3325,7 @@ class VersionSetTestMissingFiles : public VersionSetTestBase,
|
|
|
3318
3325
|
++last_seqno_;
|
|
3319
3326
|
assert(log_writer_.get() != nullptr);
|
|
3320
3327
|
std::string record;
|
|
3321
|
-
ASSERT_TRUE(edit.EncodeTo(&record));
|
|
3328
|
+
ASSERT_TRUE(edit.EncodeTo(&record, 0 /* ts_sz */));
|
|
3322
3329
|
Status s = log_writer_->AddRecord(record);
|
|
3323
3330
|
ASSERT_OK(s);
|
|
3324
3331
|
}
|
|
@@ -3353,7 +3360,8 @@ TEST_F(VersionSetTestMissingFiles, ManifestFarBehindSst) {
|
|
|
3353
3360
|
file_num, /*file_path_id=*/0, /*file_size=*/12, smallest_ikey,
|
|
3354
3361
|
largest_ikey, 0, 0, false, Temperature::kUnknown, 0, 0, 0,
|
|
3355
3362
|
file_num /* epoch_number */, kUnknownFileChecksum,
|
|
3356
|
-
kUnknownFileChecksumFuncName, kNullUniqueId64x2, 0, 0
|
|
3363
|
+
kUnknownFileChecksumFuncName, kNullUniqueId64x2, 0, 0,
|
|
3364
|
+
/* user_defined_timestamps_persisted */ true);
|
|
3357
3365
|
added_files.emplace_back(0, meta);
|
|
3358
3366
|
}
|
|
3359
3367
|
WriteFileAdditionAndDeletionToManifest(
|
|
@@ -3414,7 +3422,8 @@ TEST_F(VersionSetTestMissingFiles, ManifestAheadofSst) {
|
|
|
3414
3422
|
file_num, /*file_path_id=*/0, /*file_size=*/12, smallest_ikey,
|
|
3415
3423
|
largest_ikey, 0, 0, false, Temperature::kUnknown, 0, 0, 0,
|
|
3416
3424
|
file_num /* epoch_number */, kUnknownFileChecksum,
|
|
3417
|
-
kUnknownFileChecksumFuncName, kNullUniqueId64x2, 0, 0
|
|
3425
|
+
kUnknownFileChecksumFuncName, kNullUniqueId64x2, 0, 0,
|
|
3426
|
+
/* user_defined_timestamps_persisted */ true);
|
|
3418
3427
|
added_files.emplace_back(0, meta);
|
|
3419
3428
|
}
|
|
3420
3429
|
WriteFileAdditionAndDeletionToManifest(
|
|
@@ -3547,6 +3556,7 @@ INSTANTIATE_TEST_CASE_P(
|
|
|
3547
3556
|
|
|
3548
3557
|
TEST_P(ChargeFileMetadataTestWithParam, Basic) {
|
|
3549
3558
|
Options options;
|
|
3559
|
+
options.level_compaction_dynamic_level_bytes = false;
|
|
3550
3560
|
BlockBasedTableOptions table_options;
|
|
3551
3561
|
CacheEntryRoleOptions::Decision charge_file_metadata = GetParam();
|
|
3552
3562
|
table_options.cache_usage_options.options_overrides.insert(
|
|
@@ -293,6 +293,12 @@ size_t WriteBatch::GetProtectionBytesPerKey() const {
|
|
|
293
293
|
return 0;
|
|
294
294
|
}
|
|
295
295
|
|
|
296
|
+
std::string WriteBatch::Release() {
|
|
297
|
+
std::string ret = std::move(rep_);
|
|
298
|
+
Clear();
|
|
299
|
+
return ret;
|
|
300
|
+
}
|
|
301
|
+
|
|
296
302
|
bool WriteBatch::HasPut() const {
|
|
297
303
|
return (ComputeContentFlags() & ContentFlags::HAS_PUT) != 0;
|
|
298
304
|
}
|
|
@@ -740,6 +746,11 @@ size_t WriteBatchInternal::GetFirstOffset(WriteBatch* /*b*/) {
|
|
|
740
746
|
return WriteBatchInternal::kHeader;
|
|
741
747
|
}
|
|
742
748
|
|
|
749
|
+
void WriteBatchInternal::SetDefaultColumnFamilyTimestampSize(
|
|
750
|
+
WriteBatch* wb, size_t default_cf_ts_sz) {
|
|
751
|
+
wb->default_cf_ts_sz_ = default_cf_ts_sz;
|
|
752
|
+
}
|
|
753
|
+
|
|
743
754
|
std::tuple<Status, uint32_t, size_t>
|
|
744
755
|
WriteBatchInternal::GetColumnFamilyIdAndTimestampSize(
|
|
745
756
|
WriteBatch* b, ColumnFamilyHandle* column_family) {
|
|
@@ -224,6 +224,9 @@ class WriteBatchInternal {
|
|
|
224
224
|
static void SetAsLatestPersistentState(WriteBatch* b);
|
|
225
225
|
static bool IsLatestPersistentState(const WriteBatch* b);
|
|
226
226
|
|
|
227
|
+
static void SetDefaultColumnFamilyTimestampSize(WriteBatch* wb,
|
|
228
|
+
size_t default_cf_ts_sz);
|
|
229
|
+
|
|
227
230
|
static std::tuple<Status, uint32_t, size_t> GetColumnFamilyIdAndTimestampSize(
|
|
228
231
|
WriteBatch* b, ColumnFamilyHandle* column_family);
|
|
229
232
|
|