@nxtedition/rocksdb 8.2.0 → 8.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/binding.cc +3 -3
- package/deps/rocksdb/rocksdb/CMakeLists.txt +16 -52
- package/deps/rocksdb/rocksdb/Makefile +10 -5
- package/deps/rocksdb/rocksdb/TARGETS +8 -345
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +92 -0
- package/deps/rocksdb/rocksdb/cache/clock_cache.cc +32 -32
- package/deps/rocksdb/rocksdb/cache/clock_cache.h +12 -9
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +6 -43
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +3 -13
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +8 -5
- package/deps/rocksdb/rocksdb/cache/lru_cache.cc +21 -47
- package/deps/rocksdb/rocksdb/cache/lru_cache.h +3 -8
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +2 -1
- package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +1 -2
- package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +44 -7
- package/deps/rocksdb/rocksdb/cache/sharded_cache.h +13 -14
- package/deps/rocksdb/rocksdb/db/blob/blob_contents.h +1 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +1 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.cc +2 -2
- package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.h +2 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_cache_test.cc +17 -8
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +40 -21
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +5 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +41 -42
- package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.cc +1 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_log_writer.cc +1 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_source.cc +5 -4
- package/deps/rocksdb/rocksdb/db/blob/blob_source.h +2 -2
- package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +5 -3
- package/deps/rocksdb/rocksdb/db/builder.cc +7 -6
- package/deps/rocksdb/rocksdb/db/builder.h +2 -2
- package/deps/rocksdb/rocksdb/db/c.cc +76 -5
- package/deps/rocksdb/rocksdb/db/c_test.c +141 -0
- package/deps/rocksdb/rocksdb/db/column_family.cc +32 -0
- package/deps/rocksdb/rocksdb/db/compact_files_test.cc +3 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +5 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction.h +8 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +12 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +21 -17
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +8 -7
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +3 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +1 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +77 -50
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +4 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +55 -8
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +142 -56
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +1 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +1 -2
- package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +21 -20
- package/deps/rocksdb/rocksdb/db/convenience.cc +8 -6
- package/deps/rocksdb/rocksdb/db/corruption_test.cc +5 -4
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +6 -3
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +260 -220
- package/deps/rocksdb/rocksdb/db/db_clip_test.cc +142 -0
- package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +333 -27
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +5 -0
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +7 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +189 -27
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +23 -10
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +134 -90
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +2 -2
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +5 -3
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +5 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +124 -16
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +10 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +7 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +15 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +11 -5
- package/deps/rocksdb/rocksdb/db/db_iter.cc +7 -8
- package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +54 -3
- package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +42 -0
- package/deps/rocksdb/rocksdb/db/db_options_test.cc +116 -1
- package/deps/rocksdb/rocksdb/db/db_properties_test.cc +3 -2
- package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +3 -2
- package/deps/rocksdb/rocksdb/db/db_sst_test.cc +9 -8
- package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +142 -63
- package/deps/rocksdb/rocksdb/db/db_test.cc +28 -7
- package/deps/rocksdb/rocksdb/db/db_test2.cc +71 -131
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +18 -0
- package/deps/rocksdb/rocksdb/db/db_test_util.h +6 -0
- package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +10 -10
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +25 -0
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +88 -0
- package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +67 -0
- package/deps/rocksdb/rocksdb/db/db_write_test.cc +5 -0
- package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/experimental.cc +4 -2
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +86 -1
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +15 -2
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +1 -2
- package/deps/rocksdb/rocksdb/db/flush_job.cc +21 -14
- package/deps/rocksdb/rocksdb/db/forward_iterator.cc +14 -7
- package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +31 -8
- package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +21 -19
- package/deps/rocksdb/rocksdb/db/internal_stats.cc +42 -12
- package/deps/rocksdb/rocksdb/db/internal_stats.h +1 -0
- package/deps/rocksdb/rocksdb/db/kv_checksum.h +92 -6
- package/deps/rocksdb/rocksdb/db/listener_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/log_format.h +8 -4
- package/deps/rocksdb/rocksdb/db/log_reader.cc +129 -51
- package/deps/rocksdb/rocksdb/db/log_reader.h +16 -0
- package/deps/rocksdb/rocksdb/db/log_test.cc +125 -4
- package/deps/rocksdb/rocksdb/db/log_writer.cc +32 -2
- package/deps/rocksdb/rocksdb/db/log_writer.h +16 -0
- package/deps/rocksdb/rocksdb/db/memtable.cc +17 -46
- package/deps/rocksdb/rocksdb/db/memtable.h +1 -1
- package/deps/rocksdb/rocksdb/db/memtable_list.cc +8 -4
- package/deps/rocksdb/rocksdb/db/merge_helper.cc +1 -1
- package/deps/rocksdb/rocksdb/db/perf_context_test.cc +2 -1
- package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +5 -4
- package/deps/rocksdb/rocksdb/db/repair.cc +38 -11
- package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +3 -3
- package/deps/rocksdb/rocksdb/db/table_cache.cc +68 -51
- package/deps/rocksdb/rocksdb/db/table_cache.h +20 -10
- package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +2 -1
- package/deps/rocksdb/rocksdb/db/table_properties_collector_test.cc +6 -3
- package/deps/rocksdb/rocksdb/db/version_builder.cc +9 -5
- package/deps/rocksdb/rocksdb/db/version_builder.h +2 -1
- package/deps/rocksdb/rocksdb/db/version_builder_test.cc +140 -120
- package/deps/rocksdb/rocksdb/db/version_edit.cc +14 -0
- package/deps/rocksdb/rocksdb/db/version_edit.h +12 -4
- package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +21 -13
- package/deps/rocksdb/rocksdb/db/version_edit_handler.h +26 -16
- package/deps/rocksdb/rocksdb/db/version_edit_test.cc +9 -9
- package/deps/rocksdb/rocksdb/db/version_set.cc +292 -96
- package/deps/rocksdb/rocksdb/db/version_set.h +53 -28
- package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +1 -0
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +62 -22
- package/deps/rocksdb/rocksdb/db/version_util.h +5 -4
- package/deps/rocksdb/rocksdb/db/write_batch.cc +3 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/CMakeLists.txt +1 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +119 -27
- package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +123 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +4 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +7 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +34 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +13 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +43 -33
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +29 -17
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +5 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +6 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +85 -50
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.h +96 -54
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_value.cc +122 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_value.h +206 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +9 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.h +9 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +322 -92
- package/deps/rocksdb/rocksdb/env/env_posix.cc +12 -8
- package/deps/rocksdb/rocksdb/env/env_test.cc +31 -0
- package/deps/rocksdb/rocksdb/env/mock_env.cc +1 -1
- package/deps/rocksdb/rocksdb/env/unique_id_gen.h +14 -0
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +1 -1
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +5 -1
- package/deps/rocksdb/rocksdb/file/file_util.cc +3 -3
- package/deps/rocksdb/rocksdb/file/file_util.h +2 -0
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +89 -0
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +22 -7
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +3 -2
- package/deps/rocksdb/rocksdb/file/readahead_raf.cc +1 -1
- package/deps/rocksdb/rocksdb/file/sequence_file_reader.cc +1 -1
- package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_cache.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +154 -74
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +27 -7
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +107 -28
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +19 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/env.h +8 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +2 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/memory_allocator.h +7 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +137 -152
- package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +61 -26
- package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +30 -26
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +33 -16
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +87 -8
- package/deps/rocksdb/rocksdb/include/rocksdb/table.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +5 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_util.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +7 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +0 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/write_buffer_manager.h +9 -2
- package/deps/rocksdb/rocksdb/logging/env_logger.h +2 -0
- package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +78 -42
- package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.h +14 -9
- package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +1 -0
- package/deps/rocksdb/rocksdb/memtable/skiplist_test.cc +1 -0
- package/deps/rocksdb/rocksdb/memtable/write_buffer_manager.cc +4 -9
- package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +19 -11
- package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.h +1 -1
- package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +211 -555
- package/deps/rocksdb/rocksdb/monitoring/perf_step_timer.h +1 -1
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +36 -2
- package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.cc +17 -7
- package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.h +10 -7
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util.cc +19 -18
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util.h +10 -2
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +14 -0
- package/deps/rocksdb/rocksdb/options/cf_options.cc +35 -2
- package/deps/rocksdb/rocksdb/options/cf_options.h +5 -0
- package/deps/rocksdb/rocksdb/options/customizable_test.cc +1 -1
- package/deps/rocksdb/rocksdb/options/options.cc +12 -53
- package/deps/rocksdb/rocksdb/options/options_helper.cc +4 -0
- package/deps/rocksdb/rocksdb/options/options_parser.cc +11 -0
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +32 -4
- package/deps/rocksdb/rocksdb/options/options_test.cc +89 -5
- package/deps/rocksdb/rocksdb/port/lang.h +27 -0
- package/deps/rocksdb/rocksdb/port/stack_trace.cc +67 -24
- package/deps/rocksdb/rocksdb/src.mk +2 -0
- package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +2 -3
- package/deps/rocksdb/rocksdb/table/block_based/block.cc +195 -35
- package/deps/rocksdb/rocksdb/table/block_based/block.h +197 -24
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +71 -51
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +7 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +4 -6
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +3 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +43 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +36 -6
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +266 -166
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +44 -14
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +63 -56
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +8 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +4 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_cache.cc +10 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_cache.h +14 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +918 -2
- package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +3 -2
- package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +10 -9
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +6 -8
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.h +2 -2
- package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +18 -23
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +8 -8
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block_test.cc +16 -32
- package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +7 -8
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +4 -5
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +3 -3
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +46 -53
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +12 -12
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +7 -9
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +26 -23
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.h +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/reader_common.h +3 -0
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +4 -2
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +3 -2
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +7 -1
- package/deps/rocksdb/rocksdb/table/block_fetcher.h +1 -1
- package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +2 -1
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +3 -2
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.cc +5 -2
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.h +4 -2
- package/deps/rocksdb/rocksdb/table/format.cc +4 -4
- package/deps/rocksdb/rocksdb/table/format.h +1 -1
- package/deps/rocksdb/rocksdb/table/get_context.cc +1 -1
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +33 -22
- package/deps/rocksdb/rocksdb/table/meta_blocks.h +4 -0
- package/deps/rocksdb/rocksdb/table/mock_table.cc +4 -2
- package/deps/rocksdb/rocksdb/table/persistent_cache_helper.h +1 -1
- package/deps/rocksdb/rocksdb/table/persistent_cache_options.h +1 -1
- package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +18 -10
- package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.h +4 -3
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +10 -7
- package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +4 -2
- package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +11 -0
- package/deps/rocksdb/rocksdb/table/table_builder.h +14 -5
- package/deps/rocksdb/rocksdb/table/table_properties.cc +2 -0
- package/deps/rocksdb/rocksdb/table/table_reader.h +6 -3
- package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +1 -1
- package/deps/rocksdb/rocksdb/table/table_test.cc +291 -34
- package/deps/rocksdb/rocksdb/test_util/secondary_cache_test_util.h +3 -1
- package/deps/rocksdb/rocksdb/test_util/testharness.h +5 -0
- package/deps/rocksdb/rocksdb/test_util/testutil.cc +2 -2
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +33 -17
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +3 -1
- package/deps/rocksdb/rocksdb/util/bloom_impl.h +2 -2
- package/deps/rocksdb/rocksdb/util/compression.h +1 -1
- package/deps/rocksdb/rocksdb/util/crc32c.cc +24 -83
- package/deps/rocksdb/rocksdb/util/crc32c_arm64.cc +7 -9
- package/deps/rocksdb/rocksdb/util/file_checksum_helper.cc +4 -1
- package/deps/rocksdb/rocksdb/util/filter_bench.cc +1 -1
- package/deps/rocksdb/rocksdb/util/gflags_compat.h +9 -10
- package/deps/rocksdb/rocksdb/util/math.h +12 -7
- package/deps/rocksdb/rocksdb/util/rate_limiter.cc +16 -18
- package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +46 -2
- package/deps/rocksdb/rocksdb/util/ribbon_test.cc +6 -6
- package/deps/rocksdb/rocksdb/util/slice_transform_test.cc +12 -7
- package/deps/rocksdb/rocksdb/util/stop_watch.h +31 -13
- package/deps/rocksdb/rocksdb/util/thread_list_test.cc +2 -0
- package/deps/rocksdb/rocksdb/util/thread_operation.h +2 -1
- package/deps/rocksdb/rocksdb/util/udt_util.h +77 -0
- package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/agg_merge/test_agg_merge.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +11 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +34 -1
- package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +15 -0
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +5 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +29 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +6 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +10 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +6 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +5 -0
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +5 -0
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/prebuilds/linux-x64/node.napi.node +0 -0
- /package/deps/rocksdb/rocksdb/memory/{memory_allocator.h → memory_allocator_impl.h} +0 -0
- /package/deps/rocksdb/rocksdb/monitoring/{statistics.h → statistics_impl.h} +0 -0
- /package/deps/rocksdb/rocksdb/table/block_based/{flush_block_policy.h → flush_block_policy_impl.h} +0 -0
- /package/deps/rocksdb/rocksdb/util/{rate_limiter.h → rate_limiter_impl.h} +0 -0
- /package/deps/rocksdb/rocksdb/utilities/agg_merge/{agg_merge.h → agg_merge_impl.h} +0 -0
|
@@ -44,16 +44,19 @@ Status ImportColumnFamilyJob::Prepare(uint64_t next_file_number,
|
|
|
44
44
|
|
|
45
45
|
auto num_files = files_to_import_.size();
|
|
46
46
|
if (num_files == 0) {
|
|
47
|
-
|
|
47
|
+
status = Status::InvalidArgument("The list of files is empty");
|
|
48
|
+
return status;
|
|
48
49
|
}
|
|
49
50
|
|
|
50
51
|
for (const auto& f : files_to_import_) {
|
|
51
52
|
if (f.num_entries == 0) {
|
|
52
|
-
|
|
53
|
+
status = Status::InvalidArgument("File contain no entries");
|
|
54
|
+
return status;
|
|
53
55
|
}
|
|
54
56
|
|
|
55
57
|
if (!f.smallest_internal_key.Valid() || !f.largest_internal_key.Valid()) {
|
|
56
|
-
|
|
58
|
+
status = Status::Corruption("File has corrupted keys");
|
|
59
|
+
return status;
|
|
57
60
|
}
|
|
58
61
|
}
|
|
59
62
|
|
|
@@ -135,6 +138,16 @@ Status ImportColumnFamilyJob::Run() {
|
|
|
135
138
|
const auto& f = files_to_import_[i];
|
|
136
139
|
const auto& file_metadata = metadata_[i];
|
|
137
140
|
|
|
141
|
+
uint64_t tail_size = 0;
|
|
142
|
+
bool contain_no_data_blocks = f.table_properties.num_entries > 0 &&
|
|
143
|
+
(f.table_properties.num_entries ==
|
|
144
|
+
f.table_properties.num_range_deletions);
|
|
145
|
+
if (f.table_properties.tail_start_offset > 0 || contain_no_data_blocks) {
|
|
146
|
+
uint64_t file_size = f.fd.GetFileSize();
|
|
147
|
+
assert(f.table_properties.tail_start_offset <= file_size);
|
|
148
|
+
tail_size = file_size - f.table_properties.tail_start_offset;
|
|
149
|
+
}
|
|
150
|
+
|
|
138
151
|
VersionEdit dummy_version_edit;
|
|
139
152
|
dummy_version_edit.AddFile(
|
|
140
153
|
file_metadata.level, f.fd.GetNumber(), f.fd.GetPathId(),
|
|
@@ -142,7 +155,7 @@ Status ImportColumnFamilyJob::Run() {
|
|
|
142
155
|
file_metadata.smallest_seqno, file_metadata.largest_seqno, false,
|
|
143
156
|
file_metadata.temperature, kInvalidBlobFileNumber, oldest_ancester_time,
|
|
144
157
|
current_time, file_metadata.epoch_number, kUnknownFileChecksum,
|
|
145
|
-
kUnknownFileChecksumFuncName, f.unique_id, 0);
|
|
158
|
+
kUnknownFileChecksumFuncName, f.unique_id, 0, tail_size);
|
|
146
159
|
s = dummy_version_builder.Apply(&dummy_version_edit);
|
|
147
160
|
}
|
|
148
161
|
if (s.ok()) {
|
|
@@ -247,6 +260,7 @@ Status ImportColumnFamilyJob::GetIngestedFileInfo(
|
|
|
247
260
|
TableReaderOptions(
|
|
248
261
|
*cfd_->ioptions(), sv->mutable_cf_options.prefix_extractor,
|
|
249
262
|
env_options_, cfd_->internal_comparator(),
|
|
263
|
+
sv->mutable_cf_options.block_protection_bytes_per_key,
|
|
250
264
|
/*skip_filters*/ false, /*immortal*/ false,
|
|
251
265
|
/*force_direct_prefetch*/ false, /*level*/ -1,
|
|
252
266
|
/*block_cache_tracer*/ nullptr,
|
|
@@ -272,6 +286,7 @@ Status ImportColumnFamilyJob::GetIngestedFileInfo(
|
|
|
272
286
|
// in file_meta.
|
|
273
287
|
if (file_meta.smallest.empty()) {
|
|
274
288
|
assert(file_meta.largest.empty());
|
|
289
|
+
// TODO: plumb Env::IOActivity
|
|
275
290
|
ReadOptions ro;
|
|
276
291
|
std::unique_ptr<InternalIterator> iter(table_reader->NewIterator(
|
|
277
292
|
ro, sv->mutable_cf_options.prefix_extractor.get(), /*arena=*/nullptr,
|
|
@@ -299,15 +314,24 @@ Status ImportColumnFamilyJob::GetIngestedFileInfo(
|
|
|
299
314
|
return Status::Corruption("Corrupted key in external file. ",
|
|
300
315
|
pik_status.getState());
|
|
301
316
|
}
|
|
302
|
-
RangeTombstone
|
|
303
|
-
InternalKey start_key =
|
|
317
|
+
RangeTombstone first_tombstone(key, range_del_iter->value());
|
|
318
|
+
InternalKey start_key = first_tombstone.SerializeKey();
|
|
304
319
|
const InternalKeyComparator* icmp = &cfd_->internal_comparator();
|
|
305
320
|
if (!bound_set ||
|
|
306
321
|
icmp->Compare(start_key, file_to_import->smallest_internal_key) <
|
|
307
322
|
0) {
|
|
308
323
|
file_to_import->smallest_internal_key = start_key;
|
|
309
324
|
}
|
|
310
|
-
|
|
325
|
+
|
|
326
|
+
range_del_iter->SeekToLast();
|
|
327
|
+
pik_status = ParseInternalKey(range_del_iter->key(), &key,
|
|
328
|
+
db_options_.allow_data_in_errors);
|
|
329
|
+
if (!pik_status.ok()) {
|
|
330
|
+
return Status::Corruption("Corrupted key in external file. ",
|
|
331
|
+
pik_status.getState());
|
|
332
|
+
}
|
|
333
|
+
RangeTombstone last_tombstone(key, range_del_iter->value());
|
|
334
|
+
InternalKey end_key = last_tombstone.SerializeEndKey();
|
|
311
335
|
if (!bound_set ||
|
|
312
336
|
icmp->Compare(end_key, file_to_import->largest_internal_key) > 0) {
|
|
313
337
|
file_to_import->largest_internal_key = end_key;
|
|
@@ -338,4 +362,3 @@ Status ImportColumnFamilyJob::GetIngestedFileInfo(
|
|
|
338
362
|
return status;
|
|
339
363
|
}
|
|
340
364
|
} // namespace ROCKSDB_NAMESPACE
|
|
341
|
-
|
|
@@ -294,6 +294,8 @@ TEST_F(ImportColumnFamilyTest, ImportSSTFileWriterFilesWithRangeTombstone) {
|
|
|
294
294
|
ASSERT_OK(sfw_cf1.Put("K1", "V1"));
|
|
295
295
|
ASSERT_OK(sfw_cf1.Put("K2", "V2"));
|
|
296
296
|
ASSERT_OK(sfw_cf1.DeleteRange("K3", "K4"));
|
|
297
|
+
ASSERT_OK(sfw_cf1.DeleteRange("K7", "K9"));
|
|
298
|
+
|
|
297
299
|
ASSERT_OK(sfw_cf1.Finish());
|
|
298
300
|
|
|
299
301
|
// Import sst file corresponding to cf1 onto a new cf and verify
|
|
@@ -319,7 +321,7 @@ TEST_F(ImportColumnFamilyTest, ImportSSTFileWriterFilesWithRangeTombstone) {
|
|
|
319
321
|
ASSERT_TRUE(file_meta != nullptr);
|
|
320
322
|
InternalKey largest;
|
|
321
323
|
largest.DecodeFrom(file_meta->largest);
|
|
322
|
-
ASSERT_EQ(largest.user_key(), "
|
|
324
|
+
ASSERT_EQ(largest.user_key(), "K9");
|
|
323
325
|
|
|
324
326
|
std::string value;
|
|
325
327
|
ASSERT_OK(db_->Get(ReadOptions(), import_cfh_, "K1", &value));
|
|
@@ -628,22 +630,22 @@ TEST_F(ImportColumnFamilyTest, ImportColumnFamilyNegativeTest) {
|
|
|
628
630
|
{
|
|
629
631
|
// Create column family with existing cf name.
|
|
630
632
|
ExportImportFilesMetaData metadata;
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
633
|
+
metadata.db_comparator_name = options.comparator->Name();
|
|
634
|
+
Status s = db_->CreateColumnFamilyWithImport(ColumnFamilyOptions(), "koko",
|
|
635
|
+
ImportColumnFamilyOptions(),
|
|
636
|
+
metadata, &import_cfh_);
|
|
637
|
+
ASSERT_TRUE(std::strstr(s.getState(), "Column family already exists"));
|
|
636
638
|
ASSERT_EQ(import_cfh_, nullptr);
|
|
637
639
|
}
|
|
638
640
|
|
|
639
641
|
{
|
|
640
642
|
// Import with no files specified.
|
|
641
643
|
ExportImportFilesMetaData metadata;
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
644
|
+
metadata.db_comparator_name = options.comparator->Name();
|
|
645
|
+
Status s = db_->CreateColumnFamilyWithImport(ColumnFamilyOptions(), "yoyo",
|
|
646
|
+
ImportColumnFamilyOptions(),
|
|
647
|
+
metadata, &import_cfh_);
|
|
648
|
+
ASSERT_TRUE(std::strstr(s.getState(), "The list of files is empty"));
|
|
647
649
|
ASSERT_EQ(import_cfh_, nullptr);
|
|
648
650
|
}
|
|
649
651
|
|
|
@@ -693,10 +695,10 @@ TEST_F(ImportColumnFamilyTest, ImportColumnFamilyNegativeTest) {
|
|
|
693
695
|
LiveFileMetaDataInit(file1_sst_name, sst_files_dir_, 1, 10, 19));
|
|
694
696
|
metadata.db_comparator_name = mismatch_options.comparator->Name();
|
|
695
697
|
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
698
|
+
Status s = db_->CreateColumnFamilyWithImport(ColumnFamilyOptions(), "coco",
|
|
699
|
+
ImportColumnFamilyOptions(),
|
|
700
|
+
metadata, &import_cfh_);
|
|
701
|
+
ASSERT_TRUE(std::strstr(s.getState(), "Comparator name mismatch"));
|
|
700
702
|
ASSERT_EQ(import_cfh_, nullptr);
|
|
701
703
|
}
|
|
702
704
|
|
|
@@ -718,10 +720,10 @@ TEST_F(ImportColumnFamilyTest, ImportColumnFamilyNegativeTest) {
|
|
|
718
720
|
LiveFileMetaDataInit(file3_sst_name, sst_files_dir_, 1, 10, 19));
|
|
719
721
|
metadata.db_comparator_name = options.comparator->Name();
|
|
720
722
|
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
723
|
+
Status s = db_->CreateColumnFamilyWithImport(ColumnFamilyOptions(), "yoyo",
|
|
724
|
+
ImportColumnFamilyOptions(),
|
|
725
|
+
metadata, &import_cfh_);
|
|
726
|
+
ASSERT_TRUE(std::strstr(s.getState(), "No such file or directory"));
|
|
725
727
|
ASSERT_EQ(import_cfh_, nullptr);
|
|
726
728
|
|
|
727
729
|
// Test successful import after a failure with the same CF name. Ensures
|
|
@@ -700,6 +700,7 @@ void InternalStats::CacheEntryRoleStats::BeginCollection(
|
|
|
700
700
|
cache_usage = cache->GetUsage();
|
|
701
701
|
table_size = cache->GetTableAddressCount();
|
|
702
702
|
occupancy = cache->GetOccupancyCount();
|
|
703
|
+
hash_seed = cache->GetHashSeed();
|
|
703
704
|
}
|
|
704
705
|
|
|
705
706
|
void InternalStats::CacheEntryRoleStats::EndCollection(
|
|
@@ -724,7 +725,7 @@ std::string InternalStats::CacheEntryRoleStats::ToString(
|
|
|
724
725
|
std::ostringstream str;
|
|
725
726
|
str << "Block cache " << cache_id
|
|
726
727
|
<< " capacity: " << BytesToHumanString(cache_capacity)
|
|
727
|
-
<< " usage: " << BytesToHumanString(cache_usage)
|
|
728
|
+
<< " seed: " << hash_seed << " usage: " << BytesToHumanString(cache_usage)
|
|
728
729
|
<< " table_size: " << table_size << " occupancy: " << occupancy
|
|
729
730
|
<< " collections: " << collection_count
|
|
730
731
|
<< " last_copies: " << copies_of_last_collection
|
|
@@ -1148,7 +1149,9 @@ bool InternalStats::HandleSsTables(std::string* value, Slice /*suffix*/) {
|
|
|
1148
1149
|
bool InternalStats::HandleAggregatedTableProperties(std::string* value,
|
|
1149
1150
|
Slice /*suffix*/) {
|
|
1150
1151
|
std::shared_ptr<const TableProperties> tp;
|
|
1151
|
-
|
|
1152
|
+
// TODO: plumb Env::IOActivity
|
|
1153
|
+
const ReadOptions read_options;
|
|
1154
|
+
auto s = cfd_->current()->GetAggregatedTableProperties(read_options, &tp);
|
|
1152
1155
|
if (!s.ok()) {
|
|
1153
1156
|
return false;
|
|
1154
1157
|
}
|
|
@@ -1168,7 +1171,9 @@ static std::map<std::string, std::string> MapUint64ValuesToString(
|
|
|
1168
1171
|
bool InternalStats::HandleAggregatedTablePropertiesMap(
|
|
1169
1172
|
std::map<std::string, std::string>* values, Slice /*suffix*/) {
|
|
1170
1173
|
std::shared_ptr<const TableProperties> tp;
|
|
1171
|
-
|
|
1174
|
+
// TODO: plumb Env::IOActivity
|
|
1175
|
+
const ReadOptions read_options;
|
|
1176
|
+
auto s = cfd_->current()->GetAggregatedTableProperties(read_options, &tp);
|
|
1172
1177
|
if (!s.ok()) {
|
|
1173
1178
|
return false;
|
|
1174
1179
|
}
|
|
@@ -1184,8 +1189,10 @@ bool InternalStats::HandleAggregatedTablePropertiesAtLevel(std::string* values,
|
|
|
1184
1189
|
return false;
|
|
1185
1190
|
}
|
|
1186
1191
|
std::shared_ptr<const TableProperties> tp;
|
|
1192
|
+
// TODO: plumb Env::IOActivity
|
|
1193
|
+
const ReadOptions read_options;
|
|
1187
1194
|
auto s = cfd_->current()->GetAggregatedTableProperties(
|
|
1188
|
-
&tp, static_cast<int>(level));
|
|
1195
|
+
read_options, &tp, static_cast<int>(level));
|
|
1189
1196
|
if (!s.ok()) {
|
|
1190
1197
|
return false;
|
|
1191
1198
|
}
|
|
@@ -1201,8 +1208,10 @@ bool InternalStats::HandleAggregatedTablePropertiesAtLevelMap(
|
|
|
1201
1208
|
return false;
|
|
1202
1209
|
}
|
|
1203
1210
|
std::shared_ptr<const TableProperties> tp;
|
|
1211
|
+
// TODO: plumb Env::IOActivity
|
|
1212
|
+
const ReadOptions read_options;
|
|
1204
1213
|
auto s = cfd_->current()->GetAggregatedTableProperties(
|
|
1205
|
-
&tp, static_cast<int>(level));
|
|
1214
|
+
read_options, &tp, static_cast<int>(level));
|
|
1206
1215
|
if (!s.ok()) {
|
|
1207
1216
|
return false;
|
|
1208
1217
|
}
|
|
@@ -1397,7 +1406,11 @@ bool InternalStats::HandleEstimatePendingCompactionBytes(uint64_t* value,
|
|
|
1397
1406
|
bool InternalStats::HandleEstimateTableReadersMem(uint64_t* value,
|
|
1398
1407
|
DBImpl* /*db*/,
|
|
1399
1408
|
Version* version) {
|
|
1400
|
-
|
|
1409
|
+
// TODO: plumb Env::IOActivity
|
|
1410
|
+
const ReadOptions read_options;
|
|
1411
|
+
*value = (version == nullptr)
|
|
1412
|
+
? 0
|
|
1413
|
+
: version->GetMemoryUsageByTableReaders(read_options);
|
|
1401
1414
|
return true;
|
|
1402
1415
|
}
|
|
1403
1416
|
|
|
@@ -1448,9 +1461,10 @@ bool InternalStats::HandleEstimateOldestKeyTime(uint64_t* value, DBImpl* /*db*/,
|
|
|
1448
1461
|
->compaction_options_fifo.allow_compaction) {
|
|
1449
1462
|
return false;
|
|
1450
1463
|
}
|
|
1451
|
-
|
|
1464
|
+
// TODO: plumb Env::IOActivity
|
|
1465
|
+
const ReadOptions read_options;
|
|
1452
1466
|
TablePropertiesCollection collection;
|
|
1453
|
-
auto s = cfd_->current()->GetPropertiesOfAllTables(&collection);
|
|
1467
|
+
auto s = cfd_->current()->GetPropertiesOfAllTables(read_options, &collection);
|
|
1454
1468
|
if (!s.ok()) {
|
|
1455
1469
|
return false;
|
|
1456
1470
|
}
|
|
@@ -1674,8 +1688,16 @@ void InternalStats::DumpDBStatsWriteStall(std::string* value) {
|
|
|
1674
1688
|
std::ostringstream str;
|
|
1675
1689
|
str << "Write Stall (count): ";
|
|
1676
1690
|
|
|
1677
|
-
for (
|
|
1678
|
-
|
|
1691
|
+
for (auto write_stall_stats_map_iter = write_stall_stats_map.begin();
|
|
1692
|
+
write_stall_stats_map_iter != write_stall_stats_map.end();
|
|
1693
|
+
write_stall_stats_map_iter++) {
|
|
1694
|
+
const auto& name_and_stat = *write_stall_stats_map_iter;
|
|
1695
|
+
str << name_and_stat.first << ": " << name_and_stat.second;
|
|
1696
|
+
if (std::next(write_stall_stats_map_iter) == write_stall_stats_map.end()) {
|
|
1697
|
+
str << "\n";
|
|
1698
|
+
} else {
|
|
1699
|
+
str << ", ";
|
|
1700
|
+
}
|
|
1679
1701
|
}
|
|
1680
1702
|
*value = str.str();
|
|
1681
1703
|
}
|
|
@@ -1857,8 +1879,16 @@ void InternalStats::DumpCFStatsWriteStall(std::string* value,
|
|
|
1857
1879
|
std::ostringstream str;
|
|
1858
1880
|
str << "Write Stall (count): ";
|
|
1859
1881
|
|
|
1860
|
-
for (
|
|
1861
|
-
|
|
1882
|
+
for (auto write_stall_stats_map_iter = write_stall_stats_map.begin();
|
|
1883
|
+
write_stall_stats_map_iter != write_stall_stats_map.end();
|
|
1884
|
+
write_stall_stats_map_iter++) {
|
|
1885
|
+
const auto& name_and_stat = *write_stall_stats_map_iter;
|
|
1886
|
+
str << name_and_stat.first << ": " << name_and_stat.second;
|
|
1887
|
+
if (std::next(write_stall_stats_map_iter) == write_stall_stats_map.end()) {
|
|
1888
|
+
str << "\n";
|
|
1889
|
+
} else {
|
|
1890
|
+
str << ", ";
|
|
1891
|
+
}
|
|
1862
1892
|
}
|
|
1863
1893
|
|
|
1864
1894
|
if (total_stall_count) {
|
|
@@ -46,6 +46,8 @@ template <typename T>
|
|
|
46
46
|
class ProtectionInfoKVOC;
|
|
47
47
|
template <typename T>
|
|
48
48
|
class ProtectionInfoKVOS;
|
|
49
|
+
template <typename T>
|
|
50
|
+
class ProtectionInfoKV;
|
|
49
51
|
|
|
50
52
|
// Aliases for 64-bit protection infos.
|
|
51
53
|
using ProtectionInfo64 = ProtectionInfo<uint64_t>;
|
|
@@ -64,13 +66,13 @@ class ProtectionInfo {
|
|
|
64
66
|
ProtectionInfoKVO<T> ProtectKVO(const SliceParts& key,
|
|
65
67
|
const SliceParts& value,
|
|
66
68
|
ValueType op_type) const;
|
|
67
|
-
|
|
68
|
-
T GetVal() const { return val_; }
|
|
69
|
+
ProtectionInfoKV<T> ProtectKV(const Slice& key, const Slice& value) const;
|
|
69
70
|
|
|
70
71
|
private:
|
|
71
72
|
friend class ProtectionInfoKVO<T>;
|
|
72
73
|
friend class ProtectionInfoKVOS<T>;
|
|
73
74
|
friend class ProtectionInfoKVOC<T>;
|
|
75
|
+
friend class ProtectionInfoKV<T>;
|
|
74
76
|
|
|
75
77
|
// Each field is hashed with an independent value so we can catch fields being
|
|
76
78
|
// swapped. Per the `NPHash64()` docs, using consecutive seeds is a pitfall,
|
|
@@ -89,8 +91,47 @@ class ProtectionInfo {
|
|
|
89
91
|
static_assert(sizeof(ProtectionInfo<T>) == sizeof(T), "");
|
|
90
92
|
}
|
|
91
93
|
|
|
94
|
+
T GetVal() const { return val_; }
|
|
92
95
|
void SetVal(T val) { val_ = val; }
|
|
93
96
|
|
|
97
|
+
void Encode(uint8_t len, char* dst) const {
|
|
98
|
+
assert(sizeof(val_) >= len);
|
|
99
|
+
switch (len) {
|
|
100
|
+
case 1:
|
|
101
|
+
dst[0] = static_cast<uint8_t>(val_);
|
|
102
|
+
break;
|
|
103
|
+
case 2:
|
|
104
|
+
EncodeFixed16(dst, static_cast<uint16_t>(val_));
|
|
105
|
+
break;
|
|
106
|
+
case 4:
|
|
107
|
+
EncodeFixed32(dst, static_cast<uint32_t>(val_));
|
|
108
|
+
break;
|
|
109
|
+
case 8:
|
|
110
|
+
EncodeFixed64(dst, static_cast<uint64_t>(val_));
|
|
111
|
+
break;
|
|
112
|
+
default:
|
|
113
|
+
assert(false);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
bool Verify(uint8_t len, const char* checksum_ptr) const {
|
|
118
|
+
assert(sizeof(val_) >= len);
|
|
119
|
+
switch (len) {
|
|
120
|
+
case 1:
|
|
121
|
+
return static_cast<uint8_t>(checksum_ptr[0]) ==
|
|
122
|
+
static_cast<uint8_t>(val_);
|
|
123
|
+
case 2:
|
|
124
|
+
return DecodeFixed16(checksum_ptr) == static_cast<uint16_t>(val_);
|
|
125
|
+
case 4:
|
|
126
|
+
return DecodeFixed32(checksum_ptr) == static_cast<uint32_t>(val_);
|
|
127
|
+
case 8:
|
|
128
|
+
return DecodeFixed64(checksum_ptr) == static_cast<uint64_t>(val_);
|
|
129
|
+
default:
|
|
130
|
+
assert(false);
|
|
131
|
+
return false;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
94
135
|
T val_ = 0;
|
|
95
136
|
};
|
|
96
137
|
|
|
@@ -113,7 +154,14 @@ class ProtectionInfoKVO {
|
|
|
113
154
|
void UpdateV(const SliceParts& old_value, const SliceParts& new_value);
|
|
114
155
|
void UpdateO(ValueType old_op_type, ValueType new_op_type);
|
|
115
156
|
|
|
116
|
-
|
|
157
|
+
// Encode this protection info into `len` bytes and stores them in `dst`.
|
|
158
|
+
void Encode(uint8_t len, char* dst) const { info_.Encode(len, dst); }
|
|
159
|
+
// Verify this protection info against the protection info encoded by Encode()
|
|
160
|
+
// at the first `len` bytes of `checksum_ptr`.
|
|
161
|
+
// Returns true iff the verification is successful.
|
|
162
|
+
bool Verify(uint8_t len, const char* checksum_ptr) const {
|
|
163
|
+
return info_.Verify(len, checksum_ptr);
|
|
164
|
+
}
|
|
117
165
|
|
|
118
166
|
private:
|
|
119
167
|
friend class ProtectionInfo<T>;
|
|
@@ -124,6 +172,7 @@ class ProtectionInfoKVO {
|
|
|
124
172
|
static_assert(sizeof(ProtectionInfoKVO<T>) == sizeof(T), "");
|
|
125
173
|
}
|
|
126
174
|
|
|
175
|
+
T GetVal() const { return info_.GetVal(); }
|
|
127
176
|
void SetVal(T val) { info_.SetVal(val); }
|
|
128
177
|
|
|
129
178
|
ProtectionInfo<T> info_;
|
|
@@ -154,7 +203,10 @@ class ProtectionInfoKVOC {
|
|
|
154
203
|
void UpdateC(ColumnFamilyId old_column_family_id,
|
|
155
204
|
ColumnFamilyId new_column_family_id);
|
|
156
205
|
|
|
157
|
-
|
|
206
|
+
void Encode(uint8_t len, char* dst) const { kvo_.Encode(len, dst); }
|
|
207
|
+
bool Verify(uint8_t len, const char* checksum_ptr) const {
|
|
208
|
+
return kvo_.Verify(len, checksum_ptr);
|
|
209
|
+
}
|
|
158
210
|
|
|
159
211
|
private:
|
|
160
212
|
friend class ProtectionInfoKVO<T>;
|
|
@@ -163,6 +215,7 @@ class ProtectionInfoKVOC {
|
|
|
163
215
|
static_assert(sizeof(ProtectionInfoKVOC<T>) == sizeof(T), "");
|
|
164
216
|
}
|
|
165
217
|
|
|
218
|
+
T GetVal() const { return kvo_.GetVal(); }
|
|
166
219
|
void SetVal(T val) { kvo_.SetVal(val); }
|
|
167
220
|
|
|
168
221
|
ProtectionInfoKVO<T> kvo_;
|
|
@@ -193,7 +246,10 @@ class ProtectionInfoKVOS {
|
|
|
193
246
|
void UpdateS(SequenceNumber old_sequence_number,
|
|
194
247
|
SequenceNumber new_sequence_number);
|
|
195
248
|
|
|
196
|
-
|
|
249
|
+
void Encode(uint8_t len, char* dst) const { kvo_.Encode(len, dst); }
|
|
250
|
+
bool Verify(uint8_t len, const char* checksum_ptr) const {
|
|
251
|
+
return kvo_.Verify(len, checksum_ptr);
|
|
252
|
+
}
|
|
197
253
|
|
|
198
254
|
private:
|
|
199
255
|
friend class ProtectionInfoKVO<T>;
|
|
@@ -202,11 +258,32 @@ class ProtectionInfoKVOS {
|
|
|
202
258
|
static_assert(sizeof(ProtectionInfoKVOS<T>) == sizeof(T), "");
|
|
203
259
|
}
|
|
204
260
|
|
|
261
|
+
T GetVal() const { return kvo_.GetVal(); }
|
|
205
262
|
void SetVal(T val) { kvo_.SetVal(val); }
|
|
206
263
|
|
|
207
264
|
ProtectionInfoKVO<T> kvo_;
|
|
208
265
|
};
|
|
209
266
|
|
|
267
|
+
template <typename T>
|
|
268
|
+
class ProtectionInfoKV {
|
|
269
|
+
public:
|
|
270
|
+
ProtectionInfoKV() = default;
|
|
271
|
+
|
|
272
|
+
void Encode(uint8_t len, char* dst) const { info_.Encode(len, dst); }
|
|
273
|
+
bool Verify(uint8_t len, const char* checksum_ptr) const {
|
|
274
|
+
return info_.Verify(len, checksum_ptr);
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
private:
|
|
278
|
+
friend class ProtectionInfo<T>;
|
|
279
|
+
|
|
280
|
+
explicit ProtectionInfoKV(T val) : info_(val) {
|
|
281
|
+
static_assert(sizeof(ProtectionInfoKV<T>) == sizeof(T));
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
ProtectionInfo<T> info_;
|
|
285
|
+
};
|
|
286
|
+
|
|
210
287
|
template <typename T>
|
|
211
288
|
Status ProtectionInfo<T>::GetStatus() const {
|
|
212
289
|
if (val_ != 0) {
|
|
@@ -244,6 +321,16 @@ ProtectionInfoKVO<T> ProtectionInfo<T>::ProtectKVO(const SliceParts& key,
|
|
|
244
321
|
return ProtectionInfoKVO<T>(val);
|
|
245
322
|
}
|
|
246
323
|
|
|
324
|
+
template <typename T>
|
|
325
|
+
ProtectionInfoKV<T> ProtectionInfo<T>::ProtectKV(const Slice& key,
|
|
326
|
+
const Slice& value) const {
|
|
327
|
+
T val = GetVal();
|
|
328
|
+
val = val ^ static_cast<T>(GetSliceNPHash64(key, ProtectionInfo<T>::kSeedK));
|
|
329
|
+
val =
|
|
330
|
+
val ^ static_cast<T>(GetSliceNPHash64(value, ProtectionInfo<T>::kSeedV));
|
|
331
|
+
return ProtectionInfoKV<T>(val);
|
|
332
|
+
}
|
|
333
|
+
|
|
247
334
|
template <typename T>
|
|
248
335
|
void ProtectionInfoKVO<T>::UpdateK(const Slice& old_key, const Slice& new_key) {
|
|
249
336
|
T val = GetVal();
|
|
@@ -394,5 +481,4 @@ void ProtectionInfoKVOS<T>::UpdateS(SequenceNumber old_sequence_number,
|
|
|
394
481
|
sizeof(new_sequence_number), ProtectionInfo<T>::kSeedS));
|
|
395
482
|
SetVal(val);
|
|
396
483
|
}
|
|
397
|
-
|
|
398
484
|
} // namespace ROCKSDB_NAMESPACE
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
#include "db/version_set.h"
|
|
13
13
|
#include "db/write_batch_internal.h"
|
|
14
14
|
#include "file/filename.h"
|
|
15
|
-
#include "monitoring/
|
|
15
|
+
#include "monitoring/statistics_impl.h"
|
|
16
16
|
#include "rocksdb/cache.h"
|
|
17
17
|
#include "rocksdb/compaction_filter.h"
|
|
18
18
|
#include "rocksdb/db.h"
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
#include "test_util/testutil.h"
|
|
30
30
|
#include "util/hash.h"
|
|
31
31
|
#include "util/mutexlock.h"
|
|
32
|
-
#include "util/
|
|
32
|
+
#include "util/rate_limiter_impl.h"
|
|
33
33
|
#include "util/string_util.h"
|
|
34
34
|
#include "utilities/merge_operators.h"
|
|
35
35
|
|
|
@@ -35,17 +35,21 @@ enum RecordType {
|
|
|
35
35
|
|
|
36
36
|
// Compression Type
|
|
37
37
|
kSetCompressionType = 9,
|
|
38
|
+
|
|
39
|
+
// User-defined timestamp sizes
|
|
40
|
+
kUserDefinedTimestampSizeType = 10,
|
|
41
|
+
kRecyclableUserDefinedTimestampSizeType = 11,
|
|
38
42
|
};
|
|
39
|
-
|
|
43
|
+
constexpr int kMaxRecordType = kRecyclableUserDefinedTimestampSizeType;
|
|
40
44
|
|
|
41
|
-
|
|
45
|
+
constexpr unsigned int kBlockSize = 32768;
|
|
42
46
|
|
|
43
47
|
// Header is checksum (4 bytes), length (2 bytes), type (1 byte)
|
|
44
|
-
|
|
48
|
+
constexpr int kHeaderSize = 4 + 2 + 1;
|
|
45
49
|
|
|
46
50
|
// Recyclable header is checksum (4 bytes), length (2 bytes), type (1 byte),
|
|
47
51
|
// log number (4 bytes).
|
|
48
|
-
|
|
52
|
+
constexpr int kRecyclableHeaderSize = 4 + 2 + 1 + 4;
|
|
49
53
|
|
|
50
54
|
} // namespace log
|
|
51
55
|
} // namespace ROCKSDB_NAMESPACE
|