@nxtedition/rocksdb 9.0.0 → 10.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/binding.cc +244 -177
- package/deps/rocksdb/rocksdb/CMakeLists.txt +13 -9
- package/deps/rocksdb/rocksdb/Makefile +15 -6
- package/deps/rocksdb/rocksdb/README.md +29 -0
- package/deps/rocksdb/rocksdb/TARGETS +17 -2
- package/deps/rocksdb/rocksdb/cache/cache.cc +35 -0
- package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +74 -15
- package/deps/rocksdb/rocksdb/cache/cache_helpers.cc +2 -1
- package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.h +4 -3
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +16 -4
- package/deps/rocksdb/rocksdb/cache/charged_cache.cc +4 -2
- package/deps/rocksdb/rocksdb/cache/charged_cache.h +5 -3
- package/deps/rocksdb/rocksdb/cache/clock_cache.cc +2024 -14
- package/deps/rocksdb/rocksdb/cache/clock_cache.h +349 -23
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +126 -51
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +9 -0
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +202 -7
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +31 -14
- package/deps/rocksdb/rocksdb/cache/secondary_cache.cc +0 -33
- package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +314 -25
- package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.h +29 -4
- package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +10 -0
- package/deps/rocksdb/rocksdb/cache/sharded_cache.h +8 -3
- package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache.cc +119 -0
- package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache.h +155 -0
- package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache_test.cc +711 -0
- package/deps/rocksdb/rocksdb/cache/typed_cache.h +17 -11
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +25 -11
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +1 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_contents.h +2 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +2 -1
- package/deps/rocksdb/rocksdb/db/blob/db_blob_basic_test.cc +8 -0
- package/deps/rocksdb/rocksdb/db/blob/db_blob_index_test.cc +7 -3
- package/deps/rocksdb/rocksdb/db/builder.cc +3 -3
- package/deps/rocksdb/rocksdb/db/c.cc +64 -0
- package/deps/rocksdb/rocksdb/db/c_test.c +36 -0
- package/deps/rocksdb/rocksdb/db/column_family.cc +23 -15
- package/deps/rocksdb/rocksdb/db/column_family.h +9 -0
- package/deps/rocksdb/rocksdb/db/column_family_test.cc +101 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +36 -23
- package/deps/rocksdb/rocksdb/db/compaction/compaction.h +24 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +3 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +42 -18
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +7 -3
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +4 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +8 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +1 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +3 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +61 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +146 -64
- package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +13 -39
- package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +29 -7
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +8 -3
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +59 -0
- package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +27 -3
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +186 -2
- package/deps/rocksdb/rocksdb/db/db_flush_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +17 -5
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +519 -240
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +104 -43
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +169 -66
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +2 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +12 -4
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +50 -14
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +85 -53
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +3 -7
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +99 -82
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +4 -14
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +24 -21
- package/deps/rocksdb/rocksdb/db/db_info_dumper.cc +6 -0
- package/deps/rocksdb/rocksdb/db/db_iter.cc +83 -55
- package/deps/rocksdb/rocksdb/db/db_iter.h +10 -2
- package/deps/rocksdb/rocksdb/db/db_iter_test.cc +29 -0
- package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +276 -21
- package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +35 -0
- package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +187 -1
- package/deps/rocksdb/rocksdb/db/db_options_test.cc +258 -0
- package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +258 -0
- package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_readonly_with_timestamp_test.cc +52 -0
- package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +74 -1
- package/deps/rocksdb/rocksdb/db/db_sst_test.cc +22 -4
- package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +3 -1
- package/deps/rocksdb/rocksdb/db/db_test.cc +134 -30
- package/deps/rocksdb/rocksdb/db/db_test2.cc +3 -0
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +11 -6
- package/deps/rocksdb/rocksdb/db/db_test_util.h +5 -2
- package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +12 -0
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +337 -1
- package/deps/rocksdb/rocksdb/db/deletefile_test.cc +2 -0
- package/deps/rocksdb/rocksdb/db/error_handler.cc +51 -34
- package/deps/rocksdb/rocksdb/db/error_handler.h +7 -6
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +58 -0
- package/deps/rocksdb/rocksdb/db/flush_job.cc +17 -19
- package/deps/rocksdb/rocksdb/db/flush_job.h +3 -3
- package/deps/rocksdb/rocksdb/db/flush_job_test.cc +2 -1
- package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +2 -0
- package/deps/rocksdb/rocksdb/db/memtable.cc +18 -70
- package/deps/rocksdb/rocksdb/db/memtable_list.cc +1 -1
- package/deps/rocksdb/rocksdb/db/memtable_list.h +11 -1
- package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/merge_helper.cc +330 -115
- package/deps/rocksdb/rocksdb/db/merge_helper.h +100 -12
- package/deps/rocksdb/rocksdb/db/merge_operator.cc +82 -0
- package/deps/rocksdb/rocksdb/db/merge_test.cc +267 -0
- package/deps/rocksdb/rocksdb/db/perf_context_test.cc +3 -0
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.h +4 -4
- package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +2 -0
- package/deps/rocksdb/rocksdb/db/prefix_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/range_del_aggregator.h +4 -0
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +4 -0
- package/deps/rocksdb/rocksdb/db/repair.cc +4 -3
- package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +454 -70
- package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.cc +105 -69
- package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.h +83 -46
- package/deps/rocksdb/rocksdb/db/table_cache.cc +32 -19
- package/deps/rocksdb/rocksdb/db/table_cache.h +12 -6
- package/deps/rocksdb/rocksdb/db/version_edit.h +10 -4
- package/deps/rocksdb/rocksdb/db/version_set.cc +75 -73
- package/deps/rocksdb/rocksdb/db/version_set.h +8 -8
- package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +2 -5
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +22 -11
- package/deps/rocksdb/rocksdb/db/wide/db_wide_basic_test.cc +525 -0
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.cc +6 -22
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.h +0 -20
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization_test.cc +0 -29
- package/deps/rocksdb/rocksdb/db/wide/wide_columns_helper.cc +46 -0
- package/deps/rocksdb/rocksdb/db/wide/wide_columns_helper.h +40 -0
- package/deps/rocksdb/rocksdb/db/wide/wide_columns_helper_test.cc +39 -0
- package/deps/rocksdb/rocksdb/db/write_batch.cc +44 -20
- package/deps/rocksdb/rocksdb/db_stress_tool/CMakeLists.txt +1 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +4 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +4 -7
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +88 -10
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +15 -10
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +108 -58
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +36 -14
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +34 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +1 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +195 -130
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +4 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +12 -12
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_wide_merge_operator.cc +51 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_wide_merge_operator.h +27 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +3 -6
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +14 -11
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +44 -38
- package/deps/rocksdb/rocksdb/env/env.cc +5 -0
- package/deps/rocksdb/rocksdb/env/unique_id_gen.cc +1 -0
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +50 -29
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +32 -2
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +513 -30
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +8 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_cache.h +38 -13
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +14 -7
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +42 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +65 -12
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +11 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/comparator.h +26 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +37 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/env.h +2 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/filter_policy.h +8 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +10 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +4 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/memory_allocator.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/merge_operator.h +55 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +45 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/port_defs.h +4 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/rate_limiter.h +9 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +79 -8
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +16 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/status.h +35 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/system_clock.h +15 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +14 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +2 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/types.h +7 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +6 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +9 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/wide_columns.h +53 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +0 -2
- package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +2 -2
- package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.h +1 -1
- package/deps/rocksdb/rocksdb/microbench/README.md +60 -0
- package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.h +1 -1
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +6 -0
- package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +18 -7
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +4 -0
- package/deps/rocksdb/rocksdb/options/customizable_test.cc +4 -0
- package/deps/rocksdb/rocksdb/options/db_options.cc +47 -2
- package/deps/rocksdb/rocksdb/options/db_options.h +3 -0
- package/deps/rocksdb/rocksdb/options/options_helper.cc +12 -0
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +3 -1
- package/deps/rocksdb/rocksdb/options/options_test.cc +6 -1
- package/deps/rocksdb/rocksdb/plugin/README.md +43 -0
- package/deps/rocksdb/rocksdb/port/README +10 -0
- package/deps/rocksdb/rocksdb/port/port_example.h +1 -1
- package/deps/rocksdb/rocksdb/port/port_posix.cc +1 -1
- package/deps/rocksdb/rocksdb/port/port_posix.h +7 -4
- package/deps/rocksdb/rocksdb/port/stack_trace.cc +5 -0
- package/deps/rocksdb/rocksdb/port/win/port_win.h +5 -2
- package/deps/rocksdb/rocksdb/src.mk +7 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +3 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +275 -61
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +96 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +179 -62
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +35 -22
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +12 -8
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +14 -9
- package/deps/rocksdb/rocksdb/table/block_based/block_cache.cc +3 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_cache.h +26 -7
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +15 -12
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +10 -5
- package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +39 -18
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +6 -6
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +44 -26
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy_internal.h +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +10 -8
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +4 -2
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +3 -2
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +3 -2
- package/deps/rocksdb/rocksdb/table/block_fetcher.h +4 -0
- package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +6 -2
- package/deps/rocksdb/rocksdb/table/get_context.cc +52 -89
- package/deps/rocksdb/rocksdb/table/get_context.h +12 -3
- package/deps/rocksdb/rocksdb/table/internal_iterator.h +11 -0
- package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +29 -1
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +12 -0
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +33 -6
- package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +1 -0
- package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +2 -4
- package/deps/rocksdb/rocksdb/table/table_reader.h +6 -0
- package/deps/rocksdb/rocksdb/test_util/mock_time_env.h +31 -0
- package/deps/rocksdb/rocksdb/test_util/secondary_cache_test_util.cc +2 -1
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_pysim.py +3 -3
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +26 -43
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +213 -28
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +36 -0
- package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +0 -1
- package/deps/rocksdb/rocksdb/tools/sst_dump_test.cc +33 -10
- package/deps/rocksdb/rocksdb/util/bloom_test.cc +32 -11
- package/deps/rocksdb/rocksdb/util/cast_util.h +10 -0
- package/deps/rocksdb/rocksdb/util/comparator.cc +26 -1
- package/deps/rocksdb/rocksdb/util/compression.h +9 -3
- package/deps/rocksdb/rocksdb/util/crc32c.cc +7 -1
- package/deps/rocksdb/rocksdb/util/distributed_mutex.h +1 -1
- package/deps/rocksdb/rocksdb/util/overload.h +23 -0
- package/deps/rocksdb/rocksdb/util/rate_limiter.cc +53 -18
- package/deps/rocksdb/rocksdb/util/rate_limiter_impl.h +6 -1
- package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +90 -19
- package/deps/rocksdb/rocksdb/util/slice_test.cc +30 -0
- package/deps/rocksdb/rocksdb/util/status.cc +1 -0
- package/deps/rocksdb/rocksdb/util/string_util.cc +39 -0
- package/deps/rocksdb/rocksdb/util/string_util.h +10 -0
- package/deps/rocksdb/rocksdb/util/thread_operation.h +2 -0
- package/deps/rocksdb/rocksdb/util/udt_util.cc +42 -0
- package/deps/rocksdb/rocksdb/util/udt_util.h +19 -0
- package/deps/rocksdb/rocksdb/util/udt_util_test.cc +14 -0
- package/deps/rocksdb/rocksdb/util/xxhash.h +0 -3
- package/deps/rocksdb/rocksdb/util/xxph3.h +0 -4
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +2 -1
- package/deps/rocksdb/rocksdb/utilities/fault_injection_env.h +1 -0
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +19 -15
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +11 -7
- package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.h +5 -0
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend_test.cc +3 -0
- package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration_test.cc +9 -0
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache.cc +7 -4
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/README +13 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +41 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +15 -9
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +4 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +155 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +6 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +81 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +2 -6
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +7 -5
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +2 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +3 -2
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +57 -27
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +127 -120
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +129 -59
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +105 -8
- package/deps/rocksdb/rocksdb.gyp +4 -2
- package/index.js +38 -55
- package/package.json +4 -4
- package/prebuilds/darwin-arm64/@nxtedition+rocksdb.node +0 -0
- package/util.h +7 -1
- package/deps/rocksdb/rocksdb/cmake/modules/CxxFlags.cmake +0 -7
- package/deps/rocksdb/rocksdb/cmake/modules/FindJeMalloc.cmake +0 -29
- package/deps/rocksdb/rocksdb/cmake/modules/FindNUMA.cmake +0 -29
- package/deps/rocksdb/rocksdb/cmake/modules/FindSnappy.cmake +0 -29
- package/deps/rocksdb/rocksdb/cmake/modules/FindTBB.cmake +0 -33
- package/deps/rocksdb/rocksdb/cmake/modules/Findgflags.cmake +0 -29
- package/deps/rocksdb/rocksdb/cmake/modules/Findlz4.cmake +0 -29
- package/deps/rocksdb/rocksdb/cmake/modules/Finduring.cmake +0 -26
- package/deps/rocksdb/rocksdb/cmake/modules/Findzstd.cmake +0 -29
- package/deps/rocksdb/rocksdb/cmake/modules/ReadVersion.cmake +0 -10
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/prebuilds/linux-x64/node.napi.node +0 -0
|
@@ -234,15 +234,19 @@ class FullTypedCacheHelperFns : public BasicTypedCacheHelperFns<TValue> {
|
|
|
234
234
|
return Status::OK();
|
|
235
235
|
}
|
|
236
236
|
|
|
237
|
-
static Status Create(const Slice& data,
|
|
237
|
+
static Status Create(const Slice& data, CompressionType type,
|
|
238
|
+
CacheTier source, CreateContext* context,
|
|
238
239
|
MemoryAllocator* allocator, ObjectPtr* out_obj,
|
|
239
240
|
size_t* out_charge) {
|
|
240
241
|
std::unique_ptr<TValue> value = nullptr;
|
|
242
|
+
if (source != CacheTier::kVolatileTier) {
|
|
243
|
+
return Status::InvalidArgument();
|
|
244
|
+
}
|
|
241
245
|
if constexpr (sizeof(TCreateContext) > 0) {
|
|
242
246
|
TCreateContext* tcontext = static_cast<TCreateContext*>(context);
|
|
243
|
-
tcontext->Create(&value, out_charge, data, allocator);
|
|
247
|
+
tcontext->Create(&value, out_charge, data, type, allocator);
|
|
244
248
|
} else {
|
|
245
|
-
TCreateContext::Create(&value, out_charge, data, allocator);
|
|
249
|
+
TCreateContext::Create(&value, out_charge, data, type, allocator);
|
|
246
250
|
}
|
|
247
251
|
*out_obj = UpCastValue(value.release());
|
|
248
252
|
return Status::OK();
|
|
@@ -301,13 +305,15 @@ class FullTypedCacheInterface
|
|
|
301
305
|
inline Status InsertFull(
|
|
302
306
|
const Slice& key, TValuePtr value, size_t charge,
|
|
303
307
|
TypedHandle** handle = nullptr, Priority priority = Priority::LOW,
|
|
304
|
-
CacheTier lowest_used_cache_tier = CacheTier::kNonVolatileBlockTier
|
|
308
|
+
CacheTier lowest_used_cache_tier = CacheTier::kNonVolatileBlockTier,
|
|
309
|
+
const Slice& compressed = Slice(),
|
|
310
|
+
CompressionType type = CompressionType::kNoCompression) {
|
|
305
311
|
auto untyped_handle = reinterpret_cast<Handle**>(handle);
|
|
306
|
-
auto helper = lowest_used_cache_tier
|
|
312
|
+
auto helper = lowest_used_cache_tier > CacheTier::kVolatileTier
|
|
307
313
|
? GetFullHelper()
|
|
308
314
|
: GetBasicHelper();
|
|
309
315
|
return this->cache_->Insert(key, UpCastValue(value), helper, charge,
|
|
310
|
-
untyped_handle, priority);
|
|
316
|
+
untyped_handle, priority, compressed, type);
|
|
311
317
|
}
|
|
312
318
|
|
|
313
319
|
// Like SecondaryCache::InsertSaved, with SecondaryCache compatibility
|
|
@@ -319,9 +325,9 @@ class FullTypedCacheInterface
|
|
|
319
325
|
size_t* out_charge = nullptr) {
|
|
320
326
|
ObjectPtr value;
|
|
321
327
|
size_t charge;
|
|
322
|
-
Status st = GetFullHelper()->create_cb(
|
|
323
|
-
|
|
324
|
-
|
|
328
|
+
Status st = GetFullHelper()->create_cb(
|
|
329
|
+
data, kNoCompression, CacheTier::kVolatileTier, create_context,
|
|
330
|
+
this->cache_->memory_allocator(), &value, &charge);
|
|
325
331
|
if (out_charge) {
|
|
326
332
|
*out_charge = charge;
|
|
327
333
|
}
|
|
@@ -340,7 +346,7 @@ class FullTypedCacheInterface
|
|
|
340
346
|
const Slice& key, TCreateContext* create_context = nullptr,
|
|
341
347
|
Priority priority = Priority::LOW, Statistics* stats = nullptr,
|
|
342
348
|
CacheTier lowest_used_cache_tier = CacheTier::kNonVolatileBlockTier) {
|
|
343
|
-
if (lowest_used_cache_tier
|
|
349
|
+
if (lowest_used_cache_tier > CacheTier::kVolatileTier) {
|
|
344
350
|
return reinterpret_cast<TypedHandle*>(this->cache_->Lookup(
|
|
345
351
|
key, GetFullHelper(), create_context, priority, stats));
|
|
346
352
|
} else {
|
|
@@ -352,7 +358,7 @@ class FullTypedCacheInterface
|
|
|
352
358
|
inline void StartAsyncLookupFull(
|
|
353
359
|
TypedAsyncLookupHandle& async_handle,
|
|
354
360
|
CacheTier lowest_used_cache_tier = CacheTier::kNonVolatileBlockTier) {
|
|
355
|
-
if (lowest_used_cache_tier
|
|
361
|
+
if (lowest_used_cache_tier > CacheTier::kVolatileTier) {
|
|
356
362
|
async_handle.helper = GetFullHelper();
|
|
357
363
|
this->cache_->StartAsyncLookup(async_handle);
|
|
358
364
|
} else {
|
|
@@ -19,6 +19,14 @@
|
|
|
19
19
|
|
|
20
20
|
namespace ROCKSDB_NAMESPACE {
|
|
21
21
|
|
|
22
|
+
inline static SequenceNumber GetSeqNum(const DBImpl* db, const Snapshot* s) {
|
|
23
|
+
if (s) {
|
|
24
|
+
return s->GetSequenceNumber();
|
|
25
|
+
} else {
|
|
26
|
+
return db->GetLatestSequenceNumber();
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
22
30
|
Status ArenaWrappedDBIter::GetProperty(std::string prop_name,
|
|
23
31
|
std::string* prop) {
|
|
24
32
|
if (prop_name == "rocksdb.iterator.super-version-number") {
|
|
@@ -54,7 +62,9 @@ void ArenaWrappedDBIter::Init(
|
|
|
54
62
|
}
|
|
55
63
|
}
|
|
56
64
|
|
|
57
|
-
Status ArenaWrappedDBIter::Refresh() {
|
|
65
|
+
Status ArenaWrappedDBIter::Refresh() { return Refresh(nullptr); }
|
|
66
|
+
|
|
67
|
+
Status ArenaWrappedDBIter::Refresh(const Snapshot* snapshot) {
|
|
58
68
|
if (cfd_ == nullptr || db_impl_ == nullptr || !allow_refresh_) {
|
|
59
69
|
return Status::NotSupported("Creating renew iterator is not allowed.");
|
|
60
70
|
}
|
|
@@ -63,6 +73,10 @@ Status ArenaWrappedDBIter::Refresh() {
|
|
|
63
73
|
// correct behavior. Will be corrected automatically when we take a snapshot
|
|
64
74
|
// here for the case of WritePreparedTxnDB.
|
|
65
75
|
uint64_t cur_sv_number = cfd_->GetSuperVersionNumber();
|
|
76
|
+
// If we recreate a new internal iterator below (NewInternalIterator()),
|
|
77
|
+
// we will pass in read_options_. We need to make sure it
|
|
78
|
+
// has the right snapshot.
|
|
79
|
+
read_options_.snapshot = snapshot;
|
|
66
80
|
TEST_SYNC_POINT("ArenaWrappedDBIter::Refresh:1");
|
|
67
81
|
TEST_SYNC_POINT("ArenaWrappedDBIter::Refresh:2");
|
|
68
82
|
auto reinit_internal_iter = [&]() {
|
|
@@ -72,18 +86,19 @@ Status ArenaWrappedDBIter::Refresh() {
|
|
|
72
86
|
new (&arena_) Arena();
|
|
73
87
|
|
|
74
88
|
SuperVersion* sv = cfd_->GetReferencedSuperVersion(db_impl_);
|
|
75
|
-
|
|
89
|
+
assert(sv->version_number >= cur_sv_number);
|
|
90
|
+
SequenceNumber read_seq = GetSeqNum(db_impl_, snapshot);
|
|
76
91
|
if (read_callback_) {
|
|
77
|
-
read_callback_->Refresh(
|
|
92
|
+
read_callback_->Refresh(read_seq);
|
|
78
93
|
}
|
|
79
94
|
Init(env, read_options_, *(cfd_->ioptions()), sv->mutable_cf_options,
|
|
80
|
-
sv->current,
|
|
95
|
+
sv->current, read_seq,
|
|
81
96
|
sv->mutable_cf_options.max_sequential_skip_in_iterations,
|
|
82
|
-
|
|
97
|
+
sv->version_number, read_callback_, db_impl_, cfd_, expose_blob_index_,
|
|
83
98
|
allow_refresh_);
|
|
84
99
|
|
|
85
100
|
InternalIterator* internal_iter = db_impl_->NewInternalIterator(
|
|
86
|
-
read_options_, cfd_, sv, &arena_,
|
|
101
|
+
read_options_, cfd_, sv, &arena_, read_seq,
|
|
87
102
|
/* allow_unprepared_value */ true, /* db_iter */ this);
|
|
88
103
|
SetIterUnderDBIter(internal_iter);
|
|
89
104
|
};
|
|
@@ -92,13 +107,13 @@ Status ArenaWrappedDBIter::Refresh() {
|
|
|
92
107
|
reinit_internal_iter();
|
|
93
108
|
break;
|
|
94
109
|
} else {
|
|
95
|
-
SequenceNumber
|
|
110
|
+
SequenceNumber read_seq = GetSeqNum(db_impl_, snapshot);
|
|
96
111
|
// Refresh range-tombstones in MemTable
|
|
97
112
|
if (!read_options_.ignore_range_deletions) {
|
|
98
113
|
SuperVersion* sv = cfd_->GetThreadLocalSuperVersion(db_impl_);
|
|
99
114
|
TEST_SYNC_POINT_CALLBACK("ArenaWrappedDBIter::Refresh:SV", nullptr);
|
|
100
115
|
auto t = sv->mem->NewRangeTombstoneIterator(
|
|
101
|
-
read_options_,
|
|
116
|
+
read_options_, read_seq, false /* immutable_memtable */);
|
|
102
117
|
if (!t || t->empty()) {
|
|
103
118
|
// If memtable_range_tombstone_iter_ points to a non-empty tombstone
|
|
104
119
|
// iterator, then it means sv->mem is not the memtable that
|
|
@@ -128,9 +143,6 @@ Status ArenaWrappedDBIter::Refresh() {
|
|
|
128
143
|
}
|
|
129
144
|
db_impl_->ReturnAndCleanupSuperVersion(cfd_, sv);
|
|
130
145
|
}
|
|
131
|
-
// Refresh latest sequence number
|
|
132
|
-
db_iter_->set_sequence(latest_seq);
|
|
133
|
-
db_iter_->set_valid(false);
|
|
134
146
|
// Check again if the latest super version number is changed
|
|
135
147
|
uint64_t latest_sv_number = cfd_->GetSuperVersionNumber();
|
|
136
148
|
if (latest_sv_number != cur_sv_number) {
|
|
@@ -139,6 +151,8 @@ Status ArenaWrappedDBIter::Refresh() {
|
|
|
139
151
|
cur_sv_number = latest_sv_number;
|
|
140
152
|
continue;
|
|
141
153
|
}
|
|
154
|
+
db_iter_->set_sequence(read_seq);
|
|
155
|
+
db_iter_->set_valid(false);
|
|
142
156
|
break;
|
|
143
157
|
}
|
|
144
158
|
}
|
|
@@ -80,6 +80,7 @@ class ArenaWrappedDBIter : public Iterator {
|
|
|
80
80
|
Status GetProperty(std::string prop_name, std::string* prop) override;
|
|
81
81
|
|
|
82
82
|
Status Refresh() override;
|
|
83
|
+
Status Refresh(const Snapshot*) override;
|
|
83
84
|
|
|
84
85
|
void Init(Env* env, const ReadOptions& read_options,
|
|
85
86
|
const ImmutableOptions& ioptions,
|
|
@@ -46,7 +46,8 @@ class BlobContents {
|
|
|
46
46
|
class BlobContentsCreator : public Cache::CreateContext {
|
|
47
47
|
public:
|
|
48
48
|
static void Create(std::unique_ptr<BlobContents>* out, size_t* out_charge,
|
|
49
|
-
const Slice& contents,
|
|
49
|
+
const Slice& contents, CompressionType /*type*/,
|
|
50
|
+
MemoryAllocator* alloc) {
|
|
50
51
|
auto raw = new BlobContents(AllocateAndCopyBlock(contents, alloc),
|
|
51
52
|
contents.size());
|
|
52
53
|
out->reset(raw);
|
|
@@ -585,7 +585,8 @@ Status BlobFileReader::UncompressBlobIfNeeded(
|
|
|
585
585
|
assert(result);
|
|
586
586
|
|
|
587
587
|
if (compression_type == kNoCompression) {
|
|
588
|
-
BlobContentsCreator::Create(result, nullptr, value_slice,
|
|
588
|
+
BlobContentsCreator::Create(result, nullptr, value_slice, kNoCompression,
|
|
589
|
+
allocator);
|
|
589
590
|
return Status::OK();
|
|
590
591
|
}
|
|
591
592
|
|
|
@@ -168,6 +168,7 @@ TEST_F(DBBlobBasicTest, IterateBlobsFromCache) {
|
|
|
168
168
|
ASSERT_EQ(iter->value().ToString(), blobs[i]);
|
|
169
169
|
++i;
|
|
170
170
|
}
|
|
171
|
+
ASSERT_OK(iter->status());
|
|
171
172
|
ASSERT_EQ(i, num_blobs);
|
|
172
173
|
ASSERT_EQ(options.statistics->getAndResetTickerCount(BLOB_DB_CACHE_ADD), 0);
|
|
173
174
|
}
|
|
@@ -203,6 +204,7 @@ TEST_F(DBBlobBasicTest, IterateBlobsFromCache) {
|
|
|
203
204
|
ASSERT_EQ(iter->value().ToString(), blobs[i]);
|
|
204
205
|
++i;
|
|
205
206
|
}
|
|
207
|
+
ASSERT_OK(iter->status());
|
|
206
208
|
ASSERT_EQ(i, num_blobs);
|
|
207
209
|
ASSERT_EQ(options.statistics->getAndResetTickerCount(BLOB_DB_CACHE_ADD),
|
|
208
210
|
num_blobs);
|
|
@@ -224,6 +226,7 @@ TEST_F(DBBlobBasicTest, IterateBlobsFromCache) {
|
|
|
224
226
|
ASSERT_EQ(iter->value().ToString(), blobs[i]);
|
|
225
227
|
++i;
|
|
226
228
|
}
|
|
229
|
+
ASSERT_OK(iter->status());
|
|
227
230
|
ASSERT_EQ(i, num_blobs);
|
|
228
231
|
ASSERT_EQ(options.statistics->getAndResetTickerCount(BLOB_DB_CACHE_ADD), 0);
|
|
229
232
|
}
|
|
@@ -2123,6 +2126,7 @@ TEST_F(DBBlobWithTimestampTest, IterateBlobs) {
|
|
|
2123
2126
|
/*key_is_internal*/ false);
|
|
2124
2127
|
iter->Prev();
|
|
2125
2128
|
}
|
|
2129
|
+
ASSERT_OK(iter->status());
|
|
2126
2130
|
}
|
|
2127
2131
|
|
|
2128
2132
|
// Backward iteration, then reverse to forward.
|
|
@@ -2169,6 +2173,7 @@ TEST_F(DBBlobWithTimestampTest, IterateBlobs) {
|
|
|
2169
2173
|
iter->Next();
|
|
2170
2174
|
}
|
|
2171
2175
|
}
|
|
2176
|
+
ASSERT_OK(iter->status());
|
|
2172
2177
|
}
|
|
2173
2178
|
|
|
2174
2179
|
// Backward iterating multiple versions of the same key, get in this order:
|
|
@@ -2187,6 +2192,7 @@ TEST_F(DBBlobWithTimestampTest, IterateBlobs) {
|
|
|
2187
2192
|
iter->Prev();
|
|
2188
2193
|
}
|
|
2189
2194
|
}
|
|
2195
|
+
ASSERT_OK(iter->status());
|
|
2190
2196
|
}
|
|
2191
2197
|
|
|
2192
2198
|
int upper_bound_idx = num_blobs - 2;
|
|
@@ -2209,6 +2215,7 @@ TEST_F(DBBlobWithTimestampTest, IterateBlobs) {
|
|
|
2209
2215
|
iter->Next();
|
|
2210
2216
|
}
|
|
2211
2217
|
}
|
|
2218
|
+
ASSERT_OK(iter->status());
|
|
2212
2219
|
}
|
|
2213
2220
|
|
|
2214
2221
|
// Backward iteration with upper and lower bound.
|
|
@@ -2224,6 +2231,7 @@ TEST_F(DBBlobWithTimestampTest, IterateBlobs) {
|
|
|
2224
2231
|
iter->Prev();
|
|
2225
2232
|
}
|
|
2226
2233
|
}
|
|
2234
|
+
ASSERT_OK(iter->status());
|
|
2227
2235
|
}
|
|
2228
2236
|
}
|
|
2229
2237
|
|
|
@@ -96,9 +96,13 @@ class DBBlobIndexTest : public DBTestBase {
|
|
|
96
96
|
}
|
|
97
97
|
|
|
98
98
|
ArenaWrappedDBIter* GetBlobIterator() {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
99
|
+
ColumnFamilyData* column_family = cfd();
|
|
100
|
+
DBImpl* db_impl = dbfull();
|
|
101
|
+
return db_impl->NewIteratorImpl(
|
|
102
|
+
ReadOptions(), column_family,
|
|
103
|
+
column_family->GetReferencedSuperVersion(db_impl),
|
|
104
|
+
db_impl->GetLatestSequenceNumber(), nullptr /*read_callback*/,
|
|
105
|
+
true /*expose_blob_index*/);
|
|
102
106
|
}
|
|
103
107
|
|
|
104
108
|
Options GetTestOptions() {
|
|
@@ -294,12 +294,12 @@ Status BuildTable(
|
|
|
294
294
|
if (!s.ok() || empty) {
|
|
295
295
|
builder->Abandon();
|
|
296
296
|
} else {
|
|
297
|
-
std::string
|
|
297
|
+
std::string seqno_to_time_mapping_str;
|
|
298
298
|
seqno_to_time_mapping.Encode(
|
|
299
|
-
|
|
299
|
+
seqno_to_time_mapping_str, meta->fd.smallest_seqno,
|
|
300
300
|
meta->fd.largest_seqno, meta->file_creation_time);
|
|
301
301
|
builder->SetSeqnoTimeTableProperties(
|
|
302
|
-
|
|
302
|
+
seqno_to_time_mapping_str,
|
|
303
303
|
ioptions.compaction_style == CompactionStyle::kCompactionStyleFIFO
|
|
304
304
|
? meta->file_creation_time
|
|
305
305
|
: meta->oldest_ancester_time);
|
|
@@ -120,6 +120,7 @@ using ROCKSDB_NAMESPACE::TransactionDB;
|
|
|
120
120
|
using ROCKSDB_NAMESPACE::TransactionDBOptions;
|
|
121
121
|
using ROCKSDB_NAMESPACE::TransactionLogIterator;
|
|
122
122
|
using ROCKSDB_NAMESPACE::TransactionOptions;
|
|
123
|
+
using ROCKSDB_NAMESPACE::WaitForCompactOptions;
|
|
123
124
|
using ROCKSDB_NAMESPACE::WALRecoveryMode;
|
|
124
125
|
using ROCKSDB_NAMESPACE::WritableFile;
|
|
125
126
|
using ROCKSDB_NAMESPACE::WriteBatch;
|
|
@@ -275,6 +276,9 @@ struct rocksdb_optimistictransactiondb_t {
|
|
|
275
276
|
struct rocksdb_optimistictransaction_options_t {
|
|
276
277
|
OptimisticTransactionOptions rep;
|
|
277
278
|
};
|
|
279
|
+
struct rocksdb_wait_for_compact_options_t {
|
|
280
|
+
WaitForCompactOptions rep;
|
|
281
|
+
};
|
|
278
282
|
|
|
279
283
|
struct rocksdb_compactionfiltercontext_t {
|
|
280
284
|
CompactionFilter::Context rep;
|
|
@@ -4585,6 +4589,11 @@ void rocksdb_readoptions_set_iter_start_ts(rocksdb_readoptions_t* opt,
|
|
|
4585
4589
|
}
|
|
4586
4590
|
}
|
|
4587
4591
|
|
|
4592
|
+
void rocksdb_readoptions_set_auto_readahead_size(rocksdb_readoptions_t* opt,
|
|
4593
|
+
unsigned char v) {
|
|
4594
|
+
opt->rep.auto_readahead_size = v;
|
|
4595
|
+
}
|
|
4596
|
+
|
|
4588
4597
|
rocksdb_writeoptions_t* rocksdb_writeoptions_create() {
|
|
4589
4598
|
return new rocksdb_writeoptions_t;
|
|
4590
4599
|
}
|
|
@@ -6719,4 +6728,59 @@ double rocksdb_statistics_histogram_data_get_min(
|
|
|
6719
6728
|
return data->rep.min;
|
|
6720
6729
|
}
|
|
6721
6730
|
|
|
6731
|
+
void rocksdb_wait_for_compact(rocksdb_t* db,
|
|
6732
|
+
rocksdb_wait_for_compact_options_t* options,
|
|
6733
|
+
char** errptr) {
|
|
6734
|
+
SaveError(errptr, db->rep->WaitForCompact(options->rep));
|
|
6735
|
+
}
|
|
6736
|
+
|
|
6737
|
+
rocksdb_wait_for_compact_options_t* rocksdb_wait_for_compact_options_create() {
|
|
6738
|
+
return new rocksdb_wait_for_compact_options_t;
|
|
6739
|
+
}
|
|
6740
|
+
|
|
6741
|
+
void rocksdb_wait_for_compact_options_destroy(
|
|
6742
|
+
rocksdb_wait_for_compact_options_t* opt) {
|
|
6743
|
+
delete opt;
|
|
6744
|
+
}
|
|
6745
|
+
|
|
6746
|
+
void rocksdb_wait_for_compact_options_set_abort_on_pause(
|
|
6747
|
+
rocksdb_wait_for_compact_options_t* opt, unsigned char v) {
|
|
6748
|
+
opt->rep.abort_on_pause = v;
|
|
6749
|
+
}
|
|
6750
|
+
|
|
6751
|
+
unsigned char rocksdb_wait_for_compact_options_get_abort_on_pause(
|
|
6752
|
+
rocksdb_wait_for_compact_options_t* opt) {
|
|
6753
|
+
return opt->rep.abort_on_pause;
|
|
6754
|
+
}
|
|
6755
|
+
|
|
6756
|
+
void rocksdb_wait_for_compact_options_set_flush(
|
|
6757
|
+
rocksdb_wait_for_compact_options_t* opt, unsigned char v) {
|
|
6758
|
+
opt->rep.flush = v;
|
|
6759
|
+
}
|
|
6760
|
+
|
|
6761
|
+
unsigned char rocksdb_wait_for_compact_options_get_flush(
|
|
6762
|
+
rocksdb_wait_for_compact_options_t* opt) {
|
|
6763
|
+
return opt->rep.flush;
|
|
6764
|
+
}
|
|
6765
|
+
|
|
6766
|
+
void rocksdb_wait_for_compact_options_set_close_db(
|
|
6767
|
+
rocksdb_wait_for_compact_options_t* opt, unsigned char v) {
|
|
6768
|
+
opt->rep.close_db = v;
|
|
6769
|
+
}
|
|
6770
|
+
|
|
6771
|
+
unsigned char rocksdb_wait_for_compact_options_get_close_db(
|
|
6772
|
+
rocksdb_wait_for_compact_options_t* opt) {
|
|
6773
|
+
return opt->rep.close_db;
|
|
6774
|
+
}
|
|
6775
|
+
|
|
6776
|
+
void rocksdb_wait_for_compact_options_set_timeout(
|
|
6777
|
+
rocksdb_wait_for_compact_options_t* opt, uint64_t microseconds) {
|
|
6778
|
+
opt->rep.timeout = std::chrono::microseconds(microseconds);
|
|
6779
|
+
}
|
|
6780
|
+
|
|
6781
|
+
uint64_t rocksdb_wait_for_compact_options_get_timeout(
|
|
6782
|
+
rocksdb_wait_for_compact_options_t* opt) {
|
|
6783
|
+
return opt->rep.timeout.count();
|
|
6784
|
+
}
|
|
6785
|
+
|
|
6722
6786
|
} // end extern "C"
|
|
@@ -375,6 +375,11 @@ static rocksdb_t* CheckCompaction(rocksdb_t* db, rocksdb_options_t* options,
|
|
|
375
375
|
|
|
376
376
|
// Force compaction
|
|
377
377
|
rocksdb_compact_range(db, NULL, 0, NULL, 0);
|
|
378
|
+
rocksdb_wait_for_compact_options_t* wco;
|
|
379
|
+
wco = rocksdb_wait_for_compact_options_create();
|
|
380
|
+
rocksdb_wait_for_compact(db, wco, &err);
|
|
381
|
+
CheckNoError(err);
|
|
382
|
+
rocksdb_wait_for_compact_options_destroy(wco);
|
|
378
383
|
// should have filtered bar, but not foo
|
|
379
384
|
CheckGet(db, roptions, "foo", "foovalue");
|
|
380
385
|
CheckGet(db, roptions, "bar", NULL);
|
|
@@ -3687,6 +3692,37 @@ int main(int argc, char** argv) {
|
|
|
3687
3692
|
rocksdb_statistics_histogram_data_destroy(hist);
|
|
3688
3693
|
}
|
|
3689
3694
|
|
|
3695
|
+
StartPhase("wait_for_compact_options");
|
|
3696
|
+
{
|
|
3697
|
+
rocksdb_wait_for_compact_options_t* wco;
|
|
3698
|
+
wco = rocksdb_wait_for_compact_options_create();
|
|
3699
|
+
|
|
3700
|
+
rocksdb_wait_for_compact_options_set_abort_on_pause(wco, 1);
|
|
3701
|
+
CheckCondition(1 ==
|
|
3702
|
+
rocksdb_wait_for_compact_options_get_abort_on_pause(wco));
|
|
3703
|
+
|
|
3704
|
+
rocksdb_wait_for_compact_options_set_flush(wco, 1);
|
|
3705
|
+
CheckCondition(1 == rocksdb_wait_for_compact_options_get_flush(wco));
|
|
3706
|
+
|
|
3707
|
+
rocksdb_wait_for_compact_options_set_close_db(wco, 1);
|
|
3708
|
+
CheckCondition(1 == rocksdb_wait_for_compact_options_get_close_db(wco));
|
|
3709
|
+
|
|
3710
|
+
rocksdb_wait_for_compact_options_set_timeout(wco, 342);
|
|
3711
|
+
CheckCondition(342 == rocksdb_wait_for_compact_options_get_timeout(wco));
|
|
3712
|
+
|
|
3713
|
+
rocksdb_wait_for_compact_options_destroy(wco);
|
|
3714
|
+
}
|
|
3715
|
+
StartPhase("wait_for_compact");
|
|
3716
|
+
{
|
|
3717
|
+
rocksdb_wait_for_compact_options_t* wco;
|
|
3718
|
+
wco = rocksdb_wait_for_compact_options_create();
|
|
3719
|
+
rocksdb_wait_for_compact_options_set_flush(wco, 1);
|
|
3720
|
+
|
|
3721
|
+
rocksdb_wait_for_compact(db, wco, &err);
|
|
3722
|
+
CheckNoError(err);
|
|
3723
|
+
rocksdb_wait_for_compact_options_destroy(wco);
|
|
3724
|
+
}
|
|
3725
|
+
|
|
3690
3726
|
StartPhase("cancel_all_background_work");
|
|
3691
3727
|
rocksdb_cancel_all_background_work(db, 1);
|
|
3692
3728
|
|
|
@@ -476,6 +476,7 @@ void SuperVersion::Init(ColumnFamilyData* new_cfd, MemTable* new_mem,
|
|
|
476
476
|
mem = new_mem;
|
|
477
477
|
imm = new_imm;
|
|
478
478
|
current = new_current;
|
|
479
|
+
full_history_ts_low = cfd->GetFullHistoryTsLow();
|
|
479
480
|
cfd->Ref();
|
|
480
481
|
mem->Ref();
|
|
481
482
|
imm->Ref();
|
|
@@ -1118,7 +1119,7 @@ Compaction* ColumnFamilyData::PickCompaction(
|
|
|
1118
1119
|
GetName(), mutable_options, mutable_db_options, current_->storage_info(),
|
|
1119
1120
|
log_buffer);
|
|
1120
1121
|
if (result != nullptr) {
|
|
1121
|
-
result->
|
|
1122
|
+
result->FinalizeInputInfo(current_);
|
|
1122
1123
|
}
|
|
1123
1124
|
return result;
|
|
1124
1125
|
}
|
|
@@ -1202,7 +1203,7 @@ Compaction* ColumnFamilyData::CompactRange(
|
|
|
1202
1203
|
compact_range_options, begin, end, compaction_end, conflict,
|
|
1203
1204
|
max_file_num_to_ignore, trim_ts);
|
|
1204
1205
|
if (result != nullptr) {
|
|
1205
|
-
result->
|
|
1206
|
+
result->FinalizeInputInfo(current_);
|
|
1206
1207
|
}
|
|
1207
1208
|
TEST_SYNC_POINT("ColumnFamilyData::CompactRange:Return");
|
|
1208
1209
|
return result;
|
|
@@ -1283,8 +1284,6 @@ void ColumnFamilyData::InstallSuperVersion(
|
|
|
1283
1284
|
new_superversion->Init(this, mem_, imm_.current(), current_);
|
|
1284
1285
|
SuperVersion* old_superversion = super_version_;
|
|
1285
1286
|
super_version_ = new_superversion;
|
|
1286
|
-
++super_version_number_;
|
|
1287
|
-
super_version_->version_number = super_version_number_;
|
|
1288
1287
|
if (old_superversion == nullptr || old_superversion->current != current() ||
|
|
1289
1288
|
old_superversion->mem != mem_ ||
|
|
1290
1289
|
old_superversion->imm != imm_.current()) {
|
|
@@ -1319,6 +1318,8 @@ void ColumnFamilyData::InstallSuperVersion(
|
|
|
1319
1318
|
sv_context->superversions_to_free.push_back(old_superversion);
|
|
1320
1319
|
}
|
|
1321
1320
|
}
|
|
1321
|
+
++super_version_number_;
|
|
1322
|
+
super_version_->version_number = super_version_number_;
|
|
1322
1323
|
}
|
|
1323
1324
|
|
|
1324
1325
|
void ColumnFamilyData::ResetThreadLocalSuperVersions() {
|
|
@@ -1557,24 +1558,15 @@ bool ColumnFamilyData::ShouldPostponeFlushToRetainUDT(
|
|
|
1557
1558
|
if (full_history_ts_low.empty()) {
|
|
1558
1559
|
return false;
|
|
1559
1560
|
}
|
|
1560
|
-
#ifndef NDEBUG
|
|
1561
|
-
Slice last_table_newest_udt;
|
|
1562
|
-
#endif /* !NDEBUG */
|
|
1563
1561
|
for (const Slice& table_newest_udt :
|
|
1564
1562
|
imm()->GetTablesNewestUDT(max_memtable_id)) {
|
|
1565
1563
|
assert(table_newest_udt.size() == full_history_ts_low.size());
|
|
1566
|
-
assert(last_table_newest_udt.empty() ||
|
|
1567
|
-
ucmp->CompareTimestamp(table_newest_udt, last_table_newest_udt) >=
|
|
1568
|
-
0);
|
|
1569
1564
|
// Checking the newest UDT contained in MemTable with ascending ID up to
|
|
1570
|
-
// `max_memtable_id`.
|
|
1571
|
-
//
|
|
1565
|
+
// `max_memtable_id`. Return immediately on finding the first MemTable that
|
|
1566
|
+
// needs postponing.
|
|
1572
1567
|
if (ucmp->CompareTimestamp(table_newest_udt, full_history_ts_low) >= 0) {
|
|
1573
1568
|
return true;
|
|
1574
1569
|
}
|
|
1575
|
-
#ifndef NDEBUG
|
|
1576
|
-
last_table_newest_udt = table_newest_udt;
|
|
1577
|
-
#endif /* !NDEBUG */
|
|
1578
1570
|
}
|
|
1579
1571
|
return false;
|
|
1580
1572
|
}
|
|
@@ -1756,4 +1748,20 @@ const Comparator* GetColumnFamilyUserComparator(
|
|
|
1756
1748
|
return nullptr;
|
|
1757
1749
|
}
|
|
1758
1750
|
|
|
1751
|
+
const ImmutableOptions& GetImmutableOptions(ColumnFamilyHandle* column_family) {
|
|
1752
|
+
assert(column_family);
|
|
1753
|
+
|
|
1754
|
+
ColumnFamilyHandleImpl* const handle =
|
|
1755
|
+
static_cast_with_check<ColumnFamilyHandleImpl>(column_family);
|
|
1756
|
+
assert(handle);
|
|
1757
|
+
|
|
1758
|
+
const ColumnFamilyData* const cfd = handle->cfd();
|
|
1759
|
+
assert(cfd);
|
|
1760
|
+
|
|
1761
|
+
const ImmutableOptions* ioptions = cfd->ioptions();
|
|
1762
|
+
assert(ioptions);
|
|
1763
|
+
|
|
1764
|
+
return *ioptions;
|
|
1765
|
+
}
|
|
1766
|
+
|
|
1759
1767
|
} // namespace ROCKSDB_NAMESPACE
|
|
@@ -211,6 +211,12 @@ struct SuperVersion {
|
|
|
211
211
|
// Version number of the current SuperVersion
|
|
212
212
|
uint64_t version_number;
|
|
213
213
|
WriteStallCondition write_stall_condition;
|
|
214
|
+
// Each time `full_history_ts_low` collapses history, a new SuperVersion is
|
|
215
|
+
// installed. This field tracks the effective `full_history_ts_low` for that
|
|
216
|
+
// SuperVersion, to be used by read APIs for sanity checks. This field is
|
|
217
|
+
// immutable once SuperVersion is installed. For column family that doesn't
|
|
218
|
+
// enable UDT feature, this is an empty string.
|
|
219
|
+
std::string full_history_ts_low;
|
|
214
220
|
|
|
215
221
|
// should be called outside the mutex
|
|
216
222
|
SuperVersion() = default;
|
|
@@ -871,4 +877,7 @@ extern uint32_t GetColumnFamilyID(ColumnFamilyHandle* column_family);
|
|
|
871
877
|
extern const Comparator* GetColumnFamilyUserComparator(
|
|
872
878
|
ColumnFamilyHandle* column_family);
|
|
873
879
|
|
|
880
|
+
extern const ImmutableOptions& GetImmutableOptions(
|
|
881
|
+
ColumnFamilyHandle* column_family);
|
|
882
|
+
|
|
874
883
|
} // namespace ROCKSDB_NAMESPACE
|