@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
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
//
|
|
3
|
+
// This source code is licensed under both the GPLv2 (found in the
|
|
4
|
+
// COPYING file in the root directory) and Apache 2.0 License
|
|
5
|
+
// (found in the LICENSE.Apache file in the root directory).
|
|
6
|
+
|
|
7
|
+
#include "util/write_batch_util.h"
|
|
8
|
+
|
|
9
|
+
namespace ROCKSDB_NAMESPACE {
|
|
10
|
+
|
|
11
|
+
Status CollectColumnFamilyIdsFromWriteBatch(
|
|
12
|
+
const WriteBatch& batch, std::vector<uint32_t>* column_family_ids) {
|
|
13
|
+
assert(column_family_ids != nullptr);
|
|
14
|
+
column_family_ids->clear();
|
|
15
|
+
ColumnFamilyCollector handler;
|
|
16
|
+
Status s = batch.Iterate(&handler);
|
|
17
|
+
if (s.ok()) {
|
|
18
|
+
for (const auto& cf : handler.column_families()) {
|
|
19
|
+
column_family_ids->push_back(cf);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return s;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
} // namespace ROCKSDB_NAMESPACE
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
//
|
|
3
|
+
// This source code is licensed under both the GPLv2 (found in the
|
|
4
|
+
// COPYING file in the root directory) and Apache 2.0 License
|
|
5
|
+
// (found in the LICENSE.Apache file in the root directory).
|
|
6
|
+
|
|
7
|
+
#pragma once
|
|
8
|
+
#include <unordered_set>
|
|
9
|
+
#include <vector>
|
|
10
|
+
|
|
11
|
+
#include "rocksdb/slice.h"
|
|
12
|
+
#include "rocksdb/status.h"
|
|
13
|
+
#include "rocksdb/write_batch.h"
|
|
14
|
+
|
|
15
|
+
namespace ROCKSDB_NAMESPACE {
|
|
16
|
+
// ColumnFamilyCollector is a write batch handler which does nothing
|
|
17
|
+
// except recording unique column family IDs
|
|
18
|
+
class ColumnFamilyCollector : public WriteBatch::Handler {
|
|
19
|
+
std::unordered_set<uint32_t> column_family_ids_;
|
|
20
|
+
|
|
21
|
+
Status AddColumnFamilyId(uint32_t column_family_id) {
|
|
22
|
+
column_family_ids_.insert(column_family_id);
|
|
23
|
+
return Status::OK();
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
public:
|
|
27
|
+
explicit ColumnFamilyCollector() {}
|
|
28
|
+
|
|
29
|
+
~ColumnFamilyCollector() override {}
|
|
30
|
+
|
|
31
|
+
Status PutCF(uint32_t column_family_id, const Slice&, const Slice&) override {
|
|
32
|
+
return AddColumnFamilyId(column_family_id);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
Status DeleteCF(uint32_t column_family_id, const Slice&) override {
|
|
36
|
+
return AddColumnFamilyId(column_family_id);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
Status SingleDeleteCF(uint32_t column_family_id, const Slice&) override {
|
|
40
|
+
return AddColumnFamilyId(column_family_id);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
Status DeleteRangeCF(uint32_t column_family_id, const Slice&,
|
|
44
|
+
const Slice&) override {
|
|
45
|
+
return AddColumnFamilyId(column_family_id);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
Status MergeCF(uint32_t column_family_id, const Slice&,
|
|
49
|
+
const Slice&) override {
|
|
50
|
+
return AddColumnFamilyId(column_family_id);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
Status PutBlobIndexCF(uint32_t column_family_id, const Slice&,
|
|
54
|
+
const Slice&) override {
|
|
55
|
+
return AddColumnFamilyId(column_family_id);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
Status MarkBeginPrepare(bool) override { return Status::OK(); }
|
|
59
|
+
|
|
60
|
+
Status MarkEndPrepare(const Slice&) override { return Status::OK(); }
|
|
61
|
+
|
|
62
|
+
Status MarkRollback(const Slice&) override { return Status::OK(); }
|
|
63
|
+
|
|
64
|
+
Status MarkCommit(const Slice&) override { return Status::OK(); }
|
|
65
|
+
|
|
66
|
+
Status MarkCommitWithTimestamp(const Slice&, const Slice&) override {
|
|
67
|
+
return Status::OK();
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
Status MarkNoop(bool) override { return Status::OK(); }
|
|
71
|
+
|
|
72
|
+
const std::unordered_set<uint32_t>& column_families() const {
|
|
73
|
+
return column_family_ids_;
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
Status CollectColumnFamilyIdsFromWriteBatch(
|
|
78
|
+
const WriteBatch& batch, std::vector<uint32_t>* column_family_ids);
|
|
79
|
+
|
|
80
|
+
} // namespace ROCKSDB_NAMESPACE
|
|
@@ -386,10 +386,6 @@ typedef struct {
|
|
|
386
386
|
#define XXPH_STATIC_LINKING_ONLY
|
|
387
387
|
#endif
|
|
388
388
|
|
|
389
|
-
/* BEGIN RocksDB customizations */
|
|
390
|
-
#include "port/lang.h" /* for FALLTHROUGH_INTENDED, inserted as appropriate */
|
|
391
|
-
/* END RocksDB customizations */
|
|
392
|
-
|
|
393
389
|
/* *************************************
|
|
394
390
|
* Compiler Specific Options
|
|
395
391
|
***************************************/
|
|
@@ -589,7 +589,7 @@ void AssertExists(DB* db, int from, int to) {
|
|
|
589
589
|
for (int i = from; i < to; ++i) {
|
|
590
590
|
std::string key = "testkey" + std::to_string(i);
|
|
591
591
|
std::string value;
|
|
592
|
-
|
|
592
|
+
ASSERT_OK(db->Get(ReadOptions(), Slice(key), &value));
|
|
593
593
|
ASSERT_EQ(value, "testvalue" + std::to_string(i));
|
|
594
594
|
}
|
|
595
595
|
}
|
|
@@ -4308,13 +4308,13 @@ TEST_F(BackupEngineTest, ExcludeFiles) {
|
|
|
4308
4308
|
for (auto be_pair :
|
|
4309
4309
|
{std::make_pair(backup_engine_.get(), alt_backup_engine),
|
|
4310
4310
|
std::make_pair(alt_backup_engine, backup_engine_.get())}) {
|
|
4311
|
-
DestroyDB(dbname_, options_);
|
|
4311
|
+
ASSERT_OK(DestroyDB(dbname_, options_));
|
|
4312
4312
|
RestoreOptions ro;
|
|
4313
4313
|
// Fails without alternate dir
|
|
4314
4314
|
ASSERT_TRUE(be_pair.first->RestoreDBFromLatestBackup(dbname_, dbname_, ro)
|
|
4315
4315
|
.IsInvalidArgument());
|
|
4316
4316
|
|
|
4317
|
-
DestroyDB(dbname_, options_);
|
|
4317
|
+
ASSERT_OK(DestroyDB(dbname_, options_));
|
|
4318
4318
|
// Works with alternate dir
|
|
4319
4319
|
ro.alternate_dirs.push_front(be_pair.second);
|
|
4320
4320
|
ASSERT_OK(be_pair.first->RestoreDBFromLatestBackup(dbname_, dbname_, ro));
|
|
@@ -4332,7 +4332,7 @@ TEST_F(BackupEngineTest, ExcludeFiles) {
|
|
|
4332
4332
|
for (auto be_pair :
|
|
4333
4333
|
{std::make_pair(backup_engine_.get(), alt_backup_engine),
|
|
4334
4334
|
std::make_pair(alt_backup_engine, backup_engine_.get())}) {
|
|
4335
|
-
DestroyDB(dbname_, options_);
|
|
4335
|
+
ASSERT_OK(DestroyDB(dbname_, options_));
|
|
4336
4336
|
RestoreOptions ro;
|
|
4337
4337
|
ro.alternate_dirs.push_front(be_pair.second);
|
|
4338
4338
|
ASSERT_OK(be_pair.first->RestoreDBFromLatestBackup(dbname_, dbname_, ro));
|
|
@@ -269,7 +269,13 @@ Status BlobDBImpl::Open(std::vector<ColumnFamilyHandle*>* handles) {
|
|
|
269
269
|
// Add trash files in blob dir to file delete scheduler.
|
|
270
270
|
SstFileManagerImpl* sfm = static_cast<SstFileManagerImpl*>(
|
|
271
271
|
db_impl_->immutable_db_options().sst_file_manager.get());
|
|
272
|
-
DeleteScheduler::CleanupDirectory(env_, sfm, blob_dir_);
|
|
272
|
+
s = DeleteScheduler::CleanupDirectory(env_, sfm, blob_dir_);
|
|
273
|
+
if (!s.ok()) {
|
|
274
|
+
ROCKS_LOG_ERROR(db_options_.info_log,
|
|
275
|
+
"Failed to clean up directory %s, status: %s",
|
|
276
|
+
blob_dir_.c_str(), s.ToString().c_str());
|
|
277
|
+
return s;
|
|
278
|
+
}
|
|
273
279
|
|
|
274
280
|
UpdateLiveSSTSize();
|
|
275
281
|
|
|
@@ -1142,7 +1148,7 @@ Slice BlobDBImpl::GetCompressedSlice(const Slice& raw,
|
|
|
1142
1148
|
StopWatch compression_sw(clock_, statistics_, BLOB_DB_COMPRESSION_MICROS);
|
|
1143
1149
|
CompressionType type = bdb_options_.compression;
|
|
1144
1150
|
CompressionOptions opts;
|
|
1145
|
-
CompressionContext context(type);
|
|
1151
|
+
CompressionContext context(type, opts);
|
|
1146
1152
|
CompressionInfo info(opts, context, CompressionDict::GetEmptyDict(), type,
|
|
1147
1153
|
0 /* sample_for_compression */);
|
|
1148
1154
|
CompressBlock(raw, info, &type, kBlockBasedTableVersionFormat, false,
|
|
@@ -1384,28 +1390,46 @@ Status BlobDBImpl::AppendBlob(const std::shared_ptr<BlobFile>& bfile,
|
|
|
1384
1390
|
return s;
|
|
1385
1391
|
}
|
|
1386
1392
|
|
|
1387
|
-
std::vector<Status> BlobDBImpl::MultiGet(const ReadOptions&
|
|
1393
|
+
std::vector<Status> BlobDBImpl::MultiGet(const ReadOptions& _read_options,
|
|
1388
1394
|
const std::vector<Slice>& keys,
|
|
1389
1395
|
std::vector<std::string>* values) {
|
|
1390
1396
|
StopWatch multiget_sw(clock_, statistics_, BLOB_DB_MULTIGET_MICROS);
|
|
1391
1397
|
RecordTick(statistics_, BLOB_DB_NUM_MULTIGET);
|
|
1392
1398
|
// Get a snapshot to avoid blob file get deleted between we
|
|
1393
1399
|
// fetch and index entry and reading from the file.
|
|
1394
|
-
ReadOptions ro(read_options);
|
|
1395
|
-
bool snapshot_created = SetSnapshotIfNeeded(&ro);
|
|
1396
|
-
|
|
1397
1400
|
std::vector<Status> statuses;
|
|
1398
|
-
|
|
1401
|
+
std::size_t num_keys = keys.size();
|
|
1402
|
+
statuses.reserve(num_keys);
|
|
1403
|
+
|
|
1404
|
+
if (_read_options.io_activity != Env::IOActivity::kUnknown &&
|
|
1405
|
+
_read_options.io_activity != Env::IOActivity::kMultiGet) {
|
|
1406
|
+
Status s = Status::InvalidArgument(
|
|
1407
|
+
"Can only call MultiGet with `ReadOptions::io_activity` is "
|
|
1408
|
+
"`Env::IOActivity::kUnknown` or `Env::IOActivity::kMultiGet`");
|
|
1409
|
+
|
|
1410
|
+
for (size_t i = 0; i < num_keys; ++i) {
|
|
1411
|
+
statuses.push_back(s);
|
|
1412
|
+
}
|
|
1413
|
+
return statuses;
|
|
1414
|
+
}
|
|
1415
|
+
|
|
1416
|
+
ReadOptions read_options(_read_options);
|
|
1417
|
+
if (read_options.io_activity == Env::IOActivity::kUnknown) {
|
|
1418
|
+
read_options.io_activity = Env::IOActivity::kMultiGet;
|
|
1419
|
+
}
|
|
1420
|
+
bool snapshot_created = SetSnapshotIfNeeded(&read_options);
|
|
1421
|
+
|
|
1399
1422
|
values->clear();
|
|
1400
1423
|
values->reserve(keys.size());
|
|
1401
1424
|
PinnableSlice value;
|
|
1402
1425
|
for (size_t i = 0; i < keys.size(); i++) {
|
|
1403
|
-
statuses.push_back(
|
|
1426
|
+
statuses.push_back(
|
|
1427
|
+
GetImpl(read_options, DefaultColumnFamily(), keys[i], &value));
|
|
1404
1428
|
values->push_back(value.ToString());
|
|
1405
1429
|
value.Reset();
|
|
1406
1430
|
}
|
|
1407
1431
|
if (snapshot_created) {
|
|
1408
|
-
db_->ReleaseSnapshot(
|
|
1432
|
+
db_->ReleaseSnapshot(read_options.snapshot);
|
|
1409
1433
|
}
|
|
1410
1434
|
return statuses;
|
|
1411
1435
|
}
|
|
@@ -1544,12 +1568,12 @@ Status BlobDBImpl::GetRawBlobFromFile(const Slice& key, uint64_t file_number,
|
|
|
1544
1568
|
if (reader->use_direct_io()) {
|
|
1545
1569
|
s = reader->Read(IOOptions(), record_offset,
|
|
1546
1570
|
static_cast<size_t>(record_size), &blob_record, nullptr,
|
|
1547
|
-
&aligned_buf
|
|
1571
|
+
&aligned_buf);
|
|
1548
1572
|
} else {
|
|
1549
1573
|
buf.reserve(static_cast<size_t>(record_size));
|
|
1550
1574
|
s = reader->Read(IOOptions(), record_offset,
|
|
1551
1575
|
static_cast<size_t>(record_size), &blob_record, &buf[0],
|
|
1552
|
-
nullptr
|
|
1576
|
+
nullptr);
|
|
1553
1577
|
}
|
|
1554
1578
|
RecordTick(statistics_, BLOB_DB_BLOB_FILE_BYTES_READ, blob_record.size());
|
|
1555
1579
|
}
|
|
@@ -1609,16 +1633,36 @@ Status BlobDBImpl::GetRawBlobFromFile(const Slice& key, uint64_t file_number,
|
|
|
1609
1633
|
return Status::OK();
|
|
1610
1634
|
}
|
|
1611
1635
|
|
|
1612
|
-
Status BlobDBImpl::Get(const ReadOptions&
|
|
1636
|
+
Status BlobDBImpl::Get(const ReadOptions& _read_options,
|
|
1613
1637
|
ColumnFamilyHandle* column_family, const Slice& key,
|
|
1614
1638
|
PinnableSlice* value) {
|
|
1615
|
-
|
|
1616
|
-
|
|
1639
|
+
if (_read_options.io_activity != Env::IOActivity::kUnknown &&
|
|
1640
|
+
_read_options.io_activity != Env::IOActivity::kGet) {
|
|
1641
|
+
return Status::InvalidArgument(
|
|
1642
|
+
"Can only call Get with `ReadOptions::io_activity` is "
|
|
1643
|
+
"`Env::IOActivity::kUnknown` or `Env::IOActivity::kGet`");
|
|
1644
|
+
}
|
|
1645
|
+
ReadOptions read_options(_read_options);
|
|
1646
|
+
if (read_options.io_activity == Env::IOActivity::kUnknown) {
|
|
1647
|
+
read_options.io_activity = Env::IOActivity::kGet;
|
|
1648
|
+
}
|
|
1649
|
+
return GetImpl(read_options, column_family, key, value);
|
|
1617
1650
|
}
|
|
1618
1651
|
|
|
1619
|
-
Status BlobDBImpl::Get(const ReadOptions&
|
|
1652
|
+
Status BlobDBImpl::Get(const ReadOptions& _read_options,
|
|
1620
1653
|
ColumnFamilyHandle* column_family, const Slice& key,
|
|
1621
1654
|
PinnableSlice* value, uint64_t* expiration) {
|
|
1655
|
+
if (_read_options.io_activity != Env::IOActivity::kUnknown &&
|
|
1656
|
+
_read_options.io_activity != Env::IOActivity::kGet) {
|
|
1657
|
+
return Status::InvalidArgument(
|
|
1658
|
+
"Can only call Get with `ReadOptions::io_activity` is "
|
|
1659
|
+
"`Env::IOActivity::kUnknown` or `Env::IOActivity::kGet`");
|
|
1660
|
+
}
|
|
1661
|
+
ReadOptions read_options(_read_options);
|
|
1662
|
+
if (read_options.io_activity == Env::IOActivity::kUnknown) {
|
|
1663
|
+
read_options.io_activity = Env::IOActivity::kGet;
|
|
1664
|
+
}
|
|
1665
|
+
|
|
1622
1666
|
StopWatch get_sw(clock_, statistics_, BLOB_DB_GET_MICROS);
|
|
1623
1667
|
RecordTick(statistics_, BLOB_DB_NUM_GET);
|
|
1624
1668
|
return GetImpl(read_options, column_family, key, value, expiration);
|
|
@@ -1631,11 +1675,6 @@ Status BlobDBImpl::GetImpl(const ReadOptions& read_options,
|
|
|
1631
1675
|
return Status::NotSupported(
|
|
1632
1676
|
"Blob DB doesn't support non-default column family.");
|
|
1633
1677
|
}
|
|
1634
|
-
if (read_options.io_activity != Env::IOActivity::kUnknown) {
|
|
1635
|
-
return Status::InvalidArgument(
|
|
1636
|
-
"Cannot call Get with `ReadOptions::io_activity` != "
|
|
1637
|
-
"`Env::IOActivity::kUnknown`");
|
|
1638
|
-
}
|
|
1639
1678
|
// Get a snapshot to avoid blob file get deleted between we
|
|
1640
1679
|
// fetch and index entry and reading from the file.
|
|
1641
1680
|
// TODO(yiwu): For Get() retry if file not found would be a simpler strategy.
|
|
@@ -1882,7 +1921,7 @@ std::pair<bool, int64_t> BlobDBImpl::EvictExpiredFiles(bool aborted) {
|
|
|
1882
1921
|
}
|
|
1883
1922
|
|
|
1884
1923
|
if (!blob_file->Immutable()) {
|
|
1885
|
-
CloseBlobFile(blob_file);
|
|
1924
|
+
CloseBlobFile(blob_file).PermitUncheckedError();
|
|
1886
1925
|
}
|
|
1887
1926
|
|
|
1888
1927
|
assert(blob_file->Immutable());
|
|
@@ -2040,11 +2079,16 @@ void BlobDBImpl::CopyBlobFiles(
|
|
|
2040
2079
|
}
|
|
2041
2080
|
}
|
|
2042
2081
|
|
|
2043
|
-
Iterator* BlobDBImpl::NewIterator(const ReadOptions&
|
|
2044
|
-
if (
|
|
2082
|
+
Iterator* BlobDBImpl::NewIterator(const ReadOptions& _read_options) {
|
|
2083
|
+
if (_read_options.io_activity != Env::IOActivity::kUnknown &&
|
|
2084
|
+
_read_options.io_activity != Env::IOActivity::kDBIterator) {
|
|
2045
2085
|
return NewErrorIterator(Status::InvalidArgument(
|
|
2046
|
-
"
|
|
2047
|
-
"`Env::IOActivity::kUnknown`"));
|
|
2086
|
+
"Can only call NewIterator with `ReadOptions::io_activity` is "
|
|
2087
|
+
"`Env::IOActivity::kUnknown` or `Env::IOActivity::kDBIterator`"));
|
|
2088
|
+
}
|
|
2089
|
+
ReadOptions read_options(_read_options);
|
|
2090
|
+
if (read_options.io_activity == Env::IOActivity::kUnknown) {
|
|
2091
|
+
read_options.io_activity = Env::IOActivity::kDBIterator;
|
|
2048
2092
|
}
|
|
2049
2093
|
auto* cfd =
|
|
2050
2094
|
static_cast_with_check<ColumnFamilyHandleImpl>(DefaultColumnFamily())
|
|
@@ -2057,8 +2101,9 @@ Iterator* BlobDBImpl::NewIterator(const ReadOptions& read_options) {
|
|
|
2057
2101
|
own_snapshot = new ManagedSnapshot(db_);
|
|
2058
2102
|
snapshot = own_snapshot->snapshot();
|
|
2059
2103
|
}
|
|
2104
|
+
SuperVersion* sv = cfd->GetReferencedSuperVersion(db_impl_);
|
|
2060
2105
|
auto* iter = db_impl_->NewIteratorImpl(
|
|
2061
|
-
read_options, cfd, snapshot->GetSequenceNumber(),
|
|
2106
|
+
read_options, cfd, sv, snapshot->GetSequenceNumber(),
|
|
2062
2107
|
nullptr /*read_callback*/, true /*expose_blob_index*/);
|
|
2063
2108
|
return new BlobDBIterator(own_snapshot, iter, this, clock_, statistics_);
|
|
2064
2109
|
}
|
|
@@ -103,12 +103,13 @@ class BlobDBImpl : public BlobDB {
|
|
|
103
103
|
const Slice& value) override;
|
|
104
104
|
|
|
105
105
|
using BlobDB::Get;
|
|
106
|
-
Status Get(const ReadOptions&
|
|
107
|
-
const Slice& key,
|
|
106
|
+
Status Get(const ReadOptions& _read_options,
|
|
107
|
+
ColumnFamilyHandle* column_family, const Slice& key,
|
|
108
|
+
PinnableSlice* value) override;
|
|
108
109
|
|
|
109
|
-
Status Get(const ReadOptions&
|
|
110
|
-
const Slice& key,
|
|
111
|
-
uint64_t* expiration) override;
|
|
110
|
+
Status Get(const ReadOptions& _read_options,
|
|
111
|
+
ColumnFamilyHandle* column_family, const Slice& key,
|
|
112
|
+
PinnableSlice* value, uint64_t* expiration) override;
|
|
112
113
|
|
|
113
114
|
using BlobDB::NewIterator;
|
|
114
115
|
virtual Iterator* NewIterator(const ReadOptions& read_options) override;
|
|
@@ -123,7 +124,7 @@ class BlobDBImpl : public BlobDB {
|
|
|
123
124
|
|
|
124
125
|
using BlobDB::MultiGet;
|
|
125
126
|
virtual std::vector<Status> MultiGet(
|
|
126
|
-
const ReadOptions&
|
|
127
|
+
const ReadOptions& _read_options, const std::vector<Slice>& keys,
|
|
127
128
|
std::vector<std::string>* values) override;
|
|
128
129
|
|
|
129
130
|
using BlobDB::Write;
|
|
@@ -22,7 +22,7 @@ class BlobDBListener : public EventListener {
|
|
|
22
22
|
|
|
23
23
|
void OnFlushBegin(DB* /*db*/, const FlushJobInfo& /*info*/) override {
|
|
24
24
|
assert(blob_db_impl_ != nullptr);
|
|
25
|
-
blob_db_impl_->SyncBlobFiles();
|
|
25
|
+
blob_db_impl_->SyncBlobFiles().PermitUncheckedError();
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
void OnFlushCompleted(DB* /*db*/, const FlushJobInfo& /*info*/) override {
|
|
@@ -102,8 +102,8 @@ Status BlobDumpTool::Read(uint64_t offset, size_t size, Slice* result) {
|
|
|
102
102
|
}
|
|
103
103
|
buffer_.reset(new char[buffer_size_]);
|
|
104
104
|
}
|
|
105
|
-
Status s =
|
|
106
|
-
|
|
105
|
+
Status s =
|
|
106
|
+
reader_->Read(IOOptions(), offset, size, result, buffer_.get(), nullptr);
|
|
107
107
|
if (!s.ok()) {
|
|
108
108
|
return s;
|
|
109
109
|
}
|
|
@@ -277,4 +277,3 @@ std::string BlobDumpTool::GetString(std::pair<T, T> p) {
|
|
|
277
277
|
|
|
278
278
|
} // namespace blob_db
|
|
279
279
|
} // namespace ROCKSDB_NAMESPACE
|
|
280
|
-
|
|
@@ -114,13 +114,11 @@ Status BlobFile::ReadFooter(BlobLogFooter* bf) {
|
|
|
114
114
|
// TODO: rate limit reading footers from blob files.
|
|
115
115
|
if (ra_file_reader_->use_direct_io()) {
|
|
116
116
|
s = ra_file_reader_->Read(IOOptions(), footer_offset, BlobLogFooter::kSize,
|
|
117
|
-
&result, nullptr, &aligned_buf
|
|
118
|
-
Env::IO_TOTAL /* rate_limiter_priority */);
|
|
117
|
+
&result, nullptr, &aligned_buf);
|
|
119
118
|
} else {
|
|
120
119
|
buf.reserve(BlobLogFooter::kSize + 10);
|
|
121
120
|
s = ra_file_reader_->Read(IOOptions(), footer_offset, BlobLogFooter::kSize,
|
|
122
|
-
&result, &buf[0], nullptr
|
|
123
|
-
Env::IO_TOTAL /* rate_limiter_priority */);
|
|
121
|
+
&result, &buf[0], nullptr);
|
|
124
122
|
}
|
|
125
123
|
if (!s.ok()) return s;
|
|
126
124
|
if (result.size() != BlobLogFooter::kSize) {
|
|
@@ -238,13 +236,11 @@ Status BlobFile::ReadMetadata(const std::shared_ptr<FileSystem>& fs,
|
|
|
238
236
|
// TODO: rate limit reading headers from blob files.
|
|
239
237
|
if (file_reader->use_direct_io()) {
|
|
240
238
|
s = file_reader->Read(IOOptions(), 0, BlobLogHeader::kSize, &header_slice,
|
|
241
|
-
nullptr, &aligned_buf
|
|
242
|
-
Env::IO_TOTAL /* rate_limiter_priority */);
|
|
239
|
+
nullptr, &aligned_buf);
|
|
243
240
|
} else {
|
|
244
241
|
header_buf.reserve(BlobLogHeader::kSize);
|
|
245
242
|
s = file_reader->Read(IOOptions(), 0, BlobLogHeader::kSize, &header_slice,
|
|
246
|
-
&header_buf[0], nullptr
|
|
247
|
-
Env::IO_TOTAL /* rate_limiter_priority */);
|
|
243
|
+
&header_buf[0], nullptr);
|
|
248
244
|
}
|
|
249
245
|
if (!s.ok()) {
|
|
250
246
|
ROCKS_LOG_ERROR(
|
|
@@ -281,13 +277,12 @@ Status BlobFile::ReadMetadata(const std::shared_ptr<FileSystem>& fs,
|
|
|
281
277
|
if (file_reader->use_direct_io()) {
|
|
282
278
|
s = file_reader->Read(IOOptions(), file_size - BlobLogFooter::kSize,
|
|
283
279
|
BlobLogFooter::kSize, &footer_slice, nullptr,
|
|
284
|
-
&aligned_buf
|
|
285
|
-
Env::IO_TOTAL /* rate_limiter_priority */);
|
|
280
|
+
&aligned_buf);
|
|
286
281
|
} else {
|
|
287
282
|
footer_buf.reserve(BlobLogFooter::kSize);
|
|
288
283
|
s = file_reader->Read(IOOptions(), file_size - BlobLogFooter::kSize,
|
|
289
284
|
BlobLogFooter::kSize, &footer_slice, &footer_buf[0],
|
|
290
|
-
nullptr
|
|
285
|
+
nullptr);
|
|
291
286
|
}
|
|
292
287
|
if (!s.ok()) {
|
|
293
288
|
ROCKS_LOG_ERROR(
|
|
@@ -249,8 +249,7 @@ class FromFileCacheDumpReader : public CacheDumpReader {
|
|
|
249
249
|
|
|
250
250
|
while (to_read > 0) {
|
|
251
251
|
io_s = file_reader_->Read(IOOptions(), offset_, to_read, &result_,
|
|
252
|
-
buffer_, nullptr
|
|
253
|
-
Env::IO_TOTAL /* rate_limiter_priority */);
|
|
252
|
+
buffer_, nullptr);
|
|
254
253
|
if (!io_s.ok()) {
|
|
255
254
|
return io_s;
|
|
256
255
|
}
|
|
@@ -460,8 +460,8 @@ TEST_F(CheckpointTest, CheckpointCF) {
|
|
|
460
460
|
Options options = CurrentOptions();
|
|
461
461
|
CreateAndReopenWithCF({"one", "two", "three", "four", "five"}, options);
|
|
462
462
|
ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->LoadDependency(
|
|
463
|
-
{{"CheckpointTest::CheckpointCF:2", "DBImpl::
|
|
464
|
-
{"DBImpl::
|
|
463
|
+
{{"CheckpointTest::CheckpointCF:2", "DBImpl::FlushAllColumnFamilies:2"},
|
|
464
|
+
{"DBImpl::FlushAllColumnFamilies:1", "CheckpointTest::CheckpointCF:1"}});
|
|
465
465
|
|
|
466
466
|
ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->EnableProcessing();
|
|
467
467
|
|
|
@@ -925,7 +925,7 @@ TEST_F(CheckpointTest, CheckpointWithDbPath) {
|
|
|
925
925
|
options.db_paths.emplace_back(dbname_ + "_2", 0);
|
|
926
926
|
Reopen(options);
|
|
927
927
|
ASSERT_OK(Put("key1", "val1"));
|
|
928
|
-
Flush();
|
|
928
|
+
ASSERT_OK(Flush());
|
|
929
929
|
Checkpoint* checkpoint;
|
|
930
930
|
ASSERT_OK(Checkpoint::Create(db_, &checkpoint));
|
|
931
931
|
// Currently not supported
|
|
@@ -968,7 +968,7 @@ TEST_F(CheckpointTest, PutRaceWithCheckpointTrackedWalSync) {
|
|
|
968
968
|
|
|
969
969
|
// Simulate full loss of unsynced data. This drops "key2" -> "val2" from the
|
|
970
970
|
// DB WAL.
|
|
971
|
-
fault_env->DropUnsyncedFileData();
|
|
971
|
+
ASSERT_OK(fault_env->DropUnsyncedFileData());
|
|
972
972
|
|
|
973
973
|
// Before the bug fix, reopening the DB would fail because the MANIFEST's
|
|
974
974
|
// AddWal entry indicated the WAL should be synced through "key2" -> "val2".
|
|
@@ -985,4 +985,3 @@ int main(int argc, char** argv) {
|
|
|
985
985
|
::testing::InitGoogleTest(&argc, argv);
|
|
986
986
|
return RUN_ALL_TESTS();
|
|
987
987
|
}
|
|
988
|
-
|
|
@@ -242,6 +242,7 @@ IOStatus TestFSWritableFile::PositionedAppend(
|
|
|
242
242
|
IOStatus TestFSWritableFile::Close(const IOOptions& options,
|
|
243
243
|
IODebugContext* dbg) {
|
|
244
244
|
MutexLock l(&mutex_);
|
|
245
|
+
fs_->WritableFileClosed(state_);
|
|
245
246
|
if (!fs_->IsFilesystemActive()) {
|
|
246
247
|
return fs_->GetError();
|
|
247
248
|
}
|
|
@@ -263,7 +264,6 @@ IOStatus TestFSWritableFile::Close(const IOOptions& options,
|
|
|
263
264
|
io_s = target_->Close(options, dbg);
|
|
264
265
|
}
|
|
265
266
|
if (io_s.ok()) {
|
|
266
|
-
fs_->WritableFileClosed(state_);
|
|
267
267
|
IOStatus in_s = fs_->InjectMetadataWriteError();
|
|
268
268
|
if (!in_s.ok()) {
|
|
269
269
|
return in_s;
|
|
@@ -408,7 +408,7 @@ IOStatus TestFSRandomAccessFile::Read(uint64_t offset, size_t n,
|
|
|
408
408
|
scratch, /*need_count_increase=*/true, /*fault_injected=*/nullptr);
|
|
409
409
|
}
|
|
410
410
|
if (s.ok() && fs_->ShouldInjectRandomReadError()) {
|
|
411
|
-
return IOStatus::IOError("
|
|
411
|
+
return IOStatus::IOError("injected read error");
|
|
412
412
|
}
|
|
413
413
|
return s;
|
|
414
414
|
}
|
|
@@ -430,7 +430,7 @@ IOStatus TestFSRandomAccessFile::ReadAsync(
|
|
|
430
430
|
}
|
|
431
431
|
if (ret.ok()) {
|
|
432
432
|
if (fs_->ShouldInjectRandomReadError()) {
|
|
433
|
-
ret = IOStatus::IOError("
|
|
433
|
+
ret = IOStatus::IOError("injected read error");
|
|
434
434
|
} else {
|
|
435
435
|
s = target_->ReadAsync(req, opts, cb, cb_arg, io_handle, del_fn, nullptr);
|
|
436
436
|
}
|
|
@@ -470,7 +470,7 @@ IOStatus TestFSRandomAccessFile::MultiRead(FSReadRequest* reqs, size_t num_reqs,
|
|
|
470
470
|
/*fault_injected=*/nullptr);
|
|
471
471
|
}
|
|
472
472
|
if (s.ok() && fs_->ShouldInjectRandomReadError()) {
|
|
473
|
-
return IOStatus::IOError("
|
|
473
|
+
return IOStatus::IOError("injected read error");
|
|
474
474
|
}
|
|
475
475
|
return s;
|
|
476
476
|
}
|
|
@@ -487,7 +487,7 @@ IOStatus TestFSSequentialFile::Read(size_t n, const IOOptions& options,
|
|
|
487
487
|
IODebugContext* dbg) {
|
|
488
488
|
IOStatus s = target()->Read(n, options, result, scratch, dbg);
|
|
489
489
|
if (s.ok() && fs_->ShouldInjectRandomReadError()) {
|
|
490
|
-
return IOStatus::IOError("
|
|
490
|
+
return IOStatus::IOError("injected seq read error");
|
|
491
491
|
}
|
|
492
492
|
return s;
|
|
493
493
|
}
|
|
@@ -499,7 +499,7 @@ IOStatus TestFSSequentialFile::PositionedRead(uint64_t offset, size_t n,
|
|
|
499
499
|
IOStatus s =
|
|
500
500
|
target()->PositionedRead(offset, n, options, result, scratch, dbg);
|
|
501
501
|
if (s.ok() && fs_->ShouldInjectRandomReadError()) {
|
|
502
|
-
return IOStatus::IOError("
|
|
502
|
+
return IOStatus::IOError("injected seq positioned read error");
|
|
503
503
|
}
|
|
504
504
|
return s;
|
|
505
505
|
}
|
|
@@ -678,7 +678,7 @@ IOStatus FaultInjectionTestFS::NewRandomAccessFile(
|
|
|
678
678
|
return GetError();
|
|
679
679
|
}
|
|
680
680
|
if (ShouldInjectRandomReadError()) {
|
|
681
|
-
return IOStatus::IOError("
|
|
681
|
+
return IOStatus::IOError("injected error when open random access file");
|
|
682
682
|
}
|
|
683
683
|
IOStatus io_s = InjectThreadSpecificReadError(ErrorOperation::kOpen, nullptr,
|
|
684
684
|
false, nullptr,
|
|
@@ -701,7 +701,7 @@ IOStatus FaultInjectionTestFS::NewSequentialFile(
|
|
|
701
701
|
}
|
|
702
702
|
|
|
703
703
|
if (ShouldInjectRandomReadError()) {
|
|
704
|
-
return IOStatus::IOError("
|
|
704
|
+
return IOStatus::IOError("injected read error when creating seq file");
|
|
705
705
|
}
|
|
706
706
|
IOStatus io_s = target()->NewSequentialFile(fname, file_opts, result, dbg);
|
|
707
707
|
if (io_s.ok()) {
|
|
@@ -956,6 +956,7 @@ IOStatus FaultInjectionTestFS::InjectThreadSpecificReadError(
|
|
|
956
956
|
return IOStatus::OK();
|
|
957
957
|
}
|
|
958
958
|
|
|
959
|
+
IOStatus ret;
|
|
959
960
|
if (ctx->rand.OneIn(ctx->one_in)) {
|
|
960
961
|
if (ctx->count == 0) {
|
|
961
962
|
ctx->message = "";
|
|
@@ -970,15 +971,15 @@ IOStatus FaultInjectionTestFS::InjectThreadSpecificReadError(
|
|
|
970
971
|
|
|
971
972
|
if (op != ErrorOperation::kMultiReadSingleReq) {
|
|
972
973
|
// Likely non-per read status code for MultiRead
|
|
973
|
-
ctx->message += "error; ";
|
|
974
|
+
ctx->message += "injected read error; ";
|
|
974
975
|
ret_fault_injected = true;
|
|
975
|
-
|
|
976
|
+
ret = IOStatus::IOError(ctx->message);
|
|
976
977
|
} else if (Random::GetTLSInstance()->OneIn(8)) {
|
|
977
978
|
assert(result);
|
|
978
979
|
// For a small chance, set the failure to status but turn the
|
|
979
980
|
// result to be empty, which is supposed to be caught for a check.
|
|
980
981
|
*result = Slice();
|
|
981
|
-
ctx->message += "
|
|
982
|
+
ctx->message += "injected empty result; ";
|
|
982
983
|
ret_fault_injected = true;
|
|
983
984
|
} else if (!direct_io && Random::GetTLSInstance()->OneIn(7) &&
|
|
984
985
|
scratch != nullptr && result->data() == scratch) {
|
|
@@ -995,15 +996,18 @@ IOStatus FaultInjectionTestFS::InjectThreadSpecificReadError(
|
|
|
995
996
|
// It would work for CRC. Not 100% sure for xxhash and will adjust
|
|
996
997
|
// if it is not the case.
|
|
997
998
|
const_cast<char*>(result->data())[result->size() - 1]++;
|
|
998
|
-
ctx->message += "corrupt last byte; ";
|
|
999
|
+
ctx->message += "injected corrupt last byte; ";
|
|
999
1000
|
ret_fault_injected = true;
|
|
1000
1001
|
} else {
|
|
1001
|
-
ctx->message += "error result multiget single; ";
|
|
1002
|
+
ctx->message += "injected error result multiget single; ";
|
|
1002
1003
|
ret_fault_injected = true;
|
|
1003
|
-
|
|
1004
|
+
ret = IOStatus::IOError(ctx->message);
|
|
1004
1005
|
}
|
|
1005
1006
|
}
|
|
1006
|
-
|
|
1007
|
+
if (ctx->retryable) {
|
|
1008
|
+
ret.SetRetryable(true);
|
|
1009
|
+
}
|
|
1010
|
+
return ret;
|
|
1007
1011
|
}
|
|
1008
1012
|
|
|
1009
1013
|
bool FaultInjectionTestFS::TryParseFileName(const std::string& file_name,
|
|
@@ -1052,7 +1056,7 @@ IOStatus FaultInjectionTestFS::InjectMetadataWriteError() {
|
|
|
1052
1056
|
}
|
|
1053
1057
|
}
|
|
1054
1058
|
TEST_SYNC_POINT("FaultInjectionTestFS::InjectMetadataWriteError:Injected");
|
|
1055
|
-
return IOStatus::IOError();
|
|
1059
|
+
return IOStatus::IOError("injected metadata write error");
|
|
1056
1060
|
}
|
|
1057
1061
|
|
|
1058
1062
|
void FaultInjectionTestFS::PrintFaultBacktrace() {
|