@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
|
@@ -442,7 +442,7 @@ class NonBatchedOpsStressTest : public StressTest {
|
|
|
442
442
|
if (!s.ok()) {
|
|
443
443
|
fprintf(stderr, "dropping column family error: %s\n",
|
|
444
444
|
s.ToString().c_str());
|
|
445
|
-
|
|
445
|
+
thread->shared->SafeTerminate();
|
|
446
446
|
}
|
|
447
447
|
s = db_->CreateColumnFamily(ColumnFamilyOptions(options_), new_name,
|
|
448
448
|
&column_families_[cf]);
|
|
@@ -451,7 +451,7 @@ class NonBatchedOpsStressTest : public StressTest {
|
|
|
451
451
|
if (!s.ok()) {
|
|
452
452
|
fprintf(stderr, "creating column family error: %s\n",
|
|
453
453
|
s.ToString().c_str());
|
|
454
|
-
|
|
454
|
+
thread->shared->SafeTerminate();
|
|
455
455
|
}
|
|
456
456
|
thread->shared->UnlockColumnFamily(cf);
|
|
457
457
|
}
|
|
@@ -571,13 +571,21 @@ class NonBatchedOpsStressTest : public StressTest {
|
|
|
571
571
|
keys.reserve(num_keys);
|
|
572
572
|
std::vector<PinnableSlice> values(num_keys);
|
|
573
573
|
std::vector<Status> statuses(num_keys);
|
|
574
|
-
|
|
574
|
+
// When Flags_use_txn is enabled, we also do a read your write check.
|
|
575
|
+
std::vector<std::optional<ExpectedValue>> ryw_expected_values;
|
|
576
|
+
ryw_expected_values.reserve(num_keys);
|
|
577
|
+
|
|
578
|
+
SharedState* shared = thread->shared;
|
|
579
|
+
|
|
580
|
+
int column_family = rand_column_families[0];
|
|
581
|
+
ColumnFamilyHandle* cfh = column_families_[column_family];
|
|
575
582
|
int error_count = 0;
|
|
576
583
|
// Do a consistency check between Get and MultiGet. Don't do it too
|
|
577
584
|
// often as it will slow db_stress down
|
|
578
585
|
bool do_consistency_check = thread->rand.OneIn(4);
|
|
579
586
|
|
|
580
587
|
ReadOptions readoptionscopy = read_opts;
|
|
588
|
+
|
|
581
589
|
if (do_consistency_check) {
|
|
582
590
|
readoptionscopy.snapshot = db_->GetSnapshot();
|
|
583
591
|
}
|
|
@@ -596,7 +604,7 @@ class NonBatchedOpsStressTest : public StressTest {
|
|
|
596
604
|
// Create a transaction in order to write some data. The purpose is to
|
|
597
605
|
// exercise WriteBatchWithIndex::MultiGetFromBatchAndDB. The transaction
|
|
598
606
|
// will be rolled back once MultiGet returns.
|
|
599
|
-
Transaction
|
|
607
|
+
std::unique_ptr<Transaction> txn;
|
|
600
608
|
if (use_txn) {
|
|
601
609
|
WriteOptions wo;
|
|
602
610
|
if (FLAGS_rate_limit_auto_wal_flush) {
|
|
@@ -605,25 +613,36 @@ class NonBatchedOpsStressTest : public StressTest {
|
|
|
605
613
|
Status s = NewTxn(wo, &txn);
|
|
606
614
|
if (!s.ok()) {
|
|
607
615
|
fprintf(stderr, "NewTxn: %s\n", s.ToString().c_str());
|
|
608
|
-
|
|
616
|
+
thread->shared->SafeTerminate();
|
|
609
617
|
}
|
|
610
618
|
}
|
|
611
619
|
for (size_t i = 0; i < num_keys; ++i) {
|
|
612
|
-
|
|
620
|
+
uint64_t rand_key = rand_keys[i];
|
|
621
|
+
key_str.emplace_back(Key(rand_key));
|
|
613
622
|
keys.emplace_back(key_str.back());
|
|
614
623
|
if (use_txn) {
|
|
624
|
+
if (!shared->AllowsOverwrite(rand_key) &&
|
|
625
|
+
shared->Exists(column_family, rand_key)) {
|
|
626
|
+
// Just do read your write checks for keys that allow overwrites.
|
|
627
|
+
ryw_expected_values.push_back(std::nullopt);
|
|
628
|
+
continue;
|
|
629
|
+
}
|
|
615
630
|
// With a 1 in 10 probability, insert the just added key in the batch
|
|
616
631
|
// into the transaction. This will create an overlap with the MultiGet
|
|
617
632
|
// keys and exercise some corner cases in the code
|
|
618
633
|
if (thread->rand.OneIn(10)) {
|
|
619
634
|
int op = thread->rand.Uniform(2);
|
|
620
635
|
Status s;
|
|
636
|
+
assert(txn);
|
|
621
637
|
switch (op) {
|
|
622
638
|
case 0:
|
|
623
639
|
case 1: {
|
|
624
|
-
|
|
640
|
+
ExpectedValue put_value;
|
|
641
|
+
put_value.Put(false /* pending */);
|
|
642
|
+
ryw_expected_values.emplace_back(put_value);
|
|
625
643
|
char value[100];
|
|
626
|
-
size_t sz =
|
|
644
|
+
size_t sz =
|
|
645
|
+
GenerateValue(put_value.GetValueBase(), value, sizeof(value));
|
|
627
646
|
Slice v(value, sz);
|
|
628
647
|
if (op == 0) {
|
|
629
648
|
s = txn->Put(cfh, keys.back(), v);
|
|
@@ -632,16 +651,22 @@ class NonBatchedOpsStressTest : public StressTest {
|
|
|
632
651
|
}
|
|
633
652
|
break;
|
|
634
653
|
}
|
|
635
|
-
case 2:
|
|
654
|
+
case 2: {
|
|
655
|
+
ExpectedValue delete_value;
|
|
656
|
+
delete_value.Delete(false /* pending */);
|
|
657
|
+
ryw_expected_values.emplace_back(delete_value);
|
|
636
658
|
s = txn->Delete(cfh, keys.back());
|
|
637
659
|
break;
|
|
660
|
+
}
|
|
638
661
|
default:
|
|
639
662
|
assert(false);
|
|
640
663
|
}
|
|
641
664
|
if (!s.ok()) {
|
|
642
665
|
fprintf(stderr, "Transaction put: %s\n", s.ToString().c_str());
|
|
643
|
-
|
|
666
|
+
thread->shared->SafeTerminate();
|
|
644
667
|
}
|
|
668
|
+
} else {
|
|
669
|
+
ryw_expected_values.push_back(std::nullopt);
|
|
645
670
|
}
|
|
646
671
|
}
|
|
647
672
|
}
|
|
@@ -657,6 +682,7 @@ class NonBatchedOpsStressTest : public StressTest {
|
|
|
657
682
|
error_count = fault_fs_guard->GetAndResetErrorCount();
|
|
658
683
|
}
|
|
659
684
|
} else {
|
|
685
|
+
assert(txn);
|
|
660
686
|
txn->MultiGet(readoptionscopy, cfh, num_keys, keys.data(), values.data(),
|
|
661
687
|
statuses.data());
|
|
662
688
|
}
|
|
@@ -685,50 +711,127 @@ class NonBatchedOpsStressTest : public StressTest {
|
|
|
685
711
|
fault_fs_guard->DisableErrorInjection();
|
|
686
712
|
}
|
|
687
713
|
|
|
688
|
-
|
|
689
|
-
|
|
714
|
+
auto ryw_check =
|
|
715
|
+
[](const Slice& key, const PinnableSlice& value, const Status& s,
|
|
716
|
+
const std::optional<ExpectedValue>& ryw_expected_value) -> bool {
|
|
717
|
+
if (!ryw_expected_value.has_value()) {
|
|
718
|
+
return true;
|
|
719
|
+
}
|
|
720
|
+
const ExpectedValue& expected = ryw_expected_value.value();
|
|
721
|
+
char expected_value[100];
|
|
722
|
+
if (s.ok() &&
|
|
723
|
+
ExpectedValueHelper::MustHaveNotExisted(expected, expected)) {
|
|
724
|
+
fprintf(stderr,
|
|
725
|
+
"MultiGet returned value different from what was "
|
|
726
|
+
"written for key %s\n",
|
|
727
|
+
key.ToString(true).c_str());
|
|
728
|
+
fprintf(stderr,
|
|
729
|
+
"MultiGet returned ok, transaction has non-committed "
|
|
730
|
+
"delete.\n");
|
|
731
|
+
return false;
|
|
732
|
+
} else if (s.IsNotFound() &&
|
|
733
|
+
ExpectedValueHelper::MustHaveExisted(expected, expected)) {
|
|
734
|
+
fprintf(stderr,
|
|
735
|
+
"MultiGet returned value different from what was "
|
|
736
|
+
"written for key %s\n",
|
|
737
|
+
key.ToString(true).c_str());
|
|
738
|
+
fprintf(stderr,
|
|
739
|
+
"MultiGet returned not found, transaction has "
|
|
740
|
+
"non-committed value.\n");
|
|
741
|
+
return false;
|
|
742
|
+
} else if (s.ok() &&
|
|
743
|
+
ExpectedValueHelper::MustHaveExisted(expected, expected)) {
|
|
744
|
+
Slice from_txn_slice(value);
|
|
745
|
+
size_t sz = GenerateValue(expected.GetValueBase(), expected_value,
|
|
746
|
+
sizeof(expected_value));
|
|
747
|
+
Slice expected_value_slice(expected_value, sz);
|
|
748
|
+
if (expected_value_slice.compare(from_txn_slice) == 0) {
|
|
749
|
+
return true;
|
|
750
|
+
}
|
|
751
|
+
fprintf(stderr,
|
|
752
|
+
"MultiGet returned value different from what was "
|
|
753
|
+
"written for key %s\n",
|
|
754
|
+
key.ToString(true /* hex */).c_str());
|
|
755
|
+
fprintf(stderr, "MultiGet returned value %s\n",
|
|
756
|
+
from_txn_slice.ToString(true /* hex */).c_str());
|
|
757
|
+
fprintf(stderr, "Transaction has non-committed value %s\n",
|
|
758
|
+
expected_value_slice.ToString(true /* hex */).c_str());
|
|
759
|
+
return false;
|
|
760
|
+
}
|
|
761
|
+
return true;
|
|
762
|
+
};
|
|
763
|
+
|
|
764
|
+
auto check_multiget =
|
|
765
|
+
[&](const Slice& key, const PinnableSlice& expected_value,
|
|
766
|
+
const Status& s,
|
|
767
|
+
const std::optional<ExpectedValue>& ryw_expected_value) -> bool {
|
|
690
768
|
bool is_consistent = true;
|
|
691
|
-
|
|
692
|
-
//
|
|
769
|
+
bool is_ryw_correct = true;
|
|
770
|
+
// Only do the consistency check if no error was injected and
|
|
771
|
+
// MultiGet didn't return an unexpected error. If test does not use
|
|
772
|
+
// transaction, the consistency check for each key included check results
|
|
773
|
+
// from db `Get` and db `MultiGet` are consistent.
|
|
774
|
+
// If test use transaction, after consistency check, also do a read your
|
|
775
|
+
// own write check.
|
|
693
776
|
if (do_consistency_check && !error_count && (s.ok() || s.IsNotFound())) {
|
|
694
777
|
Status tmp_s;
|
|
695
778
|
std::string value;
|
|
696
779
|
|
|
697
780
|
if (use_txn) {
|
|
698
|
-
|
|
781
|
+
assert(txn);
|
|
782
|
+
ThreadStatusUtil::SetThreadOperation(
|
|
783
|
+
ThreadStatus::OperationType::OP_GET);
|
|
784
|
+
tmp_s = txn->Get(readoptionscopy, cfh, key, &value);
|
|
785
|
+
ThreadStatusUtil::SetThreadOperation(
|
|
786
|
+
ThreadStatus::OperationType::OP_MULTIGET);
|
|
699
787
|
} else {
|
|
700
|
-
|
|
788
|
+
ThreadStatusUtil::SetThreadOperation(
|
|
789
|
+
ThreadStatus::OperationType::OP_GET);
|
|
790
|
+
tmp_s = db_->Get(readoptionscopy, cfh, key, &value);
|
|
791
|
+
ThreadStatusUtil::SetThreadOperation(
|
|
792
|
+
ThreadStatus::OperationType::OP_MULTIGET);
|
|
701
793
|
}
|
|
702
794
|
if (!tmp_s.ok() && !tmp_s.IsNotFound()) {
|
|
703
795
|
fprintf(stderr, "Get error: %s\n", s.ToString().c_str());
|
|
704
796
|
is_consistent = false;
|
|
705
797
|
} else if (!s.ok() && tmp_s.ok()) {
|
|
706
798
|
fprintf(stderr, "MultiGet returned different results with key %s\n",
|
|
707
|
-
|
|
799
|
+
key.ToString(true).c_str());
|
|
708
800
|
fprintf(stderr, "Get returned ok, MultiGet returned not found\n");
|
|
709
801
|
is_consistent = false;
|
|
710
802
|
} else if (s.ok() && tmp_s.IsNotFound()) {
|
|
711
803
|
fprintf(stderr, "MultiGet returned different results with key %s\n",
|
|
712
|
-
|
|
804
|
+
key.ToString(true).c_str());
|
|
713
805
|
fprintf(stderr, "MultiGet returned ok, Get returned not found\n");
|
|
714
806
|
is_consistent = false;
|
|
715
|
-
} else if (s.ok() && value !=
|
|
807
|
+
} else if (s.ok() && value != expected_value.ToString()) {
|
|
716
808
|
fprintf(stderr, "MultiGet returned different results with key %s\n",
|
|
717
|
-
|
|
809
|
+
key.ToString(true).c_str());
|
|
718
810
|
fprintf(stderr, "MultiGet returned value %s\n",
|
|
719
|
-
|
|
811
|
+
expected_value.ToString(true).c_str());
|
|
720
812
|
fprintf(stderr, "Get returned value %s\n",
|
|
721
813
|
Slice(value).ToString(true /* hex */).c_str());
|
|
722
814
|
is_consistent = false;
|
|
723
815
|
}
|
|
724
816
|
}
|
|
725
817
|
|
|
818
|
+
// If test uses transaction, continue to do a read your own write check.
|
|
819
|
+
if (is_consistent && use_txn) {
|
|
820
|
+
is_ryw_correct = ryw_check(key, expected_value, s, ryw_expected_value);
|
|
821
|
+
}
|
|
822
|
+
|
|
726
823
|
if (!is_consistent) {
|
|
727
824
|
fprintf(stderr, "TestMultiGet error: is_consistent is false\n");
|
|
728
825
|
thread->stats.AddErrors(1);
|
|
729
826
|
// Fail fast to preserve the DB state
|
|
730
827
|
thread->shared->SetVerificationFailure();
|
|
731
|
-
|
|
828
|
+
return false;
|
|
829
|
+
} else if (!is_ryw_correct) {
|
|
830
|
+
fprintf(stderr, "TestMultiGet error: is_ryw_correct is false\n");
|
|
831
|
+
thread->stats.AddErrors(1);
|
|
832
|
+
// Fail fast to preserve the DB state
|
|
833
|
+
thread->shared->SetVerificationFailure();
|
|
834
|
+
return false;
|
|
732
835
|
} else if (s.ok()) {
|
|
733
836
|
// found case
|
|
734
837
|
thread->stats.AddGets(1, 1);
|
|
@@ -747,13 +850,32 @@ class NonBatchedOpsStressTest : public StressTest {
|
|
|
747
850
|
thread->stats.AddVerifiedErrors(1);
|
|
748
851
|
}
|
|
749
852
|
}
|
|
853
|
+
return true;
|
|
854
|
+
};
|
|
855
|
+
|
|
856
|
+
size_t num_of_keys = keys.size();
|
|
857
|
+
assert(values.size() == num_of_keys);
|
|
858
|
+
assert(statuses.size() == num_of_keys);
|
|
859
|
+
for (size_t i = 0; i < num_of_keys; ++i) {
|
|
860
|
+
bool check_result = true;
|
|
861
|
+
if (use_txn) {
|
|
862
|
+
assert(ryw_expected_values.size() == num_of_keys);
|
|
863
|
+
check_result = check_multiget(keys[i], values[i], statuses[i],
|
|
864
|
+
ryw_expected_values[i]);
|
|
865
|
+
} else {
|
|
866
|
+
check_result = check_multiget(keys[i], values[i], statuses[i],
|
|
867
|
+
std::nullopt /* ryw_expected_value */);
|
|
868
|
+
}
|
|
869
|
+
if (!check_result) {
|
|
870
|
+
break;
|
|
871
|
+
}
|
|
750
872
|
}
|
|
751
873
|
|
|
752
874
|
if (readoptionscopy.snapshot) {
|
|
753
875
|
db_->ReleaseSnapshot(readoptionscopy.snapshot);
|
|
754
876
|
}
|
|
755
877
|
if (use_txn) {
|
|
756
|
-
|
|
878
|
+
txn->Rollback().PermitUncheckedError();
|
|
757
879
|
}
|
|
758
880
|
return statuses;
|
|
759
881
|
}
|
|
@@ -1165,14 +1287,9 @@ class NonBatchedOpsStressTest : public StressTest {
|
|
|
1165
1287
|
s = db_->Merge(write_opts, cfh, k, write_ts, v);
|
|
1166
1288
|
}
|
|
1167
1289
|
} else {
|
|
1168
|
-
Transaction
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
s = txn->Merge(cfh, k, v);
|
|
1172
|
-
if (s.ok()) {
|
|
1173
|
-
s = CommitTxn(txn, thread);
|
|
1174
|
-
}
|
|
1175
|
-
}
|
|
1290
|
+
s = ExecuteTransaction(write_opts, thread, [&](Transaction& txn) {
|
|
1291
|
+
return txn.Merge(cfh, k, v);
|
|
1292
|
+
});
|
|
1176
1293
|
}
|
|
1177
1294
|
} else if (FLAGS_use_put_entity_one_in > 0 &&
|
|
1178
1295
|
(value_base % FLAGS_use_put_entity_one_in) == 0) {
|
|
@@ -1186,14 +1303,9 @@ class NonBatchedOpsStressTest : public StressTest {
|
|
|
1186
1303
|
s = db_->Put(write_opts, cfh, k, write_ts, v);
|
|
1187
1304
|
}
|
|
1188
1305
|
} else {
|
|
1189
|
-
Transaction
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
s = txn->Put(cfh, k, v);
|
|
1193
|
-
if (s.ok()) {
|
|
1194
|
-
s = CommitTxn(txn, thread);
|
|
1195
|
-
}
|
|
1196
|
-
}
|
|
1306
|
+
s = ExecuteTransaction(write_opts, thread, [&](Transaction& txn) {
|
|
1307
|
+
return txn.Put(cfh, k, v);
|
|
1308
|
+
});
|
|
1197
1309
|
}
|
|
1198
1310
|
}
|
|
1199
1311
|
|
|
@@ -1206,11 +1318,11 @@ class NonBatchedOpsStressTest : public StressTest {
|
|
|
1206
1318
|
} else if (!is_db_stopped_ ||
|
|
1207
1319
|
s.severity() < Status::Severity::kFatalError) {
|
|
1208
1320
|
fprintf(stderr, "put or merge error: %s\n", s.ToString().c_str());
|
|
1209
|
-
|
|
1321
|
+
thread->shared->SafeTerminate();
|
|
1210
1322
|
}
|
|
1211
1323
|
} else {
|
|
1212
1324
|
fprintf(stderr, "put or merge error: %s\n", s.ToString().c_str());
|
|
1213
|
-
|
|
1325
|
+
thread->shared->SafeTerminate();
|
|
1214
1326
|
}
|
|
1215
1327
|
}
|
|
1216
1328
|
|
|
@@ -1251,14 +1363,9 @@ class NonBatchedOpsStressTest : public StressTest {
|
|
|
1251
1363
|
s = db_->Delete(write_opts, cfh, key, write_ts);
|
|
1252
1364
|
}
|
|
1253
1365
|
} else {
|
|
1254
|
-
Transaction
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
s = txn->Delete(cfh, key);
|
|
1258
|
-
if (s.ok()) {
|
|
1259
|
-
s = CommitTxn(txn, thread);
|
|
1260
|
-
}
|
|
1261
|
-
}
|
|
1366
|
+
s = ExecuteTransaction(write_opts, thread, [&](Transaction& txn) {
|
|
1367
|
+
return txn.Delete(cfh, key);
|
|
1368
|
+
});
|
|
1262
1369
|
}
|
|
1263
1370
|
pending_expected_value.Commit();
|
|
1264
1371
|
|
|
@@ -1271,11 +1378,11 @@ class NonBatchedOpsStressTest : public StressTest {
|
|
|
1271
1378
|
} else if (!is_db_stopped_ ||
|
|
1272
1379
|
s.severity() < Status::Severity::kFatalError) {
|
|
1273
1380
|
fprintf(stderr, "delete error: %s\n", s.ToString().c_str());
|
|
1274
|
-
|
|
1381
|
+
thread->shared->SafeTerminate();
|
|
1275
1382
|
}
|
|
1276
1383
|
} else {
|
|
1277
1384
|
fprintf(stderr, "delete error: %s\n", s.ToString().c_str());
|
|
1278
|
-
|
|
1385
|
+
thread->shared->SafeTerminate();
|
|
1279
1386
|
}
|
|
1280
1387
|
}
|
|
1281
1388
|
} else {
|
|
@@ -1288,14 +1395,9 @@ class NonBatchedOpsStressTest : public StressTest {
|
|
|
1288
1395
|
s = db_->SingleDelete(write_opts, cfh, key, write_ts);
|
|
1289
1396
|
}
|
|
1290
1397
|
} else {
|
|
1291
|
-
Transaction
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
s = txn->SingleDelete(cfh, key);
|
|
1295
|
-
if (s.ok()) {
|
|
1296
|
-
s = CommitTxn(txn, thread);
|
|
1297
|
-
}
|
|
1298
|
-
}
|
|
1398
|
+
s = ExecuteTransaction(write_opts, thread, [&](Transaction& txn) {
|
|
1399
|
+
return txn.SingleDelete(cfh, key);
|
|
1400
|
+
});
|
|
1299
1401
|
}
|
|
1300
1402
|
pending_expected_value.Commit();
|
|
1301
1403
|
thread->stats.AddSingleDeletes(1);
|
|
@@ -1307,11 +1409,11 @@ class NonBatchedOpsStressTest : public StressTest {
|
|
|
1307
1409
|
} else if (!is_db_stopped_ ||
|
|
1308
1410
|
s.severity() < Status::Severity::kFatalError) {
|
|
1309
1411
|
fprintf(stderr, "single delete error: %s\n", s.ToString().c_str());
|
|
1310
|
-
|
|
1412
|
+
thread->shared->SafeTerminate();
|
|
1311
1413
|
}
|
|
1312
1414
|
} else {
|
|
1313
1415
|
fprintf(stderr, "single delete error: %s\n", s.ToString().c_str());
|
|
1314
|
-
|
|
1416
|
+
thread->shared->SafeTerminate();
|
|
1315
1417
|
}
|
|
1316
1418
|
}
|
|
1317
1419
|
}
|
|
@@ -1368,11 +1470,11 @@ class NonBatchedOpsStressTest : public StressTest {
|
|
|
1368
1470
|
} else if (!is_db_stopped_ ||
|
|
1369
1471
|
s.severity() < Status::Severity::kFatalError) {
|
|
1370
1472
|
fprintf(stderr, "delete range error: %s\n", s.ToString().c_str());
|
|
1371
|
-
|
|
1473
|
+
thread->shared->SafeTerminate();
|
|
1372
1474
|
}
|
|
1373
1475
|
} else {
|
|
1374
1476
|
fprintf(stderr, "delete range error: %s\n", s.ToString().c_str());
|
|
1375
|
-
|
|
1477
|
+
thread->shared->SafeTerminate();
|
|
1376
1478
|
}
|
|
1377
1479
|
}
|
|
1378
1480
|
for (PendingExpectedValue& pending_expected_value :
|
|
@@ -1436,9 +1538,21 @@ class NonBatchedOpsStressTest : public StressTest {
|
|
|
1436
1538
|
pending_expected_values.push_back(pending_expected_value);
|
|
1437
1539
|
|
|
1438
1540
|
char value[100];
|
|
1439
|
-
size_t value_len = GenerateValue(value_base, value, sizeof(value));
|
|
1440
1541
|
auto key_str = Key(key);
|
|
1441
|
-
|
|
1542
|
+
const size_t value_len = GenerateValue(value_base, value, sizeof(value));
|
|
1543
|
+
const Slice k(key_str);
|
|
1544
|
+
const Slice v(value, value_len);
|
|
1545
|
+
|
|
1546
|
+
const bool use_put_entity =
|
|
1547
|
+
!FLAGS_use_merge && FLAGS_use_put_entity_one_in > 0 &&
|
|
1548
|
+
(value_base % FLAGS_use_put_entity_one_in) == 0;
|
|
1549
|
+
|
|
1550
|
+
if (use_put_entity) {
|
|
1551
|
+
WideColumns columns = GenerateWideColumns(value_base, v);
|
|
1552
|
+
s = sst_file_writer.PutEntity(k, columns);
|
|
1553
|
+
} else {
|
|
1554
|
+
s = sst_file_writer.Put(k, v);
|
|
1555
|
+
}
|
|
1442
1556
|
}
|
|
1443
1557
|
|
|
1444
1558
|
if (s.ok() && keys.empty()) {
|
|
@@ -1454,7 +1568,7 @@ class NonBatchedOpsStressTest : public StressTest {
|
|
|
1454
1568
|
}
|
|
1455
1569
|
if (!s.ok()) {
|
|
1456
1570
|
fprintf(stderr, "file ingestion error: %s\n", s.ToString().c_str());
|
|
1457
|
-
|
|
1571
|
+
thread->shared->SafeTerminate();
|
|
1458
1572
|
}
|
|
1459
1573
|
|
|
1460
1574
|
for (size_t i = 0; i < pending_expected_values.size(); ++i) {
|
|
@@ -1487,8 +1601,6 @@ class NonBatchedOpsStressTest : public StressTest {
|
|
|
1487
1601
|
|
|
1488
1602
|
const int64_t ub = lb + num_iter;
|
|
1489
1603
|
|
|
1490
|
-
// Lock the whole range over which we might iterate to ensure it doesn't
|
|
1491
|
-
// change under us.
|
|
1492
1604
|
const int rand_column_family = rand_column_families[0];
|
|
1493
1605
|
|
|
1494
1606
|
// Testing parallel read and write to the same key with user timestamp
|
|
@@ -1499,7 +1611,9 @@ class NonBatchedOpsStressTest : public StressTest {
|
|
|
1499
1611
|
}
|
|
1500
1612
|
|
|
1501
1613
|
ReadOptions ro(read_opts);
|
|
1502
|
-
|
|
1614
|
+
if (FLAGS_prefix_size > 0) {
|
|
1615
|
+
ro.total_order_seek = true;
|
|
1616
|
+
}
|
|
1503
1617
|
|
|
1504
1618
|
std::string read_ts_str;
|
|
1505
1619
|
Slice read_ts;
|
|
@@ -1567,6 +1681,7 @@ class NonBatchedOpsStressTest : public StressTest {
|
|
|
1567
1681
|
};
|
|
1568
1682
|
|
|
1569
1683
|
auto check_no_key_in_range = [&](int64_t start, int64_t end) {
|
|
1684
|
+
assert(start <= end);
|
|
1570
1685
|
for (auto j = std::max(start, lb); j < std::min(end, ub); ++j) {
|
|
1571
1686
|
std::size_t index = static_cast<std::size_t>(j - lb);
|
|
1572
1687
|
assert(index < pre_read_expected_values.size() &&
|
|
@@ -1609,6 +1724,7 @@ class NonBatchedOpsStressTest : public StressTest {
|
|
|
1609
1724
|
|
|
1610
1725
|
uint64_t curr = 0;
|
|
1611
1726
|
while (true) {
|
|
1727
|
+
assert(last_key < ub);
|
|
1612
1728
|
if (!iter->Valid()) {
|
|
1613
1729
|
if (!iter->status().ok()) {
|
|
1614
1730
|
thread->shared->SetVerificationFailure();
|
|
@@ -1631,6 +1747,18 @@ class NonBatchedOpsStressTest : public StressTest {
|
|
|
1631
1747
|
|
|
1632
1748
|
// iter is valid, the range (last_key, current key) was skipped
|
|
1633
1749
|
GetIntVal(iter->key().ToString(), &curr);
|
|
1750
|
+
if (static_cast<int64_t>(curr) <= last_key) {
|
|
1751
|
+
thread->shared->SetVerificationFailure();
|
|
1752
|
+
fprintf(stderr,
|
|
1753
|
+
"TestIterateAgainstExpected found unexpectedly small key\n");
|
|
1754
|
+
fprintf(stderr, "Column family: %s, op_logs: %s\n",
|
|
1755
|
+
cfh->GetName().c_str(), op_logs.c_str());
|
|
1756
|
+
fprintf(stderr, "Last op found key: %s, expected at least: %s\n",
|
|
1757
|
+
Slice(Key(curr)).ToString(true).c_str(),
|
|
1758
|
+
Slice(Key(last_key + 1)).ToString(true).c_str());
|
|
1759
|
+
thread->stats.AddErrors(1);
|
|
1760
|
+
return Status::OK();
|
|
1761
|
+
}
|
|
1634
1762
|
if (!check_no_key_in_range(last_key + 1, static_cast<int64_t>(curr))) {
|
|
1635
1763
|
return Status::OK();
|
|
1636
1764
|
}
|
|
@@ -1653,6 +1781,7 @@ class NonBatchedOpsStressTest : public StressTest {
|
|
|
1653
1781
|
|
|
1654
1782
|
last_key = ub;
|
|
1655
1783
|
while (true) {
|
|
1784
|
+
assert(lb < last_key);
|
|
1656
1785
|
if (!iter->Valid()) {
|
|
1657
1786
|
if (!iter->status().ok()) {
|
|
1658
1787
|
thread->shared->SetVerificationFailure();
|
|
@@ -1675,6 +1804,18 @@ class NonBatchedOpsStressTest : public StressTest {
|
|
|
1675
1804
|
|
|
1676
1805
|
// the range (current key, last key) was skipped
|
|
1677
1806
|
GetIntVal(iter->key().ToString(), &curr);
|
|
1807
|
+
if (last_key <= static_cast<int64_t>(curr)) {
|
|
1808
|
+
thread->shared->SetVerificationFailure();
|
|
1809
|
+
fprintf(stderr,
|
|
1810
|
+
"TestIterateAgainstExpected found unexpectedly large key\n");
|
|
1811
|
+
fprintf(stderr, "Column family: %s, op_logs: %s\n",
|
|
1812
|
+
cfh->GetName().c_str(), op_logs.c_str());
|
|
1813
|
+
fprintf(stderr, "Last op found key: %s, expected at most: %s\n",
|
|
1814
|
+
Slice(Key(curr)).ToString(true).c_str(),
|
|
1815
|
+
Slice(Key(last_key - 1)).ToString(true).c_str());
|
|
1816
|
+
thread->stats.AddErrors(1);
|
|
1817
|
+
return Status::OK();
|
|
1818
|
+
}
|
|
1678
1819
|
if (!check_no_key_in_range(static_cast<int64_t>(curr + 1), last_key)) {
|
|
1679
1820
|
return Status::OK();
|
|
1680
1821
|
}
|
|
@@ -1723,6 +1864,20 @@ class NonBatchedOpsStressTest : public StressTest {
|
|
|
1723
1864
|
if (!check_no_key_in_range(mid, ub)) {
|
|
1724
1865
|
return Status::OK();
|
|
1725
1866
|
}
|
|
1867
|
+
} else if (iter->Valid()) {
|
|
1868
|
+
GetIntVal(iter->key().ToString(), &curr);
|
|
1869
|
+
if (static_cast<int64_t>(curr) < mid) {
|
|
1870
|
+
thread->shared->SetVerificationFailure();
|
|
1871
|
+
fprintf(stderr,
|
|
1872
|
+
"TestIterateAgainstExpected found unexpectedly small key\n");
|
|
1873
|
+
fprintf(stderr, "Column family: %s, op_logs: %s\n",
|
|
1874
|
+
cfh->GetName().c_str(), op_logs.c_str());
|
|
1875
|
+
fprintf(stderr, "Last op found key: %s, expected at least: %s\n",
|
|
1876
|
+
Slice(Key(curr)).ToString(true).c_str(),
|
|
1877
|
+
Slice(Key(mid)).ToString(true).c_str());
|
|
1878
|
+
thread->stats.AddErrors(1);
|
|
1879
|
+
return Status::OK();
|
|
1880
|
+
}
|
|
1726
1881
|
}
|
|
1727
1882
|
} else {
|
|
1728
1883
|
iter->SeekForPrev(key);
|
|
@@ -1732,6 +1887,20 @@ class NonBatchedOpsStressTest : public StressTest {
|
|
|
1732
1887
|
if (!check_no_key_in_range(lb, mid + 1)) {
|
|
1733
1888
|
return Status::OK();
|
|
1734
1889
|
}
|
|
1890
|
+
} else if (iter->Valid()) {
|
|
1891
|
+
GetIntVal(iter->key().ToString(), &curr);
|
|
1892
|
+
if (mid < static_cast<int64_t>(curr)) {
|
|
1893
|
+
thread->shared->SetVerificationFailure();
|
|
1894
|
+
fprintf(stderr,
|
|
1895
|
+
"TestIterateAgainstExpected found unexpectedly large key\n");
|
|
1896
|
+
fprintf(stderr, "Column family: %s, op_logs: %s\n",
|
|
1897
|
+
cfh->GetName().c_str(), op_logs.c_str());
|
|
1898
|
+
fprintf(stderr, "Last op found key: %s, expected at most: %s\n",
|
|
1899
|
+
Slice(Key(curr)).ToString(true).c_str(),
|
|
1900
|
+
Slice(Key(mid)).ToString(true).c_str());
|
|
1901
|
+
thread->stats.AddErrors(1);
|
|
1902
|
+
return Status::OK();
|
|
1903
|
+
}
|
|
1735
1904
|
}
|
|
1736
1905
|
}
|
|
1737
1906
|
|
|
@@ -1779,6 +1948,19 @@ class NonBatchedOpsStressTest : public StressTest {
|
|
|
1779
1948
|
}
|
|
1780
1949
|
uint64_t next = 0;
|
|
1781
1950
|
GetIntVal(iter->key().ToString(), &next);
|
|
1951
|
+
if (next <= curr) {
|
|
1952
|
+
thread->shared->SetVerificationFailure();
|
|
1953
|
+
fprintf(
|
|
1954
|
+
stderr,
|
|
1955
|
+
"TestIterateAgainstExpected found unexpectedly small key\n");
|
|
1956
|
+
fprintf(stderr, "Column family: %s, op_logs: %s\n",
|
|
1957
|
+
cfh->GetName().c_str(), op_logs.c_str());
|
|
1958
|
+
fprintf(stderr, "Last op found key: %s, expected at least: %s\n",
|
|
1959
|
+
Slice(Key(next)).ToString(true).c_str(),
|
|
1960
|
+
Slice(Key(curr + 1)).ToString(true).c_str());
|
|
1961
|
+
thread->stats.AddErrors(1);
|
|
1962
|
+
return Status::OK();
|
|
1963
|
+
}
|
|
1782
1964
|
if (!check_no_key_in_range(static_cast<int64_t>(curr + 1),
|
|
1783
1965
|
static_cast<int64_t>(next))) {
|
|
1784
1966
|
return Status::OK();
|
|
@@ -1791,6 +1973,19 @@ class NonBatchedOpsStressTest : public StressTest {
|
|
|
1791
1973
|
}
|
|
1792
1974
|
uint64_t prev = 0;
|
|
1793
1975
|
GetIntVal(iter->key().ToString(), &prev);
|
|
1976
|
+
if (curr <= prev) {
|
|
1977
|
+
thread->shared->SetVerificationFailure();
|
|
1978
|
+
fprintf(
|
|
1979
|
+
stderr,
|
|
1980
|
+
"TestIterateAgainstExpected found unexpectedly large key\n");
|
|
1981
|
+
fprintf(stderr, "Column family: %s, op_logs: %s\n",
|
|
1982
|
+
cfh->GetName().c_str(), op_logs.c_str());
|
|
1983
|
+
fprintf(stderr, "Last op found key: %s, expected at most: %s\n",
|
|
1984
|
+
Slice(Key(prev)).ToString(true).c_str(),
|
|
1985
|
+
Slice(Key(curr - 1)).ToString(true).c_str());
|
|
1986
|
+
thread->stats.AddErrors(1);
|
|
1987
|
+
return Status::OK();
|
|
1988
|
+
}
|
|
1794
1989
|
if (!check_no_key_in_range(static_cast<int64_t>(prev + 1),
|
|
1795
1990
|
static_cast<int64_t>(curr))) {
|
|
1796
1991
|
return Status::OK();
|
|
@@ -159,8 +159,7 @@ class LegacyRandomAccessFileWrapper : public FSRandomAccessFile {
|
|
|
159
159
|
req.len = fs_reqs[i].len;
|
|
160
160
|
req.scratch = fs_reqs[i].scratch;
|
|
161
161
|
req.status = Status::OK();
|
|
162
|
-
|
|
163
|
-
reqs.emplace_back(req);
|
|
162
|
+
reqs.emplace_back(std::move(req));
|
|
164
163
|
}
|
|
165
164
|
status = target_->MultiRead(reqs.data(), num_reqs);
|
|
166
165
|
for (size_t i = 0; i < num_reqs; ++i) {
|