@nxtedition/rocksdb 13.5.7 → 13.5.9
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 +248 -70
- package/binding.gyp +2 -2
- package/deps/rocksdb/rocksdb/BUCK +12 -0
- package/deps/rocksdb/rocksdb/CMakeLists.txt +7 -0
- package/deps/rocksdb/rocksdb/Makefile +28 -23
- package/deps/rocksdb/rocksdb/cache/cache.cc +0 -1
- package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +1 -2
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +43 -39
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +2 -0
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +0 -1
- package/deps/rocksdb/rocksdb/cache/lru_cache.cc +2 -3
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +2 -2
- package/deps/rocksdb/rocksdb/cache/secondary_cache.cc +1 -3
- package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +11 -1
- package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache_test.cc +13 -5
- package/deps/rocksdb/rocksdb/crash_test.mk +61 -15
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +136 -45
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +34 -16
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +10 -7
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +1 -2
- package/deps/rocksdb/rocksdb/db/blob/blob_file_meta.h +1 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +12 -9
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +3 -4
- package/deps/rocksdb/rocksdb/db/blob/blob_source.cc +2 -2
- package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +3 -4
- package/deps/rocksdb/rocksdb/db/builder.cc +22 -8
- package/deps/rocksdb/rocksdb/db/builder.h +5 -4
- package/deps/rocksdb/rocksdb/db/c.cc +556 -15
- package/deps/rocksdb/rocksdb/db/c_test.c +133 -12
- package/deps/rocksdb/rocksdb/db/column_family.cc +114 -50
- package/deps/rocksdb/rocksdb/db/column_family.h +53 -36
- package/deps/rocksdb/rocksdb/db/column_family_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/compact_files_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +95 -70
- package/deps/rocksdb/rocksdb/db/compaction/compaction.h +71 -51
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +7 -86
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +26 -68
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +0 -122
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +453 -258
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +117 -92
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +38 -38
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +24 -17
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +34 -45
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +32 -31
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +12 -3
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +1 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +2 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +10 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +2 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +82 -34
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +267 -179
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +4 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +273 -89
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +300 -14
- package/deps/rocksdb/rocksdb/db/compaction/compaction_state.cc +4 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_state.h +2 -2
- package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.cc +28 -23
- package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +69 -51
- package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +522 -245
- package/deps/rocksdb/rocksdb/db/convenience.cc +15 -4
- package/deps/rocksdb/rocksdb/db/corruption_test.cc +1 -3
- package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +0 -2
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +196 -17
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +74 -62
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +48 -0
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +682 -250
- package/deps/rocksdb/rocksdb/db/db_dynamic_level_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/db_encryption_test.cc +3 -4
- package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +11 -16
- package/deps/rocksdb/rocksdb/db/db_flush_test.cc +57 -0
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +2 -2
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +1 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +540 -490
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +347 -188
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +584 -217
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +13 -9
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +5 -7
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +40 -36
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_follower.cc +1 -3
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +751 -372
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +35 -32
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +24 -2
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +125 -63
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +2 -2
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +311 -196
- package/deps/rocksdb/rocksdb/db/db_io_failure_test.cc +15 -5
- package/deps/rocksdb/rocksdb/db/db_iter.cc +42 -29
- package/deps/rocksdb/rocksdb/db/db_iter.h +96 -31
- package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +3 -4
- package/deps/rocksdb/rocksdb/db/db_iter_test.cc +168 -228
- package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +454 -0
- package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +8 -8
- package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +90 -0
- package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +60 -2
- package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +7 -3
- package/deps/rocksdb/rocksdb/db/db_options_test.cc +85 -27
- package/deps/rocksdb/rocksdb/db/db_properties_test.cc +3 -1
- package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +0 -2
- package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +114 -2
- package/deps/rocksdb/rocksdb/db/db_sst_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +51 -3
- package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/db_test.cc +325 -18
- package/deps/rocksdb/rocksdb/db/db_test2.cc +644 -20
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +14 -6
- package/deps/rocksdb/rocksdb/db/db_test_util.h +9 -0
- package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +64 -45
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +203 -14
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +259 -30
- package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/db_write_test.cc +75 -1
- package/deps/rocksdb/rocksdb/db/dbformat.h +70 -6
- package/deps/rocksdb/rocksdb/db/deletefile_test.cc +0 -190
- package/deps/rocksdb/rocksdb/db/error_handler.cc +22 -7
- package/deps/rocksdb/rocksdb/db/error_handler.h +16 -1
- package/deps/rocksdb/rocksdb/db/event_helpers.cc +41 -26
- package/deps/rocksdb/rocksdb/db/experimental.cc +4 -3
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +464 -78
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +166 -69
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +54 -25
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +1 -3
- package/deps/rocksdb/rocksdb/db/flush_job.cc +98 -81
- package/deps/rocksdb/rocksdb/db/flush_job.h +4 -9
- package/deps/rocksdb/rocksdb/db/flush_job_test.cc +80 -84
- package/deps/rocksdb/rocksdb/db/forward_iterator.cc +1 -1
- package/deps/rocksdb/rocksdb/db/forward_iterator.h +2 -2
- package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +12 -19
- package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +0 -2
- package/deps/rocksdb/rocksdb/db/internal_stats.cc +41 -15
- package/deps/rocksdb/rocksdb/db/internal_stats.h +63 -52
- package/deps/rocksdb/rocksdb/db/job_context.h +59 -24
- package/deps/rocksdb/rocksdb/db/listener_test.cc +69 -10
- package/deps/rocksdb/rocksdb/db/log_format.h +11 -2
- package/deps/rocksdb/rocksdb/db/log_reader.cc +147 -34
- package/deps/rocksdb/rocksdb/db/log_reader.h +40 -11
- package/deps/rocksdb/rocksdb/db/log_test.cc +16 -3
- package/deps/rocksdb/rocksdb/db/log_writer.cc +102 -55
- package/deps/rocksdb/rocksdb/db/log_writer.h +21 -2
- package/deps/rocksdb/rocksdb/db/malloc_stats.h +0 -2
- package/deps/rocksdb/rocksdb/db/memtable.cc +16 -47
- package/deps/rocksdb/rocksdb/db/memtable.h +76 -12
- package/deps/rocksdb/rocksdb/db/memtable_list.cc +23 -20
- package/deps/rocksdb/rocksdb/db/memtable_list.h +9 -11
- package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +18 -37
- package/deps/rocksdb/rocksdb/db/merge_context.h +2 -1
- package/deps/rocksdb/rocksdb/db/merge_test.cc +8 -0
- package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +3 -5
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.cc +15 -7
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.h +6 -3
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler_test.cc +22 -4
- package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +41 -1
- package/deps/rocksdb/rocksdb/db/prefix_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/repair.cc +29 -34
- package/deps/rocksdb/rocksdb/db/repair_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +14 -15
- package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.cc +1 -3
- package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.h +47 -1
- package/deps/rocksdb/rocksdb/db/table_cache.cc +3 -3
- package/deps/rocksdb/rocksdb/db/transaction_log_impl.cc +1 -3
- package/deps/rocksdb/rocksdb/db/transaction_log_impl.h +2 -1
- package/deps/rocksdb/rocksdb/db/version_builder.cc +2 -2
- package/deps/rocksdb/rocksdb/db/version_edit.cc +8 -37
- package/deps/rocksdb/rocksdb/db/version_edit.h +32 -1
- package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +26 -18
- package/deps/rocksdb/rocksdb/db/version_edit_handler.h +7 -5
- package/deps/rocksdb/rocksdb/db/version_set.cc +282 -197
- package/deps/rocksdb/rocksdb/db/version_set.h +54 -57
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +28 -35
- package/deps/rocksdb/rocksdb/db/version_util.h +2 -3
- package/deps/rocksdb/rocksdb/db/wal_manager.cc +3 -2
- package/deps/rocksdb/rocksdb/db/wal_manager.h +0 -1
- package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/wide/wide_columns.cc +1 -0
- package/deps/rocksdb/rocksdb/db/write_batch.cc +22 -8
- package/deps/rocksdb/rocksdb/db/write_batch_internal.h +5 -4
- package/deps/rocksdb/rocksdb/db/write_batch_test.cc +7 -6
- package/deps/rocksdb/rocksdb/db/write_callback_test.cc +3 -4
- package/deps/rocksdb/rocksdb/db/write_thread.h +3 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +13 -5
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +9 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compaction_service.h +39 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compression_manager.h +65 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +45 -22
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +7 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +22 -5
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_table_properties_collector.h +28 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +143 -38
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +4 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +80 -32
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.h +51 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +23 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +305 -15
- package/deps/rocksdb/rocksdb/env/env.cc +32 -2
- package/deps/rocksdb/rocksdb/env/env_encryption.cc +0 -2
- package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +2 -4
- package/deps/rocksdb/rocksdb/env/env_posix.cc +4 -2
- package/deps/rocksdb/rocksdb/env/env_test.cc +0 -1
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +20 -11
- package/deps/rocksdb/rocksdb/env/fs_readonly.h +0 -2
- package/deps/rocksdb/rocksdb/env/fs_remap.cc +0 -2
- package/deps/rocksdb/rocksdb/env/fs_remap.h +0 -2
- package/deps/rocksdb/rocksdb/env/io_posix.cc +6 -4
- package/deps/rocksdb/rocksdb/env/io_posix.h +3 -2
- package/deps/rocksdb/rocksdb/env/mock_env.cc +0 -1
- package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +2 -2
- package/deps/rocksdb/rocksdb/file/delete_scheduler.h +0 -2
- package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +0 -2
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +30 -21
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +16 -0
- package/deps/rocksdb/rocksdb/file/file_util.cc +32 -14
- package/deps/rocksdb/rocksdb/file/file_util.h +22 -5
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +229 -76
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +21 -12
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +10 -7
- package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +12 -8
- package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.cc +1 -2
- package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.h +0 -2
- package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +3 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_compression.h +598 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_iterator.h +36 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +70 -11
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +232 -11
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +3 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/compression_type.h +149 -15
- package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +17 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/data_structure.h +132 -34
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +158 -79
- package/deps/rocksdb/rocksdb/include/rocksdb/db_bench_tool.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/env.h +4 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/env_encryption.h +1 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/experimental.h +5 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/external_table.h +275 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/file_checksum.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +50 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +10 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +13 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/ldb_tool.h +0 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +5 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +13 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/multi_scan.h +237 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +230 -39
- package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +15 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/perf_level.h +31 -11
- package/deps/rocksdb/rocksdb/include/rocksdb/slice.h +41 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/slice_transform.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_dump_tool.h +0 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_reader.h +5 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +0 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +18 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/status.h +2 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/table.h +20 -8
- package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +19 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/tool_hooks.h +124 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/trace_record.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +26 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/backup_engine.h +55 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/debug.h +3 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/env_mirror.h +0 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +1 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/memory_util.h +0 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/object_registry.h +1 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_util.h +0 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/secondary_index.h +96 -8
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/secondary_index_faiss.h +117 -0
- package/deps/rocksdb/rocksdb/{utilities/secondary_index/faiss_ivf_index.h → include/rocksdb/utilities/secondary_index_simple.h} +11 -14
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +26 -11
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/table_properties_collectors.h +16 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +0 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +63 -7
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db_mutex.h +0 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +28 -12
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +3 -3
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +0 -2
- package/deps/rocksdb/rocksdb/logging/event_logger_test.cc +1 -2
- package/deps/rocksdb/rocksdb/memory/memory_allocator_impl.h +1 -1
- package/deps/rocksdb/rocksdb/memory/memory_allocator_test.cc +0 -1
- package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.cc +0 -1
- package/deps/rocksdb/rocksdb/memtable/memtablerep_bench.cc +3 -1
- package/deps/rocksdb/rocksdb/memtable/skiplist.h +2 -2
- package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +2 -4
- package/deps/rocksdb/rocksdb/memtable/vectorrep.cc +69 -8
- package/deps/rocksdb/rocksdb/memtable/wbwi_memtable.cc +32 -9
- package/deps/rocksdb/rocksdb/memtable/wbwi_memtable.h +58 -45
- package/deps/rocksdb/rocksdb/monitoring/histogram.h +1 -1
- package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +5 -3
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +5 -0
- package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +1 -1
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +3 -2
- package/deps/rocksdb/rocksdb/options/cf_options.cc +44 -13
- package/deps/rocksdb/rocksdb/options/cf_options.h +21 -7
- package/deps/rocksdb/rocksdb/options/configurable.cc +5 -5
- package/deps/rocksdb/rocksdb/options/configurable_test.h +1 -2
- package/deps/rocksdb/rocksdb/options/customizable.cc +0 -1
- package/deps/rocksdb/rocksdb/options/customizable_test.cc +4 -11
- package/deps/rocksdb/rocksdb/options/db_options.cc +18 -15
- package/deps/rocksdb/rocksdb/options/db_options.h +2 -2
- package/deps/rocksdb/rocksdb/options/options.cc +296 -305
- package/deps/rocksdb/rocksdb/options/options_helper.cc +188 -62
- package/deps/rocksdb/rocksdb/options/options_helper.h +3 -3
- package/deps/rocksdb/rocksdb/options/options_parser.cc +2 -4
- package/deps/rocksdb/rocksdb/options/options_parser.h +0 -1
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +17 -4
- package/deps/rocksdb/rocksdb/options/options_test.cc +101 -76
- package/deps/rocksdb/rocksdb/port/lang.h +2 -1
- package/deps/rocksdb/rocksdb/port/port_posix.cc +2 -1
- package/deps/rocksdb/rocksdb/port/stack_trace.cc +5 -4
- package/deps/rocksdb/rocksdb/port/win/env_win.cc +3 -2
- package/deps/rocksdb/rocksdb/port/win/xpress_win.cc +99 -1
- package/deps/rocksdb/rocksdb/port/win/xpress_win.h +6 -0
- package/deps/rocksdb/rocksdb/src.mk +17 -11
- package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.h +0 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +1094 -929
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +6 -19
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +76 -22
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +2 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +221 -131
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +12 -9
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +23 -24
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +38 -38
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +7 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_cache.cc +5 -5
- package/deps/rocksdb/rocksdb/table/block_based/block_cache.h +10 -12
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +6 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +35 -43
- package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +1 -2
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +0 -4
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy_internal.h +0 -1
- package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +3 -3
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +3 -3
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +4 -4
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +4 -5
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +4 -4
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +37 -35
- package/deps/rocksdb/rocksdb/table/block_fetcher.h +11 -7
- package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +4 -3
- package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.cc +31 -5
- package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.h +2 -1
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.h +0 -1
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +0 -1
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +0 -1
- package/deps/rocksdb/rocksdb/table/external_table.cc +483 -0
- package/deps/rocksdb/rocksdb/table/format.cc +62 -44
- package/deps/rocksdb/rocksdb/table/format.h +35 -12
- package/deps/rocksdb/rocksdb/table/internal_iterator.h +3 -13
- package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +8 -0
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +6 -0
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +150 -141
- package/deps/rocksdb/rocksdb/table/meta_blocks.h +5 -0
- package/deps/rocksdb/rocksdb/table/multiget_context.h +3 -2
- package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +8 -0
- package/deps/rocksdb/rocksdb/table/plain/plain_table_index.cc +0 -1
- package/deps/rocksdb/rocksdb/table/plain/plain_table_index.h +0 -2
- package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.h +0 -2
- package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +0 -1
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +6 -6
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +0 -1
- package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +86 -7
- package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +88 -2
- package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +0 -1
- package/deps/rocksdb/rocksdb/table/table_builder.h +10 -1
- package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +3 -2
- package/deps/rocksdb/rocksdb/table/table_test.cc +899 -22
- package/deps/rocksdb/rocksdb/test_util/testutil.cc +3 -4
- package/deps/rocksdb/rocksdb/test_util/testutil.h +132 -1
- package/deps/rocksdb/rocksdb/test_util/transaction_test_util.cc +0 -1
- package/deps/rocksdb/rocksdb/test_util/transaction_test_util.h +0 -2
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +163 -77
- package/deps/rocksdb/rocksdb/tools/db_bench_tool_test.cc +0 -2
- package/deps/rocksdb/rocksdb/tools/db_repl_stress.cc +0 -1
- package/deps/rocksdb/rocksdb/tools/dump/db_dump_tool.cc +0 -1
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +120 -52
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +1 -0
- package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +1 -1
- package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +0 -2
- package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.cc +2 -2
- package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.h +0 -2
- package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +2 -1
- package/deps/rocksdb/rocksdb/tools/tool_hooks.cc +94 -0
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +0 -1
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.h +0 -1
- package/deps/rocksdb/rocksdb/trace_replay/io_tracer.cc +1 -1
- package/deps/rocksdb/rocksdb/trace_replay/io_tracer_test.cc +2 -1
- package/deps/rocksdb/rocksdb/trace_replay/trace_replay.cc +3 -5
- package/deps/rocksdb/rocksdb/util/async_file_reader.cc +1 -1
- package/deps/rocksdb/rocksdb/util/async_file_reader.h +15 -8
- package/deps/rocksdb/rocksdb/util/auto_skip_compressor.cc +131 -0
- package/deps/rocksdb/rocksdb/util/auto_skip_compressor.h +90 -0
- package/deps/rocksdb/rocksdb/util/autovector.h +1 -1
- package/deps/rocksdb/rocksdb/util/autovector_test.cc +2 -2
- package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +0 -2
- package/deps/rocksdb/rocksdb/util/compression.cc +936 -4
- package/deps/rocksdb/rocksdb/util/compression.h +348 -232
- package/deps/rocksdb/rocksdb/util/compression_test.cc +229 -0
- package/deps/rocksdb/rocksdb/util/crc32c_arm64.cc +10 -10
- package/deps/rocksdb/rocksdb/util/crc32c_ppc.c +1 -0
- package/deps/rocksdb/rocksdb/util/data_structure.cc +2 -0
- package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +1 -3
- package/deps/rocksdb/rocksdb/util/ppc-opcode.h +5 -5
- package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.cc +108 -0
- package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.h +67 -0
- package/deps/rocksdb/rocksdb/util/slice_test.cc +83 -0
- package/deps/rocksdb/rocksdb/util/string_util.cc +0 -2
- package/deps/rocksdb/rocksdb/util/string_util.h +10 -0
- package/deps/rocksdb/rocksdb/util/thread_operation.h +2 -1
- package/deps/rocksdb/rocksdb/util/udt_util.cc +18 -5
- package/deps/rocksdb/rocksdb/util/udt_util.h +10 -7
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +650 -154
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +438 -144
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.h +0 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_gc_stats.h +0 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +16 -17
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +2 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl_filesnapshot.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +0 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +7 -8
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +4 -3
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.h +0 -1
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +0 -48
- package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.h +0 -1
- package/deps/rocksdb/rocksdb/utilities/debug.cc +7 -14
- package/deps/rocksdb/rocksdb/utilities/env_mirror.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/env_mirror_test.cc +0 -2
- package/deps/rocksdb/rocksdb/utilities/env_timed.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/env_timed_test.cc +0 -2
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +5 -3
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +10 -9
- package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/memory/memory_util.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/memory_allocators.h +1 -0
- package/deps/rocksdb/rocksdb/utilities/object_registry_test.cc +0 -2
- package/deps/rocksdb/rocksdb/utilities/options/options_util.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.h +0 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.h +0 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.h +0 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table.h +0 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_evictable.h +0 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/lrulist.h +0 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.h +0 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.h +0 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.h +0 -2
- package/deps/rocksdb/rocksdb/utilities/secondary_index/faiss_ivf_index.cc +183 -32
- package/deps/rocksdb/rocksdb/utilities/secondary_index/faiss_ivf_index_test.cc +258 -12
- package/deps/rocksdb/rocksdb/utilities/secondary_index/secondary_index_helper.h +33 -0
- package/deps/rocksdb/rocksdb/utilities/secondary_index/secondary_index_iterator.cc +99 -0
- package/deps/rocksdb/rocksdb/utilities/secondary_index/secondary_index_mixin.h +280 -120
- package/deps/rocksdb/rocksdb/utilities/secondary_index/simple_secondary_index.cc +79 -0
- package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.cc +52 -16
- package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.h +10 -6
- package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector_test.cc +55 -0
- package/deps/rocksdb/rocksdb/utilities/trace/replayer_impl.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/lock_manager.cc +0 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/lock_manager.h +0 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.cc +37 -12
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.h +2 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.cc +0 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_tracker.cc +0 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/db.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/dbt.cc +2 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.h +0 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +1 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +36 -10
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +5 -7
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.cc +4 -5
- package/deps/rocksdb/rocksdb/utilities/transactions/snapshot_checker.cc +1 -4
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +1 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_db_mutex_impl.cc +0 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_db_mutex_impl.h +0 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +1118 -37
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +4 -7
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.cc +0 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.h +0 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +3 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +0 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +1 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.h +1 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +0 -3
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +125 -127
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +45 -23
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +54 -22
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +477 -58
- package/deps/rocksdb/rocksdb.gyp +9 -4
- package/index.js +50 -9
- package/package.json +8 -1
- package/prebuilds/darwin-arm64/@nxtedition+rocksdb.node +0 -0
- package/prebuilds/linux-x64/@nxtedition+rocksdb.node +0 -0
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
|
|
12
12
|
#include "cache/cache_reservation_manager.h"
|
|
13
13
|
#include "db/forward_iterator.h"
|
|
14
|
+
#include "env/fs_readonly.h"
|
|
14
15
|
#include "env/mock_env.h"
|
|
15
16
|
#include "port/lang.h"
|
|
16
17
|
#include "rocksdb/cache.h"
|
|
@@ -122,7 +123,6 @@ DBTestBase::~DBTestBase() {
|
|
|
122
123
|
}
|
|
123
124
|
|
|
124
125
|
bool DBTestBase::ShouldSkipOptions(int option_config, int skip_mask) {
|
|
125
|
-
|
|
126
126
|
if ((skip_mask & kSkipUniversalCompaction) &&
|
|
127
127
|
(option_config == kUniversalCompaction ||
|
|
128
128
|
option_config == kUniversalCompactionMultiLevel ||
|
|
@@ -592,7 +592,6 @@ Options DBTestBase::GetOptions(
|
|
|
592
592
|
options_override.level_compaction_dynamic_level_bytes;
|
|
593
593
|
options.env = env_;
|
|
594
594
|
options.create_if_missing = true;
|
|
595
|
-
options.fail_if_options_file_error = true;
|
|
596
595
|
return options;
|
|
597
596
|
}
|
|
598
597
|
|
|
@@ -717,6 +716,17 @@ Status DBTestBase::ReadOnlyReopen(const Options& options) {
|
|
|
717
716
|
return DB::OpenForReadOnly(options, dbname_, &db_);
|
|
718
717
|
}
|
|
719
718
|
|
|
719
|
+
Status DBTestBase::EnforcedReadOnlyReopen(const Options& options) {
|
|
720
|
+
Close();
|
|
721
|
+
Options options_copy = options;
|
|
722
|
+
MaybeInstallTimeElapseOnlySleep(options_copy);
|
|
723
|
+
auto fs_read_only =
|
|
724
|
+
std::make_shared<ReadOnlyFileSystem>(env_->GetFileSystem());
|
|
725
|
+
env_read_only_ = std::make_shared<CompositeEnvWrapper>(env_, fs_read_only);
|
|
726
|
+
options_copy.env = env_read_only_.get();
|
|
727
|
+
return DB::OpenForReadOnly(options_copy, dbname_, &db_);
|
|
728
|
+
}
|
|
729
|
+
|
|
720
730
|
Status DBTestBase::TryReopen(const Options& options) {
|
|
721
731
|
Close();
|
|
722
732
|
last_options_.table_factory.reset();
|
|
@@ -1208,7 +1218,6 @@ std::string DBTestBase::FilesPerLevel(int cf) {
|
|
|
1208
1218
|
return result;
|
|
1209
1219
|
}
|
|
1210
1220
|
|
|
1211
|
-
|
|
1212
1221
|
std::vector<uint64_t> DBTestBase::GetBlobFileNumbers() {
|
|
1213
1222
|
VersionSet* const versions = dbfull()->GetVersionSet();
|
|
1214
1223
|
assert(versions);
|
|
@@ -1667,7 +1676,7 @@ void DBTestBase::VerifyDBFromMap(
|
|
|
1667
1676
|
data_iter = true_data.begin();
|
|
1668
1677
|
for (iter->SeekToFirst(); iter->Valid(); iter->Next(), ++data_iter) {
|
|
1669
1678
|
ASSERT_EQ(iter->key().ToString(), data_iter->first);
|
|
1670
|
-
|
|
1679
|
+
ASSERT_EQ(iter->value().ToString(), data_iter->second);
|
|
1671
1680
|
iter_cnt++;
|
|
1672
1681
|
total_reads++;
|
|
1673
1682
|
}
|
|
@@ -1683,7 +1692,7 @@ void DBTestBase::VerifyDBFromMap(
|
|
|
1683
1692
|
auto data_rev = true_data.rbegin();
|
|
1684
1693
|
for (iter->SeekToLast(); iter->Valid(); iter->Prev(), data_rev++) {
|
|
1685
1694
|
ASSERT_EQ(iter->key().ToString(), data_rev->first);
|
|
1686
|
-
|
|
1695
|
+
ASSERT_EQ(iter->value().ToString(), data_rev->second);
|
|
1687
1696
|
iter_cnt++;
|
|
1688
1697
|
total_reads++;
|
|
1689
1698
|
}
|
|
@@ -1765,7 +1774,6 @@ void DBTestBase::VerifyDBInternal(
|
|
|
1765
1774
|
iter->~InternalIterator();
|
|
1766
1775
|
}
|
|
1767
1776
|
|
|
1768
|
-
|
|
1769
1777
|
uint64_t DBTestBase::GetNumberOfSstFilesForColumnFamily(
|
|
1770
1778
|
DB* db, std::string column_family_name) {
|
|
1771
1779
|
std::vector<LiveFileMetaData> metadata;
|
|
@@ -1062,6 +1062,7 @@ class DBTestBase : public testing::Test {
|
|
|
1062
1062
|
MockEnv* mem_env_;
|
|
1063
1063
|
Env* encrypted_env_;
|
|
1064
1064
|
SpecialEnv* env_;
|
|
1065
|
+
std::shared_ptr<Env> env_read_only_;
|
|
1065
1066
|
std::shared_ptr<Env> env_guard_;
|
|
1066
1067
|
DB* db_;
|
|
1067
1068
|
std::vector<ColumnFamilyHandle*> handles_;
|
|
@@ -1106,6 +1107,11 @@ class DBTestBase : public testing::Test {
|
|
|
1106
1107
|
return std::string(buf);
|
|
1107
1108
|
}
|
|
1108
1109
|
|
|
1110
|
+
// Expects valid key created by Key().
|
|
1111
|
+
static int IdFromKey(const std::string& key) {
|
|
1112
|
+
return std::stoi(key.substr(3));
|
|
1113
|
+
}
|
|
1114
|
+
|
|
1109
1115
|
static bool ShouldSkipOptions(int option_config, int skip_mask = kNoSkip);
|
|
1110
1116
|
|
|
1111
1117
|
// Switch to a fresh database with the next option configuration to
|
|
@@ -1173,6 +1179,9 @@ class DBTestBase : public testing::Test {
|
|
|
1173
1179
|
|
|
1174
1180
|
Status ReadOnlyReopen(const Options& options);
|
|
1175
1181
|
|
|
1182
|
+
// With a filesystem wrapper that fails on attempted write
|
|
1183
|
+
Status EnforcedReadOnlyReopen(const Options& options);
|
|
1184
|
+
|
|
1176
1185
|
Status TryReopen(const Options& options);
|
|
1177
1186
|
|
|
1178
1187
|
bool IsDirectIOSupported();
|
|
@@ -1672,55 +1672,75 @@ TEST_P(DBTestUniversalCompaction, ConcurrentBottomPriLowPriCompactions) {
|
|
|
1672
1672
|
}
|
|
1673
1673
|
const int kNumFilesTrigger = 3;
|
|
1674
1674
|
Env::Default()->SetBackgroundThreads(1, Env::Priority::BOTTOM);
|
|
1675
|
-
Options options = CurrentOptions();
|
|
1676
|
-
options.compaction_style = kCompactionStyleUniversal;
|
|
1677
|
-
options.max_background_compactions = 2;
|
|
1678
|
-
options.num_levels = num_levels_;
|
|
1679
|
-
options.write_buffer_size = 100 << 10; // 100KB
|
|
1680
|
-
options.target_file_size_base = 32 << 10; // 32KB
|
|
1681
|
-
options.level0_file_num_compaction_trigger = kNumFilesTrigger;
|
|
1682
|
-
// Trigger compaction if size amplification exceeds 110%
|
|
1683
|
-
options.compaction_options_universal.max_size_amplification_percent = 110;
|
|
1684
|
-
DestroyAndReopen(options);
|
|
1685
|
-
|
|
1686
|
-
// Need to get a token to enable compaction parallelism up to
|
|
1687
|
-
// `max_background_compactions` jobs.
|
|
1688
|
-
auto pressure_token =
|
|
1689
|
-
dbfull()->TEST_write_controler().GetCompactionPressureToken();
|
|
1690
|
-
ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->LoadDependency(
|
|
1691
|
-
{// wait for the full compaction to be picked before adding files intended
|
|
1692
|
-
// for the second one.
|
|
1693
|
-
{"DBImpl::BackgroundCompaction:ForwardToBottomPriPool",
|
|
1694
|
-
"DBTestUniversalCompaction:ConcurrentBottomPriLowPriCompactions:0"},
|
|
1695
|
-
// the full (bottom-pri) compaction waits until a partial (low-pri)
|
|
1696
|
-
// compaction has started to verify they can run in parallel.
|
|
1697
|
-
{"DBImpl::BackgroundCompaction:NonTrivial",
|
|
1698
|
-
"DBImpl::BGWorkBottomCompaction"}});
|
|
1699
|
-
SyncPoint::GetInstance()->EnableProcessing();
|
|
1700
1675
|
|
|
1701
|
-
|
|
1702
|
-
|
|
1703
|
-
|
|
1704
|
-
|
|
1705
|
-
|
|
1706
|
-
|
|
1707
|
-
|
|
1708
|
-
|
|
1709
|
-
|
|
1676
|
+
for (bool universal_reduce_file_locking : {true, false}) {
|
|
1677
|
+
Options options = CurrentOptions();
|
|
1678
|
+
options.compaction_style = kCompactionStyleUniversal;
|
|
1679
|
+
options.compaction_options_universal.reduce_file_locking =
|
|
1680
|
+
universal_reduce_file_locking;
|
|
1681
|
+
options.max_background_compactions = 2;
|
|
1682
|
+
options.num_levels = num_levels_;
|
|
1683
|
+
options.write_buffer_size = 100 << 10; // 100KB
|
|
1684
|
+
options.target_file_size_base = 32 << 10; // 32KB
|
|
1685
|
+
options.level0_file_num_compaction_trigger = kNumFilesTrigger;
|
|
1686
|
+
// Trigger compaction if size amplification exceeds 110%
|
|
1687
|
+
options.compaction_options_universal.max_size_amplification_percent = 110;
|
|
1688
|
+
DestroyAndReopen(options);
|
|
1689
|
+
|
|
1690
|
+
// Need to get a token to enable compaction parallelism up to
|
|
1691
|
+
// `max_background_compactions` jobs.
|
|
1692
|
+
auto pressure_token =
|
|
1693
|
+
dbfull()->TEST_write_controler().GetCompactionPressureToken();
|
|
1694
|
+
if (universal_reduce_file_locking) {
|
|
1695
|
+
ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->LoadDependency(
|
|
1696
|
+
{// Wait for the full compaction to be repicked before adding files
|
|
1697
|
+
// intended for the second compaction.
|
|
1698
|
+
{"DBImpl::BackgroundCompaction():AfterPickCompactionBottomPri",
|
|
1699
|
+
"DBTestUniversalCompaction:ConcurrentBottomPriLowPriCompactions:0"},
|
|
1700
|
+
// Wait for the second compaction to run before running the full
|
|
1701
|
+
// compaction to verify they can run in parallel
|
|
1702
|
+
{"DBImpl::BackgroundCompaction:NonTrivial:BeforeRun",
|
|
1703
|
+
"DBImpl::BackgroundCompaction:NonTrivial:BeforeRunBottomPri"}});
|
|
1704
|
+
} else {
|
|
1705
|
+
ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->LoadDependency(
|
|
1706
|
+
{// Wait for the full compaction to be forwarded before adding files
|
|
1707
|
+
// intended for the second compaction.
|
|
1708
|
+
{"DBImpl::BackgroundCompaction:ForwardToBottomPriPool",
|
|
1709
|
+
"DBTestUniversalCompaction:ConcurrentBottomPriLowPriCompactions:0"},
|
|
1710
|
+
// Wait for the second compaction to run before running the full
|
|
1711
|
+
// compaction to verify they can run in parallel
|
|
1712
|
+
{"DBImpl::BackgroundCompaction:NonTrivial:BeforeRun",
|
|
1713
|
+
"DBImpl::BackgroundCompaction:NonTrivial:BeforeRunBottomPri"}});
|
|
1710
1714
|
}
|
|
1711
|
-
|
|
1712
|
-
|
|
1713
|
-
|
|
1715
|
+
|
|
1716
|
+
SyncPoint::GetInstance()->EnableProcessing();
|
|
1717
|
+
|
|
1718
|
+
Random rnd(301);
|
|
1719
|
+
for (int i = 0; i < 2; ++i) {
|
|
1720
|
+
for (int num = 0; num < kNumFilesTrigger; num++) {
|
|
1721
|
+
int key_idx = 0;
|
|
1722
|
+
GenerateNewFile(&rnd, &key_idx, true /* no_wait */);
|
|
1723
|
+
// use no_wait above because that one waits for flush and compaction. We
|
|
1724
|
+
// don't want to wait for compaction because the full compaction is
|
|
1725
|
+
// intentionally blocked while more files are flushed.
|
|
1726
|
+
ASSERT_OK(dbfull()->TEST_WaitForFlushMemTable());
|
|
1727
|
+
}
|
|
1728
|
+
if (i == 0) {
|
|
1729
|
+
TEST_SYNC_POINT(
|
|
1730
|
+
"DBTestUniversalCompaction:ConcurrentBottomPriLowPriCompactions:0");
|
|
1731
|
+
}
|
|
1714
1732
|
}
|
|
1733
|
+
ASSERT_OK(dbfull()->TEST_WaitForCompact());
|
|
1734
|
+
|
|
1735
|
+
// First compaction should output to bottom level. Second should output to
|
|
1736
|
+
// L0 since older L0 files pending compaction prevent it from being placed
|
|
1737
|
+
// lower.
|
|
1738
|
+
ASSERT_EQ(NumSortedRuns(), 2);
|
|
1739
|
+
ASSERT_GT(NumTableFilesAtLevel(0), 0);
|
|
1740
|
+
ASSERT_GT(NumTableFilesAtLevel(num_levels_ - 1), 0);
|
|
1741
|
+
ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->DisableProcessing();
|
|
1715
1742
|
}
|
|
1716
|
-
ASSERT_OK(dbfull()->TEST_WaitForCompact());
|
|
1717
1743
|
|
|
1718
|
-
// First compaction should output to bottom level. Second should output to L0
|
|
1719
|
-
// since older L0 files pending compaction prevent it from being placed lower.
|
|
1720
|
-
ASSERT_EQ(NumSortedRuns(), 2);
|
|
1721
|
-
ASSERT_GT(NumTableFilesAtLevel(0), 0);
|
|
1722
|
-
ASSERT_GT(NumTableFilesAtLevel(num_levels_ - 1), 0);
|
|
1723
|
-
ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->DisableProcessing();
|
|
1724
1744
|
Env::Default()->SetBackgroundThreads(0, Env::Priority::BOTTOM);
|
|
1725
1745
|
}
|
|
1726
1746
|
|
|
@@ -2369,7 +2389,6 @@ TEST_F(DBTestUniversalCompaction2, PeriodicCompactionOffpeak) {
|
|
|
2369
2389
|
|
|
2370
2390
|
} // namespace ROCKSDB_NAMESPACE
|
|
2371
2391
|
|
|
2372
|
-
|
|
2373
2392
|
int main(int argc, char** argv) {
|
|
2374
2393
|
ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
|
|
2375
2394
|
::testing::InitGoogleTest(&argc, argv);
|
|
@@ -1153,6 +1153,7 @@ TEST_F(DBWALTest, FullPurgePreservesRecycledLog) {
|
|
|
1153
1153
|
dbfull()->FindObsoleteFiles(&job_context, true /* force */);
|
|
1154
1154
|
dbfull()->TEST_UnlockMutex();
|
|
1155
1155
|
dbfull()->PurgeObsoleteFiles(job_context);
|
|
1156
|
+
job_context.Clean();
|
|
1156
1157
|
|
|
1157
1158
|
if (i == 0) {
|
|
1158
1159
|
ASSERT_OK(
|
|
@@ -1838,9 +1839,194 @@ class RecoveryTestHelper {
|
|
|
1838
1839
|
}
|
|
1839
1840
|
};
|
|
1840
1841
|
|
|
1841
|
-
|
|
1842
|
-
|
|
1843
|
-
|
|
1842
|
+
TEST_F(DBWALTest, TrackAndVerifyWALsRecycleWAL) {
|
|
1843
|
+
Options options = CurrentOptions();
|
|
1844
|
+
options.avoid_flush_during_shutdown = true;
|
|
1845
|
+
options.wal_recovery_mode = WALRecoveryMode::kPointInTimeRecovery;
|
|
1846
|
+
options.recycle_log_file_num = 1;
|
|
1847
|
+
options.track_and_verify_wals = true;
|
|
1848
|
+
|
|
1849
|
+
DestroyAndReopen(options);
|
|
1850
|
+
|
|
1851
|
+
ASSERT_OK(Put("key_ignore", "wal_to_recycle"));
|
|
1852
|
+
ASSERT_OK(Put("key_ignore1", "wal_to_recycle"));
|
|
1853
|
+
ASSERT_OK(Put("key_ignore2", "wal_to_recycle"));
|
|
1854
|
+
ASSERT_OK(Flush());
|
|
1855
|
+
|
|
1856
|
+
ASSERT_OK(Put("key_ignore", "wal_to_recycle"));
|
|
1857
|
+
ASSERT_OK(Put("key_ignore1", "wal_to_recycle"));
|
|
1858
|
+
ASSERT_OK(Put("key_ignore2", "wal_to_recycle"));
|
|
1859
|
+
ASSERT_OK(Flush());
|
|
1860
|
+
|
|
1861
|
+
// Stop background flush to avoid deleting any WAL
|
|
1862
|
+
options.env->SetBackgroundThreads(1, Env::HIGH);
|
|
1863
|
+
test::SleepingBackgroundTask sleeping_task;
|
|
1864
|
+
options.env->Schedule(&test::SleepingBackgroundTask::DoSleepTask,
|
|
1865
|
+
&sleeping_task, Env::Priority::HIGH);
|
|
1866
|
+
|
|
1867
|
+
// Recycle the first WAL
|
|
1868
|
+
ASSERT_OK(Put("key1", "old_value"));
|
|
1869
|
+
// Recycle the second WAL
|
|
1870
|
+
ASSERT_OK(dbfull()->TEST_SwitchWAL());
|
|
1871
|
+
ASSERT_OK(Put("key1", "new_value"));
|
|
1872
|
+
|
|
1873
|
+
// Create a WAL hole on sequence number by truncating the first WAL to 0 byte
|
|
1874
|
+
VectorWalPtr log_files;
|
|
1875
|
+
ASSERT_OK(db_->GetSortedWalFiles(log_files));
|
|
1876
|
+
ASSERT_EQ(log_files.size(), 2);
|
|
1877
|
+
std::string log_name = LogFileName(dbname_, log_files.front()->LogNumber());
|
|
1878
|
+
Close();
|
|
1879
|
+
// Drop `Put("key1", "old_value")` in the first WAL
|
|
1880
|
+
ASSERT_OK(test::TruncateFile(options.env, log_name, 0 /* new_length */));
|
|
1881
|
+
|
|
1882
|
+
Status s = DB::Open(options, dbname_, &db_);
|
|
1883
|
+
|
|
1884
|
+
ASSERT_OK(s);
|
|
1885
|
+
|
|
1886
|
+
ASSERT_EQ("wal_to_recycle", Get("key_ignore2"));
|
|
1887
|
+
ASSERT_EQ("NOT_FOUND", Get("key1"));
|
|
1888
|
+
|
|
1889
|
+
Close();
|
|
1890
|
+
}
|
|
1891
|
+
|
|
1892
|
+
class DBWALTrackAndVerifyWALsWithParamsTest
|
|
1893
|
+
: public DBWALTestBase,
|
|
1894
|
+
public ::testing::WithParamInterface<WALRecoveryMode> {
|
|
1895
|
+
public:
|
|
1896
|
+
DBWALTrackAndVerifyWALsWithParamsTest()
|
|
1897
|
+
: DBWALTestBase("/db_wal_track_and_verify_wals_with_params_test") {}
|
|
1898
|
+
};
|
|
1899
|
+
|
|
1900
|
+
INSTANTIATE_TEST_CASE_P(
|
|
1901
|
+
DBWALTrackAndVerifyWALsWithParamsTest,
|
|
1902
|
+
DBWALTrackAndVerifyWALsWithParamsTest,
|
|
1903
|
+
::testing::Values(WALRecoveryMode::kTolerateCorruptedTailRecords,
|
|
1904
|
+
WALRecoveryMode::kAbsoluteConsistency,
|
|
1905
|
+
WALRecoveryMode::kPointInTimeRecovery,
|
|
1906
|
+
WALRecoveryMode::kSkipAnyCorruptedRecords));
|
|
1907
|
+
|
|
1908
|
+
TEST_P(DBWALTrackAndVerifyWALsWithParamsTest, Basic) {
|
|
1909
|
+
Options options = CurrentOptions();
|
|
1910
|
+
options.avoid_flush_during_shutdown = true;
|
|
1911
|
+
options.track_and_verify_wals = true;
|
|
1912
|
+
options.wal_recovery_mode = GetParam();
|
|
1913
|
+
|
|
1914
|
+
// Stop background flush to avoid deleting any WAL
|
|
1915
|
+
options.env->SetBackgroundThreads(1, Env::HIGH);
|
|
1916
|
+
test::SleepingBackgroundTask sleeping_task;
|
|
1917
|
+
options.env->Schedule(&test::SleepingBackgroundTask::DoSleepTask,
|
|
1918
|
+
&sleeping_task, Env::Priority::HIGH);
|
|
1919
|
+
|
|
1920
|
+
for (int i = 0; i < 5; i++) {
|
|
1921
|
+
DestroyAndReopen(options);
|
|
1922
|
+
|
|
1923
|
+
ASSERT_OK(Put("key1", "old_value"));
|
|
1924
|
+
SequenceNumber last_seqno_recorded_in_fist_wal =
|
|
1925
|
+
dbfull()->GetLatestSequenceNumber();
|
|
1926
|
+
|
|
1927
|
+
ASSERT_OK(dbfull()->TEST_SwitchWAL());
|
|
1928
|
+
ASSERT_OK(Put("key1", "new_value"));
|
|
1929
|
+
|
|
1930
|
+
VectorWalPtr log_files;
|
|
1931
|
+
ASSERT_OK(db_->GetSortedWalFiles(log_files));
|
|
1932
|
+
ASSERT_EQ(log_files.size(), 2);
|
|
1933
|
+
uint64_t first_log_number = log_files.front()->LogNumber();
|
|
1934
|
+
std::string first_log_name = LogFileName(dbname_, first_log_number);
|
|
1935
|
+
std::string second_log_name =
|
|
1936
|
+
LogFileName(dbname_, log_files.back()->LogNumber());
|
|
1937
|
+
|
|
1938
|
+
if (i == 0) {
|
|
1939
|
+
// Delete the obsolete WAL and verify it will not be seen as a WAL hole
|
|
1940
|
+
sleeping_task.WakeUp();
|
|
1941
|
+
sleeping_task.WaitUntilDone();
|
|
1942
|
+
ASSERT_OK(dbfull()->TEST_WaitForBackgroundWork());
|
|
1943
|
+
// Stop background flush to avoid deleting any WAL
|
|
1944
|
+
sleeping_task.Reset();
|
|
1945
|
+
options.env->Schedule(&test::SleepingBackgroundTask::DoSleepTask,
|
|
1946
|
+
&sleeping_task, Env::Priority::HIGH);
|
|
1947
|
+
Close();
|
|
1948
|
+
} else if (i == 1) {
|
|
1949
|
+
// Create a WAL hole on WAL number by deleting the first WAL and verify
|
|
1950
|
+
// the hole will be detected
|
|
1951
|
+
Close();
|
|
1952
|
+
ASSERT_OK(options.env->DeleteFile(first_log_name));
|
|
1953
|
+
} else if (i == 2) {
|
|
1954
|
+
// Create a WAL hole on sequence number by truncating the first WAL and
|
|
1955
|
+
// verify the hole will be detected
|
|
1956
|
+
Close();
|
|
1957
|
+
ASSERT_OK(
|
|
1958
|
+
test::TruncateFile(options.env, first_log_name, 0 /* new_length */));
|
|
1959
|
+
} else if (i == 3) {
|
|
1960
|
+
// Create a WAL hole on size difference by truncating the first WAL and
|
|
1961
|
+
// mocking a correct sequence number to force triggering corruption based
|
|
1962
|
+
// on size instead of sequence number and verify the hole will be detected
|
|
1963
|
+
Close();
|
|
1964
|
+
ASSERT_OK(
|
|
1965
|
+
test::TruncateFile(options.env, first_log_name, 0 /* new_length */));
|
|
1966
|
+
SyncPoint::GetInstance()->SetCallBack(
|
|
1967
|
+
"DBImpl::UpdatePredecessorWALInfo", [&](void* arg) {
|
|
1968
|
+
std::pair<uint64_t, SequenceNumber*>* pair =
|
|
1969
|
+
static_cast<std::pair<uint64_t, SequenceNumber*>*>(arg);
|
|
1970
|
+
if (pair->first == first_log_number) {
|
|
1971
|
+
*(pair->second) = last_seqno_recorded_in_fist_wal;
|
|
1972
|
+
}
|
|
1973
|
+
});
|
|
1974
|
+
SyncPoint::GetInstance()->EnableProcessing();
|
|
1975
|
+
} else if (i == 4) {
|
|
1976
|
+
// Delete all wals and verify opening a DB with no WAL will be detected
|
|
1977
|
+
Close();
|
|
1978
|
+
ASSERT_OK(options.env->DeleteFile(first_log_name));
|
|
1979
|
+
ASSERT_OK(options.env->DeleteFile(second_log_name));
|
|
1980
|
+
}
|
|
1981
|
+
|
|
1982
|
+
Status s = DB::Open(options, dbname_, &db_);
|
|
1983
|
+
|
|
1984
|
+
if (i == 0) {
|
|
1985
|
+
ASSERT_OK(s);
|
|
1986
|
+
ASSERT_EQ("new_value", Get("key1"));
|
|
1987
|
+
continue;
|
|
1988
|
+
} else if (i == 3) {
|
|
1989
|
+
SyncPoint::GetInstance()->ClearAllCallBacks();
|
|
1990
|
+
SyncPoint::GetInstance()->DisableProcessing();
|
|
1991
|
+
} else if (i == 4) {
|
|
1992
|
+
ASSERT_TRUE(s.IsCorruption());
|
|
1993
|
+
ASSERT_TRUE(
|
|
1994
|
+
s.ToString().find("Opening an existing DB with no WAL files") !=
|
|
1995
|
+
std::string::npos);
|
|
1996
|
+
Close();
|
|
1997
|
+
continue;
|
|
1998
|
+
}
|
|
1999
|
+
|
|
2000
|
+
if (options.wal_recovery_mode == WALRecoveryMode::kPointInTimeRecovery) {
|
|
2001
|
+
ASSERT_OK(s);
|
|
2002
|
+
ASSERT_EQ("NOT_FOUND", Get("key1"));
|
|
2003
|
+
} else if (options.wal_recovery_mode ==
|
|
2004
|
+
WALRecoveryMode::kAbsoluteConsistency ||
|
|
2005
|
+
options.wal_recovery_mode ==
|
|
2006
|
+
WALRecoveryMode::kTolerateCorruptedTailRecords) {
|
|
2007
|
+
ASSERT_TRUE(s.IsCorruption());
|
|
2008
|
+
std::string msg;
|
|
2009
|
+
if (i == 1) {
|
|
2010
|
+
msg = "Missing WAL";
|
|
2011
|
+
} else if (i == 2) {
|
|
2012
|
+
msg = "Mismatched last sequence number recorded in the WAL";
|
|
2013
|
+
} else if (i == 3) {
|
|
2014
|
+
msg = "Mismatched size of the WAL";
|
|
2015
|
+
}
|
|
2016
|
+
ASSERT_TRUE(s.ToString().find(msg) != std::string::npos);
|
|
2017
|
+
} else {
|
|
2018
|
+
ASSERT_OK(s);
|
|
2019
|
+
ASSERT_EQ("new_value", Get("key1"));
|
|
2020
|
+
}
|
|
2021
|
+
|
|
2022
|
+
Close();
|
|
2023
|
+
}
|
|
2024
|
+
}
|
|
2025
|
+
|
|
2026
|
+
class DBWALTestWithParams
|
|
2027
|
+
: public DBWALTestBase,
|
|
2028
|
+
public ::testing::WithParamInterface<
|
|
2029
|
+
std::tuple<bool, int, int, CompressionType, bool>> {
|
|
1844
2030
|
public:
|
|
1845
2031
|
DBWALTestWithParams() : DBWALTestBase("/db_wal_test_with_params") {}
|
|
1846
2032
|
};
|
|
@@ -1853,7 +2039,8 @@ INSTANTIATE_TEST_CASE_P(
|
|
|
1853
2039
|
RecoveryTestHelper::kWALFilesCount,
|
|
1854
2040
|
1),
|
|
1855
2041
|
::testing::Values(CompressionType::kNoCompression,
|
|
1856
|
-
CompressionType::kZSTD)
|
|
2042
|
+
CompressionType::kZSTD),
|
|
2043
|
+
::testing::Bool()));
|
|
1857
2044
|
|
|
1858
2045
|
class DBWALTestWithParamsVaryingRecoveryMode
|
|
1859
2046
|
: public DBWALTestBase,
|
|
@@ -1891,6 +2078,7 @@ TEST_P(DBWALTestWithParams, kTolerateCorruptedTailRecords) {
|
|
|
1891
2078
|
|
|
1892
2079
|
// Fill data for testing
|
|
1893
2080
|
Options options = CurrentOptions();
|
|
2081
|
+
options.track_and_verify_wals = std::get<4>(GetParam());
|
|
1894
2082
|
const size_t row_count = RecoveryTestHelper::FillData(this, &options);
|
|
1895
2083
|
// test checksum failure or parsing
|
|
1896
2084
|
RecoveryTestHelper::CorruptWAL(this, options, corrupt_offset * .3,
|
|
@@ -1914,6 +2102,7 @@ TEST_P(DBWALTestWithParams, kTolerateCorruptedTailRecords) {
|
|
|
1914
2102
|
TEST_P(DBWALTestWithParams, kAbsoluteConsistency) {
|
|
1915
2103
|
// Verify clean slate behavior
|
|
1916
2104
|
Options options = CurrentOptions();
|
|
2105
|
+
options.track_and_verify_wals = std::get<4>(GetParam());
|
|
1917
2106
|
const size_t row_count = RecoveryTestHelper::FillData(this, &options);
|
|
1918
2107
|
options.create_if_missing = false;
|
|
1919
2108
|
ASSERT_OK(TryReopen(options));
|
|
@@ -2124,7 +2313,6 @@ TEST_F(DBWALTest, FixSyncWalOnObseletedWalWithNewManifestCausingMissingWAL) {
|
|
|
2124
2313
|
wal_synced = true;
|
|
2125
2314
|
});
|
|
2126
2315
|
|
|
2127
|
-
|
|
2128
2316
|
SyncPoint::GetInstance()->EnableProcessing();
|
|
2129
2317
|
|
|
2130
2318
|
ASSERT_OK(Flush());
|
|
@@ -2165,6 +2353,7 @@ TEST_P(DBWALTestWithParams, kPointInTimeRecovery) {
|
|
|
2165
2353
|
|
|
2166
2354
|
// Fill data for testing
|
|
2167
2355
|
Options options = CurrentOptions();
|
|
2356
|
+
options.track_and_verify_wals = std::get<4>(GetParam());
|
|
2168
2357
|
options.wal_compression = compression_type;
|
|
2169
2358
|
const size_t row_count = RecoveryTestHelper::FillData(this, &options);
|
|
2170
2359
|
|
|
@@ -2222,6 +2411,7 @@ TEST_P(DBWALTestWithParams, kSkipAnyCorruptedRecords) {
|
|
|
2222
2411
|
|
|
2223
2412
|
// Fill data for testing
|
|
2224
2413
|
Options options = CurrentOptions();
|
|
2414
|
+
options.track_and_verify_wals = std::get<4>(GetParam());
|
|
2225
2415
|
options.wal_compression = compression_type;
|
|
2226
2416
|
const size_t row_count = RecoveryTestHelper::FillData(this, &options);
|
|
2227
2417
|
|
|
@@ -2699,12 +2889,12 @@ TEST_F(DBWALTest, ReadOnlyRecoveryNoTruncate) {
|
|
|
2699
2889
|
// create DB and close with file truncate disabled
|
|
2700
2890
|
std::atomic_bool enable_truncate{false};
|
|
2701
2891
|
|
|
2702
|
-
SyncPoint::GetInstance()->SetCallBack(
|
|
2703
|
-
|
|
2704
|
-
|
|
2705
|
-
|
|
2706
|
-
|
|
2707
|
-
|
|
2892
|
+
SyncPoint::GetInstance()->SetCallBack("PosixWritableFile::Close",
|
|
2893
|
+
[&](void* arg) {
|
|
2894
|
+
if (!enable_truncate) {
|
|
2895
|
+
*(static_cast<size_t*>(arg)) = 0;
|
|
2896
|
+
}
|
|
2897
|
+
});
|
|
2708
2898
|
SyncPoint::GetInstance()->EnableProcessing();
|
|
2709
2899
|
|
|
2710
2900
|
DestroyAndReopen(options);
|
|
@@ -2793,7 +2983,6 @@ TEST_F(DBWALTest, WalInManifestButNotInSortedWals) {
|
|
|
2793
2983
|
Close();
|
|
2794
2984
|
}
|
|
2795
2985
|
|
|
2796
|
-
|
|
2797
2986
|
TEST_F(DBWALTest, WalTermTest) {
|
|
2798
2987
|
Options options = CurrentOptions();
|
|
2799
2988
|
options.env = env_;
|
|
@@ -2835,13 +3024,13 @@ TEST_F(DBWALTest, GetCompressedWalsAfterSync) {
|
|
|
2835
3024
|
options.wal_compression = kZSTD;
|
|
2836
3025
|
DestroyAndReopen(options);
|
|
2837
3026
|
|
|
2838
|
-
// Write something to memtable and WAL so that
|
|
3027
|
+
// Write something to memtable and WAL so that wal_empty_ will be false after
|
|
2839
3028
|
// next DB::Open().
|
|
2840
3029
|
ASSERT_OK(Put("a", "v"));
|
|
2841
3030
|
|
|
2842
3031
|
Reopen(options);
|
|
2843
3032
|
|
|
2844
|
-
// New WAL is created, thanks to !
|
|
3033
|
+
// New WAL is created, thanks to !wal_empty_.
|
|
2845
3034
|
ASSERT_OK(dbfull()->TEST_SwitchWAL());
|
|
2846
3035
|
|
|
2847
3036
|
ASSERT_OK(Put("b", "v"));
|