@nxtedition/rocksdb 8.2.7 → 9.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/deps/rocksdb/rocksdb/CMakeLists.txt +7 -1
- package/deps/rocksdb/rocksdb/Makefile +22 -19
- package/deps/rocksdb/rocksdb/TARGETS +8 -0
- package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +157 -61
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +43 -92
- package/deps/rocksdb/rocksdb/cache/clock_cache.cc +632 -455
- package/deps/rocksdb/rocksdb/cache/clock_cache.h +244 -149
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +41 -13
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +11 -1
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +216 -17
- package/deps/rocksdb/rocksdb/cache/lru_cache.cc +7 -5
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +279 -199
- package/deps/rocksdb/rocksdb/cache/secondary_cache.cc +2 -1
- package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +159 -8
- package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.h +28 -2
- package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +1 -1
- package/deps/rocksdb/rocksdb/cache/sharded_cache.h +8 -0
- package/deps/rocksdb/rocksdb/crash_test.mk +14 -0
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +3 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +1 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.cc +2 -2
- package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.h +1 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +18 -21
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +1 -2
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.cc +2 -3
- package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/builder.cc +32 -7
- package/deps/rocksdb/rocksdb/db/c.cc +169 -6
- package/deps/rocksdb/rocksdb/db/c_test.c +104 -6
- package/deps/rocksdb/rocksdb/db/column_family.cc +98 -47
- package/deps/rocksdb/rocksdb/db/column_family.h +25 -2
- package/deps/rocksdb/rocksdb/db/column_family_test.cc +213 -2
- package/deps/rocksdb/rocksdb/db/compact_files_test.cc +4 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +93 -23
- package/deps/rocksdb/rocksdb/db/compaction/compaction.h +33 -9
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +7 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +17 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +107 -43
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +15 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +2 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +4 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +25 -17
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +13 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +11 -11
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +29 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +24 -31
- package/deps/rocksdb/rocksdb/db/compaction/file_pri.h +3 -1
- package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +19 -19
- package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +2 -1
- package/deps/rocksdb/rocksdb/db/convenience.cc +20 -3
- package/deps/rocksdb/rocksdb/db/convenience_impl.h +15 -0
- package/deps/rocksdb/rocksdb/db/corruption_test.cc +17 -0
- package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +17 -3
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +5 -0
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +15 -15
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +666 -44
- package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +2 -29
- package/deps/rocksdb/rocksdb/db/db_flush_test.cc +274 -1
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +40 -19
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +6 -5
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +250 -116
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +51 -23
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +354 -96
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +6 -3
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +2 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +5 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +50 -21
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +26 -13
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +13 -5
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +61 -21
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +8 -87
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +7 -1
- package/deps/rocksdb/rocksdb/db/db_iter.cc +2 -2
- package/deps/rocksdb/rocksdb/db/db_iter.h +1 -0
- package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +4 -11
- package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/db_options_test.cc +39 -29
- package/deps/rocksdb/rocksdb/db/db_properties_test.cc +26 -36
- package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +106 -0
- package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +12 -3
- package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +279 -166
- package/deps/rocksdb/rocksdb/db/db_test.cc +48 -21
- package/deps/rocksdb/rocksdb/db/db_test2.cc +81 -12
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +14 -6
- package/deps/rocksdb/rocksdb/db/db_test_util.h +40 -0
- package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +13 -1
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +233 -0
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +143 -0
- package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/db_write_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/dbformat.cc +36 -0
- package/deps/rocksdb/rocksdb/db/dbformat.h +169 -20
- package/deps/rocksdb/rocksdb/db/dbformat_test.cc +129 -0
- package/deps/rocksdb/rocksdb/db/error_handler.cc +16 -0
- package/deps/rocksdb/rocksdb/db/error_handler.h +6 -3
- package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/event_helpers.cc +4 -0
- package/deps/rocksdb/rocksdb/db/experimental.cc +2 -1
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +17 -8
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +86 -4
- package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/file_indexer.cc +2 -4
- package/deps/rocksdb/rocksdb/db/flush_job.cc +101 -11
- package/deps/rocksdb/rocksdb/db/flush_job.h +24 -1
- package/deps/rocksdb/rocksdb/db/flush_job_test.cc +88 -11
- package/deps/rocksdb/rocksdb/db/forward_iterator.cc +2 -3
- package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +159 -91
- package/deps/rocksdb/rocksdb/db/import_column_family_job.h +19 -10
- package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +143 -0
- package/deps/rocksdb/rocksdb/db/internal_stats.cc +13 -1
- package/deps/rocksdb/rocksdb/db/internal_stats.h +2 -0
- package/deps/rocksdb/rocksdb/db/listener_test.cc +2 -1
- package/deps/rocksdb/rocksdb/db/log_reader.h +3 -2
- package/deps/rocksdb/rocksdb/db/log_test.cc +17 -21
- package/deps/rocksdb/rocksdb/db/log_writer.cc +1 -1
- package/deps/rocksdb/rocksdb/db/log_writer.h +3 -2
- package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +4 -3
- package/deps/rocksdb/rocksdb/db/memtable.cc +52 -13
- package/deps/rocksdb/rocksdb/db/memtable.h +45 -1
- package/deps/rocksdb/rocksdb/db/memtable_list.cc +44 -10
- package/deps/rocksdb/rocksdb/db/memtable_list.h +32 -1
- package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +90 -4
- package/deps/rocksdb/rocksdb/db/perf_context_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/repair.cc +21 -4
- package/deps/rocksdb/rocksdb/db/repair_test.cc +143 -2
- package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +5 -4
- package/deps/rocksdb/rocksdb/db/table_cache.cc +44 -35
- package/deps/rocksdb/rocksdb/db/table_cache.h +6 -6
- package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +2 -2
- package/deps/rocksdb/rocksdb/db/version_builder.cc +0 -1
- package/deps/rocksdb/rocksdb/db/version_builder_test.cc +236 -204
- package/deps/rocksdb/rocksdb/db/version_edit.cc +66 -4
- package/deps/rocksdb/rocksdb/db/version_edit.h +48 -6
- package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +80 -8
- package/deps/rocksdb/rocksdb/db/version_edit_handler.h +12 -0
- package/deps/rocksdb/rocksdb/db/version_edit_test.cc +86 -17
- package/deps/rocksdb/rocksdb/db/version_set.cc +136 -41
- package/deps/rocksdb/rocksdb/db/version_set.h +28 -7
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +25 -15
- package/deps/rocksdb/rocksdb/db/write_batch.cc +11 -0
- package/deps/rocksdb/rocksdb/db/write_batch_internal.h +3 -0
- package/deps/rocksdb/rocksdb/db/write_batch_test.cc +16 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +22 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +2 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +42 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +32 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +7 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +247 -120
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +9 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +13 -6
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_value.h +2 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +15 -27
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +264 -69
- package/deps/rocksdb/rocksdb/env/env.cc +1 -2
- package/deps/rocksdb/rocksdb/env/env_encryption.cc +11 -165
- package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +0 -17
- package/deps/rocksdb/rocksdb/env/env_posix.cc +6 -2
- package/deps/rocksdb/rocksdb/env/env_test.cc +86 -2
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +6 -4
- package/deps/rocksdb/rocksdb/env/unique_id_gen.cc +78 -0
- package/deps/rocksdb/rocksdb/env/unique_id_gen.h +34 -0
- package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +1 -0
- package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +15 -4
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +52 -43
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +34 -18
- package/deps/rocksdb/rocksdb/file/file_util.cc +10 -5
- package/deps/rocksdb/rocksdb/file/file_util.h +13 -1
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +724 -79
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +64 -33
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +3 -16
- package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +23 -12
- package/deps/rocksdb/rocksdb/file/sequence_file_reader.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_cache.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +153 -88
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +70 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +50 -11
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/comparator.h +16 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +55 -8
- package/deps/rocksdb/rocksdb/include/rocksdb/env.h +32 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/env_encryption.h +9 -109
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +90 -13
- package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +85 -17
- package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +13 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_manager.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +5 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +21 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/table.h +7 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +6 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +5 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/optimistic_transaction_db.h +33 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +14 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +33 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +0 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +3 -0
- package/deps/rocksdb/rocksdb/memory/arena_test.cc +18 -11
- package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +2 -1
- package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +69 -34
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +16 -1
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +10 -0
- package/deps/rocksdb/rocksdb/options/cf_options.cc +19 -0
- package/deps/rocksdb/rocksdb/options/cf_options.h +10 -2
- package/deps/rocksdb/rocksdb/options/customizable_test.cc +2 -1
- package/deps/rocksdb/rocksdb/options/db_options.cc +7 -0
- package/deps/rocksdb/rocksdb/options/db_options.h +1 -0
- package/deps/rocksdb/rocksdb/options/options.cc +15 -1
- package/deps/rocksdb/rocksdb/options/options_helper.cc +6 -0
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +11 -3
- package/deps/rocksdb/rocksdb/options/options_test.cc +8 -0
- package/deps/rocksdb/rocksdb/port/mmap.h +20 -0
- package/deps/rocksdb/rocksdb/port/stack_trace.cc +27 -12
- package/deps/rocksdb/rocksdb/port/win/env_win.h +1 -1
- package/deps/rocksdb/rocksdb/src.mk +3 -0
- package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/block.cc +48 -22
- package/deps/rocksdb/rocksdb/table/block_based/block.h +60 -12
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +115 -42
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +6 -5
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +60 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +2 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +62 -44
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +36 -14
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +38 -15
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +219 -51
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +41 -8
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +25 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +50 -21
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +11 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +195 -55
- package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +31 -16
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +97 -58
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +6 -0
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +27 -12
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +3 -1
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +114 -70
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +1 -2
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +9 -6
- package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +15 -3
- package/deps/rocksdb/rocksdb/table/block_based/reader_common.h +6 -3
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +11 -11
- package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +3 -0
- package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.cc +1 -0
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +6 -2
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +1 -2
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.cc +2 -3
- package/deps/rocksdb/rocksdb/table/format.cc +175 -33
- package/deps/rocksdb/rocksdb/table/format.h +63 -10
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +10 -2
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +12 -4
- package/deps/rocksdb/rocksdb/table/meta_blocks.h +1 -0
- package/deps/rocksdb/rocksdb/table/mock_table.cc +8 -3
- package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +10 -5
- package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.h +10 -1
- package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.cc +1 -2
- package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +3 -3
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +12 -3
- package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +26 -1
- package/deps/rocksdb/rocksdb/table/table_builder.h +6 -2
- package/deps/rocksdb/rocksdb/table/table_properties.cc +6 -0
- package/deps/rocksdb/rocksdb/table/table_test.cc +52 -22
- package/deps/rocksdb/rocksdb/test_util/secondary_cache_test_util.h +19 -7
- package/deps/rocksdb/rocksdb/test_util/sync_point.h +3 -1
- package/deps/rocksdb/rocksdb/test_util/testutil.cc +29 -0
- package/deps/rocksdb/rocksdb/test_util/testutil.h +19 -0
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +65 -26
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +8 -5
- package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +1 -0
- package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +1 -0
- package/deps/rocksdb/rocksdb/tools/sst_dump_test.cc +0 -1
- package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +4 -0
- package/deps/rocksdb/rocksdb/unreleased_history/README.txt +73 -0
- package/deps/rocksdb/rocksdb/unreleased_history/add.sh +27 -0
- package/deps/rocksdb/rocksdb/unreleased_history/behavior_changes/.gitkeep +0 -0
- package/deps/rocksdb/rocksdb/unreleased_history/bug_fixes/.gitkeep +0 -0
- package/deps/rocksdb/rocksdb/unreleased_history/new_features/.gitkeep +0 -0
- package/deps/rocksdb/rocksdb/unreleased_history/performance_improvements/.gitkeep +0 -0
- package/deps/rocksdb/rocksdb/unreleased_history/public_api_changes/.gitkeep +0 -0
- package/deps/rocksdb/rocksdb/unreleased_history/release.sh +104 -0
- package/deps/rocksdb/rocksdb/util/async_file_reader.cc +5 -0
- package/deps/rocksdb/rocksdb/util/bloom_impl.h +3 -3
- package/deps/rocksdb/rocksdb/util/cast_util.h +14 -0
- package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +2 -0
- package/deps/rocksdb/rocksdb/util/comparator.cc +29 -7
- package/deps/rocksdb/rocksdb/util/compression.cc +4 -4
- package/deps/rocksdb/rocksdb/util/compression.h +110 -32
- package/deps/rocksdb/rocksdb/util/core_local.h +2 -1
- package/deps/rocksdb/rocksdb/util/dynamic_bloom.h +4 -4
- package/deps/rocksdb/rocksdb/util/filelock_test.cc +3 -0
- package/deps/rocksdb/rocksdb/util/hash.h +7 -3
- package/deps/rocksdb/rocksdb/util/hash_test.cc +44 -0
- package/deps/rocksdb/rocksdb/util/math.h +58 -6
- package/deps/rocksdb/rocksdb/util/math128.h +29 -7
- package/deps/rocksdb/rocksdb/util/mutexlock.h +35 -27
- package/deps/rocksdb/rocksdb/util/single_thread_executor.h +1 -0
- package/deps/rocksdb/rocksdb/util/stop_watch.h +1 -1
- package/deps/rocksdb/rocksdb/util/thread_operation.h +8 -1
- package/deps/rocksdb/rocksdb/util/udt_util.cc +343 -0
- package/deps/rocksdb/rocksdb/util/udt_util.h +173 -1
- package/deps/rocksdb/rocksdb/util/udt_util_test.cc +447 -0
- package/deps/rocksdb/rocksdb/util/write_batch_util.cc +25 -0
- package/deps/rocksdb/rocksdb/util/write_batch_util.h +80 -0
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +4 -4
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +69 -25
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +7 -6
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +2 -3
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +6 -11
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.h +1 -2
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +4 -5
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.h +2 -1
- package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration_test.cc +3 -3
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +1 -2
- package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.cc +2 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.cc +23 -8
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +9 -6
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +37 -12
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +231 -33
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +0 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +76 -20
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +18 -9
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +40 -23
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +13 -12
- package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +7 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +41 -11
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.h +6 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +71 -24
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.h +19 -4
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +60 -107
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +39 -11
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.h +6 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +14 -8
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +10 -5
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +2 -1
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +6 -6
- package/deps/rocksdb/rocksdb.gyp +2 -0
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/prebuilds/linux-x64/node.napi.node +0 -0
|
@@ -56,7 +56,7 @@ StressTest::StressTest()
|
|
|
56
56
|
filter_policy_(CreateFilterPolicy()),
|
|
57
57
|
db_(nullptr),
|
|
58
58
|
txn_db_(nullptr),
|
|
59
|
-
|
|
59
|
+
optimistic_txn_db_(nullptr),
|
|
60
60
|
db_aptr_(nullptr),
|
|
61
61
|
clock_(db_stress_env->GetSystemClock().get()),
|
|
62
62
|
new_column_family_name_(1),
|
|
@@ -129,11 +129,20 @@ std::shared_ptr<Cache> StressTest::NewCache(size_t capacity,
|
|
|
129
129
|
if (FLAGS_cache_type == "clock_cache") {
|
|
130
130
|
fprintf(stderr, "Old clock cache implementation has been removed.\n");
|
|
131
131
|
exit(1);
|
|
132
|
-
} else if (FLAGS_cache_type
|
|
133
|
-
|
|
134
|
-
|
|
132
|
+
} else if (EndsWith(FLAGS_cache_type, "hyper_clock_cache")) {
|
|
133
|
+
size_t estimated_entry_charge;
|
|
134
|
+
if (FLAGS_cache_type == "fixed_hyper_clock_cache" ||
|
|
135
|
+
FLAGS_cache_type == "hyper_clock_cache") {
|
|
136
|
+
estimated_entry_charge = FLAGS_block_size;
|
|
137
|
+
} else if (FLAGS_cache_type == "auto_hyper_clock_cache") {
|
|
138
|
+
estimated_entry_charge = 0;
|
|
139
|
+
} else {
|
|
140
|
+
fprintf(stderr, "Cache type not supported.");
|
|
141
|
+
exit(1);
|
|
142
|
+
}
|
|
143
|
+
HyperClockCacheOptions opts(FLAGS_cache_size, estimated_entry_charge,
|
|
135
144
|
num_shard_bits);
|
|
136
|
-
opts.
|
|
145
|
+
opts.hash_seed = BitwiseAnd(FLAGS_seed, INT32_MAX);
|
|
137
146
|
return opts.MakeSharedCache();
|
|
138
147
|
} else if (FLAGS_cache_type == "lru_cache") {
|
|
139
148
|
LRUCacheOptions opts;
|
|
@@ -301,7 +310,7 @@ void StressTest::FinishInitDb(SharedState* shared) {
|
|
|
301
310
|
exit(1);
|
|
302
311
|
}
|
|
303
312
|
}
|
|
304
|
-
if (FLAGS_use_txn) {
|
|
313
|
+
if (FLAGS_use_txn && !FLAGS_use_optimistic_txn) {
|
|
305
314
|
// It's OK here without sync because unsynced data cannot be lost at this
|
|
306
315
|
// point
|
|
307
316
|
// - even with sync_fault_injection=1 as the
|
|
@@ -490,7 +499,6 @@ void StressTest::PreloadDbAndReopenAsReadOnly(int64_t number_of_keys,
|
|
|
490
499
|
|
|
491
500
|
const Slice v(value, sz);
|
|
492
501
|
|
|
493
|
-
|
|
494
502
|
std::string ts;
|
|
495
503
|
if (FLAGS_user_timestamp_size > 0) {
|
|
496
504
|
ts = GetNowNanos();
|
|
@@ -504,14 +512,9 @@ void StressTest::PreloadDbAndReopenAsReadOnly(int64_t number_of_keys,
|
|
|
504
512
|
s = db_->Merge(write_opts, cfh, key, v);
|
|
505
513
|
}
|
|
506
514
|
} else {
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
s = txn->Merge(cfh, key, v);
|
|
511
|
-
if (s.ok()) {
|
|
512
|
-
s = CommitTxn(txn);
|
|
513
|
-
}
|
|
514
|
-
}
|
|
515
|
+
s = ExecuteTransaction(
|
|
516
|
+
write_opts, /*thread=*/nullptr,
|
|
517
|
+
[&](Transaction& txn) { return txn.Merge(cfh, key, v); });
|
|
515
518
|
}
|
|
516
519
|
} else if (FLAGS_use_put_entity_one_in > 0) {
|
|
517
520
|
s = db_->PutEntity(write_opts, cfh, key,
|
|
@@ -524,14 +527,9 @@ void StressTest::PreloadDbAndReopenAsReadOnly(int64_t number_of_keys,
|
|
|
524
527
|
s = db_->Put(write_opts, cfh, key, v);
|
|
525
528
|
}
|
|
526
529
|
} else {
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
s = txn->Put(cfh, key, v);
|
|
531
|
-
if (s.ok()) {
|
|
532
|
-
s = CommitTxn(txn);
|
|
533
|
-
}
|
|
534
|
-
}
|
|
530
|
+
s = ExecuteTransaction(
|
|
531
|
+
write_opts, /*thread=*/nullptr,
|
|
532
|
+
[&](Transaction& txn) { return txn.Put(cfh, key, v); });
|
|
535
533
|
}
|
|
536
534
|
}
|
|
537
535
|
|
|
@@ -556,6 +554,7 @@ void StressTest::PreloadDbAndReopenAsReadOnly(int64_t number_of_keys,
|
|
|
556
554
|
delete db_;
|
|
557
555
|
db_ = nullptr;
|
|
558
556
|
txn_db_ = nullptr;
|
|
557
|
+
optimistic_txn_db_ = nullptr;
|
|
559
558
|
|
|
560
559
|
db_preload_finished_.store(true);
|
|
561
560
|
auto now = clock_->NowMicros();
|
|
@@ -628,74 +627,116 @@ void StressTest::ProcessRecoveredPreparedTxnsHelper(Transaction* txn,
|
|
|
628
627
|
}
|
|
629
628
|
}
|
|
630
629
|
|
|
631
|
-
Status StressTest::NewTxn(WriteOptions& write_opts,
|
|
630
|
+
Status StressTest::NewTxn(WriteOptions& write_opts,
|
|
631
|
+
std::unique_ptr<Transaction>* out_txn) {
|
|
632
632
|
if (!FLAGS_use_txn) {
|
|
633
633
|
return Status::InvalidArgument("NewTxn when FLAGS_use_txn is not set");
|
|
634
634
|
}
|
|
635
635
|
write_opts.disableWAL = FLAGS_disable_wal;
|
|
636
636
|
static std::atomic<uint64_t> txn_id = {0};
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
637
|
+
if (FLAGS_use_optimistic_txn) {
|
|
638
|
+
out_txn->reset(optimistic_txn_db_->BeginTransaction(write_opts));
|
|
639
|
+
return Status::OK();
|
|
640
|
+
} else {
|
|
641
|
+
TransactionOptions txn_options;
|
|
642
|
+
txn_options.use_only_the_last_commit_time_batch_for_recovery =
|
|
643
|
+
FLAGS_use_only_the_last_commit_time_batch_for_recovery;
|
|
644
|
+
txn_options.lock_timeout = 600000; // 10 min
|
|
645
|
+
txn_options.deadlock_detect = true;
|
|
646
|
+
out_txn->reset(txn_db_->BeginTransaction(write_opts, txn_options));
|
|
647
|
+
auto istr = std::to_string(txn_id.fetch_add(1));
|
|
648
|
+
Status s = (*out_txn)->SetName("xid" + istr);
|
|
649
|
+
return s;
|
|
650
|
+
}
|
|
646
651
|
}
|
|
647
652
|
|
|
648
|
-
Status StressTest::CommitTxn(Transaction
|
|
653
|
+
Status StressTest::CommitTxn(Transaction& txn, ThreadState* thread) {
|
|
649
654
|
if (!FLAGS_use_txn) {
|
|
650
655
|
return Status::InvalidArgument("CommitTxn when FLAGS_use_txn is not set");
|
|
651
656
|
}
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
657
|
+
Status s = Status::OK();
|
|
658
|
+
if (FLAGS_use_optimistic_txn) {
|
|
659
|
+
assert(optimistic_txn_db_);
|
|
660
|
+
s = txn.Commit();
|
|
661
|
+
} else {
|
|
662
|
+
assert(txn_db_);
|
|
663
|
+
s = txn.Prepare();
|
|
664
|
+
std::shared_ptr<const Snapshot> timestamped_snapshot;
|
|
665
|
+
if (s.ok()) {
|
|
666
|
+
if (thread && FLAGS_create_timestamped_snapshot_one_in &&
|
|
667
|
+
thread->rand.OneIn(FLAGS_create_timestamped_snapshot_one_in)) {
|
|
668
|
+
uint64_t ts = db_stress_env->NowNanos();
|
|
669
|
+
s = txn.CommitAndTryCreateSnapshot(/*notifier=*/nullptr, ts,
|
|
670
|
+
×tamped_snapshot);
|
|
671
|
+
|
|
672
|
+
std::pair<Status, std::shared_ptr<const Snapshot>> res;
|
|
673
|
+
if (thread->tid == 0) {
|
|
674
|
+
uint64_t now = db_stress_env->NowNanos();
|
|
675
|
+
res = txn_db_->CreateTimestampedSnapshot(now);
|
|
676
|
+
if (res.first.ok()) {
|
|
677
|
+
assert(res.second);
|
|
678
|
+
assert(res.second->GetTimestamp() == now);
|
|
679
|
+
if (timestamped_snapshot) {
|
|
680
|
+
assert(res.second->GetTimestamp() >
|
|
681
|
+
timestamped_snapshot->GetTimestamp());
|
|
682
|
+
}
|
|
683
|
+
} else {
|
|
684
|
+
assert(!res.second);
|
|
672
685
|
}
|
|
673
|
-
} else {
|
|
674
|
-
assert(!res.second);
|
|
675
686
|
}
|
|
687
|
+
} else {
|
|
688
|
+
s = txn.Commit();
|
|
676
689
|
}
|
|
677
|
-
}
|
|
678
|
-
|
|
690
|
+
}
|
|
691
|
+
if (thread && FLAGS_create_timestamped_snapshot_one_in > 0 &&
|
|
692
|
+
thread->rand.OneInOpt(50000)) {
|
|
693
|
+
uint64_t now = db_stress_env->NowNanos();
|
|
694
|
+
constexpr uint64_t time_diff = static_cast<uint64_t>(1000) * 1000 * 1000;
|
|
695
|
+
txn_db_->ReleaseTimestampedSnapshotsOlderThan(now - time_diff);
|
|
679
696
|
}
|
|
680
697
|
}
|
|
681
|
-
if (thread && FLAGS_create_timestamped_snapshot_one_in > 0 &&
|
|
682
|
-
thread->rand.OneInOpt(50000)) {
|
|
683
|
-
uint64_t now = db_stress_env->NowNanos();
|
|
684
|
-
constexpr uint64_t time_diff = static_cast<uint64_t>(1000) * 1000 * 1000;
|
|
685
|
-
txn_db_->ReleaseTimestampedSnapshotsOlderThan(now - time_diff);
|
|
686
|
-
}
|
|
687
|
-
delete txn;
|
|
688
698
|
return s;
|
|
689
699
|
}
|
|
690
700
|
|
|
691
|
-
Status StressTest::
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
701
|
+
Status StressTest::ExecuteTransaction(
|
|
702
|
+
WriteOptions& write_opts, ThreadState* thread,
|
|
703
|
+
std::function<Status(Transaction&)>&& ops) {
|
|
704
|
+
std::unique_ptr<Transaction> txn;
|
|
705
|
+
Status s = NewTxn(write_opts, &txn);
|
|
706
|
+
std::string try_again_messages;
|
|
707
|
+
if (s.ok()) {
|
|
708
|
+
for (int tries = 1;; ++tries) {
|
|
709
|
+
s = ops(*txn);
|
|
710
|
+
if (s.ok()) {
|
|
711
|
+
s = CommitTxn(*txn, thread);
|
|
712
|
+
if (s.ok()) {
|
|
713
|
+
break;
|
|
714
|
+
}
|
|
715
|
+
}
|
|
716
|
+
// Optimistic txn might return TryAgain, in which case rollback
|
|
717
|
+
// and try again.
|
|
718
|
+
if (!s.IsTryAgain() || !FLAGS_use_optimistic_txn) {
|
|
719
|
+
break;
|
|
720
|
+
}
|
|
721
|
+
// Record and report historical TryAgain messages for debugging
|
|
722
|
+
try_again_messages +=
|
|
723
|
+
std::to_string(SystemClock::Default()->NowMicros() / 1000);
|
|
724
|
+
try_again_messages += "ms ";
|
|
725
|
+
try_again_messages += s.getState();
|
|
726
|
+
try_again_messages += "\n";
|
|
727
|
+
// In theory, each Rollback after TryAgain should have an independent
|
|
728
|
+
// chance of success, so too many retries could indicate something is
|
|
729
|
+
// not working properly.
|
|
730
|
+
if (tries >= 10) {
|
|
731
|
+
s = Status::TryAgain(try_again_messages);
|
|
732
|
+
break;
|
|
733
|
+
}
|
|
734
|
+
s = txn->Rollback();
|
|
735
|
+
if (!s.ok()) {
|
|
736
|
+
break;
|
|
737
|
+
}
|
|
738
|
+
}
|
|
696
739
|
}
|
|
697
|
-
Status s = txn->Rollback();
|
|
698
|
-
delete txn;
|
|
699
740
|
return s;
|
|
700
741
|
}
|
|
701
742
|
|
|
@@ -907,12 +948,28 @@ void StressTest::OperateDb(ThreadState* thread) {
|
|
|
907
948
|
}
|
|
908
949
|
|
|
909
950
|
if (thread->rand.OneInOpt(FLAGS_verify_checksum_one_in)) {
|
|
951
|
+
ThreadStatusUtil::SetEnableTracking(FLAGS_enable_thread_tracking);
|
|
952
|
+
ThreadStatusUtil::SetThreadOperation(
|
|
953
|
+
ThreadStatus::OperationType::OP_VERIFY_DB_CHECKSUM);
|
|
910
954
|
Status status = db_->VerifyChecksum();
|
|
955
|
+
ThreadStatusUtil::ResetThreadStatus();
|
|
911
956
|
if (!status.ok()) {
|
|
912
957
|
VerificationAbort(shared, "VerifyChecksum status not OK", status);
|
|
913
958
|
}
|
|
914
959
|
}
|
|
915
960
|
|
|
961
|
+
if (thread->rand.OneInOpt(FLAGS_verify_file_checksums_one_in)) {
|
|
962
|
+
ThreadStatusUtil::SetEnableTracking(FLAGS_enable_thread_tracking);
|
|
963
|
+
ThreadStatusUtil::SetThreadOperation(
|
|
964
|
+
ThreadStatus::OperationType::OP_VERIFY_FILE_CHECKSUMS);
|
|
965
|
+
Status status = db_->VerifyFileChecksums(read_opts);
|
|
966
|
+
ThreadStatusUtil::ResetThreadStatus();
|
|
967
|
+
if (!status.ok()) {
|
|
968
|
+
VerificationAbort(shared, "VerifyFileChecksums status not OK",
|
|
969
|
+
status);
|
|
970
|
+
}
|
|
971
|
+
}
|
|
972
|
+
|
|
916
973
|
if (thread->rand.OneInOpt(FLAGS_get_property_one_in)) {
|
|
917
974
|
TestGetProperty(thread);
|
|
918
975
|
}
|
|
@@ -1012,10 +1069,18 @@ void StressTest::OperateDb(ThreadState* thread) {
|
|
|
1012
1069
|
// If its the last iteration, ensure that multiget_batch_size is 1
|
|
1013
1070
|
multiget_batch_size = std::max(multiget_batch_size, 1);
|
|
1014
1071
|
rand_keys = GenerateNKeys(thread, multiget_batch_size, i);
|
|
1072
|
+
ThreadStatusUtil::SetEnableTracking(FLAGS_enable_thread_tracking);
|
|
1073
|
+
ThreadStatusUtil::SetThreadOperation(
|
|
1074
|
+
ThreadStatus::OperationType::OP_MULTIGET);
|
|
1015
1075
|
TestMultiGet(thread, read_opts, rand_column_families, rand_keys);
|
|
1076
|
+
ThreadStatusUtil::ResetThreadStatus();
|
|
1016
1077
|
i += multiget_batch_size - 1;
|
|
1017
1078
|
} else {
|
|
1079
|
+
ThreadStatusUtil::SetEnableTracking(FLAGS_enable_thread_tracking);
|
|
1080
|
+
ThreadStatusUtil::SetThreadOperation(
|
|
1081
|
+
ThreadStatus::OperationType::OP_GET);
|
|
1018
1082
|
TestGet(thread, read_opts, rand_column_families, rand_keys);
|
|
1083
|
+
ThreadStatusUtil::ResetThreadStatus();
|
|
1019
1084
|
}
|
|
1020
1085
|
} else if (prob_op < prefix_bound) {
|
|
1021
1086
|
assert(static_cast<int>(FLAGS_readpercent) <= prob_op);
|
|
@@ -1044,8 +1109,12 @@ void StressTest::OperateDb(ThreadState* thread) {
|
|
|
1044
1109
|
if (!FLAGS_skip_verifydb &&
|
|
1045
1110
|
thread->rand.OneInOpt(
|
|
1046
1111
|
FLAGS_verify_iterator_with_expected_state_one_in)) {
|
|
1112
|
+
ThreadStatusUtil::SetEnableTracking(FLAGS_enable_thread_tracking);
|
|
1113
|
+
ThreadStatusUtil::SetThreadOperation(
|
|
1114
|
+
ThreadStatus::OperationType::OP_DBITERATOR);
|
|
1047
1115
|
TestIterateAgainstExpected(thread, read_opts, rand_column_families,
|
|
1048
1116
|
rand_keys);
|
|
1117
|
+
ThreadStatusUtil::ResetThreadStatus();
|
|
1049
1118
|
} else {
|
|
1050
1119
|
int num_seeks = static_cast<int>(std::min(
|
|
1051
1120
|
std::max(static_cast<uint64_t>(thread->rand.Uniform(4)),
|
|
@@ -1054,7 +1123,11 @@ void StressTest::OperateDb(ThreadState* thread) {
|
|
|
1054
1123
|
static_cast<uint64_t>(1))));
|
|
1055
1124
|
rand_keys = GenerateNKeys(thread, num_seeks, i);
|
|
1056
1125
|
i += num_seeks - 1;
|
|
1126
|
+
ThreadStatusUtil::SetEnableTracking(FLAGS_enable_thread_tracking);
|
|
1127
|
+
ThreadStatusUtil::SetThreadOperation(
|
|
1128
|
+
ThreadStatus::OperationType::OP_DBITERATOR);
|
|
1057
1129
|
TestIterate(thread, read_opts, rand_column_families, rand_keys);
|
|
1130
|
+
ThreadStatusUtil::ResetThreadStatus();
|
|
1058
1131
|
}
|
|
1059
1132
|
} else {
|
|
1060
1133
|
assert(iterate_bound <= prob_op);
|
|
@@ -2311,24 +2384,39 @@ void StressTest::PrintEnv() const {
|
|
|
2311
2384
|
fprintf(stdout, "Format version : %d\n", FLAGS_format_version);
|
|
2312
2385
|
fprintf(stdout, "TransactionDB : %s\n",
|
|
2313
2386
|
FLAGS_use_txn ? "true" : "false");
|
|
2314
|
-
|
|
2315
2387
|
if (FLAGS_use_txn) {
|
|
2316
|
-
fprintf(stdout, "
|
|
2317
|
-
|
|
2318
|
-
|
|
2319
|
-
|
|
2320
|
-
|
|
2321
|
-
|
|
2322
|
-
|
|
2323
|
-
|
|
2324
|
-
|
|
2325
|
-
|
|
2326
|
-
|
|
2327
|
-
|
|
2328
|
-
|
|
2329
|
-
|
|
2330
|
-
|
|
2331
|
-
|
|
2388
|
+
fprintf(stdout, "TransactionDB Type : %s\n",
|
|
2389
|
+
FLAGS_use_optimistic_txn ? "Optimistic" : "Pessimistic");
|
|
2390
|
+
if (FLAGS_use_optimistic_txn) {
|
|
2391
|
+
fprintf(stdout, "OCC Validation Type : %d\n",
|
|
2392
|
+
static_cast<int>(FLAGS_occ_validation_policy));
|
|
2393
|
+
if (static_cast<uint64_t>(OccValidationPolicy::kValidateParallel) ==
|
|
2394
|
+
FLAGS_occ_validation_policy) {
|
|
2395
|
+
fprintf(stdout, "Share Lock Buckets : %s\n",
|
|
2396
|
+
FLAGS_share_occ_lock_buckets ? "true" : "false");
|
|
2397
|
+
if (FLAGS_share_occ_lock_buckets) {
|
|
2398
|
+
fprintf(stdout, "Lock Bucket Count : %d\n",
|
|
2399
|
+
static_cast<int>(FLAGS_occ_lock_bucket_count));
|
|
2400
|
+
}
|
|
2401
|
+
}
|
|
2402
|
+
} else {
|
|
2403
|
+
fprintf(stdout, "Two write queues: : %s\n",
|
|
2404
|
+
FLAGS_two_write_queues ? "true" : "false");
|
|
2405
|
+
fprintf(stdout, "Write policy : %d\n",
|
|
2406
|
+
static_cast<int>(FLAGS_txn_write_policy));
|
|
2407
|
+
if (static_cast<uint64_t>(TxnDBWritePolicy::WRITE_PREPARED) ==
|
|
2408
|
+
FLAGS_txn_write_policy ||
|
|
2409
|
+
static_cast<uint64_t>(TxnDBWritePolicy::WRITE_UNPREPARED) ==
|
|
2410
|
+
FLAGS_txn_write_policy) {
|
|
2411
|
+
fprintf(stdout, "Snapshot cache bits : %d\n",
|
|
2412
|
+
static_cast<int>(FLAGS_wp_snapshot_cache_bits));
|
|
2413
|
+
fprintf(stdout, "Commit cache bits : %d\n",
|
|
2414
|
+
static_cast<int>(FLAGS_wp_commit_cache_bits));
|
|
2415
|
+
}
|
|
2416
|
+
fprintf(stdout, "last cwb for recovery : %s\n",
|
|
2417
|
+
FLAGS_use_only_the_last_commit_time_batch_for_recovery ? "true"
|
|
2418
|
+
: "false");
|
|
2419
|
+
}
|
|
2332
2420
|
}
|
|
2333
2421
|
|
|
2334
2422
|
fprintf(stdout, "Stacked BlobDB : %s\n",
|
|
@@ -2477,6 +2565,7 @@ void StressTest::PrintEnv() const {
|
|
|
2477
2565
|
void StressTest::Open(SharedState* shared) {
|
|
2478
2566
|
assert(db_ == nullptr);
|
|
2479
2567
|
assert(txn_db_ == nullptr);
|
|
2568
|
+
assert(optimistic_txn_db_ == nullptr);
|
|
2480
2569
|
if (!InitializeOptionsFromFile(options_)) {
|
|
2481
2570
|
InitializeOptionsFromFlags(cache_, filter_policy_, options_);
|
|
2482
2571
|
}
|
|
@@ -2670,8 +2759,7 @@ void StressTest::Open(SharedState* shared) {
|
|
|
2670
2759
|
// Ingested errors might happen in background compactions. We
|
|
2671
2760
|
// wait for all compactions to finish to make sure DB is in
|
|
2672
2761
|
// clean state before executing queries.
|
|
2673
|
-
s =
|
|
2674
|
-
->WaitForCompact();
|
|
2762
|
+
s = db_->GetRootDB()->WaitForCompact(WaitForCompactOptions());
|
|
2675
2763
|
if (!s.ok()) {
|
|
2676
2764
|
for (auto cf : column_families_) {
|
|
2677
2765
|
delete cf;
|
|
@@ -2705,36 +2793,65 @@ void StressTest::Open(SharedState* shared) {
|
|
|
2705
2793
|
break;
|
|
2706
2794
|
}
|
|
2707
2795
|
} else {
|
|
2708
|
-
|
|
2709
|
-
|
|
2710
|
-
|
|
2711
|
-
|
|
2712
|
-
|
|
2713
|
-
|
|
2714
|
-
|
|
2715
|
-
|
|
2716
|
-
|
|
2796
|
+
if (FLAGS_use_optimistic_txn) {
|
|
2797
|
+
OptimisticTransactionDBOptions optimistic_txn_db_options;
|
|
2798
|
+
optimistic_txn_db_options.validate_policy =
|
|
2799
|
+
static_cast<OccValidationPolicy>(FLAGS_occ_validation_policy);
|
|
2800
|
+
|
|
2801
|
+
if (FLAGS_share_occ_lock_buckets) {
|
|
2802
|
+
optimistic_txn_db_options.shared_lock_buckets =
|
|
2803
|
+
MakeSharedOccLockBuckets(FLAGS_occ_lock_bucket_count);
|
|
2804
|
+
} else {
|
|
2805
|
+
optimistic_txn_db_options.occ_lock_buckets =
|
|
2806
|
+
FLAGS_occ_lock_bucket_count;
|
|
2807
|
+
optimistic_txn_db_options.shared_lock_buckets = nullptr;
|
|
2808
|
+
}
|
|
2809
|
+
s = OptimisticTransactionDB::Open(
|
|
2810
|
+
options_, optimistic_txn_db_options, FLAGS_db, cf_descriptors,
|
|
2811
|
+
&column_families_, &optimistic_txn_db_);
|
|
2812
|
+
if (!s.ok()) {
|
|
2813
|
+
fprintf(stderr, "Error in opening the OptimisticTransactionDB [%s]\n",
|
|
2814
|
+
s.ToString().c_str());
|
|
2815
|
+
fflush(stderr);
|
|
2816
|
+
}
|
|
2817
|
+
assert(s.ok());
|
|
2818
|
+
{
|
|
2819
|
+
db_ = optimistic_txn_db_;
|
|
2820
|
+
db_aptr_.store(optimistic_txn_db_, std::memory_order_release);
|
|
2821
|
+
}
|
|
2717
2822
|
} else {
|
|
2718
|
-
|
|
2719
|
-
|
|
2720
|
-
|
|
2721
|
-
|
|
2722
|
-
|
|
2723
|
-
|
|
2724
|
-
|
|
2725
|
-
|
|
2726
|
-
|
|
2727
|
-
|
|
2728
|
-
|
|
2729
|
-
|
|
2730
|
-
|
|
2731
|
-
|
|
2732
|
-
|
|
2823
|
+
TransactionDBOptions txn_db_options;
|
|
2824
|
+
assert(FLAGS_txn_write_policy <= TxnDBWritePolicy::WRITE_UNPREPARED);
|
|
2825
|
+
txn_db_options.write_policy =
|
|
2826
|
+
static_cast<TxnDBWritePolicy>(FLAGS_txn_write_policy);
|
|
2827
|
+
if (FLAGS_unordered_write) {
|
|
2828
|
+
assert(txn_db_options.write_policy ==
|
|
2829
|
+
TxnDBWritePolicy::WRITE_PREPARED);
|
|
2830
|
+
options_.unordered_write = true;
|
|
2831
|
+
options_.two_write_queues = true;
|
|
2832
|
+
txn_db_options.skip_concurrency_control = true;
|
|
2833
|
+
} else {
|
|
2834
|
+
options_.two_write_queues = FLAGS_two_write_queues;
|
|
2835
|
+
}
|
|
2836
|
+
txn_db_options.wp_snapshot_cache_bits =
|
|
2837
|
+
static_cast<size_t>(FLAGS_wp_snapshot_cache_bits);
|
|
2838
|
+
txn_db_options.wp_commit_cache_bits =
|
|
2839
|
+
static_cast<size_t>(FLAGS_wp_commit_cache_bits);
|
|
2840
|
+
PrepareTxnDbOptions(shared, txn_db_options);
|
|
2841
|
+
s = TransactionDB::Open(options_, txn_db_options, FLAGS_db,
|
|
2842
|
+
cf_descriptors, &column_families_, &txn_db_);
|
|
2843
|
+
if (!s.ok()) {
|
|
2844
|
+
fprintf(stderr, "Error in opening the TransactionDB [%s]\n",
|
|
2845
|
+
s.ToString().c_str());
|
|
2846
|
+
fflush(stderr);
|
|
2847
|
+
}
|
|
2848
|
+
assert(s.ok());
|
|
2733
2849
|
|
|
2734
|
-
|
|
2735
|
-
|
|
2736
|
-
|
|
2737
|
-
|
|
2850
|
+
// Do not swap the order of the following.
|
|
2851
|
+
{
|
|
2852
|
+
db_ = txn_db_;
|
|
2853
|
+
db_aptr_.store(txn_db_, std::memory_order_release);
|
|
2854
|
+
}
|
|
2738
2855
|
}
|
|
2739
2856
|
}
|
|
2740
2857
|
if (!s.ok()) {
|
|
@@ -2812,10 +2929,12 @@ void StressTest::Reopen(ThreadState* thread) {
|
|
|
2812
2929
|
}
|
|
2813
2930
|
assert(s.ok());
|
|
2814
2931
|
}
|
|
2815
|
-
assert(txn_db_ == nullptr
|
|
2932
|
+
assert((txn_db_ == nullptr && optimistic_txn_db_ == nullptr) ||
|
|
2933
|
+
(db_ == txn_db_ || db_ == optimistic_txn_db_));
|
|
2816
2934
|
delete db_;
|
|
2817
2935
|
db_ = nullptr;
|
|
2818
2936
|
txn_db_ = nullptr;
|
|
2937
|
+
optimistic_txn_db_ = nullptr;
|
|
2819
2938
|
|
|
2820
2939
|
num_times_reopened_++;
|
|
2821
2940
|
auto now = clock_->NowMicros();
|
|
@@ -3087,6 +3206,9 @@ void InitializeOptionsFromFlags(
|
|
|
3087
3206
|
"cannot be used because ZSTD 1.4.5+ is not linked with the binary."
|
|
3088
3207
|
" zstd dictionary trainer will be used.\n");
|
|
3089
3208
|
}
|
|
3209
|
+
if (FLAGS_compression_checksum) {
|
|
3210
|
+
options.compression_opts.checksum = true;
|
|
3211
|
+
}
|
|
3090
3212
|
options.max_manifest_file_size = FLAGS_max_manifest_file_size;
|
|
3091
3213
|
options.inplace_update_support = FLAGS_in_place_update;
|
|
3092
3214
|
options.max_subcompactions = static_cast<uint32_t>(FLAGS_subcompactions);
|
|
@@ -3210,6 +3332,11 @@ void InitializeOptionsFromFlags(
|
|
|
3210
3332
|
options.allow_data_in_errors = FLAGS_allow_data_in_errors;
|
|
3211
3333
|
|
|
3212
3334
|
options.enable_thread_tracking = FLAGS_enable_thread_tracking;
|
|
3335
|
+
|
|
3336
|
+
options.memtable_max_range_deletions = FLAGS_memtable_max_range_deletions;
|
|
3337
|
+
|
|
3338
|
+
options.bottommost_file_compaction_delay =
|
|
3339
|
+
FLAGS_bottommost_file_compaction_delay;
|
|
3213
3340
|
}
|
|
3214
3341
|
|
|
3215
3342
|
void InitializeOptionsGeneral(
|
|
@@ -17,6 +17,7 @@ namespace ROCKSDB_NAMESPACE {
|
|
|
17
17
|
class SystemClock;
|
|
18
18
|
class Transaction;
|
|
19
19
|
class TransactionDB;
|
|
20
|
+
class OptimisticTransactionDB;
|
|
20
21
|
struct TransactionDBOptions;
|
|
21
22
|
|
|
22
23
|
class StressTest {
|
|
@@ -63,11 +64,14 @@ class StressTest {
|
|
|
63
64
|
virtual void ProcessRecoveredPreparedTxnsHelper(Transaction* txn,
|
|
64
65
|
SharedState* shared);
|
|
65
66
|
|
|
66
|
-
|
|
67
|
+
// ExecuteTransaction is recommended instead
|
|
68
|
+
Status NewTxn(WriteOptions& write_opts,
|
|
69
|
+
std::unique_ptr<Transaction>* out_txn);
|
|
70
|
+
Status CommitTxn(Transaction& txn, ThreadState* thread = nullptr);
|
|
67
71
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
72
|
+
// Creates a transaction, executes `ops`, and tries to commit
|
|
73
|
+
Status ExecuteTransaction(WriteOptions& write_opts, ThreadState* thread,
|
|
74
|
+
std::function<Status(Transaction&)>&& ops);
|
|
71
75
|
|
|
72
76
|
virtual void MaybeClearOneColumnFamily(ThreadState* /* thread */) {}
|
|
73
77
|
|
|
@@ -261,6 +265,7 @@ class StressTest {
|
|
|
261
265
|
std::shared_ptr<const FilterPolicy> filter_policy_;
|
|
262
266
|
DB* db_;
|
|
263
267
|
TransactionDB* txn_db_;
|
|
268
|
+
OptimisticTransactionDB* optimistic_txn_db_;
|
|
264
269
|
|
|
265
270
|
// Currently only used in MultiOpsTxnsStressTest
|
|
266
271
|
std::atomic<DB*> db_aptr_;
|
|
@@ -274,6 +274,14 @@ int db_stress_tool(int argc, char** argv) {
|
|
|
274
274
|
CheckAndSetOptionsForMultiOpsTxnStressTest();
|
|
275
275
|
}
|
|
276
276
|
|
|
277
|
+
if (!FLAGS_use_txn && FLAGS_use_optimistic_txn) {
|
|
278
|
+
fprintf(
|
|
279
|
+
stderr,
|
|
280
|
+
"You cannot set use_optimistic_txn true while use_txn is false. Please "
|
|
281
|
+
"set use_txn true if you want to use OptimisticTransactionDB\n");
|
|
282
|
+
exit(1);
|
|
283
|
+
}
|
|
284
|
+
|
|
277
285
|
if (FLAGS_create_timestamped_snapshot_one_in > 0) {
|
|
278
286
|
if (!FLAGS_use_txn) {
|
|
279
287
|
fprintf(stderr, "timestamped snapshot supported only in TransactionDB\n");
|
|
@@ -291,8 +299,8 @@ int db_stress_tool(int argc, char** argv) {
|
|
|
291
299
|
exit(1);
|
|
292
300
|
}
|
|
293
301
|
|
|
294
|
-
if (FLAGS_use_txn &&
|
|
295
|
-
FLAGS_txn_write_policy != 0) {
|
|
302
|
+
if (FLAGS_use_txn && !FLAGS_use_optimistic_txn &&
|
|
303
|
+
FLAGS_sync_fault_injection && FLAGS_txn_write_policy != 0) {
|
|
296
304
|
fprintf(stderr,
|
|
297
305
|
"For TransactionDB, correctness testing with unsync data loss is "
|
|
298
306
|
"currently compatible with only write committed policy\n");
|
|
@@ -300,11 +308,10 @@ int db_stress_tool(int argc, char** argv) {
|
|
|
300
308
|
}
|
|
301
309
|
|
|
302
310
|
if (FLAGS_use_put_entity_one_in > 0 &&
|
|
303
|
-
(
|
|
304
|
-
|
|
305
|
-
FLAGS_user_timestamp_size > 0)) {
|
|
311
|
+
(FLAGS_use_merge || FLAGS_use_full_merge_v1 || FLAGS_use_txn ||
|
|
312
|
+
FLAGS_test_multi_ops_txns || FLAGS_user_timestamp_size > 0)) {
|
|
306
313
|
fprintf(stderr,
|
|
307
|
-
"PutEntity is currently incompatible with
|
|
314
|
+
"PutEntity is currently incompatible with Merge,"
|
|
308
315
|
" transactions, and user-defined timestamps\n");
|
|
309
316
|
exit(1);
|
|
310
317
|
}
|