@nxtedition/rocksdb 8.2.8 → 9.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/binding.cc +0 -21
- package/deps/rocksdb/rocksdb/CMakeLists.txt +20 -10
- package/deps/rocksdb/rocksdb/Makefile +37 -25
- package/deps/rocksdb/rocksdb/README.md +29 -0
- package/deps/rocksdb/rocksdb/TARGETS +25 -2
- package/deps/rocksdb/rocksdb/cache/cache.cc +35 -0
- package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +229 -74
- package/deps/rocksdb/rocksdb/cache/cache_helpers.cc +2 -1
- package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.h +4 -3
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +58 -95
- package/deps/rocksdb/rocksdb/cache/charged_cache.cc +4 -2
- package/deps/rocksdb/rocksdb/cache/charged_cache.h +5 -3
- package/deps/rocksdb/rocksdb/cache/clock_cache.cc +2683 -496
- package/deps/rocksdb/rocksdb/cache/clock_cache.h +580 -159
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +145 -42
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +20 -1
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +391 -17
- package/deps/rocksdb/rocksdb/cache/lru_cache.cc +7 -5
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +309 -212
- package/deps/rocksdb/rocksdb/cache/secondary_cache.cc +0 -32
- package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +439 -12
- package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.h +44 -2
- package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +11 -1
- package/deps/rocksdb/rocksdb/cache/sharded_cache.h +16 -3
- package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache.cc +119 -0
- package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache.h +155 -0
- package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache_test.cc +711 -0
- package/deps/rocksdb/rocksdb/cache/typed_cache.h +17 -11
- package/deps/rocksdb/rocksdb/crash_test.mk +14 -0
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +28 -12
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +1 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_contents.h +2 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_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 +20 -22
- 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/blob/db_blob_basic_test.cc +8 -0
- package/deps/rocksdb/rocksdb/db/blob/db_blob_index_test.cc +7 -3
- package/deps/rocksdb/rocksdb/db/builder.cc +35 -10
- package/deps/rocksdb/rocksdb/db/c.cc +233 -6
- package/deps/rocksdb/rocksdb/db/c_test.c +140 -6
- package/deps/rocksdb/rocksdb/db/column_family.cc +110 -51
- package/deps/rocksdb/rocksdb/db/column_family.h +34 -2
- package/deps/rocksdb/rocksdb/db/column_family_test.cc +314 -7
- package/deps/rocksdb/rocksdb/db/compact_files_test.cc +4 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +106 -23
- package/deps/rocksdb/rocksdb/db/compaction/compaction.h +47 -9
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +10 -11
- 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 +148 -60
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +22 -7
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +2 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +8 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +33 -23
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +14 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +11 -11
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +3 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +90 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +170 -95
- package/deps/rocksdb/rocksdb/db/compaction/file_pri.h +3 -1
- package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +32 -58
- package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +3 -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 +46 -10
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +13 -3
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +74 -15
- package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +27 -3
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +850 -44
- package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +2 -29
- package/deps/rocksdb/rocksdb/db/db_flush_test.cc +275 -1
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +52 -19
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +6 -5
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +733 -320
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +155 -66
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +516 -155
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +8 -4
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +2 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +17 -4
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +100 -35
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +95 -50
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +13 -9
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +136 -79
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +6 -95
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +31 -22
- package/deps/rocksdb/rocksdb/db/db_info_dumper.cc +6 -0
- package/deps/rocksdb/rocksdb/db/db_iter.cc +85 -57
- package/deps/rocksdb/rocksdb/db/db_iter.h +11 -2
- package/deps/rocksdb/rocksdb/db/db_iter_test.cc +29 -0
- package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +276 -21
- package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +35 -0
- package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +4 -11
- package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +193 -7
- package/deps/rocksdb/rocksdb/db/db_options_test.cc +294 -26
- package/deps/rocksdb/rocksdb/db/db_properties_test.cc +26 -36
- package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +364 -0
- package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +13 -3
- package/deps/rocksdb/rocksdb/db/db_readonly_with_timestamp_test.cc +52 -0
- package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +74 -1
- package/deps/rocksdb/rocksdb/db/db_sst_test.cc +22 -4
- package/deps/rocksdb/rocksdb/db/db_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 +282 -167
- package/deps/rocksdb/rocksdb/db/db_test.cc +180 -49
- package/deps/rocksdb/rocksdb/db/db_test2.cc +84 -12
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +25 -12
- package/deps/rocksdb/rocksdb/db/db_test_util.h +45 -2
- package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +14 -1
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +245 -0
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +480 -1
- 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/deletefile_test.cc +2 -0
- package/deps/rocksdb/rocksdb/db/error_handler.cc +67 -34
- package/deps/rocksdb/rocksdb/db/error_handler.h +13 -9
- 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 +144 -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 +105 -17
- package/deps/rocksdb/rocksdb/db/flush_job.h +27 -4
- package/deps/rocksdb/rocksdb/db/flush_job_test.cc +90 -12
- 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 +6 -3
- package/deps/rocksdb/rocksdb/db/memtable.cc +70 -83
- package/deps/rocksdb/rocksdb/db/memtable.h +45 -1
- package/deps/rocksdb/rocksdb/db/memtable_list.cc +45 -11
- package/deps/rocksdb/rocksdb/db/memtable_list.h +43 -2
- package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +91 -5
- package/deps/rocksdb/rocksdb/db/merge_helper.cc +330 -115
- package/deps/rocksdb/rocksdb/db/merge_helper.h +100 -12
- package/deps/rocksdb/rocksdb/db/merge_operator.cc +82 -0
- package/deps/rocksdb/rocksdb/db/merge_test.cc +267 -0
- package/deps/rocksdb/rocksdb/db/perf_context_test.cc +5 -2
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.h +4 -4
- package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +3 -0
- package/deps/rocksdb/rocksdb/db/prefix_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/range_del_aggregator.h +4 -0
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +4 -0
- package/deps/rocksdb/rocksdb/db/repair.cc +25 -7
- package/deps/rocksdb/rocksdb/db/repair_test.cc +143 -2
- package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +459 -74
- package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.cc +105 -69
- package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.h +83 -46
- package/deps/rocksdb/rocksdb/db/table_cache.cc +76 -54
- package/deps/rocksdb/rocksdb/db/table_cache.h +18 -12
- 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 +58 -10
- 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 +207 -110
- package/deps/rocksdb/rocksdb/db/version_set.h +36 -15
- package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +2 -5
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +47 -26
- package/deps/rocksdb/rocksdb/db/wide/db_wide_basic_test.cc +525 -0
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.cc +6 -22
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.h +0 -20
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization_test.cc +0 -29
- package/deps/rocksdb/rocksdb/db/wide/wide_columns_helper.cc +46 -0
- package/deps/rocksdb/rocksdb/db/wide/wide_columns_helper.h +40 -0
- package/deps/rocksdb/rocksdb/db/wide/wide_columns_helper_test.cc +39 -0
- package/deps/rocksdb/rocksdb/db/write_batch.cc +55 -20
- 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/CMakeLists.txt +1 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +4 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +4 -7
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +88 -10
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +37 -13
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +110 -58
- 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 +68 -17
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +34 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +8 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +429 -237
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +13 -6
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +21 -14
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_wide_merge_operator.cc +51 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_wide_merge_operator.h +27 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +3 -6
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_value.h +2 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +29 -38
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +302 -101
- package/deps/rocksdb/rocksdb/env/env.cc +6 -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 +79 -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 +100 -70
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +64 -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 +1225 -97
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +72 -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 +40 -14
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +163 -91
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +112 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +108 -16
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +11 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/comparator.h +42 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +92 -12
- package/deps/rocksdb/rocksdb/include/rocksdb/env.h +34 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/env_encryption.h +9 -109
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +91 -13
- package/deps/rocksdb/rocksdb/include/rocksdb/filter_policy.h +8 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +10 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +7 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/memory_allocator.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/merge_operator.h +55 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +130 -22
- package/deps/rocksdb/rocksdb/include/rocksdb/port_defs.h +4 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/rate_limiter.h +9 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +92 -9
- 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 +37 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/status.h +35 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/system_clock.h +15 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/table.h +7 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +20 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +7 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/types.h +7 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +6 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/optimistic_transaction_db.h +33 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +14 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +42 -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/wide_columns.h +53 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +3 -2
- package/deps/rocksdb/rocksdb/memory/arena_test.cc +18 -11
- package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +4 -3
- package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.h +1 -1
- package/deps/rocksdb/rocksdb/microbench/README.md +60 -0
- package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +69 -34
- package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.h +1 -1
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +22 -1
- package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +18 -7
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +14 -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 +6 -1
- package/deps/rocksdb/rocksdb/options/db_options.cc +54 -2
- package/deps/rocksdb/rocksdb/options/db_options.h +4 -0
- package/deps/rocksdb/rocksdb/options/options.cc +15 -1
- package/deps/rocksdb/rocksdb/options/options_helper.cc +18 -0
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +14 -4
- package/deps/rocksdb/rocksdb/options/options_test.cc +14 -1
- package/deps/rocksdb/rocksdb/plugin/README.md +43 -0
- package/deps/rocksdb/rocksdb/port/README +10 -0
- package/deps/rocksdb/rocksdb/port/mmap.h +20 -0
- package/deps/rocksdb/rocksdb/port/port_example.h +1 -1
- package/deps/rocksdb/rocksdb/port/port_posix.cc +1 -1
- package/deps/rocksdb/rocksdb/port/port_posix.h +7 -4
- package/deps/rocksdb/rocksdb/port/stack_trace.cc +32 -12
- package/deps/rocksdb/rocksdb/port/win/env_win.h +1 -1
- package/deps/rocksdb/rocksdb/port/win/port_win.h +5 -2
- package/deps/rocksdb/rocksdb/src.mk +10 -1
- 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 +116 -43
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +9 -6
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +321 -49
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +98 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +233 -98
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +58 -23
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +12 -8
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +52 -24
- 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_cache.cc +3 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_cache.h +26 -7
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +50 -18
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +20 -8
- package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +232 -71
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +6 -6
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +44 -26
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy_internal.h +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/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 +2 -2
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +6 -0
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +36 -19
- 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 +4 -3
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +11 -7
- 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_based/uncompression_dict_reader.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +14 -13
- package/deps/rocksdb/rocksdb/table/block_fetcher.h +4 -0
- package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +9 -2
- 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/get_context.cc +52 -89
- package/deps/rocksdb/rocksdb/table/get_context.h +12 -3
- package/deps/rocksdb/rocksdb/table/internal_iterator.h +11 -0
- package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +29 -1
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +22 -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 +45 -9
- package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +1 -0
- package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +24 -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_reader.h +6 -0
- package/deps/rocksdb/rocksdb/table/table_test.cc +52 -22
- package/deps/rocksdb/rocksdb/test_util/mock_time_env.h +31 -0
- package/deps/rocksdb/rocksdb/test_util/secondary_cache_test_util.cc +2 -1
- package/deps/rocksdb/rocksdb/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/block_cache_analyzer/block_cache_pysim.py +3 -3
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +87 -65
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +221 -33
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +36 -0
- package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +1 -1
- package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +1 -0
- package/deps/rocksdb/rocksdb/tools/sst_dump_test.cc +33 -11
- 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/bloom_test.cc +32 -11
- package/deps/rocksdb/rocksdb/util/cast_util.h +24 -0
- package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +2 -0
- package/deps/rocksdb/rocksdb/util/comparator.cc +55 -8
- package/deps/rocksdb/rocksdb/util/compression.cc +4 -4
- package/deps/rocksdb/rocksdb/util/compression.h +119 -35
- package/deps/rocksdb/rocksdb/util/core_local.h +2 -1
- package/deps/rocksdb/rocksdb/util/crc32c.cc +7 -1
- package/deps/rocksdb/rocksdb/util/distributed_mutex.h +1 -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/overload.h +23 -0
- package/deps/rocksdb/rocksdb/util/rate_limiter.cc +53 -18
- package/deps/rocksdb/rocksdb/util/rate_limiter_impl.h +6 -1
- package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +90 -19
- package/deps/rocksdb/rocksdb/util/single_thread_executor.h +1 -0
- package/deps/rocksdb/rocksdb/util/slice_test.cc +30 -0
- package/deps/rocksdb/rocksdb/util/status.cc +1 -0
- package/deps/rocksdb/rocksdb/util/stop_watch.h +1 -1
- package/deps/rocksdb/rocksdb/util/string_util.cc +39 -0
- package/deps/rocksdb/rocksdb/util/string_util.h +10 -0
- package/deps/rocksdb/rocksdb/util/thread_operation.h +10 -1
- package/deps/rocksdb/rocksdb/util/udt_util.cc +385 -0
- package/deps/rocksdb/rocksdb/util/udt_util.h +192 -1
- package/deps/rocksdb/rocksdb/util/udt_util_test.cc +461 -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/util/xxhash.h +0 -3
- package/deps/rocksdb/rocksdb/util/xxph3.h +0 -4
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +4 -4
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +71 -26
- 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_env.h +1 -0
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +20 -16
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +11 -7
- package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.h +7 -1
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend_test.cc +3 -0
- package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration_test.cc +12 -3
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +1 -2
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache.cc +7 -4
- 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/lock/range/range_tree/lib/README +13 -0
- 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 +272 -33
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +15 -9
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +4 -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 +195 -23
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +19 -12
- package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +88 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +43 -17
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.h +6 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +73 -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 +41 -12
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.h +6 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +15 -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 +59 -28
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +127 -120
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +129 -59
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +111 -14
- package/deps/rocksdb/rocksdb.gyp +6 -2
- package/index.js +0 -8
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/prebuilds/linux-x64/node.napi.node +0 -0
- package/deps/rocksdb/rocksdb/cmake/modules/CxxFlags.cmake +0 -7
- package/deps/rocksdb/rocksdb/cmake/modules/FindJeMalloc.cmake +0 -29
- package/deps/rocksdb/rocksdb/cmake/modules/FindNUMA.cmake +0 -29
- package/deps/rocksdb/rocksdb/cmake/modules/FindSnappy.cmake +0 -29
- package/deps/rocksdb/rocksdb/cmake/modules/FindTBB.cmake +0 -33
- package/deps/rocksdb/rocksdb/cmake/modules/Findgflags.cmake +0 -29
- package/deps/rocksdb/rocksdb/cmake/modules/Findlz4.cmake +0 -29
- package/deps/rocksdb/rocksdb/cmake/modules/Finduring.cmake +0 -26
- package/deps/rocksdb/rocksdb/cmake/modules/Findzstd.cmake +0 -29
- package/deps/rocksdb/rocksdb/cmake/modules/ReadVersion.cmake +0 -10
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
|
|
15
15
|
namespace ROCKSDB_NAMESPACE {
|
|
16
16
|
void ThreadBody(void* v) {
|
|
17
|
+
ThreadStatusUtil::RegisterThread(db_stress_env, ThreadStatus::USER);
|
|
17
18
|
ThreadState* thread = reinterpret_cast<ThreadState*>(v);
|
|
18
19
|
SharedState* shared = thread->shared;
|
|
19
20
|
|
|
@@ -26,34 +27,40 @@ void ThreadBody(void* v) {
|
|
|
26
27
|
if (shared->AllInitialized()) {
|
|
27
28
|
shared->GetCondVar()->SignalAll();
|
|
28
29
|
}
|
|
29
|
-
while (!shared->Started()) {
|
|
30
|
-
shared->GetCondVar()->Wait();
|
|
31
|
-
}
|
|
32
30
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
shared->GetCondVar()->SignalAll();
|
|
31
|
+
if (!FLAGS_verification_only) {
|
|
32
|
+
{
|
|
33
|
+
MutexLock l(shared->GetMutex());
|
|
34
|
+
while (!shared->Started()) {
|
|
35
|
+
shared->GetCondVar()->Wait();
|
|
36
|
+
}
|
|
40
37
|
}
|
|
41
|
-
|
|
42
|
-
|
|
38
|
+
thread->shared->GetStressTest()->OperateDb(thread);
|
|
39
|
+
{
|
|
40
|
+
MutexLock l(shared->GetMutex());
|
|
41
|
+
shared->IncOperated();
|
|
42
|
+
if (shared->AllOperated()) {
|
|
43
|
+
shared->GetCondVar()->SignalAll();
|
|
44
|
+
}
|
|
45
|
+
while (!shared->VerifyStarted()) {
|
|
46
|
+
shared->GetCondVar()->Wait();
|
|
47
|
+
}
|
|
43
48
|
}
|
|
44
|
-
}
|
|
45
49
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
50
|
+
if (!FLAGS_skip_verifydb) {
|
|
51
|
+
thread->shared->GetStressTest()->VerifyDb(thread);
|
|
52
|
+
}
|
|
49
53
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
54
|
+
{
|
|
55
|
+
MutexLock l(shared->GetMutex());
|
|
56
|
+
shared->IncDone();
|
|
57
|
+
if (shared->AllDone()) {
|
|
58
|
+
shared->GetCondVar()->SignalAll();
|
|
59
|
+
}
|
|
55
60
|
}
|
|
56
61
|
}
|
|
62
|
+
|
|
63
|
+
ThreadStatusUtil::UnregisterThread();
|
|
57
64
|
}
|
|
58
65
|
bool RunStressTestImpl(SharedState* shared) {
|
|
59
66
|
SystemClock* clock = db_stress_env->GetSystemClock().get();
|
|
@@ -74,12 +81,30 @@ bool RunStressTestImpl(SharedState* shared) {
|
|
|
74
81
|
stress->InitDb(shared);
|
|
75
82
|
stress->FinishInitDb(shared);
|
|
76
83
|
|
|
77
|
-
if (FLAGS_sync_fault_injection) {
|
|
78
|
-
fault_fs_guard->SetFilesystemDirectWritable(false);
|
|
79
|
-
}
|
|
80
84
|
if (FLAGS_write_fault_one_in) {
|
|
85
|
+
if (!FLAGS_sync_fault_injection) {
|
|
86
|
+
// unsynced WAL loss is not supported without sync_fault_injection
|
|
87
|
+
fault_fs_guard->SetDirectWritableTypes({kWalFile});
|
|
88
|
+
}
|
|
89
|
+
IOStatus error_msg;
|
|
90
|
+
if (FLAGS_inject_error_severity <= 1 || FLAGS_inject_error_severity > 2) {
|
|
91
|
+
error_msg = IOStatus::IOError("Retryable injected write error");
|
|
92
|
+
error_msg.SetRetryable(true);
|
|
93
|
+
} else if (FLAGS_inject_error_severity == 2) {
|
|
94
|
+
error_msg = IOStatus::IOError("Fatal injected write error");
|
|
95
|
+
error_msg.SetDataLoss(true);
|
|
96
|
+
}
|
|
97
|
+
// TODO: inject write error for other file types including
|
|
98
|
+
// MANIFEST, CURRENT, and WAL files.
|
|
99
|
+
fault_fs_guard->SetRandomWriteError(
|
|
100
|
+
shared->GetSeed(), FLAGS_write_fault_one_in, error_msg,
|
|
101
|
+
/*inject_for_all_file_types=*/false, {FileType::kTableFile});
|
|
102
|
+
fault_fs_guard->SetFilesystemDirectWritable(false);
|
|
81
103
|
fault_fs_guard->EnableWriteErrorInjection();
|
|
82
104
|
}
|
|
105
|
+
if (FLAGS_sync_fault_injection) {
|
|
106
|
+
fault_fs_guard->SetFilesystemDirectWritable(false);
|
|
107
|
+
}
|
|
83
108
|
|
|
84
109
|
uint32_t n = FLAGS_threads;
|
|
85
110
|
uint64_t now = clock->NowMicros();
|
|
@@ -96,6 +121,11 @@ bool RunStressTestImpl(SharedState* shared) {
|
|
|
96
121
|
shared->IncBgThreads();
|
|
97
122
|
}
|
|
98
123
|
|
|
124
|
+
if (FLAGS_compressed_secondary_cache_size > 0 ||
|
|
125
|
+
FLAGS_compressed_secondary_cache_ratio > 0.0) {
|
|
126
|
+
shared->IncBgThreads();
|
|
127
|
+
}
|
|
128
|
+
|
|
99
129
|
std::vector<ThreadState*> threads(n);
|
|
100
130
|
for (uint32_t i = 0; i < n; i++) {
|
|
101
131
|
threads[i] = new ThreadState(i, shared);
|
|
@@ -113,6 +143,13 @@ bool RunStressTestImpl(SharedState* shared) {
|
|
|
113
143
|
&continuous_verification_thread);
|
|
114
144
|
}
|
|
115
145
|
|
|
146
|
+
ThreadState compressed_cache_set_capacity_thread(0, shared);
|
|
147
|
+
if (FLAGS_compressed_secondary_cache_size > 0 ||
|
|
148
|
+
FLAGS_compressed_secondary_cache_ratio > 0.0) {
|
|
149
|
+
db_stress_env->StartThread(CompressedCacheSetCapacityThread,
|
|
150
|
+
&compressed_cache_set_capacity_thread);
|
|
151
|
+
}
|
|
152
|
+
|
|
116
153
|
// Each thread goes through the following states:
|
|
117
154
|
// initializing -> wait for others to init -> read/populate/depopulate
|
|
118
155
|
// wait for others to operate -> verify -> done
|
|
@@ -139,45 +176,55 @@ bool RunStressTestImpl(SharedState* shared) {
|
|
|
139
176
|
}
|
|
140
177
|
}
|
|
141
178
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
179
|
+
if (!FLAGS_verification_only) {
|
|
180
|
+
// This is after the verification step to avoid making all those `Get()`s
|
|
181
|
+
// and `MultiGet()`s contend on the DB-wide trace mutex.
|
|
182
|
+
if (!FLAGS_expected_values_dir.empty()) {
|
|
183
|
+
stress->TrackExpectedState(shared);
|
|
184
|
+
}
|
|
185
|
+
now = clock->NowMicros();
|
|
186
|
+
fprintf(stdout, "%s Starting database operations\n",
|
|
187
|
+
clock->TimeToString(now / 1000000).c_str());
|
|
151
188
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
189
|
+
shared->SetStart();
|
|
190
|
+
shared->GetCondVar()->SignalAll();
|
|
191
|
+
while (!shared->AllOperated()) {
|
|
192
|
+
shared->GetCondVar()->Wait();
|
|
193
|
+
}
|
|
157
194
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
195
|
+
now = clock->NowMicros();
|
|
196
|
+
if (FLAGS_test_batches_snapshots) {
|
|
197
|
+
fprintf(stdout, "%s Limited verification already done during gets\n",
|
|
198
|
+
clock->TimeToString((uint64_t)now / 1000000).c_str());
|
|
199
|
+
} else if (FLAGS_skip_verifydb) {
|
|
200
|
+
fprintf(stdout, "%s Verification skipped\n",
|
|
201
|
+
clock->TimeToString((uint64_t)now / 1000000).c_str());
|
|
202
|
+
} else {
|
|
203
|
+
fprintf(stdout, "%s Starting verification\n",
|
|
204
|
+
clock->TimeToString((uint64_t)now / 1000000).c_str());
|
|
205
|
+
}
|
|
169
206
|
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
207
|
+
shared->SetStartVerify();
|
|
208
|
+
shared->GetCondVar()->SignalAll();
|
|
209
|
+
while (!shared->AllDone()) {
|
|
210
|
+
shared->GetCondVar()->Wait();
|
|
211
|
+
}
|
|
174
212
|
}
|
|
175
213
|
}
|
|
176
214
|
|
|
177
|
-
|
|
178
|
-
|
|
215
|
+
// If we are running verification_only
|
|
216
|
+
// stats will be empty and trying to report them will
|
|
217
|
+
// emit no ops or writes error. To avoid this, merging and reporting stats
|
|
218
|
+
// are not executed when running with verification_only
|
|
219
|
+
// TODO: We need to create verification stats (e.g. how many keys
|
|
220
|
+
// are verified by which method) and report them here instead of operation
|
|
221
|
+
// stats.
|
|
222
|
+
if (!FLAGS_verification_only) {
|
|
223
|
+
for (unsigned int i = 1; i < n; i++) {
|
|
224
|
+
threads[0]->stats.Merge(threads[i]->stats);
|
|
225
|
+
}
|
|
226
|
+
threads[0]->stats.Report("Stress Test");
|
|
179
227
|
}
|
|
180
|
-
threads[0]->stats.Report("Stress Test");
|
|
181
228
|
|
|
182
229
|
for (unsigned int i = 0; i < n; i++) {
|
|
183
230
|
delete threads[i];
|
|
@@ -189,10 +236,15 @@ bool RunStressTestImpl(SharedState* shared) {
|
|
|
189
236
|
fprintf(stdout, "%s Verification successful\n",
|
|
190
237
|
clock->TimeToString(now / 1000000).c_str());
|
|
191
238
|
}
|
|
192
|
-
|
|
239
|
+
|
|
240
|
+
if (!FLAGS_verification_only) {
|
|
241
|
+
stress->PrintStatistics();
|
|
242
|
+
}
|
|
193
243
|
|
|
194
244
|
if (FLAGS_compaction_thread_pool_adjust_interval > 0 ||
|
|
195
|
-
FLAGS_continuous_verification_interval > 0
|
|
245
|
+
FLAGS_continuous_verification_interval > 0 ||
|
|
246
|
+
FLAGS_compressed_secondary_cache_size > 0 ||
|
|
247
|
+
FLAGS_compressed_secondary_cache_ratio > 0.0) {
|
|
196
248
|
MutexLock l(shared->GetMutex());
|
|
197
249
|
shared->SetShouldStopBgThread();
|
|
198
250
|
while (!shared->BgThreadsFinished()) {
|
|
@@ -32,6 +32,48 @@ class DbStressRandomAccessFileWrapper : public FSRandomAccessFileOwnerWrapper {
|
|
|
32
32
|
#endif
|
|
33
33
|
return target()->Read(offset, n, options, result, scratch, dbg);
|
|
34
34
|
}
|
|
35
|
+
|
|
36
|
+
IOStatus MultiRead(FSReadRequest* reqs, size_t num_reqs,
|
|
37
|
+
const IOOptions& options, IODebugContext* dbg) override {
|
|
38
|
+
#ifndef NDEBUG
|
|
39
|
+
const ThreadStatus::OperationType thread_op =
|
|
40
|
+
ThreadStatusUtil::GetThreadOperation();
|
|
41
|
+
Env::IOActivity io_activity =
|
|
42
|
+
ThreadStatusUtil::TEST_GetExpectedIOActivity(thread_op);
|
|
43
|
+
assert(io_activity == Env::IOActivity::kUnknown ||
|
|
44
|
+
io_activity == options.io_activity);
|
|
45
|
+
#endif
|
|
46
|
+
return target()->MultiRead(reqs, num_reqs, options, dbg);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
IOStatus Prefetch(uint64_t offset, size_t n, const IOOptions& options,
|
|
50
|
+
IODebugContext* dbg) override {
|
|
51
|
+
#ifndef NDEBUG
|
|
52
|
+
const ThreadStatus::OperationType thread_op =
|
|
53
|
+
ThreadStatusUtil::GetThreadOperation();
|
|
54
|
+
Env::IOActivity io_activity =
|
|
55
|
+
ThreadStatusUtil::TEST_GetExpectedIOActivity(thread_op);
|
|
56
|
+
assert(io_activity == Env::IOActivity::kUnknown ||
|
|
57
|
+
io_activity == options.io_activity);
|
|
58
|
+
#endif
|
|
59
|
+
return target()->Prefetch(offset, n, options, dbg);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
IOStatus ReadAsync(FSReadRequest& req, const IOOptions& options,
|
|
63
|
+
std::function<void(const FSReadRequest&, void*)> cb,
|
|
64
|
+
void* cb_arg, void** io_handle, IOHandleDeleter* del_fn,
|
|
65
|
+
IODebugContext* dbg) override {
|
|
66
|
+
#ifndef NDEBUG
|
|
67
|
+
const ThreadStatus::OperationType thread_op =
|
|
68
|
+
ThreadStatusUtil::GetThreadOperation();
|
|
69
|
+
Env::IOActivity io_activity =
|
|
70
|
+
ThreadStatusUtil::TEST_GetExpectedIOActivity(thread_op);
|
|
71
|
+
assert(io_activity == Env::IOActivity::kUnknown ||
|
|
72
|
+
io_activity == options.io_activity);
|
|
73
|
+
#endif
|
|
74
|
+
return target()->ReadAsync(req, options, cb, cb_arg, io_handle, del_fn,
|
|
75
|
+
dbg);
|
|
76
|
+
}
|
|
35
77
|
};
|
|
36
78
|
|
|
37
79
|
class DbStressFSWrapper : public FileSystemWrapper {
|
|
@@ -136,6 +136,9 @@ DEFINE_uint64(db_write_buffer_size,
|
|
|
136
136
|
ROCKSDB_NAMESPACE::Options().db_write_buffer_size,
|
|
137
137
|
"Number of bytes to buffer in all memtables before compacting");
|
|
138
138
|
|
|
139
|
+
DEFINE_bool(use_write_buffer_manager, false,
|
|
140
|
+
"Charge WriteBufferManager memory to the block cache");
|
|
141
|
+
|
|
139
142
|
DEFINE_int32(
|
|
140
143
|
write_buffer_size,
|
|
141
144
|
static_cast<int32_t>(ROCKSDB_NAMESPACE::Options().write_buffer_size),
|
|
@@ -198,15 +201,23 @@ DEFINE_int32(open_files, ROCKSDB_NAMESPACE::Options().max_open_files,
|
|
|
198
201
|
"Maximum number of files to keep open at the same time "
|
|
199
202
|
"(use default if == 0)");
|
|
200
203
|
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
+
DEFINE_uint64(compressed_secondary_cache_size, 0,
|
|
205
|
+
"Number of bytes to use as a cache of compressed data."
|
|
206
|
+
" 0 means use default settings.");
|
|
204
207
|
|
|
205
|
-
DEFINE_int32(
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
208
|
+
DEFINE_int32(compressed_secondary_cache_numshardbits, -1,
|
|
209
|
+
"Number of shards for the compressed secondary cache is 2 ** "
|
|
210
|
+
"compressed_secondary_cache_numshardbits. "
|
|
211
|
+
"Negative value means default settings. This is applied only "
|
|
212
|
+
"if compressed_secondary_cache_size is greater than 0.");
|
|
213
|
+
|
|
214
|
+
DEFINE_double(compressed_secondary_cache_ratio, 0.0,
|
|
215
|
+
"Fraction of block cache memory budget to use for compressed "
|
|
216
|
+
"secondary cache");
|
|
217
|
+
|
|
218
|
+
DEFINE_int32(secondary_cache_update_interval, 30 * 1000 * 1000,
|
|
219
|
+
"Interval between modification of secondary cache parameters, in "
|
|
220
|
+
"microseconds");
|
|
210
221
|
|
|
211
222
|
DEFINE_int32(compaction_style, ROCKSDB_NAMESPACE::Options().compaction_style,
|
|
212
223
|
"");
|
|
@@ -526,10 +537,11 @@ DEFINE_double(bloom_bits, 10,
|
|
|
526
537
|
"Negative means use default settings.");
|
|
527
538
|
|
|
528
539
|
DEFINE_int32(
|
|
529
|
-
|
|
540
|
+
bloom_before_level, 999,
|
|
530
541
|
"Use Bloom filter on levels below specified and Ribbon beginning on level "
|
|
531
|
-
"specified. Flush is considered level -1.
|
|
532
|
-
"-> Ribbon except Bloom for flush.
|
|
542
|
+
"specified. Flush is considered level -1. Setting -1 -> always Ribbon. "
|
|
543
|
+
"0 -> Ribbon except Bloom for flush. INT_MAX (typically 2147483647) -> "
|
|
544
|
+
"always Bloom.");
|
|
533
545
|
|
|
534
546
|
DEFINE_bool(partition_filters, false,
|
|
535
547
|
"use partitioned filters "
|
|
@@ -669,13 +681,24 @@ DEFINE_uint64(sst_file_manager_bytes_per_truncate, 0,
|
|
|
669
681
|
"many bytes. By default whole files will be deleted.");
|
|
670
682
|
|
|
671
683
|
DEFINE_bool(use_txn, false,
|
|
672
|
-
"Use TransactionDB
|
|
673
|
-
"
|
|
684
|
+
"Use TransactionDB or OptimisticTransactionDB. When "
|
|
685
|
+
"use_optimistic_txn == false (by default), "
|
|
686
|
+
"it's (Pessimistic) TransactionDB");
|
|
674
687
|
|
|
675
688
|
DEFINE_uint64(txn_write_policy, 0,
|
|
676
689
|
"The transaction write policy. Default is "
|
|
677
690
|
"TxnDBWritePolicy::WRITE_COMMITTED. Note that this should not be "
|
|
678
|
-
"changed
|
|
691
|
+
"changed across crashes.");
|
|
692
|
+
|
|
693
|
+
DEFINE_bool(use_optimistic_txn, false, "Use OptimisticTransactionDB.");
|
|
694
|
+
DEFINE_uint64(occ_validation_policy, 1,
|
|
695
|
+
"Optimistic Concurrency Control Validation Policy for "
|
|
696
|
+
"OptimisticTransactionDB");
|
|
697
|
+
DEFINE_bool(share_occ_lock_buckets, false,
|
|
698
|
+
"Share a pool of locks across DB instances for buckets");
|
|
699
|
+
DEFINE_uint32(
|
|
700
|
+
occ_lock_bucket_count, 500,
|
|
701
|
+
"Bucket Count for shared Optimistic Concurrency Control (OCC) locks");
|
|
679
702
|
|
|
680
703
|
DEFINE_bool(unordered_write, false,
|
|
681
704
|
"Turn on the unordered_write feature. This options is currently "
|
|
@@ -834,6 +857,9 @@ DEFINE_bool(
|
|
|
834
857
|
"ZSTD 1.4.5+ is required. If ZSTD 1.4.5+ is not linked with the binary, "
|
|
835
858
|
"this flag will have the default value true.");
|
|
836
859
|
|
|
860
|
+
DEFINE_bool(compression_checksum, false,
|
|
861
|
+
"Turn on zstd's checksum feature for detecting corruption.");
|
|
862
|
+
|
|
837
863
|
DEFINE_string(bottommost_compression_type, "disable",
|
|
838
864
|
"Algorithm to use to compress bottommost level of the database. "
|
|
839
865
|
"\"disable\" means disabling the feature");
|
|
@@ -918,6 +944,13 @@ DEFINE_int32(verify_checksum_one_in, 0,
|
|
|
918
944
|
" checksum verification of all the files in the database once for"
|
|
919
945
|
" every N ops on average. 0 indicates that calls to"
|
|
920
946
|
" VerifyChecksum() are disabled.");
|
|
947
|
+
|
|
948
|
+
DEFINE_int32(verify_file_checksums_one_in, 0,
|
|
949
|
+
"If non-zero, then DB::VerifyFileChecksums() will be called to do"
|
|
950
|
+
" checksum verification of all the files in the database once for"
|
|
951
|
+
" every N ops on average. 0 indicates that calls to"
|
|
952
|
+
" VerifyFileChecksums() are disabled.");
|
|
953
|
+
|
|
921
954
|
DEFINE_int32(verify_db_one_in, 0,
|
|
922
955
|
"If non-zero, call VerifyDb() once for every N ops. 0 indicates "
|
|
923
956
|
"that VerifyDb() will not be called in OperateDb(). Note that "
|
|
@@ -985,7 +1018,8 @@ DEFINE_string(file_checksum_impl, "none",
|
|
|
985
1018
|
"\"none\" for null.");
|
|
986
1019
|
|
|
987
1020
|
DEFINE_int32(write_fault_one_in, 0,
|
|
988
|
-
"On non-zero, enables fault injection on write"
|
|
1021
|
+
"On non-zero, enables fault injection on write. Currently only"
|
|
1022
|
+
"injects write error when writing to SST files.");
|
|
989
1023
|
|
|
990
1024
|
DEFINE_uint64(user_timestamp_size, 0,
|
|
991
1025
|
"Number of bytes for a user-defined timestamp. Currently, only "
|
|
@@ -1000,14 +1034,17 @@ DEFINE_string(secondary_cache_uri, "",
|
|
|
1000
1034
|
DEFINE_int32(secondary_cache_fault_one_in, 0,
|
|
1001
1035
|
"On non-zero, enables fault injection in secondary cache inserts"
|
|
1002
1036
|
" and lookups");
|
|
1037
|
+
DEFINE_double(tiered_cache_percent_compressed, 0.0,
|
|
1038
|
+
"Percentage of total block cache budget to allocate to the "
|
|
1039
|
+
"compressed cache");
|
|
1003
1040
|
DEFINE_int32(open_write_fault_one_in, 0,
|
|
1004
1041
|
"On non-zero, enables fault injection on file writes "
|
|
1005
1042
|
"during DB reopen.");
|
|
1006
1043
|
DEFINE_int32(open_read_fault_one_in, 0,
|
|
1007
1044
|
"On non-zero, enables fault injection on file reads "
|
|
1008
1045
|
"during DB reopen.");
|
|
1009
|
-
DEFINE_int32(
|
|
1010
|
-
"The severity of the
|
|
1046
|
+
DEFINE_int32(inject_error_severity, 1,
|
|
1047
|
+
"The severity of the injected IO Error. 1 is soft error (e.g. "
|
|
1011
1048
|
"retryable error), 2 is fatal error, and the default is "
|
|
1012
1049
|
"retryable error.");
|
|
1013
1050
|
DEFINE_int32(prepopulate_block_cache,
|
|
@@ -1089,6 +1126,20 @@ DEFINE_uint64(stats_dump_period_sec,
|
|
|
1089
1126
|
"Gap between printing stats to log in seconds");
|
|
1090
1127
|
|
|
1091
1128
|
DEFINE_bool(use_io_uring, false, "Enable the use of IO uring on Posix");
|
|
1129
|
+
|
|
1130
|
+
DEFINE_bool(verification_only, false,
|
|
1131
|
+
"If true, tests will only execute verification step");
|
|
1092
1132
|
extern "C" bool RocksDbIOUringEnable() { return FLAGS_use_io_uring; }
|
|
1093
1133
|
|
|
1134
|
+
DEFINE_uint32(memtable_max_range_deletions, 0,
|
|
1135
|
+
"If nonzero, RocksDB will try to flush the current memtable"
|
|
1136
|
+
"after the number of range deletions is >= this limit");
|
|
1137
|
+
|
|
1138
|
+
DEFINE_uint32(bottommost_file_compaction_delay, 0,
|
|
1139
|
+
"Delay kBottommostFiles compaction by this amount of seconds."
|
|
1140
|
+
"See more in option comment.");
|
|
1141
|
+
|
|
1142
|
+
DEFINE_bool(auto_readahead_size, false,
|
|
1143
|
+
"Does auto tuning of readahead_size when enabled during scans.");
|
|
1144
|
+
|
|
1094
1145
|
#endif // GFLAGS
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
#include <mutex>
|
|
10
10
|
#include <unordered_set>
|
|
11
11
|
|
|
12
|
+
#include "db_stress_tool/db_stress_shared_state.h"
|
|
12
13
|
#include "file/filename.h"
|
|
13
14
|
#include "file/writable_file_writer.h"
|
|
14
15
|
#include "rocksdb/db.h"
|
|
@@ -19,9 +20,12 @@
|
|
|
19
20
|
#include "rocksdb/unique_id.h"
|
|
20
21
|
#include "util/gflags_compat.h"
|
|
21
22
|
#include "util/random.h"
|
|
23
|
+
#include "utilities/fault_injection_fs.h"
|
|
22
24
|
|
|
23
25
|
DECLARE_int32(compact_files_one_in);
|
|
24
26
|
|
|
27
|
+
extern std::shared_ptr<ROCKSDB_NAMESPACE::FaultInjectionTestFS> fault_fs_guard;
|
|
28
|
+
|
|
25
29
|
namespace ROCKSDB_NAMESPACE {
|
|
26
30
|
|
|
27
31
|
// Verify across process executions that all seen IDs are unique
|
|
@@ -67,11 +71,23 @@ class DbStressListener : public EventListener {
|
|
|
67
71
|
VerifyFilePath(info.file_path);
|
|
68
72
|
// pretending doing some work here
|
|
69
73
|
RandomSleep();
|
|
74
|
+
if (FLAGS_read_fault_one_in) {
|
|
75
|
+
(void)fault_fs_guard->GetAndResetErrorCount();
|
|
76
|
+
fault_fs_guard->DisableErrorInjection();
|
|
77
|
+
}
|
|
70
78
|
}
|
|
71
79
|
|
|
72
80
|
void OnFlushBegin(DB* /*db*/,
|
|
73
81
|
const FlushJobInfo& /*flush_job_info*/) override {
|
|
74
82
|
RandomSleep();
|
|
83
|
+
if (FLAGS_read_fault_one_in) {
|
|
84
|
+
// Hardcoded to inject retryable error as a non-retryable error would put
|
|
85
|
+
// the DB in read-only mode and then it would crash on the next write.
|
|
86
|
+
fault_fs_guard->SetThreadLocalReadErrorContext(
|
|
87
|
+
static_cast<uint32_t>(FLAGS_seed), FLAGS_read_fault_one_in,
|
|
88
|
+
true /* retryable */);
|
|
89
|
+
fault_fs_guard->EnableErrorInjection();
|
|
90
|
+
}
|
|
75
91
|
}
|
|
76
92
|
|
|
77
93
|
void OnTableFileDeleted(const TableFileDeletionInfo& /*info*/) override {
|
|
@@ -95,6 +111,24 @@ class DbStressListener : public EventListener {
|
|
|
95
111
|
RandomSleep();
|
|
96
112
|
}
|
|
97
113
|
|
|
114
|
+
void OnSubcompactionBegin(const SubcompactionJobInfo& /* si */) override {
|
|
115
|
+
if (FLAGS_read_fault_one_in) {
|
|
116
|
+
// Hardcoded to inject retryable error as a non-retryable error would put
|
|
117
|
+
// the DB in read-only mode and then it would crash on the next write.
|
|
118
|
+
fault_fs_guard->SetThreadLocalReadErrorContext(
|
|
119
|
+
static_cast<uint32_t>(FLAGS_seed), FLAGS_read_fault_one_in,
|
|
120
|
+
true /* retryable */);
|
|
121
|
+
fault_fs_guard->EnableErrorInjection();
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
void OnSubcompactionCompleted(const SubcompactionJobInfo& /* si */) override {
|
|
126
|
+
if (FLAGS_read_fault_one_in) {
|
|
127
|
+
(void)fault_fs_guard->GetAndResetErrorCount();
|
|
128
|
+
fault_fs_guard->DisableErrorInjection();
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
98
132
|
void OnTableFileCreationStarted(
|
|
99
133
|
const TableFileCreationBriefInfo& /*info*/) override {
|
|
100
134
|
++num_pending_file_creations_;
|
|
@@ -35,7 +35,7 @@ DECLARE_int32(open_metadata_write_fault_one_in);
|
|
|
35
35
|
DECLARE_int32(open_write_fault_one_in);
|
|
36
36
|
DECLARE_int32(open_read_fault_one_in);
|
|
37
37
|
|
|
38
|
-
DECLARE_int32(
|
|
38
|
+
DECLARE_int32(inject_error_severity);
|
|
39
39
|
|
|
40
40
|
namespace ROCKSDB_NAMESPACE {
|
|
41
41
|
class StressTest;
|
|
@@ -342,6 +342,13 @@ class SharedState {
|
|
|
342
342
|
|
|
343
343
|
uint64_t GetStartTimestamp() const { return start_timestamp_; }
|
|
344
344
|
|
|
345
|
+
void SafeTerminate() {
|
|
346
|
+
// Grab mutex so that we don't call terminate while another thread is
|
|
347
|
+
// attempting to print a stack trace due to the first one
|
|
348
|
+
MutexLock l(&mu_);
|
|
349
|
+
std::terminate();
|
|
350
|
+
}
|
|
351
|
+
|
|
345
352
|
private:
|
|
346
353
|
static void IgnoreReadErrorCallback(void*) { ignore_read_error = true; }
|
|
347
354
|
|