@nxtedition/rocksdb 9.0.0 → 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 +13 -9
- package/deps/rocksdb/rocksdb/Makefile +15 -6
- package/deps/rocksdb/rocksdb/README.md +29 -0
- package/deps/rocksdb/rocksdb/TARGETS +17 -2
- package/deps/rocksdb/rocksdb/cache/cache.cc +35 -0
- package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +74 -15
- 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 +16 -4
- 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 +2024 -14
- package/deps/rocksdb/rocksdb/cache/clock_cache.h +349 -23
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +126 -51
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +9 -0
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +182 -7
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +31 -14
- package/deps/rocksdb/rocksdb/cache/secondary_cache.cc +0 -33
- package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +293 -17
- package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.h +21 -5
- package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +10 -0
- package/deps/rocksdb/rocksdb/cache/sharded_cache.h +8 -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/db/arena_wrapped_db_iter.cc +25 -11
- 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_reader.cc +2 -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 +3 -3
- package/deps/rocksdb/rocksdb/db/c.cc +64 -0
- package/deps/rocksdb/rocksdb/db/c_test.c +36 -0
- package/deps/rocksdb/rocksdb/db/column_family.cc +23 -15
- package/deps/rocksdb/rocksdb/db/column_family.h +9 -0
- package/deps/rocksdb/rocksdb/db/column_family_test.cc +101 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +36 -23
- package/deps/rocksdb/rocksdb/db/compaction/compaction.h +24 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +3 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +42 -18
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +7 -3
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +4 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +8 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +1 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +3 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +61 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +146 -64
- package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +13 -39
- package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +29 -7
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +8 -3
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +59 -0
- package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +27 -3
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +186 -2
- package/deps/rocksdb/rocksdb/db/db_flush_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +17 -5
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +519 -240
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +104 -43
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +169 -66
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +2 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +12 -4
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +50 -14
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +85 -53
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +3 -7
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +99 -82
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +4 -14
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +24 -21
- package/deps/rocksdb/rocksdb/db/db_info_dumper.cc +6 -0
- package/deps/rocksdb/rocksdb/db/db_iter.cc +83 -55
- package/deps/rocksdb/rocksdb/db/db_iter.h +10 -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_operator_test.cc +187 -1
- package/deps/rocksdb/rocksdb/db/db_options_test.cc +258 -0
- package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +258 -0
- package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +1 -0
- 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_tailing_iter_test.cc +3 -1
- package/deps/rocksdb/rocksdb/db/db_test.cc +134 -30
- package/deps/rocksdb/rocksdb/db/db_test2.cc +3 -0
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +11 -6
- package/deps/rocksdb/rocksdb/db/db_test_util.h +5 -2
- package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +12 -0
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +337 -1
- package/deps/rocksdb/rocksdb/db/deletefile_test.cc +2 -0
- package/deps/rocksdb/rocksdb/db/error_handler.cc +51 -34
- package/deps/rocksdb/rocksdb/db/error_handler.h +7 -6
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +58 -0
- package/deps/rocksdb/rocksdb/db/flush_job.cc +17 -19
- package/deps/rocksdb/rocksdb/db/flush_job.h +3 -3
- package/deps/rocksdb/rocksdb/db/flush_job_test.cc +2 -1
- package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +2 -0
- package/deps/rocksdb/rocksdb/db/memtable.cc +18 -70
- package/deps/rocksdb/rocksdb/db/memtable_list.cc +1 -1
- package/deps/rocksdb/rocksdb/db/memtable_list.h +11 -1
- package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +1 -1
- 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 +3 -0
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.h +4 -4
- package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +2 -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 +4 -3
- package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +454 -70
- 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 +32 -19
- package/deps/rocksdb/rocksdb/db/table_cache.h +12 -6
- package/deps/rocksdb/rocksdb/db/version_edit.h +10 -4
- package/deps/rocksdb/rocksdb/db/version_set.cc +75 -73
- package/deps/rocksdb/rocksdb/db/version_set.h +8 -8
- package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +2 -5
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +22 -11
- 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 +44 -20
- 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 +15 -10
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +108 -58
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +36 -14
- 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 +1 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +195 -130
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +4 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +12 -12
- 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/multi_ops_txns_stress.cc +14 -11
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +44 -38
- package/deps/rocksdb/rocksdb/env/env.cc +5 -0
- package/deps/rocksdb/rocksdb/env/unique_id_gen.cc +1 -0
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +50 -29
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +32 -2
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +513 -30
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +8 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_cache.h +38 -13
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +14 -7
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +42 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +65 -12
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +11 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/comparator.h +26 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +37 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/env.h +2 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +1 -0
- 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 +4 -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 +45 -5
- 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 +79 -8
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +16 -0
- 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_properties.h +14 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +2 -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/options_type.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +9 -0
- 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 +0 -2
- package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +2 -2
- package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.h +1 -1
- package/deps/rocksdb/rocksdb/microbench/README.md +60 -0
- package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.h +1 -1
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +6 -0
- package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +18 -7
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +4 -0
- package/deps/rocksdb/rocksdb/options/customizable_test.cc +4 -0
- package/deps/rocksdb/rocksdb/options/db_options.cc +47 -2
- package/deps/rocksdb/rocksdb/options/db_options.h +3 -0
- package/deps/rocksdb/rocksdb/options/options_helper.cc +12 -0
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +3 -1
- package/deps/rocksdb/rocksdb/options/options_test.cc +6 -1
- package/deps/rocksdb/rocksdb/plugin/README.md +43 -0
- package/deps/rocksdb/rocksdb/port/README +10 -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 +5 -0
- package/deps/rocksdb/rocksdb/port/win/port_win.h +5 -2
- package/deps/rocksdb/rocksdb/src.mk +7 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +3 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +275 -61
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +96 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +179 -62
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +35 -22
- 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 +14 -9
- 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 +15 -12
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +10 -5
- package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +39 -18
- 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/index_reader_common.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +10 -8
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +4 -2
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +3 -2
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +3 -2
- package/deps/rocksdb/rocksdb/table/block_fetcher.h +4 -0
- package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +6 -2
- 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 +12 -0
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +33 -6
- package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +1 -0
- package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +2 -4
- package/deps/rocksdb/rocksdb/table/table_reader.h +6 -0
- 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/tools/block_cache_analyzer/block_cache_pysim.py +3 -3
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +26 -43
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +213 -28
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +36 -0
- package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +0 -1
- package/deps/rocksdb/rocksdb/tools/sst_dump_test.cc +33 -10
- package/deps/rocksdb/rocksdb/util/bloom_test.cc +32 -11
- package/deps/rocksdb/rocksdb/util/cast_util.h +10 -0
- package/deps/rocksdb/rocksdb/util/comparator.cc +26 -1
- package/deps/rocksdb/rocksdb/util/compression.h +9 -3
- package/deps/rocksdb/rocksdb/util/crc32c.cc +7 -1
- package/deps/rocksdb/rocksdb/util/distributed_mutex.h +1 -1
- 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/slice_test.cc +30 -0
- package/deps/rocksdb/rocksdb/util/status.cc +1 -0
- 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 +2 -0
- package/deps/rocksdb/rocksdb/util/udt_util.cc +42 -0
- package/deps/rocksdb/rocksdb/util/udt_util.h +19 -0
- package/deps/rocksdb/rocksdb/util/udt_util_test.cc +14 -0
- package/deps/rocksdb/rocksdb/util/xxhash.h +0 -3
- package/deps/rocksdb/rocksdb/util/xxph3.h +0 -4
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +2 -1
- package/deps/rocksdb/rocksdb/utilities/fault_injection_env.h +1 -0
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +19 -15
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +11 -7
- package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.h +5 -0
- 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 +9 -0
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache.cc +7 -4
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/README +13 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +41 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +15 -9
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +4 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +155 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +6 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +81 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +2 -6
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +7 -5
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +2 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +3 -2
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +57 -27
- 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 +105 -8
- package/deps/rocksdb/rocksdb.gyp +4 -2
- package/index.js +0 -8
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/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
|
@@ -107,7 +107,10 @@ class DBIteratorTest : public DBIteratorBaseTest,
|
|
|
107
107
|
read_callbacks_.push_back(
|
|
108
108
|
std::unique_ptr<DummyReadCallback>(read_callback));
|
|
109
109
|
}
|
|
110
|
-
|
|
110
|
+
DBImpl* db_impl = dbfull();
|
|
111
|
+
SuperVersion* super_version = cfd->GetReferencedSuperVersion(db_impl);
|
|
112
|
+
return db_impl->NewIteratorImpl(read_options, cfd, super_version, seq,
|
|
113
|
+
read_callback);
|
|
111
114
|
}
|
|
112
115
|
|
|
113
116
|
private:
|
|
@@ -180,6 +183,7 @@ TEST_P(DBIteratorTest, NonBlockingIteration) {
|
|
|
180
183
|
ASSERT_OK(iter->status());
|
|
181
184
|
count++;
|
|
182
185
|
}
|
|
186
|
+
ASSERT_OK(iter->status());
|
|
183
187
|
ASSERT_EQ(count, 1);
|
|
184
188
|
delete iter;
|
|
185
189
|
|
|
@@ -214,6 +218,7 @@ TEST_P(DBIteratorTest, NonBlockingIteration) {
|
|
|
214
218
|
ASSERT_OK(iter->status());
|
|
215
219
|
count++;
|
|
216
220
|
}
|
|
221
|
+
ASSERT_OK(iter->status());
|
|
217
222
|
ASSERT_EQ(count, 1);
|
|
218
223
|
ASSERT_EQ(numopen, TestGetTickerCount(options, NO_FILE_OPENS));
|
|
219
224
|
ASSERT_EQ(cache_added, TestGetTickerCount(options, BLOCK_CACHE_ADD));
|
|
@@ -867,6 +872,7 @@ TEST_P(DBIteratorTest, IterWithSnapshot) {
|
|
|
867
872
|
}
|
|
868
873
|
}
|
|
869
874
|
db_->ReleaseSnapshot(snapshot);
|
|
875
|
+
ASSERT_OK(iter->status());
|
|
870
876
|
delete iter;
|
|
871
877
|
} while (ChangeOptions());
|
|
872
878
|
}
|
|
@@ -1211,6 +1217,7 @@ TEST_P(DBIteratorTest, DBIteratorBoundOptimizationTest) {
|
|
|
1211
1217
|
|
|
1212
1218
|
iter->Next();
|
|
1213
1219
|
ASSERT_FALSE(iter->Valid());
|
|
1220
|
+
ASSERT_OK(iter->status());
|
|
1214
1221
|
ASSERT_EQ(upper_bound_hits, 1);
|
|
1215
1222
|
}
|
|
1216
1223
|
}
|
|
@@ -1335,6 +1342,7 @@ TEST_P(DBIteratorTest, IndexWithFirstKey) {
|
|
|
1335
1342
|
|
|
1336
1343
|
iter->Next();
|
|
1337
1344
|
ASSERT_FALSE(iter->Valid());
|
|
1345
|
+
ASSERT_OK(iter->status());
|
|
1338
1346
|
EXPECT_EQ(3, stats->getTickerCount(BLOCK_CACHE_DATA_HIT));
|
|
1339
1347
|
EXPECT_EQ(7, stats->getTickerCount(BLOCK_CACHE_DATA_MISS));
|
|
1340
1348
|
}
|
|
@@ -1576,6 +1584,7 @@ class DBIteratorTestForPinnedData : public DBIteratorTest {
|
|
|
1576
1584
|
ASSERT_EQ("1", prop_value);
|
|
1577
1585
|
all_keys.push_back(iter->key());
|
|
1578
1586
|
}
|
|
1587
|
+
ASSERT_OK(iter->status());
|
|
1579
1588
|
ASSERT_EQ(all_keys.size(), true_data.size());
|
|
1580
1589
|
|
|
1581
1590
|
// Verify that all keys slices are valid (backward)
|
|
@@ -1679,7 +1688,7 @@ TEST_P(DBIteratorTest, PinnedDataIteratorMultipleFiles) {
|
|
|
1679
1688
|
ASSERT_EQ(kv.first, data_iter->first);
|
|
1680
1689
|
ASSERT_EQ(kv.second, data_iter->second);
|
|
1681
1690
|
}
|
|
1682
|
-
|
|
1691
|
+
ASSERT_OK(iter->status());
|
|
1683
1692
|
delete iter;
|
|
1684
1693
|
}
|
|
1685
1694
|
|
|
@@ -1725,6 +1734,7 @@ TEST_P(DBIteratorTest, PinnedDataIteratorMergeOperator) {
|
|
|
1725
1734
|
ASSERT_EQ("1", prop_value);
|
|
1726
1735
|
results.emplace_back(iter->key(), iter->value().ToString());
|
|
1727
1736
|
}
|
|
1737
|
+
ASSERT_OK(iter->status());
|
|
1728
1738
|
|
|
1729
1739
|
ASSERT_EQ(results.size(), 1000);
|
|
1730
1740
|
for (size_t i = 0; i < results.size(); i++) {
|
|
@@ -1782,6 +1792,7 @@ TEST_P(DBIteratorTest, PinnedDataIteratorReadAfterUpdate) {
|
|
|
1782
1792
|
ASSERT_EQ("1", prop_value);
|
|
1783
1793
|
results.emplace_back(iter->key(), iter->value().ToString());
|
|
1784
1794
|
}
|
|
1795
|
+
ASSERT_OK(iter->status());
|
|
1785
1796
|
|
|
1786
1797
|
auto data_iter = true_data.begin();
|
|
1787
1798
|
for (size_t i = 0; i < results.size(); i++, data_iter++) {
|
|
@@ -2076,6 +2087,7 @@ TEST_P(DBIteratorTest, IterPrevKeyCrossingBlocksRandomized) {
|
|
|
2076
2087
|
ASSERT_EQ(iter->value().ToString(), data_iter->second);
|
|
2077
2088
|
data_iter++;
|
|
2078
2089
|
}
|
|
2090
|
+
ASSERT_OK(iter->status());
|
|
2079
2091
|
ASSERT_EQ(data_iter, true_data.rend());
|
|
2080
2092
|
|
|
2081
2093
|
delete iter;
|
|
@@ -2133,6 +2145,7 @@ TEST_P(DBIteratorTest, IterPrevKeyCrossingBlocksRandomized) {
|
|
|
2133
2145
|
entries_right++;
|
|
2134
2146
|
data_iter++;
|
|
2135
2147
|
}
|
|
2148
|
+
ASSERT_OK(iter->status());
|
|
2136
2149
|
ASSERT_EQ(data_iter, true_data.rend());
|
|
2137
2150
|
|
|
2138
2151
|
delete iter;
|
|
@@ -2172,6 +2185,7 @@ TEST_P(DBIteratorTest, IteratorWithLocalStatistics) {
|
|
|
2172
2185
|
total_next++;
|
|
2173
2186
|
|
|
2174
2187
|
if (!iter->Valid()) {
|
|
2188
|
+
EXPECT_OK(iter->status());
|
|
2175
2189
|
break;
|
|
2176
2190
|
}
|
|
2177
2191
|
total_next_found++;
|
|
@@ -2199,6 +2213,7 @@ TEST_P(DBIteratorTest, IteratorWithLocalStatistics) {
|
|
|
2199
2213
|
total_prev++;
|
|
2200
2214
|
|
|
2201
2215
|
if (!iter->Valid()) {
|
|
2216
|
+
EXPECT_OK(iter->status());
|
|
2202
2217
|
break;
|
|
2203
2218
|
}
|
|
2204
2219
|
total_prev_found++;
|
|
@@ -2413,37 +2428,98 @@ TEST_P(DBIteratorTest, Refresh) {
|
|
|
2413
2428
|
ASSERT_EQ(iter->key().compare(Slice("x")), 0);
|
|
2414
2429
|
iter->Next();
|
|
2415
2430
|
ASSERT_FALSE(iter->Valid());
|
|
2431
|
+
ASSERT_OK(iter->status());
|
|
2416
2432
|
|
|
2417
2433
|
iter.reset();
|
|
2418
2434
|
}
|
|
2419
2435
|
|
|
2420
2436
|
TEST_P(DBIteratorTest, RefreshWithSnapshot) {
|
|
2421
|
-
|
|
2437
|
+
// L1 file, uses LevelIterator internally
|
|
2438
|
+
ASSERT_OK(Put(Key(0), "val0"));
|
|
2439
|
+
ASSERT_OK(Put(Key(5), "val5"));
|
|
2440
|
+
ASSERT_OK(Flush());
|
|
2441
|
+
MoveFilesToLevel(1);
|
|
2442
|
+
|
|
2443
|
+
// L0 file, uses table iterator internally
|
|
2444
|
+
ASSERT_OK(Put(Key(1), "val1"));
|
|
2445
|
+
ASSERT_OK(Put(Key(4), "val4"));
|
|
2446
|
+
ASSERT_OK(Flush());
|
|
2447
|
+
|
|
2448
|
+
// Memtable
|
|
2449
|
+
ASSERT_OK(Put(Key(2), "val2"));
|
|
2450
|
+
ASSERT_OK(Put(Key(3), "val3"));
|
|
2422
2451
|
const Snapshot* snapshot = db_->GetSnapshot();
|
|
2452
|
+
ASSERT_OK(Put(Key(2), "new val"));
|
|
2453
|
+
ASSERT_OK(db_->DeleteRange(WriteOptions(), db_->DefaultColumnFamily(), Key(4),
|
|
2454
|
+
Key(7)));
|
|
2455
|
+
const Snapshot* snapshot2 = db_->GetSnapshot();
|
|
2456
|
+
|
|
2457
|
+
ASSERT_EQ(1, NumTableFilesAtLevel(1));
|
|
2458
|
+
ASSERT_EQ(1, NumTableFilesAtLevel(0));
|
|
2459
|
+
|
|
2423
2460
|
ReadOptions options;
|
|
2424
2461
|
options.snapshot = snapshot;
|
|
2425
2462
|
Iterator* iter = NewIterator(options);
|
|
2463
|
+
ASSERT_OK(Put(Key(6), "val6"));
|
|
2426
2464
|
ASSERT_OK(iter->status());
|
|
2427
2465
|
|
|
2428
|
-
|
|
2429
|
-
|
|
2430
|
-
|
|
2431
|
-
|
|
2432
|
-
|
|
2466
|
+
auto verify_iter = [&](int start, int end, bool new_key2 = false) {
|
|
2467
|
+
for (int i = start; i < end; ++i) {
|
|
2468
|
+
ASSERT_OK(iter->status());
|
|
2469
|
+
ASSERT_TRUE(iter->Valid());
|
|
2470
|
+
ASSERT_EQ(iter->key(), Key(i));
|
|
2471
|
+
if (i == 2 && new_key2) {
|
|
2472
|
+
ASSERT_EQ(iter->value(), "new val");
|
|
2473
|
+
} else {
|
|
2474
|
+
ASSERT_EQ(iter->value(), "val" + std::to_string(i));
|
|
2475
|
+
}
|
|
2476
|
+
iter->Next();
|
|
2477
|
+
}
|
|
2478
|
+
};
|
|
2433
2479
|
|
|
2434
|
-
|
|
2480
|
+
for (int j = 0; j < 2; j++) {
|
|
2481
|
+
iter->Seek(Key(1));
|
|
2482
|
+
verify_iter(1, 3);
|
|
2483
|
+
// Refresh to same snapshot
|
|
2484
|
+
ASSERT_OK(iter->Refresh(snapshot));
|
|
2485
|
+
ASSERT_TRUE(!iter->Valid() && iter->status().ok());
|
|
2486
|
+
iter->Seek(Key(3));
|
|
2487
|
+
verify_iter(3, 6);
|
|
2488
|
+
ASSERT_TRUE(!iter->Valid() && iter->status().ok());
|
|
2489
|
+
|
|
2490
|
+
// Refresh to a newer snapshot
|
|
2491
|
+
ASSERT_OK(iter->Refresh(snapshot2));
|
|
2492
|
+
ASSERT_TRUE(!iter->Valid() && iter->status().ok());
|
|
2493
|
+
iter->SeekToFirst();
|
|
2494
|
+
verify_iter(0, 4, /*new_key2=*/true);
|
|
2495
|
+
ASSERT_TRUE(!iter->Valid() && iter->status().ok());
|
|
2496
|
+
|
|
2497
|
+
// Refresh to an older snapshot
|
|
2498
|
+
ASSERT_OK(iter->Refresh(snapshot));
|
|
2499
|
+
ASSERT_TRUE(!iter->Valid() && iter->status().ok());
|
|
2500
|
+
iter->Seek(Key(3));
|
|
2501
|
+
verify_iter(3, 6);
|
|
2502
|
+
ASSERT_TRUE(!iter->Valid() && iter->status().ok());
|
|
2503
|
+
|
|
2504
|
+
// Refresh to no snapshot
|
|
2505
|
+
ASSERT_OK(iter->Refresh());
|
|
2506
|
+
ASSERT_TRUE(!iter->Valid() && iter->status().ok());
|
|
2507
|
+
iter->Seek(Key(2));
|
|
2508
|
+
verify_iter(2, 4, /*new_key2=*/true);
|
|
2509
|
+
verify_iter(6, 7);
|
|
2510
|
+
ASSERT_TRUE(!iter->Valid() && iter->status().ok());
|
|
2511
|
+
|
|
2512
|
+
// Change LSM shape, new SuperVersion is created.
|
|
2513
|
+
ASSERT_OK(Flush());
|
|
2435
2514
|
|
|
2436
|
-
|
|
2437
|
-
|
|
2438
|
-
|
|
2439
|
-
iter->Next();
|
|
2440
|
-
ASSERT_FALSE(iter->Valid());
|
|
2515
|
+
// Refresh back to original snapshot
|
|
2516
|
+
ASSERT_OK(iter->Refresh(snapshot));
|
|
2517
|
+
}
|
|
2441
2518
|
|
|
2442
|
-
ASSERT_OK(iter->status());
|
|
2443
|
-
Status s = iter->Refresh();
|
|
2444
|
-
ASSERT_TRUE(s.IsNotSupported());
|
|
2445
|
-
db_->ReleaseSnapshot(snapshot);
|
|
2446
2519
|
delete iter;
|
|
2520
|
+
db_->ReleaseSnapshot(snapshot);
|
|
2521
|
+
db_->ReleaseSnapshot(snapshot2);
|
|
2522
|
+
ASSERT_OK(db_->Close());
|
|
2447
2523
|
}
|
|
2448
2524
|
|
|
2449
2525
|
TEST_P(DBIteratorTest, CreationFailure) {
|
|
@@ -2536,6 +2612,7 @@ TEST_P(DBIteratorTest, TableFilter) {
|
|
|
2536
2612
|
ASSERT_EQ(IterStatus(iter), "f->6");
|
|
2537
2613
|
iter->Next();
|
|
2538
2614
|
ASSERT_FALSE(iter->Valid());
|
|
2615
|
+
ASSERT_OK(iter->status());
|
|
2539
2616
|
ASSERT_TRUE(unseen.empty());
|
|
2540
2617
|
delete iter;
|
|
2541
2618
|
}
|
|
@@ -2558,6 +2635,7 @@ TEST_P(DBIteratorTest, TableFilter) {
|
|
|
2558
2635
|
ASSERT_EQ(IterStatus(iter), "f->6");
|
|
2559
2636
|
iter->Next();
|
|
2560
2637
|
ASSERT_FALSE(iter->Valid());
|
|
2638
|
+
ASSERT_OK(iter->status());
|
|
2561
2639
|
delete iter;
|
|
2562
2640
|
}
|
|
2563
2641
|
}
|
|
@@ -2642,6 +2720,7 @@ TEST_P(DBIteratorTest, SkipStatistics) {
|
|
|
2642
2720
|
ASSERT_OK(iter->status());
|
|
2643
2721
|
count++;
|
|
2644
2722
|
}
|
|
2723
|
+
ASSERT_OK(iter->status());
|
|
2645
2724
|
ASSERT_EQ(count, 3);
|
|
2646
2725
|
delete iter;
|
|
2647
2726
|
skip_count += 8; // Same as above, but in reverse order
|
|
@@ -2677,6 +2756,7 @@ TEST_P(DBIteratorTest, SkipStatistics) {
|
|
|
2677
2756
|
ASSERT_OK(iter->status());
|
|
2678
2757
|
count++;
|
|
2679
2758
|
}
|
|
2759
|
+
ASSERT_OK(iter->status());
|
|
2680
2760
|
ASSERT_EQ(count, 2);
|
|
2681
2761
|
delete iter;
|
|
2682
2762
|
// 3 deletes + 3 original keys + lower sequence of "a"
|
|
@@ -3130,8 +3210,10 @@ TEST_F(DBIteratorWithReadCallbackTest, ReadCallback) {
|
|
|
3130
3210
|
static_cast_with_check<ColumnFamilyHandleImpl>(db_->DefaultColumnFamily())
|
|
3131
3211
|
->cfd();
|
|
3132
3212
|
// The iterator are suppose to see data before seq1.
|
|
3133
|
-
|
|
3134
|
-
|
|
3213
|
+
DBImpl* db_impl = dbfull();
|
|
3214
|
+
SuperVersion* super_version = cfd->GetReferencedSuperVersion(db_impl);
|
|
3215
|
+
Iterator* iter = db_impl->NewIteratorImpl(ReadOptions(), cfd, super_version,
|
|
3216
|
+
seq2, &callback1);
|
|
3135
3217
|
|
|
3136
3218
|
// Seek
|
|
3137
3219
|
// The latest value of "foo" before seq1 is "v3"
|
|
@@ -3209,7 +3291,9 @@ TEST_F(DBIteratorWithReadCallbackTest, ReadCallback) {
|
|
|
3209
3291
|
SequenceNumber seq4 = db_->GetLatestSequenceNumber();
|
|
3210
3292
|
|
|
3211
3293
|
// The iterator is suppose to see data before seq3.
|
|
3212
|
-
|
|
3294
|
+
super_version = cfd->GetReferencedSuperVersion(db_impl);
|
|
3295
|
+
iter = db_impl->NewIteratorImpl(ReadOptions(), cfd, super_version, seq4,
|
|
3296
|
+
&callback2);
|
|
3213
3297
|
// Seek to "z", which is visible.
|
|
3214
3298
|
iter->Seek("z");
|
|
3215
3299
|
ASSERT_TRUE(iter->Valid());
|
|
@@ -3255,6 +3339,7 @@ TEST_F(DBIteratorTest, BackwardIterationOnInplaceUpdateMemtable) {
|
|
|
3255
3339
|
for (iter->SeekToLast(); iter->Valid(); iter->Prev()) {
|
|
3256
3340
|
++count;
|
|
3257
3341
|
}
|
|
3342
|
+
ASSERT_OK(iter->status());
|
|
3258
3343
|
ASSERT_EQ(kNumKeys, count);
|
|
3259
3344
|
}
|
|
3260
3345
|
|
|
@@ -3295,6 +3380,176 @@ TEST_F(DBIteratorTest, IteratorRefreshReturnSV) {
|
|
|
3295
3380
|
Close();
|
|
3296
3381
|
}
|
|
3297
3382
|
|
|
3383
|
+
TEST_F(DBIteratorTest, ErrorWhenReadFile) {
|
|
3384
|
+
// This is to test a bug that is fixed in
|
|
3385
|
+
// https://github.com/facebook/rocksdb/pull/11782.
|
|
3386
|
+
//
|
|
3387
|
+
// Ingest error when reading from a file, and
|
|
3388
|
+
// see if Iterator handles it correctly.
|
|
3389
|
+
Options opts = CurrentOptions();
|
|
3390
|
+
opts.num_levels = 7;
|
|
3391
|
+
opts.compression = kNoCompression;
|
|
3392
|
+
BlockBasedTableOptions bbto;
|
|
3393
|
+
// Always do I/O
|
|
3394
|
+
bbto.no_block_cache = true;
|
|
3395
|
+
opts.table_factory.reset(NewBlockBasedTableFactory(bbto));
|
|
3396
|
+
DestroyAndReopen(opts);
|
|
3397
|
+
|
|
3398
|
+
// Set up LSM
|
|
3399
|
+
// L5: F1 [key0, key99], F2 [key100, key199]
|
|
3400
|
+
// L6: F3 [key50, key149]
|
|
3401
|
+
Random rnd(301);
|
|
3402
|
+
const int kValLen = 100;
|
|
3403
|
+
for (int i = 50; i < 150; ++i) {
|
|
3404
|
+
ASSERT_OK(Put(Key(i), rnd.RandomString(kValLen)));
|
|
3405
|
+
}
|
|
3406
|
+
ASSERT_OK(Flush());
|
|
3407
|
+
MoveFilesToLevel(6);
|
|
3408
|
+
|
|
3409
|
+
std::vector<std::string> values;
|
|
3410
|
+
for (int i = 0; i < 100; ++i) {
|
|
3411
|
+
values.emplace_back(rnd.RandomString(kValLen));
|
|
3412
|
+
ASSERT_OK(Put(Key(i), values.back()));
|
|
3413
|
+
}
|
|
3414
|
+
ASSERT_OK(Flush());
|
|
3415
|
+
MoveFilesToLevel(5);
|
|
3416
|
+
|
|
3417
|
+
for (int i = 100; i < 200; ++i) {
|
|
3418
|
+
values.emplace_back(rnd.RandomString(kValLen));
|
|
3419
|
+
ASSERT_OK(Put(Key(i), values.back()));
|
|
3420
|
+
}
|
|
3421
|
+
ASSERT_OK(Flush());
|
|
3422
|
+
MoveFilesToLevel(5);
|
|
3423
|
+
|
|
3424
|
+
ASSERT_EQ(2, NumTableFilesAtLevel(5));
|
|
3425
|
+
ASSERT_EQ(1, NumTableFilesAtLevel(6));
|
|
3426
|
+
|
|
3427
|
+
std::vector<LiveFileMetaData> files;
|
|
3428
|
+
db_->GetLiveFilesMetaData(&files);
|
|
3429
|
+
// Get file names for F1, F2 and F3.
|
|
3430
|
+
// These are file names, not full paths.
|
|
3431
|
+
std::string f1, f2, f3;
|
|
3432
|
+
for (auto& file_meta : files) {
|
|
3433
|
+
if (file_meta.level == 6) {
|
|
3434
|
+
f3 = file_meta.name;
|
|
3435
|
+
} else {
|
|
3436
|
+
if (file_meta.smallestkey == Key(0)) {
|
|
3437
|
+
f1 = file_meta.name;
|
|
3438
|
+
} else {
|
|
3439
|
+
f2 = file_meta.name;
|
|
3440
|
+
}
|
|
3441
|
+
}
|
|
3442
|
+
}
|
|
3443
|
+
ASSERT_TRUE(!f1.empty());
|
|
3444
|
+
ASSERT_TRUE(!f2.empty());
|
|
3445
|
+
ASSERT_TRUE(!f3.empty());
|
|
3446
|
+
|
|
3447
|
+
std::string error_file;
|
|
3448
|
+
SyncPoint::GetInstance()->SetCallBack(
|
|
3449
|
+
"RandomAccessFileReader::Read::BeforeReturn",
|
|
3450
|
+
[&error_file](void* io_s_ptr) {
|
|
3451
|
+
auto p =
|
|
3452
|
+
reinterpret_cast<std::pair<std::string*, IOStatus*>*>(io_s_ptr);
|
|
3453
|
+
if (p->first->find(error_file) != std::string::npos) {
|
|
3454
|
+
*p->second = IOStatus::IOError();
|
|
3455
|
+
p->second->SetRetryable(true);
|
|
3456
|
+
}
|
|
3457
|
+
});
|
|
3458
|
+
SyncPoint::GetInstance()->EnableProcessing();
|
|
3459
|
+
// Error reading F1
|
|
3460
|
+
error_file = f1;
|
|
3461
|
+
std::unique_ptr<Iterator> iter{db_->NewIterator(ReadOptions())};
|
|
3462
|
+
iter->SeekToFirst();
|
|
3463
|
+
ASSERT_NOK(iter->status());
|
|
3464
|
+
ASSERT_TRUE(iter->status().IsIOError());
|
|
3465
|
+
// This does not require reading the first block.
|
|
3466
|
+
iter->Seek(Key(90));
|
|
3467
|
+
ASSERT_OK(iter->status());
|
|
3468
|
+
ASSERT_TRUE(iter->Valid());
|
|
3469
|
+
ASSERT_EQ(iter->value(), values[90]);
|
|
3470
|
+
// iter has ok status before this Seek.
|
|
3471
|
+
iter->Seek(Key(1));
|
|
3472
|
+
ASSERT_NOK(iter->status());
|
|
3473
|
+
ASSERT_TRUE(iter->status().IsIOError());
|
|
3474
|
+
|
|
3475
|
+
// Error reading F2
|
|
3476
|
+
error_file = f2;
|
|
3477
|
+
iter.reset(db_->NewIterator(ReadOptions()));
|
|
3478
|
+
iter->Seek(Key(99));
|
|
3479
|
+
ASSERT_OK(iter->status());
|
|
3480
|
+
ASSERT_TRUE(iter->Valid());
|
|
3481
|
+
ASSERT_EQ(iter->value(), values[99]);
|
|
3482
|
+
// Need to read from F2.
|
|
3483
|
+
iter->Next();
|
|
3484
|
+
ASSERT_NOK(iter->status());
|
|
3485
|
+
ASSERT_TRUE(iter->status().IsIOError());
|
|
3486
|
+
iter->Seek(Key(190));
|
|
3487
|
+
ASSERT_OK(iter->status());
|
|
3488
|
+
ASSERT_TRUE(iter->Valid());
|
|
3489
|
+
ASSERT_EQ(iter->value(), values[190]);
|
|
3490
|
+
// Seek for first key of F2.
|
|
3491
|
+
iter->Seek(Key(100));
|
|
3492
|
+
ASSERT_NOK(iter->status());
|
|
3493
|
+
ASSERT_TRUE(iter->status().IsIOError());
|
|
3494
|
+
iter->SeekToLast();
|
|
3495
|
+
ASSERT_OK(iter->status());
|
|
3496
|
+
ASSERT_TRUE(iter->Valid());
|
|
3497
|
+
ASSERT_EQ(iter->value(), values[199]);
|
|
3498
|
+
// SeekForPrev for first key of F2.
|
|
3499
|
+
iter->SeekForPrev(Key(100));
|
|
3500
|
+
ASSERT_NOK(iter->status());
|
|
3501
|
+
ASSERT_TRUE(iter->status().IsIOError());
|
|
3502
|
+
// Does not read first block (offset 0).
|
|
3503
|
+
iter->SeekForPrev(Key(98));
|
|
3504
|
+
ASSERT_OK(iter->status());
|
|
3505
|
+
ASSERT_TRUE(iter->Valid());
|
|
3506
|
+
ASSERT_EQ(iter->value(), values[98]);
|
|
3507
|
+
|
|
3508
|
+
// Error reading F3
|
|
3509
|
+
error_file = f3;
|
|
3510
|
+
iter.reset(db_->NewIterator(ReadOptions()));
|
|
3511
|
+
iter->SeekToFirst();
|
|
3512
|
+
ASSERT_NOK(iter->status());
|
|
3513
|
+
ASSERT_TRUE(iter->status().IsIOError());
|
|
3514
|
+
iter->Seek(Key(50));
|
|
3515
|
+
ASSERT_NOK(iter->status());
|
|
3516
|
+
ASSERT_TRUE(iter->status().IsIOError());
|
|
3517
|
+
iter->SeekForPrev(Key(50));
|
|
3518
|
+
ASSERT_NOK(iter->status());
|
|
3519
|
+
ASSERT_TRUE(iter->status().IsIOError());
|
|
3520
|
+
// Does not read file 3
|
|
3521
|
+
iter->Seek(Key(150));
|
|
3522
|
+
ASSERT_OK(iter->status());
|
|
3523
|
+
ASSERT_TRUE(iter->Valid());
|
|
3524
|
+
ASSERT_EQ(iter->value(), values[150]);
|
|
3525
|
+
|
|
3526
|
+
// Test when file read error occurs during Prev().
|
|
3527
|
+
// This requires returning an error when reading near the end of a file
|
|
3528
|
+
// instead of offset 0.
|
|
3529
|
+
SyncPoint::GetInstance()->ClearAllCallBacks();
|
|
3530
|
+
SyncPoint::GetInstance()->SetCallBack(
|
|
3531
|
+
"RandomAccessFileReader::Read::AnyOffset", [&f1](void* pair_ptr) {
|
|
3532
|
+
auto p =
|
|
3533
|
+
reinterpret_cast<std::pair<std::string*, IOStatus*>*>(pair_ptr);
|
|
3534
|
+
if (p->first->find(f1) != std::string::npos) {
|
|
3535
|
+
*p->second = IOStatus::IOError();
|
|
3536
|
+
p->second->SetRetryable(true);
|
|
3537
|
+
}
|
|
3538
|
+
});
|
|
3539
|
+
iter->SeekForPrev(Key(101));
|
|
3540
|
+
ASSERT_OK(iter->status());
|
|
3541
|
+
ASSERT_TRUE(iter->Valid());
|
|
3542
|
+
ASSERT_EQ(iter->value(), values[101]);
|
|
3543
|
+
// DBIter will not stop at Key(100) since it needs
|
|
3544
|
+
// to make sure the key it returns has the max sequence number for Key(100).
|
|
3545
|
+
// So it will call MergingIterator::Prev() which will read F1.
|
|
3546
|
+
iter->Prev();
|
|
3547
|
+
ASSERT_NOK(iter->status());
|
|
3548
|
+
ASSERT_TRUE(iter->status().IsIOError());
|
|
3549
|
+
SyncPoint::GetInstance()->DisableProcessing();
|
|
3550
|
+
iter->Reset();
|
|
3551
|
+
}
|
|
3552
|
+
|
|
3298
3553
|
} // namespace ROCKSDB_NAMESPACE
|
|
3299
3554
|
|
|
3300
3555
|
int main(int argc, char** argv) {
|
|
@@ -145,6 +145,41 @@ TEST_F(DBTestXactLogIterator, TransactionLogIteratorRace) {
|
|
|
145
145
|
} while (ChangeCompactOptions());
|
|
146
146
|
}
|
|
147
147
|
}
|
|
148
|
+
|
|
149
|
+
TEST_F(DBTestXactLogIterator, TransactionLogIteratorCheckWhenArchive) {
|
|
150
|
+
do {
|
|
151
|
+
ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->ClearTrace();
|
|
152
|
+
Options options = OptionsForLogIterTest();
|
|
153
|
+
DestroyAndReopen(options);
|
|
154
|
+
ColumnFamilyHandle* cf;
|
|
155
|
+
auto s = dbfull()->CreateColumnFamily(ColumnFamilyOptions(), "CF", &cf);
|
|
156
|
+
ASSERT_TRUE(s.ok());
|
|
157
|
+
|
|
158
|
+
ASSERT_OK(dbfull()->Put(WriteOptions(), cf, "key1", DummyString(1024)));
|
|
159
|
+
|
|
160
|
+
ASSERT_OK(dbfull()->Put(WriteOptions(), "key2", DummyString(1024)));
|
|
161
|
+
|
|
162
|
+
ASSERT_OK(dbfull()->Flush(FlushOptions()));
|
|
163
|
+
|
|
164
|
+
ASSERT_OK(dbfull()->Put(WriteOptions(), "key3", DummyString(1024)));
|
|
165
|
+
|
|
166
|
+
ASSERT_OK(dbfull()->Flush(FlushOptions()));
|
|
167
|
+
|
|
168
|
+
ASSERT_OK(dbfull()->Put(WriteOptions(), "key4", DummyString(1024)));
|
|
169
|
+
ASSERT_OK(dbfull()->Flush(FlushOptions()));
|
|
170
|
+
|
|
171
|
+
ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->SetCallBack(
|
|
172
|
+
"WalManager::PurgeObsoleteFiles:1", [&](void*) {
|
|
173
|
+
auto iter = OpenTransactionLogIter(0);
|
|
174
|
+
ExpectRecords(4, iter);
|
|
175
|
+
});
|
|
176
|
+
|
|
177
|
+
ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->EnableProcessing();
|
|
178
|
+
ASSERT_OK(dbfull()->Flush(FlushOptions(), cf));
|
|
179
|
+
|
|
180
|
+
delete cf;
|
|
181
|
+
} while (ChangeCompactOptions());
|
|
182
|
+
}
|
|
148
183
|
#endif
|
|
149
184
|
|
|
150
185
|
TEST_F(DBTestXactLogIterator, TransactionLogIteratorStallAtLastRecord) {
|