@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
|
@@ -188,40 +188,6 @@ TEST_F(DBPropertiesTest, GetAggregatedIntPropertyTest) {
|
|
|
188
188
|
}
|
|
189
189
|
|
|
190
190
|
namespace {
|
|
191
|
-
void ResetTableProperties(TableProperties* tp) {
|
|
192
|
-
tp->data_size = 0;
|
|
193
|
-
tp->index_size = 0;
|
|
194
|
-
tp->filter_size = 0;
|
|
195
|
-
tp->raw_key_size = 0;
|
|
196
|
-
tp->raw_value_size = 0;
|
|
197
|
-
tp->num_data_blocks = 0;
|
|
198
|
-
tp->num_entries = 0;
|
|
199
|
-
tp->num_deletions = 0;
|
|
200
|
-
tp->num_merge_operands = 0;
|
|
201
|
-
tp->num_range_deletions = 0;
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
void ParseTablePropertiesString(std::string tp_string, TableProperties* tp) {
|
|
205
|
-
double dummy_double;
|
|
206
|
-
std::replace(tp_string.begin(), tp_string.end(), ';', ' ');
|
|
207
|
-
std::replace(tp_string.begin(), tp_string.end(), '=', ' ');
|
|
208
|
-
ResetTableProperties(tp);
|
|
209
|
-
sscanf(tp_string.c_str(),
|
|
210
|
-
"# data blocks %" SCNu64 " # entries %" SCNu64 " # deletions %" SCNu64
|
|
211
|
-
" # merge operands %" SCNu64 " # range deletions %" SCNu64
|
|
212
|
-
" raw key size %" SCNu64
|
|
213
|
-
" raw average key size %lf "
|
|
214
|
-
" raw value size %" SCNu64
|
|
215
|
-
" raw average value size %lf "
|
|
216
|
-
" data block size %" SCNu64 " index block size (user-key? %" SCNu64
|
|
217
|
-
", delta-value? %" SCNu64 ") %" SCNu64 " filter block size %" SCNu64,
|
|
218
|
-
&tp->num_data_blocks, &tp->num_entries, &tp->num_deletions,
|
|
219
|
-
&tp->num_merge_operands, &tp->num_range_deletions, &tp->raw_key_size,
|
|
220
|
-
&dummy_double, &tp->raw_value_size, &dummy_double, &tp->data_size,
|
|
221
|
-
&tp->index_key_is_user_key, &tp->index_value_is_delta_encoded,
|
|
222
|
-
&tp->index_size, &tp->filter_size);
|
|
223
|
-
}
|
|
224
|
-
|
|
225
191
|
void VerifySimilar(uint64_t a, uint64_t b, double bias) {
|
|
226
192
|
ASSERT_EQ(a == 0U, b == 0U);
|
|
227
193
|
if (a == 0) {
|
|
@@ -1749,14 +1715,35 @@ TEST_F(DBPropertiesTest, SstFilesSize) {
|
|
|
1749
1715
|
ASSERT_OK(Delete("key" + std::to_string(i)));
|
|
1750
1716
|
}
|
|
1751
1717
|
ASSERT_OK(Flush());
|
|
1718
|
+
|
|
1752
1719
|
uint64_t sst_size;
|
|
1753
|
-
|
|
1754
|
-
|
|
1720
|
+
ASSERT_TRUE(
|
|
1721
|
+
db_->GetIntProperty(DB::Properties::kTotalSstFilesSize, &sst_size));
|
|
1755
1722
|
ASSERT_GT(sst_size, 0);
|
|
1756
1723
|
listener->size_before_compaction = sst_size;
|
|
1724
|
+
|
|
1725
|
+
uint64_t obsolete_sst_size;
|
|
1726
|
+
ASSERT_TRUE(db_->GetIntProperty(DB::Properties::kObsoleteSstFilesSize,
|
|
1727
|
+
&obsolete_sst_size));
|
|
1728
|
+
ASSERT_EQ(obsolete_sst_size, 0);
|
|
1729
|
+
|
|
1730
|
+
// Hold files from being deleted so we can test property for size of obsolete
|
|
1731
|
+
// SST files.
|
|
1732
|
+
ASSERT_OK(db_->DisableFileDeletions());
|
|
1733
|
+
|
|
1757
1734
|
// Compact to clean all keys and trigger listener.
|
|
1758
1735
|
ASSERT_OK(db_->CompactRange(CompactRangeOptions(), nullptr, nullptr));
|
|
1759
1736
|
ASSERT_TRUE(listener->callback_triggered);
|
|
1737
|
+
|
|
1738
|
+
ASSERT_TRUE(db_->GetIntProperty(DB::Properties::kObsoleteSstFilesSize,
|
|
1739
|
+
&obsolete_sst_size));
|
|
1740
|
+
ASSERT_EQ(obsolete_sst_size, sst_size);
|
|
1741
|
+
|
|
1742
|
+
// Let the obsolete files be deleted.
|
|
1743
|
+
ASSERT_OK(db_->EnableFileDeletions());
|
|
1744
|
+
ASSERT_TRUE(db_->GetIntProperty(DB::Properties::kObsoleteSstFilesSize,
|
|
1745
|
+
&obsolete_sst_size));
|
|
1746
|
+
ASSERT_EQ(obsolete_sst_size, 0);
|
|
1760
1747
|
}
|
|
1761
1748
|
|
|
1762
1749
|
TEST_F(DBPropertiesTest, MinObsoleteSstNumberToKeep) {
|
|
@@ -2361,6 +2348,9 @@ TEST_F(DBPropertiesTest, TableMetaIndexKeys) {
|
|
|
2361
2348
|
EXPECT_EQ("rocksdb.hashindex.prefixes",
|
|
2362
2349
|
PopMetaIndexKey(meta_iter.get()));
|
|
2363
2350
|
}
|
|
2351
|
+
if (bbto->format_version >= 6) {
|
|
2352
|
+
EXPECT_EQ("rocksdb.index", PopMetaIndexKey(meta_iter.get()));
|
|
2353
|
+
}
|
|
2364
2354
|
}
|
|
2365
2355
|
EXPECT_EQ("rocksdb.properties", PopMetaIndexKey(meta_iter.get()));
|
|
2366
2356
|
EXPECT_EQ("NOT_FOUND", PopMetaIndexKey(meta_iter.get()));
|
|
@@ -682,6 +682,7 @@ TEST_F(DBRangeDelTest, TableEvictedDuringScan) {
|
|
|
682
682
|
// soon as its refcount drops to zero.
|
|
683
683
|
bbto.block_cache->EraseUnRefEntries();
|
|
684
684
|
}
|
|
685
|
+
ASSERT_OK(iter->status());
|
|
685
686
|
ASSERT_EQ(kNum, expected);
|
|
686
687
|
delete iter;
|
|
687
688
|
db_->ReleaseSnapshot(snapshot);
|
|
@@ -840,6 +841,7 @@ TEST_F(DBRangeDelTest, IteratorRemovesCoveredKeys) {
|
|
|
840
841
|
++expected;
|
|
841
842
|
}
|
|
842
843
|
}
|
|
844
|
+
ASSERT_OK(iter->status());
|
|
843
845
|
ASSERT_EQ(kNum, expected);
|
|
844
846
|
delete iter;
|
|
845
847
|
}
|
|
@@ -908,6 +910,7 @@ TEST_F(DBRangeDelTest, IteratorIgnoresRangeDeletions) {
|
|
|
908
910
|
std::string key;
|
|
909
911
|
ASSERT_EQ(expected[i], iter->key());
|
|
910
912
|
}
|
|
913
|
+
ASSERT_OK(iter->status());
|
|
911
914
|
ASSERT_EQ(3, i);
|
|
912
915
|
delete iter;
|
|
913
916
|
db_->ReleaseSnapshot(snapshot);
|
|
@@ -1382,6 +1385,7 @@ TEST_F(DBRangeDelTest, UntruncatedTombstoneDoesNotDeleteNewerKey) {
|
|
|
1382
1385
|
for (; iter->Valid(); iter->Next()) {
|
|
1383
1386
|
++keys_found;
|
|
1384
1387
|
}
|
|
1388
|
+
EXPECT_OK(iter->status());
|
|
1385
1389
|
delete iter;
|
|
1386
1390
|
return keys_found;
|
|
1387
1391
|
};
|
|
@@ -1485,6 +1489,7 @@ TEST_F(DBRangeDelTest, DeletedMergeOperandReappearsIterPrev) {
|
|
|
1485
1489
|
for (; iter->Valid(); iter->Prev()) {
|
|
1486
1490
|
++keys_found;
|
|
1487
1491
|
}
|
|
1492
|
+
ASSERT_OK(iter->status());
|
|
1488
1493
|
delete iter;
|
|
1489
1494
|
ASSERT_EQ(kNumKeys, keys_found);
|
|
1490
1495
|
|
|
@@ -1519,6 +1524,7 @@ TEST_F(DBRangeDelTest, SnapshotPreventsDroppedKeys) {
|
|
|
1519
1524
|
|
|
1520
1525
|
iter->Next();
|
|
1521
1526
|
ASSERT_FALSE(iter->Valid());
|
|
1527
|
+
ASSERT_OK(iter->status());
|
|
1522
1528
|
|
|
1523
1529
|
delete iter;
|
|
1524
1530
|
db_->ReleaseSnapshot(snapshot);
|
|
@@ -1564,6 +1570,7 @@ TEST_F(DBRangeDelTest, SnapshotPreventsDroppedKeysInImmMemTables) {
|
|
|
1564
1570
|
|
|
1565
1571
|
iter->Next();
|
|
1566
1572
|
ASSERT_FALSE(iter->Valid());
|
|
1573
|
+
ASSERT_OK(iter->status());
|
|
1567
1574
|
}
|
|
1568
1575
|
|
|
1569
1576
|
TEST_F(DBRangeDelTest, RangeTombstoneWrittenToMinimalSsts) {
|
|
@@ -1690,6 +1697,8 @@ TEST_F(DBRangeDelTest, LevelCompactOutputCutAtRangeTombstoneForTtlFiles) {
|
|
|
1690
1697
|
ASSERT_EQ("0,1,0,1", FilesPerLevel());
|
|
1691
1698
|
|
|
1692
1699
|
env_->MockSleepForSeconds(20 * 60 * 60);
|
|
1700
|
+
// Prevent range tombstone from being dropped during compaction.
|
|
1701
|
+
const Snapshot* snapshot = db_->GetSnapshot();
|
|
1693
1702
|
ASSERT_OK(db_->DeleteRange(WriteOptions(), db_->DefaultColumnFamily(),
|
|
1694
1703
|
Key(11), Key(12)));
|
|
1695
1704
|
ASSERT_OK(Put(Key(0), rnd.RandomString(1 << 10)));
|
|
@@ -1703,6 +1712,7 @@ TEST_F(DBRangeDelTest, LevelCompactOutputCutAtRangeTombstoneForTtlFiles) {
|
|
|
1703
1712
|
// File 1: (qualified for TTL): Key(5) - Key(10)
|
|
1704
1713
|
// File 1: DeleteRange [11, 12)
|
|
1705
1714
|
ASSERT_EQ("0,3,0,1", FilesPerLevel());
|
|
1715
|
+
db_->ReleaseSnapshot(snapshot);
|
|
1706
1716
|
}
|
|
1707
1717
|
|
|
1708
1718
|
// Test SST partitioner cut after every single key
|
|
@@ -1975,6 +1985,7 @@ TEST_F(DBRangeDelTest, IteratorRefresh) {
|
|
|
1975
1985
|
ASSERT_EQ("key1", iter->key());
|
|
1976
1986
|
iter->Next();
|
|
1977
1987
|
ASSERT_FALSE(iter->Valid());
|
|
1988
|
+
ASSERT_OK(iter->status());
|
|
1978
1989
|
|
|
1979
1990
|
delete iter;
|
|
1980
1991
|
}
|
|
@@ -3405,6 +3416,359 @@ TEST_F(DBRangeDelTest, AddRangeDelsSingleUserKeyTombstoneOnlyFile) {
|
|
|
3405
3416
|
db_->ReleaseSnapshot(snapshot1);
|
|
3406
3417
|
}
|
|
3407
3418
|
|
|
3419
|
+
TEST_F(DBRangeDelTest, NonBottommostCompactionDropRangetombstone) {
|
|
3420
|
+
// L0: file 1: [DeleteRange[4, 5)], file 2: [3, 6, DeleteRange[8, 9)]
|
|
3421
|
+
// L6 file 1: [2, 3], file 2: [7, 8]
|
|
3422
|
+
// When compacting the two L0 files to L1, the compaction is non-bottommost
|
|
3423
|
+
// since the compaction key range overlaps with L6 file 1. The range tombstone
|
|
3424
|
+
// [4, 5) should be dropped since it does not overlap with any file in lower
|
|
3425
|
+
// levels. The range tombstone [8, 9) should not be dropped.
|
|
3426
|
+
Options opts = CurrentOptions();
|
|
3427
|
+
opts.level_compaction_dynamic_level_bytes = false;
|
|
3428
|
+
opts.num_levels = 7;
|
|
3429
|
+
opts.level0_file_num_compaction_trigger = 3;
|
|
3430
|
+
DestroyAndReopen(opts);
|
|
3431
|
+
|
|
3432
|
+
Random rnd(301);
|
|
3433
|
+
// L6 file 1
|
|
3434
|
+
ASSERT_OK(Put(Key(2), rnd.RandomString(100)));
|
|
3435
|
+
ASSERT_OK(Put(Key(3), rnd.RandomString(100)));
|
|
3436
|
+
ASSERT_OK(Flush());
|
|
3437
|
+
// L6 file 2
|
|
3438
|
+
ASSERT_OK(Put(Key(7), rnd.RandomString(100)));
|
|
3439
|
+
ASSERT_OK(Put(Key(8), rnd.RandomString(100)));
|
|
3440
|
+
ASSERT_OK(Flush());
|
|
3441
|
+
MoveFilesToLevel(6);
|
|
3442
|
+
ASSERT_EQ(NumTableFilesAtLevel(6), 2);
|
|
3443
|
+
// L0 file 1
|
|
3444
|
+
ASSERT_OK(db_->DeleteRange(WriteOptions(), db_->DefaultColumnFamily(), Key(4),
|
|
3445
|
+
Key(5)));
|
|
3446
|
+
ASSERT_OK(Flush());
|
|
3447
|
+
// L0 file 2
|
|
3448
|
+
ASSERT_OK(Put(Key(3), rnd.RandomString(100)));
|
|
3449
|
+
ASSERT_OK(Put(Key(6), rnd.RandomString(100)));
|
|
3450
|
+
ASSERT_OK(db_->DeleteRange(WriteOptions(), db_->DefaultColumnFamily(), Key(8),
|
|
3451
|
+
Key(9)));
|
|
3452
|
+
ASSERT_OK(Flush());
|
|
3453
|
+
// nothing is dropped during flush
|
|
3454
|
+
std::string property;
|
|
3455
|
+
db_->GetProperty(DB::Properties::kAggregatedTableProperties, &property);
|
|
3456
|
+
TableProperties output_tp;
|
|
3457
|
+
ParseTablePropertiesString(property, &output_tp);
|
|
3458
|
+
ASSERT_EQ(output_tp.num_range_deletions, 2);
|
|
3459
|
+
// Add one more L0 file to trigger L0->L1 compaction
|
|
3460
|
+
ASSERT_OK(Put(Key(1), rnd.RandomString(100)));
|
|
3461
|
+
ASSERT_OK(Put(Key(9), rnd.RandomString(100)));
|
|
3462
|
+
ASSERT_OK(Flush());
|
|
3463
|
+
ASSERT_OK(dbfull()->TEST_WaitForCompact());
|
|
3464
|
+
ASSERT_EQ(NumTableFilesAtLevel(1), 1);
|
|
3465
|
+
db_->GetProperty(DB::Properties::kAggregatedTableProperties, &property);
|
|
3466
|
+
ParseTablePropertiesString(property, &output_tp);
|
|
3467
|
+
ASSERT_EQ(output_tp.num_range_deletions, 1);
|
|
3468
|
+
|
|
3469
|
+
// Now create a snapshot protected range tombstone [4, 5), it should not
|
|
3470
|
+
// be dropped.
|
|
3471
|
+
ASSERT_OK(Put(Key(4), rnd.RandomString(100)));
|
|
3472
|
+
const Snapshot* snapshot = db_->GetSnapshot();
|
|
3473
|
+
ASSERT_OK(db_->DeleteRange(WriteOptions(), db_->DefaultColumnFamily(), Key(4),
|
|
3474
|
+
Key(5)));
|
|
3475
|
+
CompactRangeOptions cro;
|
|
3476
|
+
cro.bottommost_level_compaction = BottommostLevelCompaction::kForceOptimized;
|
|
3477
|
+
ASSERT_OK(db_->CompactRange(cro, nullptr, nullptr));
|
|
3478
|
+
// All compacted to L6
|
|
3479
|
+
ASSERT_EQ("0,0,0,0,0,0,1", FilesPerLevel(0));
|
|
3480
|
+
db_->GetProperty(DB::Properties::kAggregatedTableProperties, &property);
|
|
3481
|
+
ParseTablePropertiesString(property, &output_tp);
|
|
3482
|
+
ASSERT_EQ(output_tp.num_range_deletions, 1);
|
|
3483
|
+
db_->ReleaseSnapshot(snapshot);
|
|
3484
|
+
}
|
|
3485
|
+
|
|
3486
|
+
TEST_F(DBRangeDelTest, MemtableMaxRangeDeletions) {
|
|
3487
|
+
// Tests option `memtable_max_range_deletions`.
|
|
3488
|
+
Options options = CurrentOptions();
|
|
3489
|
+
options.level_compaction_dynamic_file_size = false;
|
|
3490
|
+
options.memtable_max_range_deletions = 50;
|
|
3491
|
+
options.level0_file_num_compaction_trigger = 5;
|
|
3492
|
+
DestroyAndReopen(options);
|
|
3493
|
+
|
|
3494
|
+
for (int i = 0; i < 50; ++i) {
|
|
3495
|
+
// Intentionally delete overlapping ranges to see if the option
|
|
3496
|
+
// checks number of range tombstone fragments instead.
|
|
3497
|
+
ASSERT_OK(Put(Key(i), "val1"));
|
|
3498
|
+
ASSERT_OK(Put(Key(i + 1), "val2"));
|
|
3499
|
+
ASSERT_OK(db_->DeleteRange(WriteOptions(), db_->DefaultColumnFamily(),
|
|
3500
|
+
Key(i), Key(i + 2)));
|
|
3501
|
+
ASSERT_OK(dbfull()->TEST_WaitForFlushMemTable());
|
|
3502
|
+
ASSERT_EQ(0, NumTableFilesAtLevel(0));
|
|
3503
|
+
}
|
|
3504
|
+
// One more write to trigger flush.
|
|
3505
|
+
ASSERT_OK(Put(Key(50), "val"));
|
|
3506
|
+
ASSERT_OK(dbfull()->TEST_WaitForFlushMemTable());
|
|
3507
|
+
ASSERT_EQ(1, NumTableFilesAtLevel(0));
|
|
3508
|
+
|
|
3509
|
+
// This should take effect for the next new memtable.
|
|
3510
|
+
ASSERT_OK(db_->SetOptions({{"memtable_max_range_deletions", "1"}}));
|
|
3511
|
+
ASSERT_OK(Flush());
|
|
3512
|
+
ASSERT_EQ(2, NumTableFilesAtLevel(0));
|
|
3513
|
+
ASSERT_OK(db_->DeleteRange(WriteOptions(), db_->DefaultColumnFamily(),
|
|
3514
|
+
Key(50), Key(100)));
|
|
3515
|
+
ASSERT_OK(dbfull()->TEST_WaitForFlushMemTable());
|
|
3516
|
+
ASSERT_EQ(2, NumTableFilesAtLevel(0));
|
|
3517
|
+
// One more write to trigger flush.
|
|
3518
|
+
ASSERT_OK(Put(Key(50), "new val"));
|
|
3519
|
+
ASSERT_OK(dbfull()->TEST_WaitForFlushMemTable());
|
|
3520
|
+
ASSERT_EQ(3, NumTableFilesAtLevel(0));
|
|
3521
|
+
}
|
|
3522
|
+
|
|
3523
|
+
TEST_F(DBRangeDelTest, RangeDelReseekAfterFileReadError) {
|
|
3524
|
+
// This is to test a bug that is fixed in
|
|
3525
|
+
// https://github.com/facebook/rocksdb/pull/11786.
|
|
3526
|
+
Options opts = CurrentOptions();
|
|
3527
|
+
opts.num_levels = 7;
|
|
3528
|
+
|
|
3529
|
+
// Set up LSM
|
|
3530
|
+
//
|
|
3531
|
+
// L4: F1: [key1] F2: [key2]
|
|
3532
|
+
// L5: F3:[DeleteRange(key3, key6)]
|
|
3533
|
+
// L6: F4:[key3, key6]
|
|
3534
|
+
// Will inject error when reading from F2.
|
|
3535
|
+
// SeekToFirst() should land on key1.
|
|
3536
|
+
// Next() should encounter error when reading from F2,
|
|
3537
|
+
// and range del reseek should not reset this status.
|
|
3538
|
+
Random rnd(301);
|
|
3539
|
+
// L6
|
|
3540
|
+
ASSERT_OK(Put(Key(3), rnd.RandomString(100)));
|
|
3541
|
+
ASSERT_OK(Put(Key(6), rnd.RandomString(100)));
|
|
3542
|
+
ASSERT_OK(Flush());
|
|
3543
|
+
MoveFilesToLevel(6);
|
|
3544
|
+
// L5
|
|
3545
|
+
ASSERT_OK(db_->DeleteRange(WriteOptions(), db_->DefaultColumnFamily(), Key(3),
|
|
3546
|
+
Key(6)));
|
|
3547
|
+
ASSERT_OK(Flush());
|
|
3548
|
+
MoveFilesToLevel(5);
|
|
3549
|
+
// L4
|
|
3550
|
+
ASSERT_OK(Put(Key(2), rnd.RandomString(100)));
|
|
3551
|
+
ASSERT_OK(Flush());
|
|
3552
|
+
MoveFilesToLevel(4);
|
|
3553
|
+
std::string fname;
|
|
3554
|
+
std::vector<LiveFileMetaData> live_files;
|
|
3555
|
+
db_->GetLiveFilesMetaData(&live_files);
|
|
3556
|
+
for (auto& meta : live_files) {
|
|
3557
|
+
if (meta.level == 4) {
|
|
3558
|
+
fname = meta.name;
|
|
3559
|
+
break;
|
|
3560
|
+
}
|
|
3561
|
+
}
|
|
3562
|
+
ASSERT_TRUE(!fname.empty());
|
|
3563
|
+
ASSERT_OK(Put(Key(1), rnd.RandomString(100)));
|
|
3564
|
+
ASSERT_OK(Flush());
|
|
3565
|
+
MoveFilesToLevel(4);
|
|
3566
|
+
|
|
3567
|
+
SyncPoint::GetInstance()->SetCallBack(
|
|
3568
|
+
"RandomAccessFileReader::Read::BeforeReturn", [&fname](void* pair_ptr) {
|
|
3569
|
+
auto p =
|
|
3570
|
+
reinterpret_cast<std::pair<std::string*, IOStatus*>*>(pair_ptr);
|
|
3571
|
+
if (p->first->find(fname) != std::string::npos) {
|
|
3572
|
+
*p->second = IOStatus::IOError();
|
|
3573
|
+
p->second->SetRetryable(true);
|
|
3574
|
+
}
|
|
3575
|
+
});
|
|
3576
|
+
SyncPoint::GetInstance()->EnableProcessing();
|
|
3577
|
+
std::unique_ptr<Iterator> iter{db_->NewIterator(ReadOptions())};
|
|
3578
|
+
iter->SeekToFirst();
|
|
3579
|
+
ASSERT_TRUE(iter->Valid());
|
|
3580
|
+
ASSERT_OK(iter->status());
|
|
3581
|
+
ASSERT_EQ(iter->key(), Key(1));
|
|
3582
|
+
iter->Next();
|
|
3583
|
+
ASSERT_FALSE(iter->Valid());
|
|
3584
|
+
ASSERT_NOK(iter->status());
|
|
3585
|
+
ASSERT_TRUE(iter->status().IsIOError());
|
|
3586
|
+
iter.reset();
|
|
3587
|
+
SyncPoint::GetInstance()->ClearAllCallBacks();
|
|
3588
|
+
SyncPoint::GetInstance()->DisableProcessing();
|
|
3589
|
+
|
|
3590
|
+
// Reverse scan
|
|
3591
|
+
// LSM setup
|
|
3592
|
+
// L4: F1: [key2] F2: [key7, key8]
|
|
3593
|
+
// L5: F3:[[key3, key6)]
|
|
3594
|
+
// L6: F4:[key1, key5]
|
|
3595
|
+
// Ingest error when read from F1.
|
|
3596
|
+
// SeekToLast() should land on key8.
|
|
3597
|
+
// During Prev(), MergingIterator will encounter error when reading from F1
|
|
3598
|
+
// and do a range del reseek (it sees key5 covered by a range tombstone).
|
|
3599
|
+
DestroyAndReopen(opts);
|
|
3600
|
+
// L6
|
|
3601
|
+
ASSERT_OK(Put(Key(1), rnd.RandomString(100)));
|
|
3602
|
+
ASSERT_OK(Put(Key(5), rnd.RandomString(100)));
|
|
3603
|
+
ASSERT_OK(Flush());
|
|
3604
|
+
MoveFilesToLevel(6);
|
|
3605
|
+
// L5
|
|
3606
|
+
ASSERT_OK(db_->DeleteRange(WriteOptions(), db_->DefaultColumnFamily(), Key(3),
|
|
3607
|
+
Key(6)));
|
|
3608
|
+
ASSERT_OK(Flush());
|
|
3609
|
+
MoveFilesToLevel(5);
|
|
3610
|
+
// L4
|
|
3611
|
+
ASSERT_OK(Put(Key(2), rnd.RandomString(100)));
|
|
3612
|
+
ASSERT_OK(Flush());
|
|
3613
|
+
MoveFilesToLevel(4);
|
|
3614
|
+
live_files.clear();
|
|
3615
|
+
db_->GetLiveFilesMetaData(&live_files);
|
|
3616
|
+
for (auto& meta : live_files) {
|
|
3617
|
+
if (meta.level == 4) {
|
|
3618
|
+
fname = meta.name;
|
|
3619
|
+
break;
|
|
3620
|
+
}
|
|
3621
|
+
}
|
|
3622
|
+
ASSERT_TRUE(!fname.empty());
|
|
3623
|
+
ASSERT_OK(Put(Key(7), rnd.RandomString(100)));
|
|
3624
|
+
ASSERT_OK(Put(Key(8), rnd.RandomString(100)));
|
|
3625
|
+
ASSERT_OK(Flush());
|
|
3626
|
+
MoveFilesToLevel(4);
|
|
3627
|
+
|
|
3628
|
+
SyncPoint::GetInstance()->SetCallBack(
|
|
3629
|
+
"RandomAccessFileReader::Read::AnyOffset", [&fname](void* pair_ptr) {
|
|
3630
|
+
auto p =
|
|
3631
|
+
reinterpret_cast<std::pair<std::string*, IOStatus*>*>(pair_ptr);
|
|
3632
|
+
if (p->first->find(fname) != std::string::npos) {
|
|
3633
|
+
*p->second = IOStatus::IOError();
|
|
3634
|
+
p->second->SetRetryable(true);
|
|
3635
|
+
}
|
|
3636
|
+
});
|
|
3637
|
+
SyncPoint::GetInstance()->EnableProcessing();
|
|
3638
|
+
iter.reset(db_->NewIterator(ReadOptions()));
|
|
3639
|
+
iter->SeekToLast();
|
|
3640
|
+
ASSERT_TRUE(iter->Valid());
|
|
3641
|
+
ASSERT_OK(iter->status());
|
|
3642
|
+
ASSERT_EQ(iter->key(), Key(8));
|
|
3643
|
+
// Note that for reverse scan, DBIter will need to ensure
|
|
3644
|
+
// the key it returns is the one with the highest sequence number.
|
|
3645
|
+
// To return key7, it internally calls MergingIterator::Prev()
|
|
3646
|
+
// until it reaches a previous user key.
|
|
3647
|
+
iter->Prev();
|
|
3648
|
+
ASSERT_FALSE(iter->Valid());
|
|
3649
|
+
ASSERT_NOK(iter->status());
|
|
3650
|
+
ASSERT_TRUE(iter->status().IsIOError());
|
|
3651
|
+
|
|
3652
|
+
iter.reset();
|
|
3653
|
+
}
|
|
3654
|
+
|
|
3655
|
+
TEST_F(DBRangeDelTest, ReleaseSnapshotAfterIteratorCreation) {
|
|
3656
|
+
// Test that range tombstone code path in LevelIterator
|
|
3657
|
+
// does access ReadOptions::snapshot after Iterator creation.
|
|
3658
|
+
//
|
|
3659
|
+
// Put some data in L2 so that range tombstone in L1 will not be dropped.
|
|
3660
|
+
ASSERT_OK(Put(Key(0), "v"));
|
|
3661
|
+
ASSERT_OK(Put(Key(100), "v"));
|
|
3662
|
+
ASSERT_OK(Flush());
|
|
3663
|
+
MoveFilesToLevel(2);
|
|
3664
|
+
|
|
3665
|
+
// two L1 file with range del
|
|
3666
|
+
ASSERT_OK(Put(Key(1), "v"));
|
|
3667
|
+
ASSERT_OK(Put(Key(2), "v"));
|
|
3668
|
+
ASSERT_OK(db_->DeleteRange(WriteOptions(), db_->DefaultColumnFamily(), Key(3),
|
|
3669
|
+
Key(4)));
|
|
3670
|
+
ASSERT_OK(Flush());
|
|
3671
|
+
MoveFilesToLevel(1);
|
|
3672
|
+
|
|
3673
|
+
ASSERT_OK(Put(Key(5), "v"));
|
|
3674
|
+
ASSERT_OK(Put(Key(6), "v"));
|
|
3675
|
+
ASSERT_OK(db_->DeleteRange(WriteOptions(), db_->DefaultColumnFamily(), Key(5),
|
|
3676
|
+
Key(6)));
|
|
3677
|
+
ASSERT_OK(Flush());
|
|
3678
|
+
MoveFilesToLevel(1);
|
|
3679
|
+
|
|
3680
|
+
ASSERT_EQ(2, NumTableFilesAtLevel(1));
|
|
3681
|
+
ASSERT_EQ(1, NumTableFilesAtLevel(2));
|
|
3682
|
+
|
|
3683
|
+
const Snapshot* snapshot = db_->GetSnapshot();
|
|
3684
|
+
ReadOptions ro;
|
|
3685
|
+
ro.snapshot = snapshot;
|
|
3686
|
+
|
|
3687
|
+
Iterator* iter = db_->NewIterator(ro);
|
|
3688
|
+
db_->ReleaseSnapshot(snapshot);
|
|
3689
|
+
|
|
3690
|
+
iter->Seek(Key(1));
|
|
3691
|
+
std::vector<int> expected_keys{1, 2, 6, 100};
|
|
3692
|
+
for (int i : expected_keys) {
|
|
3693
|
+
ASSERT_OK(iter->status());
|
|
3694
|
+
ASSERT_TRUE(iter->Valid());
|
|
3695
|
+
ASSERT_EQ(iter->key(), Key(i));
|
|
3696
|
+
iter->Next();
|
|
3697
|
+
}
|
|
3698
|
+
ASSERT_TRUE(!iter->Valid() && iter->status().ok());
|
|
3699
|
+
|
|
3700
|
+
delete iter;
|
|
3701
|
+
}
|
|
3702
|
+
|
|
3703
|
+
TEST_F(DBRangeDelTest, RefreshWithSnapshot) {
|
|
3704
|
+
ASSERT_OK(Put(Key(4), "4"));
|
|
3705
|
+
ASSERT_OK(Put(Key(6), "6"));
|
|
3706
|
+
const Snapshot* snapshot = db_->GetSnapshot();
|
|
3707
|
+
ASSERT_OK(db_->DeleteRange(WriteOptions(), db_->DefaultColumnFamily(), Key(3),
|
|
3708
|
+
Key(5)));
|
|
3709
|
+
|
|
3710
|
+
std::unique_ptr<Iterator> iter{db_->NewIterator(ReadOptions())};
|
|
3711
|
+
// Live Memtable
|
|
3712
|
+
iter->SeekToFirst();
|
|
3713
|
+
ASSERT_TRUE(iter->Valid());
|
|
3714
|
+
ASSERT_EQ(iter->key(), Key(6));
|
|
3715
|
+
ASSERT_OK(iter->Refresh(snapshot));
|
|
3716
|
+
iter->SeekToFirst();
|
|
3717
|
+
ASSERT_TRUE(iter->Valid());
|
|
3718
|
+
ASSERT_EQ(iter->key(), Key(4));
|
|
3719
|
+
// Immutable Memtable
|
|
3720
|
+
ASSERT_OK(dbfull()->TEST_SwitchMemtable());
|
|
3721
|
+
ASSERT_OK(iter->Refresh(nullptr));
|
|
3722
|
+
iter->SeekToFirst();
|
|
3723
|
+
ASSERT_TRUE(iter->Valid());
|
|
3724
|
+
ASSERT_EQ(iter->key(), Key(6));
|
|
3725
|
+
ASSERT_OK(iter->Refresh(snapshot));
|
|
3726
|
+
iter->SeekToFirst();
|
|
3727
|
+
ASSERT_TRUE(iter->Valid());
|
|
3728
|
+
ASSERT_EQ(iter->key(), Key(4));
|
|
3729
|
+
// L0
|
|
3730
|
+
ASSERT_OK(Flush());
|
|
3731
|
+
ASSERT_EQ(1, NumTableFilesAtLevel(0));
|
|
3732
|
+
ASSERT_OK(iter->Refresh(nullptr));
|
|
3733
|
+
iter->SeekToFirst();
|
|
3734
|
+
ASSERT_TRUE(iter->Valid());
|
|
3735
|
+
ASSERT_EQ(iter->key(), Key(6));
|
|
3736
|
+
ASSERT_OK(iter->Refresh(snapshot));
|
|
3737
|
+
iter->SeekToFirst();
|
|
3738
|
+
ASSERT_TRUE(iter->Valid());
|
|
3739
|
+
ASSERT_EQ(iter->key(), Key(4));
|
|
3740
|
+
// L1
|
|
3741
|
+
MoveFilesToLevel(1);
|
|
3742
|
+
ASSERT_EQ(1, NumTableFilesAtLevel(1));
|
|
3743
|
+
ASSERT_OK(iter->Refresh(nullptr));
|
|
3744
|
+
iter->SeekToFirst();
|
|
3745
|
+
ASSERT_TRUE(iter->Valid());
|
|
3746
|
+
ASSERT_EQ(iter->key(), Key(6));
|
|
3747
|
+
ASSERT_OK(iter->Refresh(snapshot));
|
|
3748
|
+
iter->SeekToFirst();
|
|
3749
|
+
ASSERT_TRUE(iter->Valid());
|
|
3750
|
+
ASSERT_EQ(iter->key(), Key(4));
|
|
3751
|
+
// L1 with two file.
|
|
3752
|
+
// Test that when LevelIterator enters a new file,
|
|
3753
|
+
// it remembers which snapshot sequence number to use.
|
|
3754
|
+
ASSERT_OK(Put(Key(2), "2"));
|
|
3755
|
+
ASSERT_OK(Flush());
|
|
3756
|
+
MoveFilesToLevel(1);
|
|
3757
|
+
ASSERT_EQ(2, NumTableFilesAtLevel(1));
|
|
3758
|
+
ASSERT_OK(iter->Refresh(nullptr));
|
|
3759
|
+
iter->SeekToFirst();
|
|
3760
|
+
ASSERT_TRUE(iter->Valid());
|
|
3761
|
+
// LevelIterator is at the first file
|
|
3762
|
+
ASSERT_EQ(iter->key(), Key(2));
|
|
3763
|
+
ASSERT_OK(iter->Refresh(snapshot));
|
|
3764
|
+
// Will enter the second file, and create a new range tombstone iterator.
|
|
3765
|
+
// It should use the snapshot sequence number.
|
|
3766
|
+
iter->SeekToFirst();
|
|
3767
|
+
ASSERT_TRUE(iter->Valid());
|
|
3768
|
+
ASSERT_EQ(iter->key(), Key(4));
|
|
3769
|
+
iter.reset();
|
|
3770
|
+
db_->ReleaseSnapshot(snapshot);
|
|
3771
|
+
}
|
|
3408
3772
|
} // namespace ROCKSDB_NAMESPACE
|
|
3409
3773
|
|
|
3410
3774
|
int main(int argc, char** argv) {
|
|
@@ -220,6 +220,7 @@ TEST_P(DBRateLimiterOnReadTest, Iterator) {
|
|
|
220
220
|
++expected;
|
|
221
221
|
}
|
|
222
222
|
}
|
|
223
|
+
ASSERT_OK(iter->status());
|
|
223
224
|
// Reverse scan does not read evenly (one block per iteration) due to
|
|
224
225
|
// descending seqno ordering, so wait until after the loop to check total.
|
|
225
226
|
ASSERT_EQ(expected, options_.rate_limiter->GetTotalRequests(Env::IO_USER));
|
|
@@ -235,9 +236,18 @@ TEST_P(DBRateLimiterOnReadTest, VerifyChecksum) {
|
|
|
235
236
|
ASSERT_EQ(0, options_.rate_limiter->GetTotalRequests(Env::IO_USER));
|
|
236
237
|
|
|
237
238
|
ASSERT_OK(db_->VerifyChecksum(GetReadOptions()));
|
|
238
|
-
//
|
|
239
|
-
//
|
|
240
|
-
|
|
239
|
+
// In BufferedIO,
|
|
240
|
+
// there are 7 reads per file, each of which will be rate-limited.
|
|
241
|
+
// During open: read footer, meta index block, properties block, index block.
|
|
242
|
+
// During actual checksum verification: read meta index block, verify checksum
|
|
243
|
+
// in meta blocks and verify checksum in file blocks.
|
|
244
|
+
//
|
|
245
|
+
// In DirectIO, where we support tail prefetching, during table open, we only
|
|
246
|
+
// do 1 read instead of 4 as described above. Actual checksum verification
|
|
247
|
+
// reads stay the same.
|
|
248
|
+
int num_read_per_file = (!use_direct_io_) ? 7 : 4;
|
|
249
|
+
int expected = kNumFiles * num_read_per_file;
|
|
250
|
+
|
|
241
251
|
ASSERT_EQ(expected, options_.rate_limiter->GetTotalRequests(Env::IO_USER));
|
|
242
252
|
}
|
|
243
253
|
|
|
@@ -240,6 +240,7 @@ TEST_F(DBReadOnlyTestWithTimestamp, IteratorAndGet) {
|
|
|
240
240
|
get_value_and_check(db_, read_opts, it->key(), it->value(),
|
|
241
241
|
write_timestamps[i]);
|
|
242
242
|
}
|
|
243
|
+
ASSERT_OK(it->status());
|
|
243
244
|
size_t expected_count = kMaxKey - start_keys[i] + 1;
|
|
244
245
|
ASSERT_EQ(expected_count, count);
|
|
245
246
|
|
|
@@ -252,6 +253,7 @@ TEST_F(DBReadOnlyTestWithTimestamp, IteratorAndGet) {
|
|
|
252
253
|
get_value_and_check(db_, read_opts, it->key(), it->value(),
|
|
253
254
|
write_timestamps[i]);
|
|
254
255
|
}
|
|
256
|
+
ASSERT_OK(it->status());
|
|
255
257
|
ASSERT_EQ(static_cast<size_t>(kMaxKey) - start_keys[i] + 1, count);
|
|
256
258
|
|
|
257
259
|
// SeekToFirst()/SeekToLast() with lower/upper bounds.
|
|
@@ -273,6 +275,7 @@ TEST_F(DBReadOnlyTestWithTimestamp, IteratorAndGet) {
|
|
|
273
275
|
get_value_and_check(db_, read_opts, it->key(), it->value(),
|
|
274
276
|
write_timestamps[i]);
|
|
275
277
|
}
|
|
278
|
+
ASSERT_OK(it->status());
|
|
276
279
|
ASSERT_EQ(r - std::max(l, start_keys[i]), count);
|
|
277
280
|
|
|
278
281
|
for (it->SeekToLast(), key = std::min(r, kMaxKey + 1), count = 0;
|
|
@@ -282,6 +285,7 @@ TEST_F(DBReadOnlyTestWithTimestamp, IteratorAndGet) {
|
|
|
282
285
|
get_value_and_check(db_, read_opts, it->key(), it->value(),
|
|
283
286
|
write_timestamps[i]);
|
|
284
287
|
}
|
|
288
|
+
ASSERT_OK(it->status());
|
|
285
289
|
l += (kMaxKey / 100);
|
|
286
290
|
r -= (kMaxKey / 100);
|
|
287
291
|
}
|
|
@@ -328,6 +332,7 @@ TEST_F(DBReadOnlyTestWithTimestamp, Iterators) {
|
|
|
328
332
|
CheckIterUserEntry(iters[0], Key1(key), kTypeValue,
|
|
329
333
|
"value" + std::to_string(key), write_timestamp);
|
|
330
334
|
}
|
|
335
|
+
ASSERT_OK(iters[0]->status());
|
|
331
336
|
|
|
332
337
|
size_t expected_count = kMaxKey - 0 + 1;
|
|
333
338
|
ASSERT_EQ(expected_count, count);
|
|
@@ -336,6 +341,53 @@ TEST_F(DBReadOnlyTestWithTimestamp, Iterators) {
|
|
|
336
341
|
Close();
|
|
337
342
|
}
|
|
338
343
|
|
|
344
|
+
TEST_F(DBReadOnlyTestWithTimestamp, FullHistoryTsLowSanityCheckFail) {
|
|
345
|
+
Options options = CurrentOptions();
|
|
346
|
+
options.env = env_;
|
|
347
|
+
options.comparator = test::BytewiseComparatorWithU64TsWrapper();
|
|
348
|
+
// Use UDT in memtable only feature for this test, so we can control that
|
|
349
|
+
// newly set `full_history_ts_low` collapse history when Flush happens.
|
|
350
|
+
options.persist_user_defined_timestamps = false;
|
|
351
|
+
options.allow_concurrent_memtable_write = false;
|
|
352
|
+
DestroyAndReopen(options);
|
|
353
|
+
|
|
354
|
+
std::string write_ts;
|
|
355
|
+
PutFixed64(&write_ts, 1);
|
|
356
|
+
ASSERT_OK(db_->Put(WriteOptions(), "foo", write_ts, "val1"));
|
|
357
|
+
|
|
358
|
+
std::string full_history_ts_low;
|
|
359
|
+
PutFixed64(&full_history_ts_low, 3);
|
|
360
|
+
ASSERT_OK(db_->IncreaseFullHistoryTsLow(db_->DefaultColumnFamily(),
|
|
361
|
+
full_history_ts_low));
|
|
362
|
+
ASSERT_OK(Flush(0));
|
|
363
|
+
|
|
364
|
+
// Reopen the database in read only mode to test its timestamp support.
|
|
365
|
+
Close();
|
|
366
|
+
ASSERT_OK(ReadOnlyReopen(options));
|
|
367
|
+
|
|
368
|
+
// Reading below full_history_ts_low fails a sanity check.
|
|
369
|
+
std::string read_ts;
|
|
370
|
+
PutFixed64(&read_ts, 2);
|
|
371
|
+
Slice read_ts_slice = read_ts;
|
|
372
|
+
ReadOptions read_opts;
|
|
373
|
+
read_opts.timestamp = &read_ts_slice;
|
|
374
|
+
|
|
375
|
+
// Get()
|
|
376
|
+
std::string value;
|
|
377
|
+
ASSERT_TRUE(db_->Get(read_opts, "foo", &value).IsInvalidArgument());
|
|
378
|
+
// NewIterator()
|
|
379
|
+
std::unique_ptr<Iterator> iter(
|
|
380
|
+
db_->NewIterator(read_opts, db_->DefaultColumnFamily()));
|
|
381
|
+
ASSERT_TRUE(iter->status().IsInvalidArgument());
|
|
382
|
+
|
|
383
|
+
// NewIterators()
|
|
384
|
+
std::vector<ColumnFamilyHandle*> cfhs = {db_->DefaultColumnFamily()};
|
|
385
|
+
std::vector<Iterator*> iterators;
|
|
386
|
+
ASSERT_TRUE(
|
|
387
|
+
db_->NewIterators(read_opts, cfhs, &iterators).IsInvalidArgument());
|
|
388
|
+
Close();
|
|
389
|
+
}
|
|
390
|
+
|
|
339
391
|
TEST_F(DBReadOnlyTestWithTimestamp, IteratorsReadTimestampSizeMismatch) {
|
|
340
392
|
const int kNumKeysPerFile = 128;
|
|
341
393
|
const uint64_t kMaxKey = 1024;
|