@nxtedition/rocksdb 5.2.21 → 5.2.26
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 +216 -252
- package/binding.gyp +78 -72
- package/deps/rocksdb/build_version.cc +70 -4
- package/deps/rocksdb/rocksdb/CMakeLists.txt +281 -149
- package/deps/rocksdb/rocksdb/Makefile +459 -469
- package/deps/rocksdb/rocksdb/README.md +4 -4
- package/deps/rocksdb/rocksdb/TARGETS +5244 -1500
- package/deps/rocksdb/rocksdb/cache/cache.cc +12 -3
- package/deps/rocksdb/rocksdb/cache/cache_bench.cc +7 -368
- package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +924 -0
- package/deps/rocksdb/rocksdb/cache/cache_entry_roles.cc +128 -0
- package/deps/rocksdb/rocksdb/cache/cache_entry_roles.h +103 -0
- package/deps/rocksdb/rocksdb/cache/cache_entry_stats.h +183 -0
- package/deps/rocksdb/rocksdb/cache/cache_helpers.h +11 -0
- package/deps/rocksdb/rocksdb/cache/cache_key.cc +344 -0
- package/deps/rocksdb/rocksdb/cache/cache_key.h +132 -0
- package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.cc +183 -0
- package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.h +288 -0
- package/deps/rocksdb/rocksdb/cache/cache_reservation_manager_test.cc +468 -0
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +85 -8
- package/deps/rocksdb/rocksdb/cache/clock_cache.cc +121 -51
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +171 -0
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +86 -0
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +607 -0
- package/deps/rocksdb/rocksdb/cache/lru_cache.cc +381 -154
- package/deps/rocksdb/rocksdb/cache/lru_cache.h +176 -33
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +1659 -3
- package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +94 -23
- package/deps/rocksdb/rocksdb/cache/sharded_cache.h +49 -28
- package/deps/rocksdb/rocksdb/crash_test.mk +93 -0
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +54 -31
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +10 -6
- package/deps/rocksdb/rocksdb/db/blob/blob_counting_iterator.h +146 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_counting_iterator_test.cc +326 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_fetcher.cc +34 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_fetcher.h +37 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_file_addition.cc +4 -2
- package/deps/rocksdb/rocksdb/db/blob/blob_file_addition_test.cc +8 -4
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +99 -40
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.h +20 -8
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +95 -83
- package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.cc +13 -10
- package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.h +7 -4
- package/deps/rocksdb/rocksdb/db/blob/blob_file_cache_test.cc +37 -37
- package/deps/rocksdb/rocksdb/db/blob/blob_file_completion_callback.h +101 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_file_meta.cc +8 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_meta.h +6 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +209 -44
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +37 -11
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +382 -179
- package/deps/rocksdb/rocksdb/db/blob/blob_garbage_meter.cc +100 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_garbage_meter.h +102 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_garbage_meter_test.cc +196 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_index.h +3 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_log_format.h +2 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.cc +7 -5
- package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.h +10 -3
- package/deps/rocksdb/rocksdb/db/blob/blob_log_writer.cc +12 -8
- package/deps/rocksdb/rocksdb/db/blob/blob_log_writer.h +5 -5
- package/deps/rocksdb/rocksdb/db/blob/db_blob_basic_test.cc +772 -9
- package/deps/rocksdb/rocksdb/db/blob/db_blob_compaction_test.cc +730 -0
- package/deps/rocksdb/rocksdb/db/blob/db_blob_corruption_test.cc +82 -0
- package/deps/rocksdb/rocksdb/db/blob/db_blob_index_test.cc +155 -17
- package/deps/rocksdb/rocksdb/db/blob/prefetch_buffer_collection.cc +21 -0
- package/deps/rocksdb/rocksdb/db/blob/prefetch_buffer_collection.h +38 -0
- package/deps/rocksdb/rocksdb/db/builder.cc +137 -89
- package/deps/rocksdb/rocksdb/db/builder.h +16 -37
- package/deps/rocksdb/rocksdb/db/c.cc +413 -208
- package/deps/rocksdb/rocksdb/db/c_test.c +227 -138
- package/deps/rocksdb/rocksdb/db/column_family.cc +118 -103
- package/deps/rocksdb/rocksdb/db/column_family.h +86 -44
- package/deps/rocksdb/rocksdb/db/column_family_test.cc +38 -24
- package/deps/rocksdb/rocksdb/db/compact_files_test.cc +81 -0
- package/deps/rocksdb/rocksdb/db/compaction/clipping_iterator.h +275 -0
- package/deps/rocksdb/rocksdb/db/compaction/clipping_iterator_test.cc +258 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +81 -28
- package/deps/rocksdb/rocksdb/db/compaction/compaction.h +43 -12
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iteration_stats.h +12 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +406 -215
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +147 -50
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +167 -61
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +1321 -156
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +197 -28
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +2 -3
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +246 -43
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +65 -26
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +7 -7
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +122 -9
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +8 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +18 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +1 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +536 -44
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +311 -30
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +1 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +849 -0
- package/deps/rocksdb/rocksdb/db/compaction/file_pri.h +92 -0
- package/deps/rocksdb/rocksdb/db/compaction/sst_partitioner.cc +46 -0
- package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/convenience.cc +6 -3
- package/deps/rocksdb/rocksdb/db/corruption_test.cc +383 -28
- package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +7 -2
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +154 -45
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +1095 -33
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +1249 -203
- package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +135 -9
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +1348 -166
- package/deps/rocksdb/rocksdb/db/db_dynamic_level_test.cc +3 -5
- package/deps/rocksdb/rocksdb/db/db_encryption_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +312 -45
- package/deps/rocksdb/rocksdb/db/db_flush_test.cc +1734 -48
- package/deps/rocksdb/rocksdb/db/{compacted_db_impl.cc → db_impl/compacted_db_impl.cc} +24 -7
- package/deps/rocksdb/rocksdb/db/{compacted_db_impl.h → db_impl/compacted_db_impl.h} +1 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +644 -333
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +365 -92
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +578 -210
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +38 -16
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +17 -10
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +75 -74
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +450 -183
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +42 -9
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +232 -15
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +42 -4
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +297 -100
- package/deps/rocksdb/rocksdb/db/db_info_dumper.cc +16 -15
- package/deps/rocksdb/rocksdb/db/db_inplace_update_test.cc +31 -1
- package/deps/rocksdb/rocksdb/db/db_io_failure_test.cc +6 -5
- package/deps/rocksdb/rocksdb/db/db_iter.cc +218 -153
- package/deps/rocksdb/rocksdb/db/db_iter.h +14 -12
- package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_iter_test.cc +84 -160
- package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +47 -6
- package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +204 -0
- package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +21 -13
- package/deps/rocksdb/rocksdb/db/db_logical_block_size_cache_test.cc +17 -10
- package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +38 -24
- package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +184 -19
- package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_options_test.cc +183 -3
- package/deps/rocksdb/rocksdb/db/db_properties_test.cc +409 -9
- package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +92 -23
- package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +446 -0
- package/deps/rocksdb/rocksdb/db/{db_impl/db_secondary_test.cc → db_secondary_test.cc} +363 -35
- package/deps/rocksdb/rocksdb/db/db_sst_test.cc +520 -15
- package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +50 -1
- package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +139 -4
- package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_test.cc +669 -359
- package/deps/rocksdb/rocksdb/db/db_test2.cc +2110 -304
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +76 -43
- package/deps/rocksdb/rocksdb/db/db_test_util.h +231 -103
- package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +19 -11
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +490 -71
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +980 -349
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_compaction_test.cc +11 -12
- package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +793 -0
- package/deps/rocksdb/rocksdb/db/db_write_test.cc +2 -1
- package/deps/rocksdb/rocksdb/db/dbformat.cc +4 -12
- package/deps/rocksdb/rocksdb/db/dbformat.h +28 -18
- package/deps/rocksdb/rocksdb/db/dbformat_test.cc +3 -0
- package/deps/rocksdb/rocksdb/db/deletefile_test.cc +50 -15
- package/deps/rocksdb/rocksdb/db/error_handler.cc +127 -41
- package/deps/rocksdb/rocksdb/db/error_handler.h +12 -5
- package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +524 -255
- package/deps/rocksdb/rocksdb/db/event_helpers.cc +136 -11
- package/deps/rocksdb/rocksdb/db/event_helpers.h +27 -2
- package/deps/rocksdb/rocksdb/db/experimental.cc +100 -0
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +307 -4
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +137 -60
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +12 -8
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +86 -55
- package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +86 -5
- package/deps/rocksdb/rocksdb/db/filename_test.cc +63 -0
- package/deps/rocksdb/rocksdb/db/flush_job.cc +619 -64
- package/deps/rocksdb/rocksdb/db/flush_job.h +30 -7
- package/deps/rocksdb/rocksdb/db/flush_job_test.cc +33 -16
- package/deps/rocksdb/rocksdb/db/flush_scheduler.h +2 -1
- package/deps/rocksdb/rocksdb/db/forward_iterator.cc +18 -17
- package/deps/rocksdb/rocksdb/db/forward_iterator.h +5 -4
- package/deps/rocksdb/rocksdb/db/forward_iterator_bench.cc +0 -1
- package/deps/rocksdb/rocksdb/db/history_trimming_iterator.h +91 -0
- package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +25 -14
- package/deps/rocksdb/rocksdb/db/import_column_family_job.h +6 -5
- package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/internal_stats.cc +471 -50
- package/deps/rocksdb/rocksdb/db/internal_stats.h +129 -25
- package/deps/rocksdb/rocksdb/db/job_context.h +22 -9
- package/deps/rocksdb/rocksdb/db/kv_checksum.h +394 -0
- package/deps/rocksdb/rocksdb/db/listener_test.cc +518 -41
- package/deps/rocksdb/rocksdb/db/log_format.h +4 -1
- package/deps/rocksdb/rocksdb/db/log_reader.cc +129 -6
- package/deps/rocksdb/rocksdb/db/log_reader.h +17 -1
- package/deps/rocksdb/rocksdb/db/log_test.cc +161 -11
- package/deps/rocksdb/rocksdb/db/log_writer.cc +92 -13
- package/deps/rocksdb/rocksdb/db/log_writer.h +18 -5
- package/deps/rocksdb/rocksdb/db/logs_with_prep_tracker.h +1 -1
- package/deps/rocksdb/rocksdb/db/lookup_key.h +0 -1
- package/deps/rocksdb/rocksdb/db/malloc_stats.cc +2 -2
- package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +21 -8
- package/deps/rocksdb/rocksdb/db/memtable.cc +144 -54
- package/deps/rocksdb/rocksdb/db/memtable.h +72 -15
- package/deps/rocksdb/rocksdb/db/memtable_list.cc +95 -47
- package/deps/rocksdb/rocksdb/db/memtable_list.h +33 -13
- package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +61 -31
- package/deps/rocksdb/rocksdb/db/merge_context.h +20 -8
- package/deps/rocksdb/rocksdb/db/merge_helper.cc +54 -11
- package/deps/rocksdb/rocksdb/db/merge_helper.h +17 -6
- package/deps/rocksdb/rocksdb/db/merge_helper_test.cc +13 -7
- package/deps/rocksdb/rocksdb/db/merge_test.cc +40 -19
- package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +14 -25
- package/deps/rocksdb/rocksdb/db/output_validator.cc +3 -0
- package/deps/rocksdb/rocksdb/db/output_validator.h +5 -4
- package/deps/rocksdb/rocksdb/db/perf_context_test.cc +32 -28
- package/deps/rocksdb/rocksdb/db/periodic_work_scheduler.cc +43 -29
- package/deps/rocksdb/rocksdb/db/periodic_work_scheduler.h +9 -7
- package/deps/rocksdb/rocksdb/db/periodic_work_scheduler_test.cc +21 -16
- package/deps/rocksdb/rocksdb/db/pinned_iterators_manager.h +1 -1
- package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +29 -36
- package/deps/rocksdb/rocksdb/db/pre_release_callback.h +1 -2
- package/deps/rocksdb/rocksdb/db/prefix_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/range_del_aggregator.h +2 -2
- package/deps/rocksdb/rocksdb/db/range_del_aggregator_bench.cc +11 -11
- package/deps/rocksdb/rocksdb/db/range_del_aggregator_test.cc +3 -2
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.cc +14 -8
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +17 -0
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter_test.cc +4 -2
- package/deps/rocksdb/rocksdb/db/read_callback.h +1 -0
- package/deps/rocksdb/rocksdb/db/repair.cc +87 -58
- package/deps/rocksdb/rocksdb/db/repair_test.cc +35 -5
- package/deps/rocksdb/rocksdb/db/snapshot_impl.h +2 -1
- package/deps/rocksdb/rocksdb/db/table_cache.cc +95 -69
- package/deps/rocksdb/rocksdb/db/table_cache.h +63 -53
- package/deps/rocksdb/rocksdb/db/table_properties_collector.cc +4 -4
- package/deps/rocksdb/rocksdb/db/table_properties_collector.h +78 -10
- package/deps/rocksdb/rocksdb/db/table_properties_collector_test.cc +28 -33
- package/deps/rocksdb/rocksdb/db/transaction_log_impl.cc +30 -51
- package/deps/rocksdb/rocksdb/db/transaction_log_impl.h +12 -8
- package/deps/rocksdb/rocksdb/db/version_builder.cc +564 -341
- package/deps/rocksdb/rocksdb/db/version_builder.h +8 -8
- package/deps/rocksdb/rocksdb/db/version_builder_test.cc +327 -155
- package/deps/rocksdb/rocksdb/db/version_edit.cc +89 -27
- package/deps/rocksdb/rocksdb/db/version_edit.h +42 -17
- package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +324 -43
- package/deps/rocksdb/rocksdb/db/version_edit_handler.h +79 -22
- package/deps/rocksdb/rocksdb/db/version_edit_test.cc +165 -20
- package/deps/rocksdb/rocksdb/db/version_set.cc +935 -1034
- package/deps/rocksdb/rocksdb/db/version_set.h +183 -122
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +556 -138
- package/deps/rocksdb/rocksdb/db/version_util.h +68 -0
- package/deps/rocksdb/rocksdb/db/wal_manager.cc +23 -21
- package/deps/rocksdb/rocksdb/db/wal_manager.h +5 -2
- package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +30 -27
- package/deps/rocksdb/rocksdb/db/write_batch.cc +704 -209
- package/deps/rocksdb/rocksdb/db/write_batch_internal.h +135 -2
- package/deps/rocksdb/rocksdb/db/write_batch_test.cc +209 -5
- package/deps/rocksdb/rocksdb/db/write_callback_test.cc +2 -0
- package/deps/rocksdb/rocksdb/db/write_controller.cc +47 -54
- package/deps/rocksdb/rocksdb/db/write_controller.h +12 -9
- package/deps/rocksdb/rocksdb/db/write_controller_test.cc +215 -103
- package/deps/rocksdb/rocksdb/db/write_thread.cc +11 -0
- package/deps/rocksdb/rocksdb/db/write_thread.h +14 -8
- package/deps/rocksdb/rocksdb/db_stress_tool/CMakeLists.txt +7 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +10 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +6 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress.cc +1 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +19 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +78 -25
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compaction_filter.h +13 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +29 -12
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +5 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +199 -32
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.cc +188 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +59 -10
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +77 -109
- package/deps/rocksdb/rocksdb/{third-party/folly/folly/synchronization/WaitOptions.cpp → db_stress_tool/db_stress_stat.cc} +9 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_stat.h +7 -6
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_table_properties_collector.h +1 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +699 -143
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +20 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +49 -39
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +631 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.h +287 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +1565 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.h +374 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +149 -18
- package/deps/rocksdb/rocksdb/env/composite_env.cc +464 -0
- package/deps/rocksdb/rocksdb/env/composite_env_wrapper.h +98 -646
- package/deps/rocksdb/rocksdb/env/emulated_clock.h +114 -0
- package/deps/rocksdb/rocksdb/env/env.cc +632 -42
- package/deps/rocksdb/rocksdb/env/env_basic_test.cc +84 -36
- package/deps/rocksdb/rocksdb/env/env_chroot.cc +88 -286
- package/deps/rocksdb/rocksdb/env/env_chroot.h +34 -1
- package/deps/rocksdb/rocksdb/env/env_encryption.cc +469 -277
- package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +9 -30
- package/deps/rocksdb/rocksdb/env/env_posix.cc +110 -119
- package/deps/rocksdb/rocksdb/env/env_test.cc +1128 -39
- package/deps/rocksdb/rocksdb/env/file_system.cc +147 -8
- package/deps/rocksdb/rocksdb/env/file_system_tracer.cc +207 -136
- package/deps/rocksdb/rocksdb/env/file_system_tracer.h +86 -54
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +192 -64
- package/deps/rocksdb/rocksdb/env/fs_readonly.h +107 -0
- package/deps/rocksdb/rocksdb/env/fs_remap.cc +339 -0
- package/deps/rocksdb/rocksdb/env/fs_remap.h +139 -0
- package/deps/rocksdb/rocksdb/env/io_posix.cc +245 -41
- package/deps/rocksdb/rocksdb/env/io_posix.h +66 -1
- package/deps/rocksdb/rocksdb/env/mock_env.cc +147 -149
- package/deps/rocksdb/rocksdb/env/mock_env.h +113 -11
- package/deps/rocksdb/rocksdb/env/mock_env_test.cc +2 -4
- package/deps/rocksdb/rocksdb/env/unique_id_gen.cc +164 -0
- package/deps/rocksdb/rocksdb/env/unique_id_gen.h +71 -0
- package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +9 -5
- package/deps/rocksdb/rocksdb/file/delete_scheduler.h +6 -4
- package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +19 -12
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +459 -70
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +205 -28
- package/deps/rocksdb/rocksdb/file/file_util.cc +39 -28
- package/deps/rocksdb/rocksdb/file/file_util.h +18 -27
- package/deps/rocksdb/rocksdb/file/filename.cc +59 -22
- package/deps/rocksdb/rocksdb/file/filename.h +13 -8
- package/deps/rocksdb/rocksdb/file/line_file_reader.cc +68 -0
- package/deps/rocksdb/rocksdb/file/line_file_reader.h +59 -0
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +1130 -6
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +220 -36
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +69 -17
- package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +13 -12
- package/deps/rocksdb/rocksdb/file/read_write_util.cc +3 -38
- package/deps/rocksdb/rocksdb/file/read_write_util.h +0 -4
- package/deps/rocksdb/rocksdb/file/readahead_file_info.h +33 -0
- package/deps/rocksdb/rocksdb/file/sequence_file_reader.cc +57 -9
- package/deps/rocksdb/rocksdb/file/sequence_file_reader.h +58 -6
- package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.cc +29 -54
- package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.h +22 -29
- package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +424 -50
- package/deps/rocksdb/rocksdb/file/writable_file_writer.h +66 -19
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +157 -66
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +224 -121
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +333 -30
- package/deps/rocksdb/rocksdb/include/rocksdb/cache_bench_tool.h +14 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/cleanable.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +90 -50
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +13 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/comparator.h +20 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/concurrent_task_limiter.h +8 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/configurable.h +53 -12
- package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +31 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/customizable.h +102 -7
- package/deps/rocksdb/rocksdb/include/rocksdb/data_structure.h +51 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +370 -262
- package/deps/rocksdb/rocksdb/include/rocksdb/env.h +286 -87
- package/deps/rocksdb/rocksdb/include/rocksdb/env_encryption.h +124 -64
- package/deps/rocksdb/rocksdb/include/rocksdb/experimental.h +27 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/file_checksum.h +21 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +384 -41
- package/deps/rocksdb/rocksdb/include/rocksdb/filter_policy.h +111 -143
- package/deps/rocksdb/rocksdb/include/rocksdb/flush_block_policy.h +20 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/functor_wrapper.h +56 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/io_status.h +15 -33
- package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +37 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +1 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +314 -26
- package/deps/rocksdb/rocksdb/include/rocksdb/memory_allocator.h +11 -7
- package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +50 -15
- package/deps/rocksdb/rocksdb/include/rocksdb/merge_operator.h +10 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/metadata.h +186 -96
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +373 -103
- package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +13 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/persistent_cache.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/rate_limiter.h +37 -7
- package/deps/rocksdb/rocksdb/include/rocksdb/rocksdb_namespace.h +6 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +87 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/slice.h +5 -12
- package/deps/rocksdb/rocksdb/include/rocksdb/slice_transform.h +59 -30
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_manager.h +11 -11
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +22 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_partitioner.h +17 -10
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +121 -41
- package/deps/rocksdb/rocksdb/include/rocksdb/stats_history.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/status.h +114 -136
- package/deps/rocksdb/rocksdb/include/rocksdb/system_clock.h +116 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/table.h +160 -18
- package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +57 -15
- package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +3 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/trace_reader_writer.h +10 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/trace_record.h +247 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/trace_record_result.h +187 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/transaction_log.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/types.h +14 -24
- package/deps/rocksdb/rocksdb/include/rocksdb/unique_id.h +46 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +14 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/agg_merge.h +138 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/backup_engine.h +631 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/cache_dump_load.h +142 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/checkpoint.h +12 -9
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/customizable_util.h +368 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +24 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd_execute_result.h +4 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/object_registry.h +418 -63
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +143 -73
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_util.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/replayer.h +87 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/sim_cache.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +43 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/table_properties_collectors.h +18 -23
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +26 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +32 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db_mutex.h +1 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +20 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +30 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/wal_filter.h +11 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +89 -11
- package/deps/rocksdb/rocksdb/include/rocksdb/write_batch_base.h +11 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/write_buffer_manager.h +108 -38
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger.cc +40 -23
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger.h +12 -5
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +100 -49
- package/deps/rocksdb/rocksdb/logging/env_logger.h +7 -5
- package/deps/rocksdb/rocksdb/logging/env_logger_test.cc +0 -1
- package/deps/rocksdb/rocksdb/logging/posix_logger.h +3 -9
- package/deps/rocksdb/rocksdb/memory/arena.cc +3 -1
- package/deps/rocksdb/rocksdb/memory/arena.h +1 -1
- package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +171 -106
- package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.h +31 -15
- package/deps/rocksdb/rocksdb/memory/memkind_kmem_allocator.cc +15 -4
- package/deps/rocksdb/rocksdb/memory/memkind_kmem_allocator.h +24 -8
- package/deps/rocksdb/rocksdb/memory/memory_allocator.cc +91 -0
- package/deps/rocksdb/rocksdb/memory/memory_allocator_test.cc +239 -0
- package/deps/rocksdb/rocksdb/memory/memory_usage.h +14 -1
- package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.cc +72 -9
- package/deps/rocksdb/rocksdb/memtable/hash_skiplist_rep.cc +52 -6
- package/deps/rocksdb/rocksdb/memtable/inlineskiplist.h +53 -0
- package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +5 -5
- package/deps/rocksdb/rocksdb/memtable/memtablerep_bench.cc +17 -5
- package/deps/rocksdb/rocksdb/memtable/skiplist_test.cc +1 -1
- package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +87 -0
- package/deps/rocksdb/rocksdb/memtable/vectorrep.cc +20 -10
- package/deps/rocksdb/rocksdb/memtable/write_buffer_manager.cc +148 -94
- package/deps/rocksdb/rocksdb/memtable/write_buffer_manager_test.cc +160 -62
- package/deps/rocksdb/rocksdb/microbench/CMakeLists.txt +17 -0
- package/deps/rocksdb/rocksdb/microbench/README.md +60 -0
- package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +1360 -0
- package/deps/rocksdb/rocksdb/microbench/ribbon_bench.cc +153 -0
- package/deps/rocksdb/rocksdb/monitoring/histogram.cc +8 -15
- package/deps/rocksdb/rocksdb/monitoring/histogram.h +0 -1
- package/deps/rocksdb/rocksdb/monitoring/histogram_test.cc +18 -16
- package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.cc +9 -7
- package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.h +5 -3
- package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.cc +7 -5
- package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.h +37 -12
- package/deps/rocksdb/rocksdb/monitoring/iostats_context.cc +26 -6
- package/deps/rocksdb/rocksdb/monitoring/iostats_context_imp.h +6 -10
- package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +14 -13
- package/deps/rocksdb/rocksdb/monitoring/perf_context_imp.h +19 -20
- package/deps/rocksdb/rocksdb/monitoring/perf_step_timer.h +18 -18
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +84 -2
- package/deps/rocksdb/rocksdb/monitoring/statistics.h +6 -0
- package/deps/rocksdb/rocksdb/monitoring/statistics_test.cc +47 -2
- package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +67 -54
- package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.cc +4 -1
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util.cc +2 -1
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +2 -2
- package/deps/rocksdb/rocksdb/options/cf_options.cc +280 -212
- package/deps/rocksdb/rocksdb/options/cf_options.h +51 -57
- package/deps/rocksdb/rocksdb/options/configurable.cc +242 -138
- package/deps/rocksdb/rocksdb/options/configurable_helper.h +4 -68
- package/deps/rocksdb/rocksdb/options/configurable_test.cc +144 -21
- package/deps/rocksdb/rocksdb/options/configurable_test.h +2 -3
- package/deps/rocksdb/rocksdb/options/customizable.cc +67 -7
- package/deps/rocksdb/rocksdb/options/customizable_test.cc +1773 -151
- package/deps/rocksdb/rocksdb/options/db_options.cc +275 -47
- package/deps/rocksdb/rocksdb/options/db_options.h +36 -7
- package/deps/rocksdb/rocksdb/options/options.cc +49 -17
- package/deps/rocksdb/rocksdb/options/options_helper.cc +369 -352
- package/deps/rocksdb/rocksdb/options/options_helper.h +23 -23
- package/deps/rocksdb/rocksdb/options/options_parser.cc +18 -13
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +67 -54
- package/deps/rocksdb/rocksdb/options/options_test.cc +1162 -187
- package/deps/rocksdb/rocksdb/plugin/README.md +43 -0
- package/deps/rocksdb/rocksdb/port/jemalloc_helper.h +1 -1
- package/deps/rocksdb/rocksdb/port/lang.h +52 -0
- package/deps/rocksdb/rocksdb/port/port_example.h +1 -1
- package/deps/rocksdb/rocksdb/port/port_posix.cc +31 -2
- package/deps/rocksdb/rocksdb/port/port_posix.h +20 -2
- package/deps/rocksdb/rocksdb/port/stack_trace.cc +20 -4
- package/deps/rocksdb/rocksdb/port/sys_time.h +2 -2
- package/deps/rocksdb/rocksdb/port/win/env_default.cc +7 -7
- package/deps/rocksdb/rocksdb/port/win/env_win.cc +44 -74
- package/deps/rocksdb/rocksdb/port/win/env_win.h +25 -23
- package/deps/rocksdb/rocksdb/port/win/io_win.cc +32 -34
- package/deps/rocksdb/rocksdb/port/win/io_win.h +12 -6
- package/deps/rocksdb/rocksdb/port/win/port_win.cc +55 -35
- package/deps/rocksdb/rocksdb/port/win/port_win.h +22 -5
- package/deps/rocksdb/rocksdb/port/win/win_logger.cc +3 -3
- package/deps/rocksdb/rocksdb/port/win/win_logger.h +3 -5
- package/deps/rocksdb/rocksdb/port/win/win_thread.cc +7 -1
- package/deps/rocksdb/rocksdb/port/win/win_thread.h +12 -17
- package/deps/rocksdb/rocksdb/python.mk +9 -0
- package/deps/rocksdb/rocksdb/src.mk +82 -34
- package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.cc +3 -4
- package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.h +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/block.cc +158 -80
- package/deps/rocksdb/rocksdb/table/block_based/block.h +64 -36
- package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.cc +23 -14
- package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.h +13 -5
- package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block_test.cc +3 -218
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +603 -328
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +28 -22
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +220 -82
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +8 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +3 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +28 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +598 -492
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +151 -96
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +31 -58
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +330 -92
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +50 -19
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +23 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_like_traits.h +226 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +56 -22
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +42 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +5 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_type.h +2 -0
- package/deps/rocksdb/rocksdb/table/block_based/cachable_entry.h +34 -20
- package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +9 -10
- package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +26 -3
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +844 -202
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy_internal.h +281 -81
- package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.cc +62 -2
- package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.h +2 -3
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +28 -7
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +22 -6
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block_test.cc +28 -26
- package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +1 -2
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/mock_block_based_table.h +11 -4
- package/deps/rocksdb/rocksdb/table/block_based/parsed_full_filter_block.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/parsed_full_filter_block.h +2 -0
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +68 -26
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +44 -9
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +12 -10
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +3 -4
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.h +23 -4
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +44 -19
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.h +5 -1
- package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +16 -28
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +7 -4
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +2 -2
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +77 -57
- package/deps/rocksdb/rocksdb/table/block_fetcher.h +23 -12
- package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +43 -56
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +8 -8
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.h +2 -1
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +52 -70
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_factory.cc +5 -8
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_factory.h +1 -1
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.cc +17 -11
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.h +2 -3
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +42 -51
- package/deps/rocksdb/rocksdb/table/format.cc +258 -104
- package/deps/rocksdb/rocksdb/table/format.h +120 -109
- package/deps/rocksdb/rocksdb/table/get_context.cc +97 -65
- package/deps/rocksdb/rocksdb/table/get_context.h +19 -12
- package/deps/rocksdb/rocksdb/table/internal_iterator.h +14 -0
- package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +8 -0
- package/deps/rocksdb/rocksdb/table/merger_test.cc +3 -2
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +11 -21
- package/deps/rocksdb/rocksdb/table/merging_iterator.h +3 -3
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +176 -171
- package/deps/rocksdb/rocksdb/table/meta_blocks.h +47 -33
- package/deps/rocksdb/rocksdb/table/mock_table.cc +7 -9
- package/deps/rocksdb/rocksdb/table/mock_table.h +3 -2
- package/deps/rocksdb/rocksdb/table/multiget_context.h +15 -8
- package/deps/rocksdb/rocksdb/table/persistent_cache_helper.cc +22 -29
- package/deps/rocksdb/rocksdb/table/persistent_cache_options.h +6 -3
- package/deps/rocksdb/rocksdb/table/plain/plain_table_bloom.h +5 -8
- package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +29 -26
- package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.h +12 -16
- package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.cc +145 -69
- package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.h +1 -1
- package/deps/rocksdb/rocksdb/table/plain/plain_table_index.cc +7 -6
- package/deps/rocksdb/rocksdb/table/plain/plain_table_index.h +3 -4
- package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.cc +3 -1
- package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.h +1 -1
- package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +13 -18
- package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.h +4 -9
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +55 -37
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +10 -5
- package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +11 -8
- package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +222 -16
- package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +106 -58
- package/deps/rocksdb/rocksdb/table/sst_file_writer_collectors.h +6 -5
- package/deps/rocksdb/rocksdb/table/table_builder.h +68 -44
- package/deps/rocksdb/rocksdb/table/table_factory.cc +37 -10
- package/deps/rocksdb/rocksdb/table/table_properties.cc +109 -54
- package/deps/rocksdb/rocksdb/table/table_properties_internal.h +4 -20
- package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +33 -32
- package/deps/rocksdb/rocksdb/table/table_reader_caller.h +2 -0
- package/deps/rocksdb/rocksdb/table/table_test.cc +989 -326
- package/deps/rocksdb/rocksdb/table/two_level_iterator.cc +4 -0
- package/deps/rocksdb/rocksdb/table/unique_id.cc +166 -0
- package/deps/rocksdb/rocksdb/table/unique_id_impl.h +59 -0
- package/deps/rocksdb/rocksdb/test_util/mock_time_env.cc +1 -1
- package/deps/rocksdb/rocksdb/test_util/mock_time_env.h +13 -10
- package/deps/rocksdb/rocksdb/test_util/sync_point.cc +1 -2
- package/deps/rocksdb/rocksdb/test_util/sync_point.h +35 -16
- package/deps/rocksdb/rocksdb/test_util/sync_point_impl.cc +32 -10
- package/deps/rocksdb/rocksdb/test_util/sync_point_impl.h +31 -4
- package/deps/rocksdb/rocksdb/test_util/testharness.cc +53 -1
- package/deps/rocksdb/rocksdb/test_util/testharness.h +67 -3
- package/deps/rocksdb/rocksdb/test_util/testutil.cc +236 -66
- package/deps/rocksdb/rocksdb/test_util/testutil.h +63 -100
- package/deps/rocksdb/rocksdb/test_util/transaction_test_util.cc +12 -1
- package/deps/rocksdb/rocksdb/tools/blob_dump.cc +2 -2
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.cc +6 -3
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.h +1 -0
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +9 -3
- package/deps/rocksdb/rocksdb/tools/db_bench.cc +1 -1
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +1420 -611
- package/deps/rocksdb/rocksdb/tools/db_bench_tool_test.cc +11 -8
- package/deps/rocksdb/rocksdb/tools/db_repl_stress.cc +11 -1
- package/deps/rocksdb/rocksdb/tools/io_tracer_parser_test.cc +4 -2
- package/deps/rocksdb/rocksdb/tools/io_tracer_parser_tool.cc +46 -22
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +655 -179
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +58 -6
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +472 -29
- package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +23 -2
- package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +2 -2
- package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.cc +246 -0
- package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.h +126 -0
- package/deps/rocksdb/rocksdb/tools/sst_dump_test.cc +83 -29
- package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +38 -17
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_test.cc +191 -55
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +219 -296
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.h +87 -53
- package/deps/rocksdb/rocksdb/tools/write_stress.cc +8 -7
- package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.cc +6 -5
- package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.h +5 -4
- package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer_test.cc +14 -9
- package/deps/rocksdb/rocksdb/trace_replay/io_tracer.cc +134 -60
- package/deps/rocksdb/rocksdb/trace_replay/io_tracer.h +49 -38
- package/deps/rocksdb/rocksdb/trace_replay/io_tracer_test.cc +152 -15
- package/deps/rocksdb/rocksdb/trace_replay/trace_record.cc +206 -0
- package/deps/rocksdb/rocksdb/trace_replay/trace_record_handler.cc +190 -0
- package/deps/rocksdb/rocksdb/trace_replay/trace_record_handler.h +46 -0
- package/deps/rocksdb/rocksdb/trace_replay/trace_record_result.cc +146 -0
- package/deps/rocksdb/rocksdb/trace_replay/trace_replay.cc +475 -344
- package/deps/rocksdb/rocksdb/trace_replay/trace_replay.h +83 -95
- package/deps/rocksdb/rocksdb/util/autovector.h +38 -18
- package/deps/rocksdb/rocksdb/util/autovector_test.cc +1 -1
- package/deps/rocksdb/rocksdb/util/bloom_impl.h +4 -0
- package/deps/rocksdb/rocksdb/util/bloom_test.cc +276 -94
- package/deps/rocksdb/rocksdb/util/build_version.cc.in +81 -4
- package/deps/rocksdb/rocksdb/util/cast_util.h +22 -0
- package/deps/rocksdb/rocksdb/util/channel.h +2 -0
- package/deps/rocksdb/rocksdb/util/coding.h +1 -33
- package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +8 -0
- package/deps/rocksdb/rocksdb/util/comparator.cc +163 -3
- package/deps/rocksdb/rocksdb/util/compression.cc +122 -0
- package/deps/rocksdb/rocksdb/util/compression.h +212 -7
- package/deps/rocksdb/rocksdb/util/compression_context_cache.cc +1 -3
- package/deps/rocksdb/rocksdb/util/crc32c.cc +165 -2
- package/deps/rocksdb/rocksdb/util/crc32c.h +6 -0
- package/deps/rocksdb/rocksdb/util/crc32c_arm64.cc +14 -0
- package/deps/rocksdb/rocksdb/util/crc32c_ppc.h +3 -0
- package/deps/rocksdb/rocksdb/util/crc32c_test.cc +47 -0
- package/deps/rocksdb/rocksdb/util/defer.h +30 -1
- package/deps/rocksdb/rocksdb/util/defer_test.cc +11 -0
- package/deps/rocksdb/rocksdb/util/duplicate_detector.h +3 -1
- package/deps/rocksdb/rocksdb/util/dynamic_bloom.h +3 -3
- package/deps/rocksdb/rocksdb/util/dynamic_bloom_test.cc +5 -4
- package/deps/rocksdb/rocksdb/util/fastrange.h +2 -0
- package/deps/rocksdb/rocksdb/util/file_checksum_helper.cc +36 -0
- package/deps/rocksdb/rocksdb/util/file_checksum_helper.h +3 -1
- package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +512 -52
- package/deps/rocksdb/rocksdb/util/filter_bench.cc +65 -10
- package/deps/rocksdb/rocksdb/util/gflags_compat.h +6 -1
- package/deps/rocksdb/rocksdb/util/hash.cc +121 -3
- package/deps/rocksdb/rocksdb/util/hash.h +31 -1
- package/deps/rocksdb/rocksdb/util/hash128.h +26 -0
- package/deps/rocksdb/rocksdb/util/hash_containers.h +51 -0
- package/deps/rocksdb/rocksdb/util/hash_test.cc +194 -2
- package/deps/rocksdb/rocksdb/util/heap.h +6 -1
- package/deps/rocksdb/rocksdb/util/kv_map.h +1 -1
- package/deps/rocksdb/rocksdb/util/log_write_bench.cc +8 -6
- package/deps/rocksdb/rocksdb/util/math.h +74 -7
- package/deps/rocksdb/rocksdb/util/math128.h +13 -1
- package/deps/rocksdb/rocksdb/util/murmurhash.h +3 -3
- package/deps/rocksdb/rocksdb/util/random.cc +9 -0
- package/deps/rocksdb/rocksdb/util/random.h +6 -0
- package/deps/rocksdb/rocksdb/util/rate_limiter.cc +298 -144
- package/deps/rocksdb/rocksdb/util/rate_limiter.h +68 -19
- package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +335 -23
- package/deps/rocksdb/rocksdb/util/repeatable_thread.h +10 -12
- package/deps/rocksdb/rocksdb/util/repeatable_thread_test.cc +18 -15
- package/deps/rocksdb/rocksdb/util/ribbon_alg.h +98 -74
- package/deps/rocksdb/rocksdb/util/ribbon_config.cc +506 -0
- package/deps/rocksdb/rocksdb/util/ribbon_config.h +182 -0
- package/deps/rocksdb/rocksdb/util/ribbon_impl.h +154 -79
- package/deps/rocksdb/rocksdb/util/ribbon_test.cc +742 -365
- package/deps/rocksdb/rocksdb/util/set_comparator.h +2 -0
- package/deps/rocksdb/rocksdb/util/slice.cc +198 -35
- package/deps/rocksdb/rocksdb/util/slice_test.cc +30 -1
- package/deps/rocksdb/rocksdb/util/status.cc +32 -29
- package/deps/rocksdb/rocksdb/util/stop_watch.h +18 -18
- package/deps/rocksdb/rocksdb/util/string_util.cc +85 -6
- package/deps/rocksdb/rocksdb/util/string_util.h +47 -2
- package/deps/rocksdb/rocksdb/util/thread_guard.h +41 -0
- package/deps/rocksdb/rocksdb/util/thread_local.h +2 -2
- package/deps/rocksdb/rocksdb/util/thread_local_test.cc +22 -24
- package/deps/rocksdb/rocksdb/util/threadpool_imp.cc +7 -6
- package/deps/rocksdb/rocksdb/util/timer.h +55 -46
- package/deps/rocksdb/rocksdb/util/timer_test.cc +50 -48
- package/deps/rocksdb/rocksdb/util/user_comparator_wrapper.h +4 -0
- package/deps/rocksdb/rocksdb/util/vector_iterator.h +31 -15
- package/deps/rocksdb/rocksdb/util/work_queue.h +2 -0
- package/deps/rocksdb/rocksdb/util/xxhash.cc +35 -1144
- package/deps/rocksdb/rocksdb/util/xxhash.h +5117 -373
- package/deps/rocksdb/rocksdb/util/xxph3.h +1762 -0
- package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge.cc +238 -0
- package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge.h +49 -0
- package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge_test.cc +134 -0
- package/deps/rocksdb/rocksdb/utilities/agg_merge/test_agg_merge.cc +104 -0
- package/deps/rocksdb/rocksdb/utilities/agg_merge/test_agg_merge.h +47 -0
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +3164 -0
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_impl.h +29 -0
- package/deps/rocksdb/rocksdb/utilities/{backupable/backupable_db_test.cc → backup/backup_engine_test.cc} +1679 -485
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.cc +6 -4
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.h +14 -9
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.cc +2 -0
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.h +1 -0
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_gc_stats.h +4 -0
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +37 -27
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +8 -4
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl_filesnapshot.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_iterator.h +13 -10
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +5 -0
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +44 -25
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +3 -4
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +27 -19
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.h +4 -2
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load.cc +69 -0
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +489 -0
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.h +366 -0
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.cc +67 -4
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.h +21 -6
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_functional_test.cc +107 -7
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_options.h +43 -0
- package/deps/rocksdb/rocksdb/utilities/cassandra/format.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.cc +24 -8
- package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.h +7 -7
- package/deps/rocksdb/rocksdb/utilities/cassandra/serialize.h +5 -0
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +99 -218
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.h +8 -24
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +114 -1
- package/deps/rocksdb/rocksdb/utilities/compaction_filters/layered_compaction_filter_base.h +6 -2
- package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc +0 -4
- package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.h +7 -6
- package/deps/rocksdb/rocksdb/utilities/compaction_filters.cc +56 -0
- package/deps/rocksdb/rocksdb/utilities/convenience/info_log_finder.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/counted_fs.cc +355 -0
- package/deps/rocksdb/rocksdb/utilities/counted_fs.h +152 -0
- package/deps/rocksdb/rocksdb/utilities/env_mirror.cc +13 -0
- package/deps/rocksdb/rocksdb/utilities/env_timed.cc +164 -122
- package/deps/rocksdb/rocksdb/utilities/env_timed.h +97 -0
- package/deps/rocksdb/rocksdb/utilities/fault_injection_env.cc +75 -17
- package/deps/rocksdb/rocksdb/utilities/fault_injection_env.h +19 -3
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +539 -126
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +162 -17
- package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.cc +110 -0
- package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.h +94 -0
- package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +5 -2
- package/deps/rocksdb/rocksdb/utilities/memory_allocators.h +104 -0
- package/deps/rocksdb/rocksdb/utilities/merge_operators/bytesxor.h +5 -3
- package/deps/rocksdb/rocksdb/utilities/merge_operators/max.cc +4 -1
- package/deps/rocksdb/rocksdb/utilities/merge_operators/put.cc +11 -3
- package/deps/rocksdb/rocksdb/utilities/merge_operators/sortlist.cc +0 -2
- package/deps/rocksdb/rocksdb/utilities/merge_operators/sortlist.h +5 -1
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.cc +29 -10
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.h +6 -3
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend2.cc +29 -14
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend2.h +6 -3
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend_test.cc +71 -18
- package/deps/rocksdb/rocksdb/utilities/merge_operators/uint64add.cc +15 -9
- package/deps/rocksdb/rocksdb/utilities/merge_operators.cc +120 -0
- package/deps/rocksdb/rocksdb/utilities/merge_operators.h +3 -23
- package/deps/rocksdb/rocksdb/utilities/object_registry.cc +267 -42
- package/deps/rocksdb/rocksdb/utilities/object_registry_test.cc +702 -76
- package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration_test.cc +26 -5
- package/deps/rocksdb/rocksdb/utilities/options/options_util.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +124 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.cc +2 -3
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.h +8 -9
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +15 -13
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.h +4 -4
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_evictable.h +2 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_bench.cc +8 -9
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.h +6 -3
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.h +2 -2
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/cache_simulator.cc +3 -0
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/cache_simulator_test.cc +2 -0
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache.cc +43 -35
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache_test.cc +20 -18
- package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.cc +107 -2
- package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.cc +23 -15
- package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.h +2 -2
- package/deps/rocksdb/rocksdb/utilities/trace/replayer_impl.cc +316 -0
- package/deps/rocksdb/rocksdb/utilities/trace/replayer_impl.h +86 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.cc +4 -5
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.h +4 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +119 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.cc +20 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.h +20 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_external_pthread.h +3 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +4 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc +38 -14
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.h +17 -10
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +1 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +1 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +423 -34
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +82 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.cc +72 -40
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.h +32 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +13 -5
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +7 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +207 -43
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +50 -7
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.cc +28 -10
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.h +11 -6
- package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +516 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +506 -15
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +27 -13
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +14 -14
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.h +3 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +14 -5
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +305 -27
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +55 -159
- package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +209 -2
- package/deps/rocksdb/rocksdb/utilities/wal_filter.cc +23 -0
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +157 -88
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +501 -114
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +91 -316
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +1212 -672
- package/deps/rocksdb/rocksdb.gyp +425 -446
- package/package.json +8 -8
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/prebuilds/darwin-x86/node.napi.node +0 -0
- package/prebuilds/{darwin-x64+arm64 → linux-x64}/node.napi.node +0 -0
- package/deps/rocksdb/rocksdb/env/env_hdfs.cc +0 -648
- package/deps/rocksdb/rocksdb/hdfs/README +0 -23
- package/deps/rocksdb/rocksdb/hdfs/env_hdfs.h +0 -386
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/backupable_db.h +0 -535
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/env_librados.h +0 -175
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/utility_db.h +0 -34
- package/deps/rocksdb/rocksdb/memory/memkind_kmem_allocator_test.cc +0 -102
- package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.h +0 -49
- package/deps/rocksdb/rocksdb/memtable/hash_skiplist_rep.h +0 -44
- package/deps/rocksdb/rocksdb/options/customizable_helper.h +0 -216
- package/deps/rocksdb/rocksdb/third-party/folly/folly/CPortability.h +0 -27
- package/deps/rocksdb/rocksdb/third-party/folly/folly/ConstexprMath.h +0 -45
- package/deps/rocksdb/rocksdb/third-party/folly/folly/Indestructible.h +0 -166
- package/deps/rocksdb/rocksdb/third-party/folly/folly/Optional.h +0 -570
- package/deps/rocksdb/rocksdb/third-party/folly/folly/Portability.h +0 -92
- package/deps/rocksdb/rocksdb/third-party/folly/folly/ScopeGuard.h +0 -54
- package/deps/rocksdb/rocksdb/third-party/folly/folly/Traits.h +0 -152
- package/deps/rocksdb/rocksdb/third-party/folly/folly/Unit.h +0 -59
- package/deps/rocksdb/rocksdb/third-party/folly/folly/Utility.h +0 -141
- package/deps/rocksdb/rocksdb/third-party/folly/folly/chrono/Hardware.h +0 -33
- package/deps/rocksdb/rocksdb/third-party/folly/folly/container/Array.h +0 -74
- package/deps/rocksdb/rocksdb/third-party/folly/folly/detail/Futex-inl.h +0 -117
- package/deps/rocksdb/rocksdb/third-party/folly/folly/detail/Futex.cpp +0 -263
- package/deps/rocksdb/rocksdb/third-party/folly/folly/detail/Futex.h +0 -96
- package/deps/rocksdb/rocksdb/third-party/folly/folly/functional/Invoke.h +0 -40
- package/deps/rocksdb/rocksdb/third-party/folly/folly/hash/Hash.h +0 -29
- package/deps/rocksdb/rocksdb/third-party/folly/folly/lang/Align.h +0 -144
- package/deps/rocksdb/rocksdb/third-party/folly/folly/lang/Bits.h +0 -30
- package/deps/rocksdb/rocksdb/third-party/folly/folly/lang/Launder.h +0 -51
- package/deps/rocksdb/rocksdb/third-party/folly/folly/portability/Asm.h +0 -28
- package/deps/rocksdb/rocksdb/third-party/folly/folly/portability/SysSyscall.h +0 -10
- package/deps/rocksdb/rocksdb/third-party/folly/folly/portability/SysTypes.h +0 -26
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicNotification-inl.h +0 -138
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicNotification.cpp +0 -23
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicNotification.h +0 -57
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicUtil-inl.h +0 -260
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicUtil.h +0 -52
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/Baton.h +0 -328
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutex-inl.h +0 -1703
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutex.cpp +0 -16
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutex.h +0 -304
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutexSpecializations.h +0 -39
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/ParkingLot.cpp +0 -26
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/ParkingLot.h +0 -318
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/WaitOptions.h +0 -57
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/InlineFunctionRef.h +0 -219
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/ProxyLockable-inl.h +0 -207
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/ProxyLockable.h +0 -164
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/Sleeper.h +0 -57
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/Spin.h +0 -77
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/test/DistributedMutexTest.cpp +0 -1145
- package/deps/rocksdb/rocksdb/util/build_version.h +0 -15
- package/deps/rocksdb/rocksdb/util/xxh3p.h +0 -1392
- package/deps/rocksdb/rocksdb/utilities/backupable/backupable_db.cc +0 -2354
- package/deps/rocksdb/rocksdb/utilities/env_librados.cc +0 -1497
- package/deps/rocksdb/rocksdb/utilities/env_librados_test.cc +0 -1146
- package/prebuilds/linux-x64/node.napi.glibc.node +0 -0
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
|
|
15
15
|
#include "db/column_family.h"
|
|
16
16
|
#include "db/db_impl/db_impl.h"
|
|
17
|
+
#include "logging/logging.h"
|
|
17
18
|
#include "rocksdb/comparator.h"
|
|
18
19
|
#include "rocksdb/db.h"
|
|
19
20
|
#include "rocksdb/snapshot.h"
|
|
@@ -24,6 +25,7 @@
|
|
|
24
25
|
#include "util/string_util.h"
|
|
25
26
|
#include "utilities/transactions/pessimistic_transaction_db.h"
|
|
26
27
|
#include "utilities/transactions/transaction_util.h"
|
|
28
|
+
#include "utilities/write_batch_with_index/write_batch_with_index_internal.h"
|
|
27
29
|
|
|
28
30
|
namespace ROCKSDB_NAMESPACE {
|
|
29
31
|
|
|
@@ -120,7 +122,7 @@ void PessimisticTransaction::Reinitialize(
|
|
|
120
122
|
|
|
121
123
|
bool PessimisticTransaction::IsExpired() const {
|
|
122
124
|
if (expiration_time_ > 0) {
|
|
123
|
-
if (
|
|
125
|
+
if (dbimpl_->GetSystemClock()->NowMicros() >= expiration_time_) {
|
|
124
126
|
// Transaction is expired.
|
|
125
127
|
return true;
|
|
126
128
|
}
|
|
@@ -132,9 +134,306 @@ bool PessimisticTransaction::IsExpired() const {
|
|
|
132
134
|
WriteCommittedTxn::WriteCommittedTxn(TransactionDB* txn_db,
|
|
133
135
|
const WriteOptions& write_options,
|
|
134
136
|
const TransactionOptions& txn_options)
|
|
135
|
-
: PessimisticTransaction(txn_db, write_options, txn_options){}
|
|
137
|
+
: PessimisticTransaction(txn_db, write_options, txn_options) {}
|
|
138
|
+
|
|
139
|
+
Status WriteCommittedTxn::GetForUpdate(const ReadOptions& read_options,
|
|
140
|
+
ColumnFamilyHandle* column_family,
|
|
141
|
+
const Slice& key, std::string* value,
|
|
142
|
+
bool exclusive, const bool do_validate) {
|
|
143
|
+
return GetForUpdateImpl(read_options, column_family, key, value, exclusive,
|
|
144
|
+
do_validate);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
Status WriteCommittedTxn::GetForUpdate(const ReadOptions& read_options,
|
|
148
|
+
ColumnFamilyHandle* column_family,
|
|
149
|
+
const Slice& key,
|
|
150
|
+
PinnableSlice* pinnable_val,
|
|
151
|
+
bool exclusive, const bool do_validate) {
|
|
152
|
+
return GetForUpdateImpl(read_options, column_family, key, pinnable_val,
|
|
153
|
+
exclusive, do_validate);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
template <typename TValue>
|
|
157
|
+
inline Status WriteCommittedTxn::GetForUpdateImpl(
|
|
158
|
+
const ReadOptions& read_options, ColumnFamilyHandle* column_family,
|
|
159
|
+
const Slice& key, TValue* value, bool exclusive, const bool do_validate) {
|
|
160
|
+
column_family =
|
|
161
|
+
column_family ? column_family : db_impl_->DefaultColumnFamily();
|
|
162
|
+
assert(column_family);
|
|
163
|
+
if (!read_options.timestamp) {
|
|
164
|
+
const Comparator* const ucmp = column_family->GetComparator();
|
|
165
|
+
assert(ucmp);
|
|
166
|
+
size_t ts_sz = ucmp->timestamp_size();
|
|
167
|
+
if (0 == ts_sz) {
|
|
168
|
+
return TransactionBaseImpl::GetForUpdate(read_options, column_family, key,
|
|
169
|
+
value, exclusive, do_validate);
|
|
170
|
+
}
|
|
171
|
+
} else {
|
|
172
|
+
Status s = db_impl_->FailIfTsSizesMismatch(column_family,
|
|
173
|
+
*(read_options.timestamp));
|
|
174
|
+
if (!s.ok()) {
|
|
175
|
+
return s;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
if (!do_validate) {
|
|
180
|
+
return Status::InvalidArgument(
|
|
181
|
+
"If do_validate is false then GetForUpdate with read_timestamp is not "
|
|
182
|
+
"defined.");
|
|
183
|
+
} else if (kMaxTxnTimestamp == read_timestamp_) {
|
|
184
|
+
return Status::InvalidArgument("read_timestamp must be set for validation");
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
if (!read_options.timestamp) {
|
|
188
|
+
ReadOptions read_opts_copy = read_options;
|
|
189
|
+
char ts_buf[sizeof(kMaxTxnTimestamp)];
|
|
190
|
+
EncodeFixed64(ts_buf, read_timestamp_);
|
|
191
|
+
Slice ts(ts_buf, sizeof(ts_buf));
|
|
192
|
+
read_opts_copy.timestamp = &ts;
|
|
193
|
+
return TransactionBaseImpl::GetForUpdate(read_opts_copy, column_family, key,
|
|
194
|
+
value, exclusive, do_validate);
|
|
195
|
+
}
|
|
196
|
+
assert(read_options.timestamp);
|
|
197
|
+
const char* const ts_buf = read_options.timestamp->data();
|
|
198
|
+
assert(read_options.timestamp->size() == sizeof(kMaxTxnTimestamp));
|
|
199
|
+
TxnTimestamp ts = DecodeFixed64(ts_buf);
|
|
200
|
+
if (ts != read_timestamp_) {
|
|
201
|
+
return Status::InvalidArgument("Must read from the same read_timestamp");
|
|
202
|
+
}
|
|
203
|
+
return TransactionBaseImpl::GetForUpdate(read_options, column_family, key,
|
|
204
|
+
value, exclusive, do_validate);
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
Status WriteCommittedTxn::Put(ColumnFamilyHandle* column_family,
|
|
208
|
+
const Slice& key, const Slice& value,
|
|
209
|
+
const bool assume_tracked) {
|
|
210
|
+
const bool do_validate = !assume_tracked;
|
|
211
|
+
return Operate(column_family, key, do_validate, assume_tracked,
|
|
212
|
+
[column_family, &key, &value, this]() {
|
|
213
|
+
Status s =
|
|
214
|
+
GetBatchForWrite()->Put(column_family, key, value);
|
|
215
|
+
if (s.ok()) {
|
|
216
|
+
++num_puts_;
|
|
217
|
+
}
|
|
218
|
+
return s;
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
Status WriteCommittedTxn::Put(ColumnFamilyHandle* column_family,
|
|
223
|
+
const SliceParts& key, const SliceParts& value,
|
|
224
|
+
const bool assume_tracked) {
|
|
225
|
+
const bool do_validate = !assume_tracked;
|
|
226
|
+
return Operate(column_family, key, do_validate, assume_tracked,
|
|
227
|
+
[column_family, &key, &value, this]() {
|
|
228
|
+
Status s =
|
|
229
|
+
GetBatchForWrite()->Put(column_family, key, value);
|
|
230
|
+
if (s.ok()) {
|
|
231
|
+
++num_puts_;
|
|
232
|
+
}
|
|
233
|
+
return s;
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
Status WriteCommittedTxn::PutUntracked(ColumnFamilyHandle* column_family,
|
|
238
|
+
const Slice& key, const Slice& value) {
|
|
239
|
+
return Operate(
|
|
240
|
+
column_family, key, /*do_validate=*/false,
|
|
241
|
+
/*assume_tracked=*/false, [column_family, &key, &value, this]() {
|
|
242
|
+
Status s = GetBatchForWrite()->Put(column_family, key, value);
|
|
243
|
+
if (s.ok()) {
|
|
244
|
+
++num_puts_;
|
|
245
|
+
}
|
|
246
|
+
return s;
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
Status WriteCommittedTxn::PutUntracked(ColumnFamilyHandle* column_family,
|
|
251
|
+
const SliceParts& key,
|
|
252
|
+
const SliceParts& value) {
|
|
253
|
+
return Operate(
|
|
254
|
+
column_family, key, /*do_validate=*/false,
|
|
255
|
+
/*assume_tracked=*/false, [column_family, &key, &value, this]() {
|
|
256
|
+
Status s = GetBatchForWrite()->Put(column_family, key, value);
|
|
257
|
+
if (s.ok()) {
|
|
258
|
+
++num_puts_;
|
|
259
|
+
}
|
|
260
|
+
return s;
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
Status WriteCommittedTxn::Delete(ColumnFamilyHandle* column_family,
|
|
265
|
+
const Slice& key, const bool assume_tracked) {
|
|
266
|
+
const bool do_validate = !assume_tracked;
|
|
267
|
+
return Operate(column_family, key, do_validate, assume_tracked,
|
|
268
|
+
[column_family, &key, this]() {
|
|
269
|
+
Status s = GetBatchForWrite()->Delete(column_family, key);
|
|
270
|
+
if (s.ok()) {
|
|
271
|
+
++num_deletes_;
|
|
272
|
+
}
|
|
273
|
+
return s;
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
Status WriteCommittedTxn::Delete(ColumnFamilyHandle* column_family,
|
|
278
|
+
const SliceParts& key,
|
|
279
|
+
const bool assume_tracked) {
|
|
280
|
+
const bool do_validate = !assume_tracked;
|
|
281
|
+
return Operate(column_family, key, do_validate, assume_tracked,
|
|
282
|
+
[column_family, &key, this]() {
|
|
283
|
+
Status s = GetBatchForWrite()->Delete(column_family, key);
|
|
284
|
+
if (s.ok()) {
|
|
285
|
+
++num_deletes_;
|
|
286
|
+
}
|
|
287
|
+
return s;
|
|
288
|
+
});
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
Status WriteCommittedTxn::DeleteUntracked(ColumnFamilyHandle* column_family,
|
|
292
|
+
const Slice& key) {
|
|
293
|
+
return Operate(column_family, key, /*do_validate=*/false,
|
|
294
|
+
/*assume_tracked=*/false, [column_family, &key, this]() {
|
|
295
|
+
Status s = GetBatchForWrite()->Delete(column_family, key);
|
|
296
|
+
if (s.ok()) {
|
|
297
|
+
++num_deletes_;
|
|
298
|
+
}
|
|
299
|
+
return s;
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
Status WriteCommittedTxn::DeleteUntracked(ColumnFamilyHandle* column_family,
|
|
304
|
+
const SliceParts& key) {
|
|
305
|
+
return Operate(column_family, key, /*do_validate=*/false,
|
|
306
|
+
/*assume_tracked=*/false, [column_family, &key, this]() {
|
|
307
|
+
Status s = GetBatchForWrite()->Delete(column_family, key);
|
|
308
|
+
if (s.ok()) {
|
|
309
|
+
++num_deletes_;
|
|
310
|
+
}
|
|
311
|
+
return s;
|
|
312
|
+
});
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
Status WriteCommittedTxn::SingleDelete(ColumnFamilyHandle* column_family,
|
|
316
|
+
const Slice& key,
|
|
317
|
+
const bool assume_tracked) {
|
|
318
|
+
const bool do_validate = !assume_tracked;
|
|
319
|
+
return Operate(column_family, key, do_validate, assume_tracked,
|
|
320
|
+
[column_family, &key, this]() {
|
|
321
|
+
Status s =
|
|
322
|
+
GetBatchForWrite()->SingleDelete(column_family, key);
|
|
323
|
+
if (s.ok()) {
|
|
324
|
+
++num_deletes_;
|
|
325
|
+
}
|
|
326
|
+
return s;
|
|
327
|
+
});
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
Status WriteCommittedTxn::SingleDelete(ColumnFamilyHandle* column_family,
|
|
331
|
+
const SliceParts& key,
|
|
332
|
+
const bool assume_tracked) {
|
|
333
|
+
const bool do_validate = !assume_tracked;
|
|
334
|
+
return Operate(column_family, key, do_validate, assume_tracked,
|
|
335
|
+
[column_family, &key, this]() {
|
|
336
|
+
Status s =
|
|
337
|
+
GetBatchForWrite()->SingleDelete(column_family, key);
|
|
338
|
+
if (s.ok()) {
|
|
339
|
+
++num_deletes_;
|
|
340
|
+
}
|
|
341
|
+
return s;
|
|
342
|
+
});
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
Status WriteCommittedTxn::SingleDeleteUntracked(
|
|
346
|
+
ColumnFamilyHandle* column_family, const Slice& key) {
|
|
347
|
+
return Operate(column_family, key, /*do_validate=*/false,
|
|
348
|
+
/*assume_tracked=*/false, [column_family, &key, this]() {
|
|
349
|
+
Status s =
|
|
350
|
+
GetBatchForWrite()->SingleDelete(column_family, key);
|
|
351
|
+
if (s.ok()) {
|
|
352
|
+
++num_deletes_;
|
|
353
|
+
}
|
|
354
|
+
return s;
|
|
355
|
+
});
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
Status WriteCommittedTxn::Merge(ColumnFamilyHandle* column_family,
|
|
359
|
+
const Slice& key, const Slice& value,
|
|
360
|
+
const bool assume_tracked) {
|
|
361
|
+
const bool do_validate = !assume_tracked;
|
|
362
|
+
return Operate(column_family, key, do_validate, assume_tracked,
|
|
363
|
+
[column_family, &key, &value, this]() {
|
|
364
|
+
Status s =
|
|
365
|
+
GetBatchForWrite()->Merge(column_family, key, value);
|
|
366
|
+
if (s.ok()) {
|
|
367
|
+
++num_merges_;
|
|
368
|
+
}
|
|
369
|
+
return s;
|
|
370
|
+
});
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
template <typename TKey, typename TOperation>
|
|
374
|
+
Status WriteCommittedTxn::Operate(ColumnFamilyHandle* column_family,
|
|
375
|
+
const TKey& key, const bool do_validate,
|
|
376
|
+
const bool assume_tracked,
|
|
377
|
+
TOperation&& operation) {
|
|
378
|
+
Status s;
|
|
379
|
+
if constexpr (std::is_same_v<Slice, TKey>) {
|
|
380
|
+
s = TryLock(column_family, key, /*read_only=*/false, /*exclusive=*/true,
|
|
381
|
+
do_validate, assume_tracked);
|
|
382
|
+
} else if constexpr (std::is_same_v<SliceParts, TKey>) {
|
|
383
|
+
std::string key_buf;
|
|
384
|
+
Slice contiguous_key(key, &key_buf);
|
|
385
|
+
s = TryLock(column_family, contiguous_key, /*read_only=*/false,
|
|
386
|
+
/*exclusive=*/true, do_validate, assume_tracked);
|
|
387
|
+
}
|
|
388
|
+
if (!s.ok()) {
|
|
389
|
+
return s;
|
|
390
|
+
}
|
|
391
|
+
column_family =
|
|
392
|
+
column_family ? column_family : db_impl_->DefaultColumnFamily();
|
|
393
|
+
assert(column_family);
|
|
394
|
+
const Comparator* const ucmp = column_family->GetComparator();
|
|
395
|
+
assert(ucmp);
|
|
396
|
+
size_t ts_sz = ucmp->timestamp_size();
|
|
397
|
+
if (ts_sz > 0) {
|
|
398
|
+
assert(ts_sz == sizeof(TxnTimestamp));
|
|
399
|
+
if (!IndexingEnabled()) {
|
|
400
|
+
cfs_with_ts_tracked_when_indexing_disabled_.insert(
|
|
401
|
+
column_family->GetID());
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
return operation();
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
Status WriteCommittedTxn::SetReadTimestampForValidation(TxnTimestamp ts) {
|
|
408
|
+
if (read_timestamp_ < kMaxTxnTimestamp && ts < read_timestamp_) {
|
|
409
|
+
return Status::InvalidArgument(
|
|
410
|
+
"Cannot decrease read timestamp for validation");
|
|
411
|
+
}
|
|
412
|
+
read_timestamp_ = ts;
|
|
413
|
+
return Status::OK();
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
Status WriteCommittedTxn::SetCommitTimestamp(TxnTimestamp ts) {
|
|
417
|
+
if (read_timestamp_ < kMaxTxnTimestamp && ts <= read_timestamp_) {
|
|
418
|
+
return Status::InvalidArgument(
|
|
419
|
+
"Cannot commit at timestamp smaller than or equal to read timestamp");
|
|
420
|
+
}
|
|
421
|
+
commit_timestamp_ = ts;
|
|
422
|
+
return Status::OK();
|
|
423
|
+
}
|
|
136
424
|
|
|
137
425
|
Status PessimisticTransaction::CommitBatch(WriteBatch* batch) {
|
|
426
|
+
if (batch && WriteBatchInternal::HasKeyWithTimestamp(*batch)) {
|
|
427
|
+
// CommitBatch() needs to lock the keys in the batch.
|
|
428
|
+
// However, the application also needs to specify the timestamp for the
|
|
429
|
+
// keys in batch before calling this API.
|
|
430
|
+
// This means timestamp order may violate the order of locking, thus
|
|
431
|
+
// violate the sequence number order for the same user key.
|
|
432
|
+
// Therefore, we disallow this operation for now.
|
|
433
|
+
return Status::NotSupported(
|
|
434
|
+
"Batch to commit includes timestamp assigned before locking");
|
|
435
|
+
}
|
|
436
|
+
|
|
138
437
|
std::unique_ptr<LockTracker> keys_to_unlock(lock_tracker_factory_.Create());
|
|
139
438
|
Status s = LockBatch(batch, keys_to_unlock.get());
|
|
140
439
|
|
|
@@ -173,7 +472,6 @@ Status PessimisticTransaction::CommitBatch(WriteBatch* batch) {
|
|
|
173
472
|
}
|
|
174
473
|
|
|
175
474
|
Status PessimisticTransaction::Prepare() {
|
|
176
|
-
|
|
177
475
|
if (name_.empty()) {
|
|
178
476
|
return Status::InvalidArgument(
|
|
179
477
|
"Cannot prepare a transaction that has not been named.");
|
|
@@ -351,9 +649,41 @@ Status PessimisticTransaction::Commit() {
|
|
|
351
649
|
}
|
|
352
650
|
|
|
353
651
|
Status WriteCommittedTxn::CommitWithoutPrepareInternal() {
|
|
652
|
+
WriteBatchWithIndex* wbwi = GetWriteBatch();
|
|
653
|
+
assert(wbwi);
|
|
654
|
+
WriteBatch* wb = wbwi->GetWriteBatch();
|
|
655
|
+
assert(wb);
|
|
656
|
+
|
|
657
|
+
const bool needs_ts = WriteBatchInternal::HasKeyWithTimestamp(*wb);
|
|
658
|
+
if (needs_ts && commit_timestamp_ == kMaxTxnTimestamp) {
|
|
659
|
+
return Status::InvalidArgument("Must assign a commit timestamp");
|
|
660
|
+
}
|
|
661
|
+
|
|
662
|
+
if (needs_ts) {
|
|
663
|
+
assert(commit_timestamp_ != kMaxTxnTimestamp);
|
|
664
|
+
char commit_ts_buf[sizeof(kMaxTxnTimestamp)];
|
|
665
|
+
EncodeFixed64(commit_ts_buf, commit_timestamp_);
|
|
666
|
+
Slice commit_ts(commit_ts_buf, sizeof(commit_ts_buf));
|
|
667
|
+
|
|
668
|
+
Status s =
|
|
669
|
+
wb->UpdateTimestamps(commit_ts, [wbwi, this](uint32_t cf) -> size_t {
|
|
670
|
+
auto cf_iter = cfs_with_ts_tracked_when_indexing_disabled_.find(cf);
|
|
671
|
+
if (cf_iter != cfs_with_ts_tracked_when_indexing_disabled_.end()) {
|
|
672
|
+
return sizeof(kMaxTxnTimestamp);
|
|
673
|
+
}
|
|
674
|
+
const Comparator* ucmp =
|
|
675
|
+
WriteBatchWithIndexInternal::GetUserComparator(*wbwi, cf);
|
|
676
|
+
return ucmp ? ucmp->timestamp_size()
|
|
677
|
+
: std::numeric_limits<uint64_t>::max();
|
|
678
|
+
});
|
|
679
|
+
if (!s.ok()) {
|
|
680
|
+
return s;
|
|
681
|
+
}
|
|
682
|
+
}
|
|
683
|
+
|
|
354
684
|
uint64_t seq_used = kMaxSequenceNumber;
|
|
355
685
|
auto s =
|
|
356
|
-
db_impl_->WriteImpl(write_options_,
|
|
686
|
+
db_impl_->WriteImpl(write_options_, wb,
|
|
357
687
|
/*callback*/ nullptr, /*log_used*/ nullptr,
|
|
358
688
|
/*log_ref*/ 0, /*disable_memtable*/ false, &seq_used);
|
|
359
689
|
assert(!s.ok() || seq_used != kMaxSequenceNumber);
|
|
@@ -376,11 +706,46 @@ Status WriteCommittedTxn::CommitBatchInternal(WriteBatch* batch, size_t) {
|
|
|
376
706
|
}
|
|
377
707
|
|
|
378
708
|
Status WriteCommittedTxn::CommitInternal() {
|
|
709
|
+
WriteBatchWithIndex* wbwi = GetWriteBatch();
|
|
710
|
+
assert(wbwi);
|
|
711
|
+
WriteBatch* wb = wbwi->GetWriteBatch();
|
|
712
|
+
assert(wb);
|
|
713
|
+
|
|
714
|
+
const bool needs_ts = WriteBatchInternal::HasKeyWithTimestamp(*wb);
|
|
715
|
+
if (needs_ts && commit_timestamp_ == kMaxTxnTimestamp) {
|
|
716
|
+
return Status::InvalidArgument("Must assign a commit timestamp");
|
|
717
|
+
}
|
|
379
718
|
// We take the commit-time batch and append the Commit marker.
|
|
380
719
|
// The Memtable will ignore the Commit marker in non-recovery mode
|
|
381
720
|
WriteBatch* working_batch = GetCommitTimeWriteBatch();
|
|
382
|
-
|
|
383
|
-
|
|
721
|
+
|
|
722
|
+
Status s;
|
|
723
|
+
if (!needs_ts) {
|
|
724
|
+
s = WriteBatchInternal::MarkCommit(working_batch, name_);
|
|
725
|
+
} else {
|
|
726
|
+
assert(commit_timestamp_ != kMaxTxnTimestamp);
|
|
727
|
+
char commit_ts_buf[sizeof(kMaxTxnTimestamp)];
|
|
728
|
+
EncodeFixed64(commit_ts_buf, commit_timestamp_);
|
|
729
|
+
Slice commit_ts(commit_ts_buf, sizeof(commit_ts_buf));
|
|
730
|
+
s = WriteBatchInternal::MarkCommitWithTimestamp(working_batch, name_,
|
|
731
|
+
commit_ts);
|
|
732
|
+
if (s.ok()) {
|
|
733
|
+
s = wb->UpdateTimestamps(commit_ts, [wbwi, this](uint32_t cf) -> size_t {
|
|
734
|
+
if (cfs_with_ts_tracked_when_indexing_disabled_.find(cf) !=
|
|
735
|
+
cfs_with_ts_tracked_when_indexing_disabled_.end()) {
|
|
736
|
+
return sizeof(kMaxTxnTimestamp);
|
|
737
|
+
}
|
|
738
|
+
const Comparator* ucmp =
|
|
739
|
+
WriteBatchWithIndexInternal::GetUserComparator(*wbwi, cf);
|
|
740
|
+
return ucmp ? ucmp->timestamp_size()
|
|
741
|
+
: std::numeric_limits<uint64_t>::max();
|
|
742
|
+
});
|
|
743
|
+
}
|
|
744
|
+
}
|
|
745
|
+
|
|
746
|
+
if (!s.ok()) {
|
|
747
|
+
return s;
|
|
748
|
+
}
|
|
384
749
|
|
|
385
750
|
// any operations appended to this working_batch will be ignored from WAL
|
|
386
751
|
working_batch->MarkWalTerminationPoint();
|
|
@@ -388,8 +753,7 @@ Status WriteCommittedTxn::CommitInternal() {
|
|
|
388
753
|
// insert prepared batch into Memtable only skipping WAL.
|
|
389
754
|
// Memtable will ignore BeginPrepare/EndPrepare markers
|
|
390
755
|
// in non recovery mode and simply insert the values
|
|
391
|
-
s = WriteBatchInternal::Append(working_batch,
|
|
392
|
-
GetWriteBatch()->GetWriteBatch());
|
|
756
|
+
s = WriteBatchInternal::Append(working_batch, wb);
|
|
393
757
|
assert(s.ok());
|
|
394
758
|
|
|
395
759
|
uint64_t seq_used = kMaxSequenceNumber;
|
|
@@ -471,6 +835,10 @@ Status PessimisticTransaction::RollbackToSavePoint() {
|
|
|
471
835
|
// On success, caller should unlock keys_to_unlock
|
|
472
836
|
Status PessimisticTransaction::LockBatch(WriteBatch* batch,
|
|
473
837
|
LockTracker* keys_to_unlock) {
|
|
838
|
+
if (!batch) {
|
|
839
|
+
return Status::InvalidArgument("batch is nullptr");
|
|
840
|
+
}
|
|
841
|
+
|
|
474
842
|
class Handler : public WriteBatch::Handler {
|
|
475
843
|
public:
|
|
476
844
|
// Sorted map of column_family_id to sorted set of keys.
|
|
@@ -585,6 +953,13 @@ Status PessimisticTransaction::TryLock(ColumnFamilyHandle* column_family,
|
|
|
585
953
|
s = txn_db_impl_->TryLock(this, cfh_id, key_str, exclusive);
|
|
586
954
|
}
|
|
587
955
|
|
|
956
|
+
const ColumnFamilyHandle* const cfh =
|
|
957
|
+
column_family ? column_family : db_impl_->DefaultColumnFamily();
|
|
958
|
+
assert(cfh);
|
|
959
|
+
const Comparator* const ucmp = cfh->GetComparator();
|
|
960
|
+
assert(ucmp);
|
|
961
|
+
size_t ts_sz = ucmp->timestamp_size();
|
|
962
|
+
|
|
588
963
|
SetSnapshotIfNeeded();
|
|
589
964
|
|
|
590
965
|
// Even though we do not care about doing conflict checking for this write,
|
|
@@ -592,10 +967,11 @@ Status PessimisticTransaction::TryLock(ColumnFamilyHandle* column_family,
|
|
|
592
967
|
// some other write. However, we do not need to check if there have been
|
|
593
968
|
// any writes since this transaction's snapshot.
|
|
594
969
|
// TODO(agiardullo): could optimize by supporting shared txn locks in the
|
|
595
|
-
// future
|
|
970
|
+
// future.
|
|
596
971
|
SequenceNumber tracked_at_seq =
|
|
597
972
|
status.locked ? status.seq : kMaxSequenceNumber;
|
|
598
|
-
if (!do_validate || snapshot_ == nullptr
|
|
973
|
+
if (!do_validate || (snapshot_ == nullptr &&
|
|
974
|
+
(0 == ts_sz || kMaxTxnTimestamp == read_timestamp_))) {
|
|
599
975
|
if (assume_tracked && !previously_locked &&
|
|
600
976
|
tracked_locks_->IsPointLockSupported()) {
|
|
601
977
|
s = Status::InvalidArgument(
|
|
@@ -603,8 +979,7 @@ Status PessimisticTransaction::TryLock(ColumnFamilyHandle* column_family,
|
|
|
603
979
|
}
|
|
604
980
|
// Need to remember the earliest sequence number that we know that this
|
|
605
981
|
// key has not been modified after. This is useful if this same
|
|
606
|
-
// transaction
|
|
607
|
-
// later tries to lock this key again.
|
|
982
|
+
// transaction later tries to lock this key again.
|
|
608
983
|
if (tracked_at_seq == kMaxSequenceNumber) {
|
|
609
984
|
// Since we haven't checked a snapshot, we only know this key has not
|
|
610
985
|
// been modified since after we locked it.
|
|
@@ -615,24 +990,21 @@ Status PessimisticTransaction::TryLock(ColumnFamilyHandle* column_family,
|
|
|
615
990
|
// lock, which would be an unusual sequence.
|
|
616
991
|
tracked_at_seq = db_->GetLatestSequenceNumber();
|
|
617
992
|
}
|
|
618
|
-
} else {
|
|
993
|
+
} else if (s.ok()) {
|
|
619
994
|
// If a snapshot is set, we need to make sure the key hasn't been modified
|
|
620
995
|
// since the snapshot. This must be done after we locked the key.
|
|
621
996
|
// If we already have validated an earilier snapshot it must has been
|
|
622
997
|
// reflected in tracked_at_seq and ValidateSnapshot will return OK.
|
|
623
|
-
|
|
624
|
-
s = ValidateSnapshot(column_family, key, &tracked_at_seq);
|
|
998
|
+
s = ValidateSnapshot(column_family, key, &tracked_at_seq);
|
|
625
999
|
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
txn_db_impl_->UnLock(this, cfh_id, key.ToString());
|
|
635
|
-
}
|
|
1000
|
+
if (!s.ok()) {
|
|
1001
|
+
// Failed to validate key
|
|
1002
|
+
// Unlock key we just locked
|
|
1003
|
+
if (lock_upgrade) {
|
|
1004
|
+
s = txn_db_impl_->TryLock(this, cfh_id, key_str, false /* exclusive */);
|
|
1005
|
+
assert(s.ok());
|
|
1006
|
+
} else if (!previously_locked) {
|
|
1007
|
+
txn_db_impl_->UnLock(this, cfh_id, key.ToString());
|
|
636
1008
|
}
|
|
637
1009
|
}
|
|
638
1010
|
}
|
|
@@ -691,15 +1063,21 @@ Status PessimisticTransaction::GetRangeLock(ColumnFamilyHandle* column_family,
|
|
|
691
1063
|
Status PessimisticTransaction::ValidateSnapshot(
|
|
692
1064
|
ColumnFamilyHandle* column_family, const Slice& key,
|
|
693
1065
|
SequenceNumber* tracked_at_seq) {
|
|
694
|
-
assert(snapshot_);
|
|
695
|
-
|
|
696
|
-
SequenceNumber snap_seq =
|
|
697
|
-
if (
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
1066
|
+
assert(snapshot_ || read_timestamp_ < kMaxTxnTimestamp);
|
|
1067
|
+
|
|
1068
|
+
SequenceNumber snap_seq = 0;
|
|
1069
|
+
if (snapshot_) {
|
|
1070
|
+
snap_seq = snapshot_->GetSequenceNumber();
|
|
1071
|
+
if (*tracked_at_seq <= snap_seq) {
|
|
1072
|
+
// If the key has been previous validated (or locked) at a sequence number
|
|
1073
|
+
// earlier than the current snapshot's sequence number, we already know it
|
|
1074
|
+
// has not been modified aftter snap_seq either.
|
|
1075
|
+
return Status::OK();
|
|
1076
|
+
}
|
|
1077
|
+
} else {
|
|
1078
|
+
snap_seq = db_impl_->GetLatestSequenceNumber();
|
|
702
1079
|
}
|
|
1080
|
+
|
|
703
1081
|
// Otherwise we have either
|
|
704
1082
|
// 1: tracked_at_seq == kMaxSequenceNumber, i.e., first time tracking the key
|
|
705
1083
|
// 2: snap_seq < tracked_at_seq: last time we lock the key was via
|
|
@@ -711,8 +1089,19 @@ Status PessimisticTransaction::ValidateSnapshot(
|
|
|
711
1089
|
ColumnFamilyHandle* cfh =
|
|
712
1090
|
column_family ? column_family : db_impl_->DefaultColumnFamily();
|
|
713
1091
|
|
|
1092
|
+
assert(cfh);
|
|
1093
|
+
const Comparator* const ucmp = cfh->GetComparator();
|
|
1094
|
+
assert(ucmp);
|
|
1095
|
+
size_t ts_sz = ucmp->timestamp_size();
|
|
1096
|
+
std::string ts_buf;
|
|
1097
|
+
if (ts_sz > 0 && read_timestamp_ < kMaxTxnTimestamp) {
|
|
1098
|
+
assert(ts_sz == sizeof(read_timestamp_));
|
|
1099
|
+
PutFixed64(&ts_buf, read_timestamp_);
|
|
1100
|
+
}
|
|
1101
|
+
|
|
714
1102
|
return TransactionUtil::CheckKeyForConflicts(
|
|
715
|
-
db_impl_, cfh, key.ToString(), snap_seq,
|
|
1103
|
+
db_impl_, cfh, key.ToString(), snap_seq, ts_sz == 0 ? nullptr : &ts_buf,
|
|
1104
|
+
false /* cache_only */);
|
|
716
1105
|
}
|
|
717
1106
|
|
|
718
1107
|
bool PessimisticTransaction::TryStealingLocks() {
|
|
@@ -44,7 +44,7 @@ class PessimisticTransaction : public TransactionBaseImpl {
|
|
|
44
44
|
PessimisticTransaction(const PessimisticTransaction&) = delete;
|
|
45
45
|
void operator=(const PessimisticTransaction&) = delete;
|
|
46
46
|
|
|
47
|
-
|
|
47
|
+
~PessimisticTransaction() override;
|
|
48
48
|
|
|
49
49
|
void Reinitialize(TransactionDB* txn_db, const WriteOptions& write_options,
|
|
50
50
|
const TransactionOptions& txn_options);
|
|
@@ -158,6 +158,14 @@ class PessimisticTransaction : public TransactionBaseImpl {
|
|
|
158
158
|
// microseconds according to Env->NowMicros())
|
|
159
159
|
uint64_t expiration_time_;
|
|
160
160
|
|
|
161
|
+
// Timestamp used by the transaction to perform all GetForUpdate.
|
|
162
|
+
// Use this timestamp for conflict checking.
|
|
163
|
+
// read_timestamp_ == kMaxTxnTimestamp means this transaction has not
|
|
164
|
+
// performed any GetForUpdate. It is possible that the transaction has
|
|
165
|
+
// performed blind writes or Get, though.
|
|
166
|
+
TxnTimestamp read_timestamp_{kMaxTxnTimestamp};
|
|
167
|
+
TxnTimestamp commit_timestamp_{kMaxTxnTimestamp};
|
|
168
|
+
|
|
161
169
|
private:
|
|
162
170
|
friend class TransactionTest_ValidateSnapshotTest_Test;
|
|
163
171
|
// Used to create unique ids for transactions.
|
|
@@ -213,9 +221,75 @@ class WriteCommittedTxn : public PessimisticTransaction {
|
|
|
213
221
|
WriteCommittedTxn(const WriteCommittedTxn&) = delete;
|
|
214
222
|
void operator=(const WriteCommittedTxn&) = delete;
|
|
215
223
|
|
|
216
|
-
|
|
224
|
+
~WriteCommittedTxn() override {}
|
|
225
|
+
|
|
226
|
+
using TransactionBaseImpl::GetForUpdate;
|
|
227
|
+
Status GetForUpdate(const ReadOptions& read_options,
|
|
228
|
+
ColumnFamilyHandle* column_family, const Slice& key,
|
|
229
|
+
std::string* value, bool exclusive,
|
|
230
|
+
const bool do_validate) override;
|
|
231
|
+
Status GetForUpdate(const ReadOptions& read_options,
|
|
232
|
+
ColumnFamilyHandle* column_family, const Slice& key,
|
|
233
|
+
PinnableSlice* pinnable_val, bool exclusive,
|
|
234
|
+
const bool do_validate) override;
|
|
235
|
+
|
|
236
|
+
using TransactionBaseImpl::Put;
|
|
237
|
+
// `key` does NOT include timestamp even when it's enabled.
|
|
238
|
+
Status Put(ColumnFamilyHandle* column_family, const Slice& key,
|
|
239
|
+
const Slice& value, const bool assume_tracked = false) override;
|
|
240
|
+
Status Put(ColumnFamilyHandle* column_family, const SliceParts& key,
|
|
241
|
+
const SliceParts& value,
|
|
242
|
+
const bool assume_tracked = false) override;
|
|
243
|
+
|
|
244
|
+
using TransactionBaseImpl::PutUntracked;
|
|
245
|
+
Status PutUntracked(ColumnFamilyHandle* column_family, const Slice& key,
|
|
246
|
+
const Slice& value) override;
|
|
247
|
+
Status PutUntracked(ColumnFamilyHandle* column_family, const SliceParts& key,
|
|
248
|
+
const SliceParts& value) override;
|
|
249
|
+
|
|
250
|
+
using TransactionBaseImpl::Delete;
|
|
251
|
+
// `key` does NOT include timestamp even when it's enabled.
|
|
252
|
+
Status Delete(ColumnFamilyHandle* column_family, const Slice& key,
|
|
253
|
+
const bool assume_tracked = false) override;
|
|
254
|
+
Status Delete(ColumnFamilyHandle* column_family, const SliceParts& key,
|
|
255
|
+
const bool assume_tracked = false) override;
|
|
256
|
+
|
|
257
|
+
using TransactionBaseImpl::DeleteUntracked;
|
|
258
|
+
Status DeleteUntracked(ColumnFamilyHandle* column_family,
|
|
259
|
+
const Slice& key) override;
|
|
260
|
+
Status DeleteUntracked(ColumnFamilyHandle* column_family,
|
|
261
|
+
const SliceParts& key) override;
|
|
262
|
+
|
|
263
|
+
using TransactionBaseImpl::SingleDelete;
|
|
264
|
+
// `key` does NOT include timestamp even when it's enabled.
|
|
265
|
+
Status SingleDelete(ColumnFamilyHandle* column_family, const Slice& key,
|
|
266
|
+
const bool assume_tracked = false) override;
|
|
267
|
+
Status SingleDelete(ColumnFamilyHandle* column_family, const SliceParts& key,
|
|
268
|
+
const bool assume_tracked = false) override;
|
|
269
|
+
|
|
270
|
+
using TransactionBaseImpl::SingleDeleteUntracked;
|
|
271
|
+
Status SingleDeleteUntracked(ColumnFamilyHandle* column_family,
|
|
272
|
+
const Slice& key) override;
|
|
273
|
+
|
|
274
|
+
using TransactionBaseImpl::Merge;
|
|
275
|
+
Status Merge(ColumnFamilyHandle* column_family, const Slice& key,
|
|
276
|
+
const Slice& value, const bool assume_tracked = false) override;
|
|
277
|
+
|
|
278
|
+
Status SetReadTimestampForValidation(TxnTimestamp ts) override;
|
|
279
|
+
Status SetCommitTimestamp(TxnTimestamp ts) override;
|
|
217
280
|
|
|
218
281
|
private:
|
|
282
|
+
template <typename TValue>
|
|
283
|
+
Status GetForUpdateImpl(const ReadOptions& read_options,
|
|
284
|
+
ColumnFamilyHandle* column_family, const Slice& key,
|
|
285
|
+
TValue* value, bool exclusive,
|
|
286
|
+
const bool do_validate);
|
|
287
|
+
|
|
288
|
+
template <typename TKey, typename TOperation>
|
|
289
|
+
Status Operate(ColumnFamilyHandle* column_family, const TKey& key,
|
|
290
|
+
const bool do_validate, const bool assume_tracked,
|
|
291
|
+
TOperation&& operation);
|
|
292
|
+
|
|
219
293
|
Status PrepareInternal() override;
|
|
220
294
|
|
|
221
295
|
Status CommitWithoutPrepareInternal() override;
|
|
@@ -225,6 +299,12 @@ class WriteCommittedTxn : public PessimisticTransaction {
|
|
|
225
299
|
Status CommitInternal() override;
|
|
226
300
|
|
|
227
301
|
Status RollbackInternal() override;
|
|
302
|
+
|
|
303
|
+
// Column families that enable timestamps and whose data are written when
|
|
304
|
+
// indexing_enabled_ is false. If a key is written when indexing_enabled_ is
|
|
305
|
+
// true, then the corresponding column family is not added to cfs_with_ts
|
|
306
|
+
// even if it enables timestamp.
|
|
307
|
+
std::unordered_set<uint32_t> cfs_with_ts_tracked_when_indexing_disabled_;
|
|
228
308
|
};
|
|
229
309
|
|
|
230
310
|
} // namespace ROCKSDB_NAMESPACE
|