@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
|
@@ -10,7 +10,6 @@
|
|
|
10
10
|
#include <atomic>
|
|
11
11
|
#include <cstdlib>
|
|
12
12
|
#include <functional>
|
|
13
|
-
#include <iostream>
|
|
14
13
|
#include <memory>
|
|
15
14
|
|
|
16
15
|
#include "db/db_test_util.h"
|
|
@@ -25,11 +24,13 @@
|
|
|
25
24
|
#include "rocksdb/persistent_cache.h"
|
|
26
25
|
#include "rocksdb/trace_record.h"
|
|
27
26
|
#include "rocksdb/trace_record_result.h"
|
|
27
|
+
#include "rocksdb/utilities/object_registry.h"
|
|
28
28
|
#include "rocksdb/utilities/replayer.h"
|
|
29
29
|
#include "rocksdb/wal_filter.h"
|
|
30
30
|
#include "test_util/testutil.h"
|
|
31
31
|
#include "util/defer.h"
|
|
32
32
|
#include "util/random.h"
|
|
33
|
+
#include "util/simple_mixed_compressor.h"
|
|
33
34
|
#include "utilities/fault_injection_env.h"
|
|
34
35
|
|
|
35
36
|
namespace ROCKSDB_NAMESPACE {
|
|
@@ -135,7 +136,6 @@ TEST_F(DBTest2, PartitionedIndexUserToInternalKey) {
|
|
|
135
136
|
}
|
|
136
137
|
}
|
|
137
138
|
|
|
138
|
-
|
|
139
139
|
class PrefixFullBloomWithReverseComparator
|
|
140
140
|
: public DBTestBase,
|
|
141
141
|
public ::testing::WithParamInterface<bool> {
|
|
@@ -1476,8 +1476,7 @@ TEST_P(PresetCompressionDictTest, Flush) {
|
|
|
1476
1476
|
// TODO(ajkr): fix the below assertion to work with ZSTD. The expectation on
|
|
1477
1477
|
// number of bytes needs to be adjusted in case the cached block is in
|
|
1478
1478
|
// ZSTD's digested dictionary format.
|
|
1479
|
-
if (compression_type_ != kZSTD
|
|
1480
|
-
compression_type_ != kZSTDNotFinalCompression) {
|
|
1479
|
+
if (compression_type_ != kZSTD) {
|
|
1481
1480
|
// Although we limited buffering to `kBlockLen`, there may be up to two
|
|
1482
1481
|
// blocks of data included in the dictionary since we only check limit
|
|
1483
1482
|
// after each block is built.
|
|
@@ -1554,8 +1553,7 @@ TEST_P(PresetCompressionDictTest, CompactNonBottommost) {
|
|
|
1554
1553
|
// TODO(ajkr): fix the below assertion to work with ZSTD. The expectation on
|
|
1555
1554
|
// number of bytes needs to be adjusted in case the cached block is in
|
|
1556
1555
|
// ZSTD's digested dictionary format.
|
|
1557
|
-
if (compression_type_ != kZSTD
|
|
1558
|
-
compression_type_ != kZSTDNotFinalCompression) {
|
|
1556
|
+
if (compression_type_ != kZSTD) {
|
|
1559
1557
|
// Although we limited buffering to `kBlockLen`, there may be up to two
|
|
1560
1558
|
// blocks of data included in the dictionary since we only check limit
|
|
1561
1559
|
// after each block is built.
|
|
@@ -1616,8 +1614,7 @@ TEST_P(PresetCompressionDictTest, CompactBottommost) {
|
|
|
1616
1614
|
// TODO(ajkr): fix the below assertion to work with ZSTD. The expectation on
|
|
1617
1615
|
// number of bytes needs to be adjusted in case the cached block is in ZSTD's
|
|
1618
1616
|
// digested dictionary format.
|
|
1619
|
-
if (compression_type_ != kZSTD
|
|
1620
|
-
compression_type_ != kZSTDNotFinalCompression) {
|
|
1617
|
+
if (compression_type_ != kZSTD) {
|
|
1621
1618
|
// Although we limited buffering to `kBlockLen`, there may be up to two
|
|
1622
1619
|
// blocks of data included in the dictionary since we only check limit after
|
|
1623
1620
|
// each block is built.
|
|
@@ -1726,16 +1723,14 @@ TEST_P(CompressionFailuresTest, CompressionFailures) {
|
|
|
1726
1723
|
});
|
|
1727
1724
|
} else if (compression_failure_type_ == kTestDecompressionFail) {
|
|
1728
1725
|
ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->SetCallBack(
|
|
1729
|
-
"
|
|
1726
|
+
"DecompressBlockData:TamperWithReturnValue", [](void* arg) {
|
|
1730
1727
|
Status* ret = static_cast<Status*>(arg);
|
|
1731
1728
|
ASSERT_OK(*ret);
|
|
1732
1729
|
*ret = Status::Corruption("kTestDecompressionFail");
|
|
1733
1730
|
});
|
|
1734
1731
|
} else if (compression_failure_type_ == kTestDecompressionCorruption) {
|
|
1735
1732
|
ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->SetCallBack(
|
|
1736
|
-
"
|
|
1737
|
-
"TamperWithDecompressionOutput",
|
|
1738
|
-
[](void* arg) {
|
|
1733
|
+
"DecompressBlockData:TamperWithDecompressionOutput", [](void* arg) {
|
|
1739
1734
|
BlockContents* contents = static_cast<BlockContents*>(arg);
|
|
1740
1735
|
// Ensure uncompressed data != original data
|
|
1741
1736
|
const size_t len = contents->data.size() + 1;
|
|
@@ -1889,6 +1884,542 @@ TEST_F(DBTest2, CompressionOptions) {
|
|
|
1889
1884
|
}
|
|
1890
1885
|
}
|
|
1891
1886
|
|
|
1887
|
+
TEST_F(DBTest2, RoundRobinManager) {
|
|
1888
|
+
if (ZSTD_Supported()) {
|
|
1889
|
+
auto mgr =
|
|
1890
|
+
std::make_shared<RoundRobinManager>(GetBuiltinV2CompressionManager());
|
|
1891
|
+
|
|
1892
|
+
std::vector<std::string> values;
|
|
1893
|
+
for (bool use_wrapper : {true}) {
|
|
1894
|
+
SCOPED_TRACE((use_wrapper ? "With " : "No ") + std::string("wrapper"));
|
|
1895
|
+
|
|
1896
|
+
Options options = CurrentOptions();
|
|
1897
|
+
options.statistics = ROCKSDB_NAMESPACE::CreateDBStatistics();
|
|
1898
|
+
options.statistics->set_stats_level(StatsLevel::kExceptTimeForMutex);
|
|
1899
|
+
BlockBasedTableOptions bbto;
|
|
1900
|
+
bbto.enable_index_compression = false;
|
|
1901
|
+
options.table_factory.reset(NewBlockBasedTableFactory(bbto));
|
|
1902
|
+
options.compression_manager = use_wrapper ? mgr : nullptr;
|
|
1903
|
+
DestroyAndReopen(options);
|
|
1904
|
+
|
|
1905
|
+
Random rnd(301);
|
|
1906
|
+
constexpr int kCount = 13;
|
|
1907
|
+
|
|
1908
|
+
// Highly compressible blocks, except 1 non-compressible. Half of the
|
|
1909
|
+
// compressible are morked for bypass and 1 marked for rejection. Values
|
|
1910
|
+
// are large enough to ensure just 1 k-v per block.
|
|
1911
|
+
for (int i = 0; i < kCount; ++i) {
|
|
1912
|
+
std::string value;
|
|
1913
|
+
if (i == 6) {
|
|
1914
|
+
// One non-compressible block
|
|
1915
|
+
value = rnd.RandomBinaryString(20000);
|
|
1916
|
+
} else {
|
|
1917
|
+
test::CompressibleString(&rnd, 0.1, 20000, &value);
|
|
1918
|
+
}
|
|
1919
|
+
values.push_back(value);
|
|
1920
|
+
ASSERT_OK(Put(Key(i), value));
|
|
1921
|
+
ASSERT_EQ(Get(Key(i)), value);
|
|
1922
|
+
}
|
|
1923
|
+
ASSERT_OK(Flush());
|
|
1924
|
+
|
|
1925
|
+
// Ensure well-formed for reads
|
|
1926
|
+
for (int i = 0; i < kCount; ++i) {
|
|
1927
|
+
ASSERT_NE(Get(Key(i)), "NOT_FOUND");
|
|
1928
|
+
ASSERT_EQ(Get(Key(i)), values[i]);
|
|
1929
|
+
}
|
|
1930
|
+
ASSERT_EQ(Get(Key(kCount)), "NOT_FOUND");
|
|
1931
|
+
}
|
|
1932
|
+
}
|
|
1933
|
+
}
|
|
1934
|
+
|
|
1935
|
+
TEST_F(DBTest2, RandomMixedCompressionManager) {
|
|
1936
|
+
if (ZSTD_Supported()) {
|
|
1937
|
+
auto mgr = std::make_shared<RandomMixedCompressionManager>(
|
|
1938
|
+
GetBuiltinV2CompressionManager());
|
|
1939
|
+
std::vector<std::string> values;
|
|
1940
|
+
for (bool use_wrapper : {true}) {
|
|
1941
|
+
SCOPED_TRACE((use_wrapper ? "With " : "No ") + std::string("wrapper"));
|
|
1942
|
+
|
|
1943
|
+
Options options = CurrentOptions();
|
|
1944
|
+
options.statistics = ROCKSDB_NAMESPACE::CreateDBStatistics();
|
|
1945
|
+
options.statistics->set_stats_level(StatsLevel::kExceptTimeForMutex);
|
|
1946
|
+
BlockBasedTableOptions bbto;
|
|
1947
|
+
bbto.enable_index_compression = false;
|
|
1948
|
+
options.table_factory.reset(NewBlockBasedTableFactory(bbto));
|
|
1949
|
+
options.compression_manager = use_wrapper ? mgr : nullptr;
|
|
1950
|
+
DestroyAndReopen(options);
|
|
1951
|
+
|
|
1952
|
+
Random rnd(301);
|
|
1953
|
+
constexpr int kCount = 13;
|
|
1954
|
+
|
|
1955
|
+
// Highly compressible blocks, except 1 non-compressible. Half of the
|
|
1956
|
+
// compressible are morked for bypass and 1 marked for rejection. Values
|
|
1957
|
+
// are large enough to ensure just 1 k-v per block.
|
|
1958
|
+
for (int i = 0; i < kCount; ++i) {
|
|
1959
|
+
std::string value;
|
|
1960
|
+
if (i == 6) {
|
|
1961
|
+
// One non-compressible block
|
|
1962
|
+
value = rnd.RandomBinaryString(20000);
|
|
1963
|
+
} else {
|
|
1964
|
+
test::CompressibleString(&rnd, 0.1, 20000, &value);
|
|
1965
|
+
}
|
|
1966
|
+
values.push_back(value);
|
|
1967
|
+
ASSERT_OK(Put(Key(i), value));
|
|
1968
|
+
ASSERT_EQ(Get(Key(i)), value);
|
|
1969
|
+
}
|
|
1970
|
+
ASSERT_OK(Flush());
|
|
1971
|
+
|
|
1972
|
+
// Ensure well-formed for reads
|
|
1973
|
+
for (int i = 0; i < kCount; ++i) {
|
|
1974
|
+
ASSERT_NE(Get(Key(i)), "NOT_FOUND");
|
|
1975
|
+
ASSERT_EQ(Get(Key(i)), values[i]);
|
|
1976
|
+
}
|
|
1977
|
+
ASSERT_EQ(Get(Key(kCount)), "NOT_FOUND");
|
|
1978
|
+
}
|
|
1979
|
+
}
|
|
1980
|
+
}
|
|
1981
|
+
|
|
1982
|
+
TEST_F(DBTest2, CompressionManagerWrapper) {
|
|
1983
|
+
// Test that we can use a custom CompressionManager to wrap the built-in
|
|
1984
|
+
// CompressionManager, thus adopting a custom *strategy* based on existing
|
|
1985
|
+
// algorithms. This will "mark" some blocks (in their contents) as "do not
|
|
1986
|
+
// compress", i.e. no attempt to compress, and some blocks as "reject
|
|
1987
|
+
// compression", i.e. compression attempted but rejected because of ratio
|
|
1988
|
+
// or otherwise. These cases are distinguishable for statistics that
|
|
1989
|
+
// approximate "wasted effort".
|
|
1990
|
+
static std::string kDoNotCompress = "do_not_compress";
|
|
1991
|
+
static std::string kRejectCompression = "reject_compression";
|
|
1992
|
+
|
|
1993
|
+
struct MyCompressor : public CompressorWrapper {
|
|
1994
|
+
using CompressorWrapper::CompressorWrapper;
|
|
1995
|
+
const char* Name() const override { return "MyCompressor"; }
|
|
1996
|
+
|
|
1997
|
+
Status CompressBlock(Slice uncompressed_data,
|
|
1998
|
+
std::string* compressed_output,
|
|
1999
|
+
CompressionType* out_compression_type,
|
|
2000
|
+
ManagedWorkingArea* working_area) override {
|
|
2001
|
+
auto begin = uncompressed_data.data();
|
|
2002
|
+
auto end = uncompressed_data.data() + uncompressed_data.size();
|
|
2003
|
+
if (std::search(begin, end, kDoNotCompress.begin(),
|
|
2004
|
+
kDoNotCompress.end()) != end) {
|
|
2005
|
+
// Do not attempt compression
|
|
2006
|
+
EXPECT_EQ(*out_compression_type, kNoCompression);
|
|
2007
|
+
return Status::OK();
|
|
2008
|
+
} else if (std::search(begin, end, kRejectCompression.begin(),
|
|
2009
|
+
kRejectCompression.end()) != end) {
|
|
2010
|
+
// Simulate attempted & rejected compression
|
|
2011
|
+
*compressed_output = "blah";
|
|
2012
|
+
EXPECT_EQ(*out_compression_type, kNoCompression);
|
|
2013
|
+
return Status::OK();
|
|
2014
|
+
} else {
|
|
2015
|
+
return wrapped_->CompressBlock(uncompressed_data, compressed_output,
|
|
2016
|
+
out_compression_type, working_area);
|
|
2017
|
+
}
|
|
2018
|
+
}
|
|
2019
|
+
};
|
|
2020
|
+
struct MyManager : public CompressionManagerWrapper {
|
|
2021
|
+
using CompressionManagerWrapper::CompressionManagerWrapper;
|
|
2022
|
+
const char* Name() const override { return "MyManager"; }
|
|
2023
|
+
std::unique_ptr<Compressor> GetCompressorForSST(
|
|
2024
|
+
const FilterBuildingContext& context, const CompressionOptions& opts,
|
|
2025
|
+
CompressionType preferred) override {
|
|
2026
|
+
return std::make_unique<MyCompressor>(
|
|
2027
|
+
wrapped_->GetCompressorForSST(context, opts, preferred));
|
|
2028
|
+
}
|
|
2029
|
+
};
|
|
2030
|
+
auto mgr = std::make_shared<MyManager>(GetBuiltinV2CompressionManager());
|
|
2031
|
+
|
|
2032
|
+
for (CompressionType type : GetSupportedCompressions()) {
|
|
2033
|
+
for (bool use_wrapper : {false, true}) {
|
|
2034
|
+
if (type == kNoCompression) {
|
|
2035
|
+
continue;
|
|
2036
|
+
}
|
|
2037
|
+
SCOPED_TRACE("Compression type: " + std::to_string(type) +
|
|
2038
|
+
(use_wrapper ? " with " : " no ") + "wrapper");
|
|
2039
|
+
|
|
2040
|
+
Options options = CurrentOptions();
|
|
2041
|
+
options.compression = type;
|
|
2042
|
+
options.statistics = ROCKSDB_NAMESPACE::CreateDBStatistics();
|
|
2043
|
+
options.statistics->set_stats_level(StatsLevel::kExceptTimeForMutex);
|
|
2044
|
+
BlockBasedTableOptions bbto;
|
|
2045
|
+
bbto.enable_index_compression = false;
|
|
2046
|
+
options.table_factory.reset(NewBlockBasedTableFactory(bbto));
|
|
2047
|
+
options.compression_manager = use_wrapper ? mgr : nullptr;
|
|
2048
|
+
DestroyAndReopen(options);
|
|
2049
|
+
|
|
2050
|
+
auto PopStat = [&](Tickers t) -> uint64_t {
|
|
2051
|
+
return options.statistics->getAndResetTickerCount(t);
|
|
2052
|
+
};
|
|
2053
|
+
|
|
2054
|
+
Random rnd(301);
|
|
2055
|
+
constexpr int kCount = 13;
|
|
2056
|
+
|
|
2057
|
+
// Highly compressible blocks, except 1 non-compressible. Half of the
|
|
2058
|
+
// compressible are morked for bypass and 1 marked for rejection. Values
|
|
2059
|
+
// are large enough to ensure just 1 k-v per block.
|
|
2060
|
+
for (int i = 0; i < kCount; ++i) {
|
|
2061
|
+
std::string value;
|
|
2062
|
+
if (i == 6) {
|
|
2063
|
+
// One non-compressible block
|
|
2064
|
+
value = rnd.RandomBinaryString(20000);
|
|
2065
|
+
} else {
|
|
2066
|
+
test::CompressibleString(&rnd, 0.1, 20000, &value);
|
|
2067
|
+
if ((i % 2) == 0) {
|
|
2068
|
+
// Half for bypass
|
|
2069
|
+
value += kDoNotCompress;
|
|
2070
|
+
} else if (i == 7) {
|
|
2071
|
+
// One for rejection
|
|
2072
|
+
value += kRejectCompression;
|
|
2073
|
+
}
|
|
2074
|
+
}
|
|
2075
|
+
ASSERT_OK(Put(Key(i), value));
|
|
2076
|
+
}
|
|
2077
|
+
ASSERT_OK(Flush());
|
|
2078
|
+
|
|
2079
|
+
if (use_wrapper) {
|
|
2080
|
+
EXPECT_EQ(kCount / 2 - 1, PopStat(NUMBER_BLOCK_COMPRESSED));
|
|
2081
|
+
EXPECT_EQ(kCount / 2, PopStat(NUMBER_BLOCK_COMPRESSION_BYPASSED));
|
|
2082
|
+
EXPECT_EQ(1 + 1, PopStat(NUMBER_BLOCK_COMPRESSION_REJECTED));
|
|
2083
|
+
} else {
|
|
2084
|
+
EXPECT_EQ(kCount - 1, PopStat(NUMBER_BLOCK_COMPRESSED));
|
|
2085
|
+
EXPECT_EQ(0, PopStat(NUMBER_BLOCK_COMPRESSION_BYPASSED));
|
|
2086
|
+
EXPECT_EQ(1, PopStat(NUMBER_BLOCK_COMPRESSION_REJECTED));
|
|
2087
|
+
}
|
|
2088
|
+
|
|
2089
|
+
// Ensure well-formed for reads
|
|
2090
|
+
for (int i = 0; i < kCount; ++i) {
|
|
2091
|
+
ASSERT_NE(Get(Key(i)), "NOT_FOUND");
|
|
2092
|
+
}
|
|
2093
|
+
ASSERT_EQ(Get(Key(kCount)), "NOT_FOUND");
|
|
2094
|
+
}
|
|
2095
|
+
}
|
|
2096
|
+
}
|
|
2097
|
+
|
|
2098
|
+
TEST_F(DBTest2, CompressionManagerCustomCompression) {
|
|
2099
|
+
// Test that we can use a custom CompressionManager to implement custom
|
|
2100
|
+
// compression algorithms, and that there are appropriate schema guard rails
|
|
2101
|
+
// to ensure data is not processed by the wrong algorithm.
|
|
2102
|
+
using Compressor8A = test::CompressorCustomAlg<kCustomCompression8A>;
|
|
2103
|
+
using Compressor8B = test::CompressorCustomAlg<kCustomCompression8B>;
|
|
2104
|
+
using Compressor8C = test::CompressorCustomAlg<kCustomCompression8C>;
|
|
2105
|
+
|
|
2106
|
+
if (!Compressor8A::Supported() || !LZ4_Supported()) {
|
|
2107
|
+
fprintf(stderr,
|
|
2108
|
+
"Prerequisite compression library not supported. Skipping\n");
|
|
2109
|
+
return;
|
|
2110
|
+
}
|
|
2111
|
+
|
|
2112
|
+
class MyManager : public CompressionManager {
|
|
2113
|
+
public:
|
|
2114
|
+
explicit MyManager(const char* compat_name) : compat_name_(compat_name) {}
|
|
2115
|
+
const char* Name() const override { return name_.c_str(); }
|
|
2116
|
+
const char* CompatibilityName() const override { return compat_name_; }
|
|
2117
|
+
|
|
2118
|
+
bool SupportsCompressionType(CompressionType type) const override {
|
|
2119
|
+
return type == kCustomCompression8A || type == kCustomCompression8B ||
|
|
2120
|
+
type == kCustomCompression8C ||
|
|
2121
|
+
GetBuiltinV2CompressionManager()->SupportsCompressionType(type);
|
|
2122
|
+
}
|
|
2123
|
+
|
|
2124
|
+
int used_compressor8A_count_ = 0;
|
|
2125
|
+
int used_compressor8B_count_ = 0;
|
|
2126
|
+
int used_compressor8C_count_ = 0;
|
|
2127
|
+
|
|
2128
|
+
std::unique_ptr<Compressor> GetCompressor(const CompressionOptions& opts,
|
|
2129
|
+
CompressionType type) override {
|
|
2130
|
+
switch (static_cast<unsigned char>(type)) {
|
|
2131
|
+
case kCustomCompression8A:
|
|
2132
|
+
used_compressor8A_count_++;
|
|
2133
|
+
return std::make_unique<Compressor8A>();
|
|
2134
|
+
case kCustomCompression8B:
|
|
2135
|
+
used_compressor8B_count_++;
|
|
2136
|
+
return std::make_unique<Compressor8B>();
|
|
2137
|
+
case kCustomCompression8C:
|
|
2138
|
+
used_compressor8C_count_++;
|
|
2139
|
+
return std::make_unique<Compressor8C>();
|
|
2140
|
+
// Also support built-in compression algorithms
|
|
2141
|
+
default:
|
|
2142
|
+
return GetBuiltinV2CompressionManager()->GetCompressor(opts, type);
|
|
2143
|
+
}
|
|
2144
|
+
}
|
|
2145
|
+
|
|
2146
|
+
std::shared_ptr<Decompressor> GetDecompressor() override {
|
|
2147
|
+
return std::make_shared<test::DecompressorCustomAlg>();
|
|
2148
|
+
}
|
|
2149
|
+
|
|
2150
|
+
RelaxedAtomic<CompressionType> last_specific_decompressor_type_{
|
|
2151
|
+
kNoCompression};
|
|
2152
|
+
|
|
2153
|
+
std::shared_ptr<Decompressor> GetDecompressorForTypes(
|
|
2154
|
+
const CompressionType* types_begin,
|
|
2155
|
+
const CompressionType* types_end) override {
|
|
2156
|
+
assert(types_end > types_begin);
|
|
2157
|
+
last_specific_decompressor_type_.StoreRelaxed(*types_begin);
|
|
2158
|
+
auto decomp = std::make_shared<test::DecompressorCustomAlg>();
|
|
2159
|
+
decomp->SetAllowedTypes(types_begin, types_end);
|
|
2160
|
+
return decomp;
|
|
2161
|
+
}
|
|
2162
|
+
|
|
2163
|
+
void AddFriend(const std::shared_ptr<CompressionManager>& mgr) {
|
|
2164
|
+
friends_[mgr->CompatibilityName()] = mgr;
|
|
2165
|
+
}
|
|
2166
|
+
std::shared_ptr<CompressionManager> FindCompatibleCompressionManager(
|
|
2167
|
+
Slice compatibility_name) override {
|
|
2168
|
+
std::shared_ptr<CompressionManager> rv =
|
|
2169
|
+
CompressionManager::FindCompatibleCompressionManager(
|
|
2170
|
+
compatibility_name);
|
|
2171
|
+
if (!rv) {
|
|
2172
|
+
auto it = friends_.find(compatibility_name.ToString());
|
|
2173
|
+
if (it != friends_.end()) {
|
|
2174
|
+
return it->second.lock();
|
|
2175
|
+
}
|
|
2176
|
+
}
|
|
2177
|
+
return rv;
|
|
2178
|
+
}
|
|
2179
|
+
|
|
2180
|
+
private:
|
|
2181
|
+
const char* compat_name_;
|
|
2182
|
+
std::string name_;
|
|
2183
|
+
// weak_ptr to avoid cycles
|
|
2184
|
+
std::map<std::string, std::weak_ptr<CompressionManager>> friends_;
|
|
2185
|
+
};
|
|
2186
|
+
|
|
2187
|
+
for (bool use_dict : {false, true}) {
|
|
2188
|
+
SCOPED_TRACE(use_dict ? "With dict" : "No dict");
|
|
2189
|
+
|
|
2190
|
+
// Although these compression managers are actually compatible, we must
|
|
2191
|
+
// respect their distinct compatibility names and treat them as incompatible
|
|
2192
|
+
// (or else risk processing data incorrectly)
|
|
2193
|
+
// NOTE: these are not registered in ObjectRegistry to test what happens
|
|
2194
|
+
// when the original CompressionManager might not be available, but
|
|
2195
|
+
// mgr_bar will be registered during the test, with different names to
|
|
2196
|
+
// prevent interference between iterations.
|
|
2197
|
+
auto mgr_foo = std::make_shared<MyManager>("Foo");
|
|
2198
|
+
auto mgr_bar = std::make_shared<MyManager>(use_dict ? "Bar1" : "Bar2");
|
|
2199
|
+
|
|
2200
|
+
// And this one claims to be fully compatible with the built-in compression
|
|
2201
|
+
// manager when it's not fully compatible (for custom CompressionTypes)
|
|
2202
|
+
auto mgr_claim_compatible = std::make_shared<MyManager>("BuiltinV2");
|
|
2203
|
+
|
|
2204
|
+
constexpr uint16_t kValueSize = 10000;
|
|
2205
|
+
|
|
2206
|
+
Options options = CurrentOptions();
|
|
2207
|
+
options.level0_file_num_compaction_trigger = 20;
|
|
2208
|
+
BlockBasedTableOptions bbto;
|
|
2209
|
+
bbto.enable_index_compression = false;
|
|
2210
|
+
bbto.format_version = 6; // Before custom compression alg support
|
|
2211
|
+
options.table_factory.reset(NewBlockBasedTableFactory(bbto));
|
|
2212
|
+
// Claims not to use custom compression (and doesn't unless setting a custom
|
|
2213
|
+
// CompressionType)
|
|
2214
|
+
options.compression_manager = mgr_claim_compatible;
|
|
2215
|
+
// Use a built-in compression type with dictionary support
|
|
2216
|
+
options.compression = kLZ4Compression;
|
|
2217
|
+
options.compression_opts.max_dict_bytes = kValueSize / 2;
|
|
2218
|
+
DestroyAndReopen(options);
|
|
2219
|
+
|
|
2220
|
+
Random rnd(404);
|
|
2221
|
+
std::string value;
|
|
2222
|
+
ASSERT_OK(
|
|
2223
|
+
Put("a", test::CompressibleString(&rnd, 0.1, kValueSize, &value)));
|
|
2224
|
+
ASSERT_OK(Flush());
|
|
2225
|
+
|
|
2226
|
+
// That data should be readable without access to the original compression
|
|
2227
|
+
// manager, because it used the built-in CompatibilityName and a built-in
|
|
2228
|
+
// CompressionType
|
|
2229
|
+
options.compression_manager = nullptr;
|
|
2230
|
+
Reopen(options);
|
|
2231
|
+
ASSERT_EQ(Get("a"), value);
|
|
2232
|
+
|
|
2233
|
+
// Verify it was compressed
|
|
2234
|
+
Range r = {"a", "a0"};
|
|
2235
|
+
TablePropertiesCollection tables_properties;
|
|
2236
|
+
ASSERT_OK(db_->GetPropertiesOfTablesInRange(db_->DefaultColumnFamily(), &r,
|
|
2237
|
+
1, &tables_properties));
|
|
2238
|
+
ASSERT_EQ(tables_properties.size(), 1U);
|
|
2239
|
+
EXPECT_LT(tables_properties.begin()->second->data_size, kValueSize / 2);
|
|
2240
|
+
EXPECT_EQ(tables_properties.begin()->second->compression_name, "LZ4");
|
|
2241
|
+
|
|
2242
|
+
// Disallow setting a custom CompressionType with a CompressionManager
|
|
2243
|
+
// claiming to be built-in compatible.
|
|
2244
|
+
options.compression_manager = mgr_claim_compatible;
|
|
2245
|
+
options.compression = kCustomCompression8A;
|
|
2246
|
+
ASSERT_EQ(TryReopen(options).code(), Status::Code::kInvalidArgument);
|
|
2247
|
+
|
|
2248
|
+
options.compression_manager = nullptr;
|
|
2249
|
+
options.compression = kCustomCompressionFE;
|
|
2250
|
+
ASSERT_EQ(TryReopen(options).code(), Status::Code::kInvalidArgument);
|
|
2251
|
+
options.compression =
|
|
2252
|
+
static_cast<CompressionType>(kLastBuiltinCompression + 1);
|
|
2253
|
+
ASSERT_EQ(TryReopen(options).code(), Status::Code::kInvalidArgument);
|
|
2254
|
+
|
|
2255
|
+
// Custom compression schema (different CompatibilityName) not supported
|
|
2256
|
+
// before format_version=7
|
|
2257
|
+
options.compression_manager = mgr_foo;
|
|
2258
|
+
options.compression = kLZ4Compression;
|
|
2259
|
+
ASSERT_EQ(TryReopen(options).code(), Status::Code::kInvalidArgument);
|
|
2260
|
+
|
|
2261
|
+
// Set format version supporting custom compression
|
|
2262
|
+
bbto.format_version = 7;
|
|
2263
|
+
options.table_factory.reset(NewBlockBasedTableFactory(bbto));
|
|
2264
|
+
|
|
2265
|
+
// Custom compression type not supported with built-in schema name, even
|
|
2266
|
+
// with format_version=7
|
|
2267
|
+
options.compression_manager = mgr_claim_compatible;
|
|
2268
|
+
options.compression = kCustomCompression8B;
|
|
2269
|
+
ASSERT_EQ(TryReopen(options).code(), Status::Code::kInvalidArgument);
|
|
2270
|
+
|
|
2271
|
+
// Custom compression schema, but specifying a custom compression type it
|
|
2272
|
+
// doesn't support.
|
|
2273
|
+
options.compression_manager = mgr_foo;
|
|
2274
|
+
options.compression = kCustomCompressionF0;
|
|
2275
|
+
ASSERT_EQ(TryReopen(options).code(), Status::Code::kNotSupported);
|
|
2276
|
+
|
|
2277
|
+
// Using a built-in compression type with fv=7 but named custom schema
|
|
2278
|
+
options.compression = kLZ4Compression;
|
|
2279
|
+
Reopen(options);
|
|
2280
|
+
ASSERT_OK(
|
|
2281
|
+
Put("b", test::CompressibleString(&rnd, 0.1, kValueSize, &value)));
|
|
2282
|
+
ASSERT_OK(Flush());
|
|
2283
|
+
ASSERT_EQ(NumTableFilesAtLevel(0), 2);
|
|
2284
|
+
ASSERT_EQ(Get("b"), value);
|
|
2285
|
+
|
|
2286
|
+
// Verify it was compressed with LZ4
|
|
2287
|
+
r = {"b", "b0"};
|
|
2288
|
+
tables_properties.clear();
|
|
2289
|
+
ASSERT_OK(db_->GetPropertiesOfTablesInRange(db_->DefaultColumnFamily(), &r,
|
|
2290
|
+
1, &tables_properties));
|
|
2291
|
+
ASSERT_EQ(tables_properties.size(), 1U);
|
|
2292
|
+
EXPECT_LT(tables_properties.begin()->second->data_size, kValueSize / 2);
|
|
2293
|
+
// Uses new format for "compression_name" property
|
|
2294
|
+
EXPECT_EQ(tables_properties.begin()->second->compression_name, "Foo;04;");
|
|
2295
|
+
EXPECT_EQ(mgr_foo->last_specific_decompressor_type_.LoadRelaxed(),
|
|
2296
|
+
kLZ4Compression);
|
|
2297
|
+
|
|
2298
|
+
// Custom compression type
|
|
2299
|
+
options.compression = kCustomCompression8A;
|
|
2300
|
+
Reopen(options);
|
|
2301
|
+
ASSERT_OK(
|
|
2302
|
+
Put("c", test::CompressibleString(&rnd, 0.1, kValueSize, &value)));
|
|
2303
|
+
EXPECT_EQ(mgr_foo->used_compressor8A_count_, 0);
|
|
2304
|
+
ASSERT_OK(Flush());
|
|
2305
|
+
ASSERT_EQ(NumTableFilesAtLevel(0), 3);
|
|
2306
|
+
ASSERT_EQ(Get("c"), value);
|
|
2307
|
+
EXPECT_EQ(mgr_foo->used_compressor8A_count_, 1);
|
|
2308
|
+
|
|
2309
|
+
// Verify it was compressed with custom format
|
|
2310
|
+
r = {"c", "c0"};
|
|
2311
|
+
tables_properties.clear();
|
|
2312
|
+
ASSERT_OK(db_->GetPropertiesOfTablesInRange(db_->DefaultColumnFamily(), &r,
|
|
2313
|
+
1, &tables_properties));
|
|
2314
|
+
ASSERT_EQ(tables_properties.size(), 1U);
|
|
2315
|
+
EXPECT_LT(tables_properties.begin()->second->data_size, kValueSize / 2);
|
|
2316
|
+
EXPECT_EQ(tables_properties.begin()->second->compression_name, "Foo;8A;");
|
|
2317
|
+
EXPECT_EQ(mgr_foo->last_specific_decompressor_type_.LoadRelaxed(),
|
|
2318
|
+
kCustomCompression8A);
|
|
2319
|
+
|
|
2320
|
+
// Also dynamically changeable, because the compression manager will respect
|
|
2321
|
+
// the current setting as reported under the legacy logic
|
|
2322
|
+
ASSERT_OK(dbfull()->SetOptions({{"compression", "kLZ4Compression"}}));
|
|
2323
|
+
ASSERT_OK(
|
|
2324
|
+
Put("d", test::CompressibleString(&rnd, 0.1, kValueSize, &value)));
|
|
2325
|
+
ASSERT_OK(Flush());
|
|
2326
|
+
ASSERT_EQ(NumTableFilesAtLevel(0), 4);
|
|
2327
|
+
ASSERT_EQ(Get("d"), value);
|
|
2328
|
+
|
|
2329
|
+
// Verify it was compressed with LZ4
|
|
2330
|
+
r = {"d", "d0"};
|
|
2331
|
+
tables_properties.clear();
|
|
2332
|
+
ASSERT_OK(db_->GetPropertiesOfTablesInRange(db_->DefaultColumnFamily(), &r,
|
|
2333
|
+
1, &tables_properties));
|
|
2334
|
+
ASSERT_EQ(tables_properties.size(), 1U);
|
|
2335
|
+
EXPECT_LT(tables_properties.begin()->second->data_size, kValueSize / 2);
|
|
2336
|
+
EXPECT_EQ(tables_properties.begin()->second->compression_name, "Foo;04;");
|
|
2337
|
+
EXPECT_EQ(mgr_foo->last_specific_decompressor_type_.LoadRelaxed(),
|
|
2338
|
+
kLZ4Compression);
|
|
2339
|
+
|
|
2340
|
+
// Dynamically changeable to custom compressions also
|
|
2341
|
+
ASSERT_OK(dbfull()->SetOptions({{"compression", "kCustomCompression8B"}}));
|
|
2342
|
+
ASSERT_OK(
|
|
2343
|
+
Put("e", test::CompressibleString(&rnd, 0.1, kValueSize, &value)));
|
|
2344
|
+
ASSERT_OK(Flush());
|
|
2345
|
+
ASSERT_EQ(NumTableFilesAtLevel(0), 5);
|
|
2346
|
+
ASSERT_EQ(Get("e"), value);
|
|
2347
|
+
|
|
2348
|
+
// Verify it was compressed with custom format
|
|
2349
|
+
r = {"e", "e0"};
|
|
2350
|
+
tables_properties.clear();
|
|
2351
|
+
ASSERT_OK(db_->GetPropertiesOfTablesInRange(db_->DefaultColumnFamily(), &r,
|
|
2352
|
+
1, &tables_properties));
|
|
2353
|
+
ASSERT_EQ(tables_properties.size(), 1U);
|
|
2354
|
+
EXPECT_LT(tables_properties.begin()->second->data_size, kValueSize / 2);
|
|
2355
|
+
EXPECT_EQ(tables_properties.begin()->second->compression_name, "Foo;8B;");
|
|
2356
|
+
EXPECT_EQ(mgr_foo->last_specific_decompressor_type_.LoadRelaxed(),
|
|
2357
|
+
kCustomCompression8B);
|
|
2358
|
+
|
|
2359
|
+
// Fails to re-open with incompatible compression manager (can't find
|
|
2360
|
+
// compression manager Foo because it's not registered nor known by Bar)
|
|
2361
|
+
options.compression_manager = mgr_bar;
|
|
2362
|
+
options.compression = kLZ4Compression;
|
|
2363
|
+
ASSERT_EQ(TryReopen(options).code(), Status::Code::kNotSupported);
|
|
2364
|
+
|
|
2365
|
+
// But should re-open if we make Bar aware of the Foo compression manager
|
|
2366
|
+
mgr_bar->AddFriend(mgr_foo);
|
|
2367
|
+
Reopen(options);
|
|
2368
|
+
|
|
2369
|
+
// Can still read everything
|
|
2370
|
+
ASSERT_EQ(Get("a").size(), kValueSize);
|
|
2371
|
+
ASSERT_EQ(Get("b").size(), kValueSize);
|
|
2372
|
+
ASSERT_EQ(Get("c").size(), kValueSize);
|
|
2373
|
+
ASSERT_EQ(Get("d").size(), kValueSize);
|
|
2374
|
+
ASSERT_EQ(Get("e").size(), kValueSize);
|
|
2375
|
+
|
|
2376
|
+
// Add a file using mgr_bar
|
|
2377
|
+
ASSERT_OK(
|
|
2378
|
+
Put("f", test::CompressibleString(&rnd, 0.1, kValueSize, &value)));
|
|
2379
|
+
ASSERT_OK(Flush());
|
|
2380
|
+
ASSERT_EQ(NumTableFilesAtLevel(0), 6);
|
|
2381
|
+
ASSERT_EQ(Get("f"), value);
|
|
2382
|
+
|
|
2383
|
+
// Verify it was compressed appropriately
|
|
2384
|
+
r = {"f", "f0"};
|
|
2385
|
+
tables_properties.clear();
|
|
2386
|
+
ASSERT_OK(db_->GetPropertiesOfTablesInRange(db_->DefaultColumnFamily(), &r,
|
|
2387
|
+
1, &tables_properties));
|
|
2388
|
+
ASSERT_EQ(tables_properties.size(), 1U);
|
|
2389
|
+
EXPECT_LT(tables_properties.begin()->second->data_size, kValueSize / 2);
|
|
2390
|
+
EXPECT_EQ(mgr_bar->last_specific_decompressor_type_.LoadRelaxed(),
|
|
2391
|
+
kLZ4Compression);
|
|
2392
|
+
|
|
2393
|
+
// Fails to re-open with incompatible compression manager (can't find
|
|
2394
|
+
// compression manager Bar because it's not registered nor known by Foo)
|
|
2395
|
+
options.compression_manager = mgr_foo;
|
|
2396
|
+
ASSERT_EQ(TryReopen(options).code(), Status::Code::kNotSupported);
|
|
2397
|
+
|
|
2398
|
+
// Register and re-open
|
|
2399
|
+
auto& library = *ObjectLibrary::Default();
|
|
2400
|
+
library.AddFactory<CompressionManager>(
|
|
2401
|
+
mgr_bar->CompatibilityName(),
|
|
2402
|
+
[mgr_bar](const std::string& /*uri*/,
|
|
2403
|
+
std::unique_ptr<CompressionManager>* guard,
|
|
2404
|
+
std::string* /*errmsg*/) {
|
|
2405
|
+
*guard = std::make_unique<MyManager>(mgr_bar->CompatibilityName());
|
|
2406
|
+
return guard->get();
|
|
2407
|
+
});
|
|
2408
|
+
Reopen(options);
|
|
2409
|
+
|
|
2410
|
+
// Can still read everything
|
|
2411
|
+
ASSERT_EQ(Get("a").size(), kValueSize);
|
|
2412
|
+
ASSERT_EQ(Get("b").size(), kValueSize);
|
|
2413
|
+
ASSERT_EQ(Get("c").size(), kValueSize);
|
|
2414
|
+
ASSERT_EQ(Get("d").size(), kValueSize);
|
|
2415
|
+
ASSERT_EQ(Get("e").size(), kValueSize);
|
|
2416
|
+
ASSERT_EQ(Get("f").size(), kValueSize);
|
|
2417
|
+
|
|
2418
|
+
// TODO: test old version of a compression manager unable to read a
|
|
2419
|
+
// compression type
|
|
2420
|
+
}
|
|
2421
|
+
}
|
|
2422
|
+
|
|
1892
2423
|
class CompactionStallTestListener : public EventListener {
|
|
1893
2424
|
public:
|
|
1894
2425
|
CompactionStallTestListener()
|
|
@@ -1977,7 +2508,6 @@ TEST_F(DBTest2, CompactionStall) {
|
|
|
1977
2508
|
ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->DisableProcessing();
|
|
1978
2509
|
}
|
|
1979
2510
|
|
|
1980
|
-
|
|
1981
2511
|
TEST_F(DBTest2, FirstSnapshotTest) {
|
|
1982
2512
|
Options options;
|
|
1983
2513
|
options.write_buffer_size = 100000; // Small write buffer
|
|
@@ -3015,7 +3545,7 @@ TEST_F(DBTest2, PausingManualCompaction1) {
|
|
|
3015
3545
|
"TestCompactFiles:PausingManualCompaction:3", [&](void* arg) {
|
|
3016
3546
|
auto paused = static_cast<std::atomic<int>*>(arg);
|
|
3017
3547
|
// CompactFiles() relies on manual_compactions_paused to
|
|
3018
|
-
// determine if
|
|
3548
|
+
// determine if this compaction should be paused or not
|
|
3019
3549
|
ASSERT_EQ(0, paused->load(std::memory_order_acquire));
|
|
3020
3550
|
paused->fetch_add(1, std::memory_order_release);
|
|
3021
3551
|
});
|
|
@@ -3127,6 +3657,7 @@ TEST_F(DBTest2, PausingManualCompaction3) {
|
|
|
3127
3657
|
ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->EnableProcessing();
|
|
3128
3658
|
|
|
3129
3659
|
dbfull()->DisableManualCompaction();
|
|
3660
|
+
|
|
3130
3661
|
ASSERT_TRUE(dbfull()
|
|
3131
3662
|
->CompactRange(compact_options, nullptr, nullptr)
|
|
3132
3663
|
.IsManualCompactionPaused());
|
|
@@ -3600,7 +4131,6 @@ TEST_F(DBTest2, OptimizeForSmallDB) {
|
|
|
3600
4131
|
value.Reset();
|
|
3601
4132
|
}
|
|
3602
4133
|
|
|
3603
|
-
|
|
3604
4134
|
TEST_F(DBTest2, IterRaceFlush1) {
|
|
3605
4135
|
ASSERT_OK(Put("foo", "v1"));
|
|
3606
4136
|
|
|
@@ -4104,7 +4634,6 @@ TEST_F(DBTest2, ReadCallbackTest) {
|
|
|
4104
4634
|
}
|
|
4105
4635
|
}
|
|
4106
4636
|
|
|
4107
|
-
|
|
4108
4637
|
TEST_F(DBTest2, LiveFilesOmitObsoleteFiles) {
|
|
4109
4638
|
// Regression test for race condition where an obsolete file is returned to
|
|
4110
4639
|
// user as a "live file" but then deleted, all while file deletions are
|
|
@@ -4432,7 +4961,7 @@ TEST_F(DBTest2, TraceAndReplay) {
|
|
|
4432
4961
|
db2->NewDefaultReplayer(handles, std::move(trace_reader), &replayer));
|
|
4433
4962
|
|
|
4434
4963
|
TraceExecutionResultHandler res_handler;
|
|
4435
|
-
std::function<void(Status, std::unique_ptr<TraceRecordResult
|
|
4964
|
+
std::function<void(Status, std::unique_ptr<TraceRecordResult>&&)> res_cb =
|
|
4436
4965
|
[&res_handler](Status exec_s, std::unique_ptr<TraceRecordResult>&& res) {
|
|
4437
4966
|
ASSERT_TRUE(exec_s.ok() || exec_s.IsNotSupported());
|
|
4438
4967
|
if (res != nullptr) {
|
|
@@ -5164,7 +5693,6 @@ TEST_F(DBTest2, TraceWithFilter) {
|
|
|
5164
5693
|
ASSERT_EQ(count, 6);
|
|
5165
5694
|
}
|
|
5166
5695
|
|
|
5167
|
-
|
|
5168
5696
|
TEST_F(DBTest2, PinnableSliceAndMmapReads) {
|
|
5169
5697
|
Options options = CurrentOptions();
|
|
5170
5698
|
options.env = env_;
|
|
@@ -5429,6 +5957,103 @@ TEST_F(DBTest2, TestCompactFiles) {
|
|
|
5429
5957
|
ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->ClearAllCallBacks();
|
|
5430
5958
|
}
|
|
5431
5959
|
|
|
5960
|
+
TEST_F(DBTest2, TestCancelCompactFiles) {
|
|
5961
|
+
SyncPoint::GetInstance()->EnableProcessing();
|
|
5962
|
+
|
|
5963
|
+
Options options;
|
|
5964
|
+
options.env = env_;
|
|
5965
|
+
options.num_levels = 2;
|
|
5966
|
+
options.disable_auto_compactions = true;
|
|
5967
|
+
Reopen(options);
|
|
5968
|
+
|
|
5969
|
+
auto* handle = db_->DefaultColumnFamily();
|
|
5970
|
+
ASSERT_EQ(db_->NumberLevels(handle), 2);
|
|
5971
|
+
|
|
5972
|
+
ROCKSDB_NAMESPACE::SstFileWriter sst_file_writer{
|
|
5973
|
+
ROCKSDB_NAMESPACE::EnvOptions(), options};
|
|
5974
|
+
|
|
5975
|
+
// ingest large SST files
|
|
5976
|
+
std::vector<std::string> external_sst_file_names;
|
|
5977
|
+
int key_counter = 0;
|
|
5978
|
+
const int num_keys_per_file = 100000;
|
|
5979
|
+
const int num_files = 10;
|
|
5980
|
+
for (int i = 0; i < num_files; ++i) {
|
|
5981
|
+
std::string file_name =
|
|
5982
|
+
dbname_ + "/test_compact_files" + std::to_string(i) + ".sst_t";
|
|
5983
|
+
external_sst_file_names.push_back(file_name);
|
|
5984
|
+
ASSERT_OK(sst_file_writer.Open(file_name));
|
|
5985
|
+
for (int j = 0; j < num_keys_per_file; ++j) {
|
|
5986
|
+
ASSERT_OK(sst_file_writer.Put(Key(j + num_keys_per_file * key_counter),
|
|
5987
|
+
std::to_string(j)));
|
|
5988
|
+
}
|
|
5989
|
+
key_counter += 1;
|
|
5990
|
+
ASSERT_OK(sst_file_writer.Finish());
|
|
5991
|
+
}
|
|
5992
|
+
|
|
5993
|
+
ASSERT_OK(db_->IngestExternalFile(handle, external_sst_file_names,
|
|
5994
|
+
IngestExternalFileOptions()));
|
|
5995
|
+
ASSERT_EQ(NumTableFilesAtLevel(1, 0), num_files);
|
|
5996
|
+
std::vector<std::string> files;
|
|
5997
|
+
GetSstFiles(env_, dbname_, &files);
|
|
5998
|
+
ASSERT_EQ(files.size(), num_files);
|
|
5999
|
+
|
|
6000
|
+
// Test that 0 compactions happen - canceled is set to True initially
|
|
6001
|
+
CompactionOptions compaction_options;
|
|
6002
|
+
std::atomic<bool> canceled(true);
|
|
6003
|
+
compaction_options.canceled = &canceled;
|
|
6004
|
+
|
|
6005
|
+
ASSERT_TRUE(db_->CompactFiles(compaction_options, handle, files, 1)
|
|
6006
|
+
.IsManualCompactionPaused());
|
|
6007
|
+
ASSERT_EQ(NumTableFilesAtLevel(1, 0), num_files);
|
|
6008
|
+
|
|
6009
|
+
// Test cancellation before the check to cancel compaction happens -
|
|
6010
|
+
// compaction should not occur
|
|
6011
|
+
bool disable_compaction = false;
|
|
6012
|
+
compaction_options.canceled->store(false, std::memory_order_release);
|
|
6013
|
+
ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->SetCallBack(
|
|
6014
|
+
"TestCancelCompactFiles:SuccessfulCompaction", [&](void* arg) {
|
|
6015
|
+
auto paused = static_cast<std::atomic<int>*>(arg);
|
|
6016
|
+
if (disable_compaction) {
|
|
6017
|
+
db_->DisableManualCompaction();
|
|
6018
|
+
ASSERT_EQ(1, paused->load(std::memory_order_acquire));
|
|
6019
|
+
} else {
|
|
6020
|
+
compaction_options.canceled->store(true, std::memory_order_release);
|
|
6021
|
+
ASSERT_EQ(0, paused->load(std::memory_order_acquire));
|
|
6022
|
+
}
|
|
6023
|
+
});
|
|
6024
|
+
|
|
6025
|
+
ASSERT_TRUE(db_->CompactFiles(compaction_options, handle, files, 1)
|
|
6026
|
+
.IsManualCompactionPaused());
|
|
6027
|
+
ASSERT_EQ(NumTableFilesAtLevel(1, 0), num_files);
|
|
6028
|
+
|
|
6029
|
+
// DisableManualCompaction() should successfully cancel compaction
|
|
6030
|
+
disable_compaction = true;
|
|
6031
|
+
compaction_options.canceled->store(false, std::memory_order_release);
|
|
6032
|
+
ASSERT_TRUE(db_->CompactFiles(compaction_options, handle, files, 1)
|
|
6033
|
+
.IsManualCompactionPaused());
|
|
6034
|
+
ASSERT_EQ(NumTableFilesAtLevel(1, 0), num_files);
|
|
6035
|
+
// unlike CompactRange, value of compaction_options.canceled will be
|
|
6036
|
+
// unaffected by calling DisableManualCompactions()
|
|
6037
|
+
ASSERT_FALSE(compaction_options.canceled->load());
|
|
6038
|
+
|
|
6039
|
+
ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->ClearAllCallBacks();
|
|
6040
|
+
db_->EnableManualCompaction();
|
|
6041
|
+
|
|
6042
|
+
// Test cancelation after the check to cancel compaction - compaction should
|
|
6043
|
+
// occur, leaving only 1 file
|
|
6044
|
+
ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->SetCallBack(
|
|
6045
|
+
"CompactFilesImpl:0", [&](void* /*arg*/) {
|
|
6046
|
+
compaction_options.canceled->store(true, std::memory_order_release);
|
|
6047
|
+
});
|
|
6048
|
+
|
|
6049
|
+
compaction_options.canceled->store(false, std::memory_order_release);
|
|
6050
|
+
ASSERT_OK(db_->CompactFiles(compaction_options, handle, files, 1));
|
|
6051
|
+
ASSERT_EQ(NumTableFilesAtLevel(1, 0), 1);
|
|
6052
|
+
|
|
6053
|
+
ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->DisableProcessing();
|
|
6054
|
+
ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->ClearAllCallBacks();
|
|
6055
|
+
}
|
|
6056
|
+
|
|
5432
6057
|
TEST_F(DBTest2, MultiDBParallelOpenTest) {
|
|
5433
6058
|
const int kNumDbs = 2;
|
|
5434
6059
|
Options options = CurrentOptions();
|
|
@@ -7693,7 +8318,6 @@ TEST_F(DBTest2, RecoverEpochNumber) {
|
|
|
7693
8318
|
}
|
|
7694
8319
|
}
|
|
7695
8320
|
|
|
7696
|
-
|
|
7697
8321
|
TEST_F(DBTest2, RenameDirectory) {
|
|
7698
8322
|
Options options = CurrentOptions();
|
|
7699
8323
|
DestroyAndReopen(options);
|
|
@@ -8006,7 +8630,7 @@ TEST_F(DBTest2, GetLatestSeqAndTsForKey) {
|
|
|
8006
8630
|
ASSERT_EQ(0, options.statistics->getTickerCount(GET_HIT_L0));
|
|
8007
8631
|
}
|
|
8008
8632
|
|
|
8009
|
-
#if defined(
|
|
8633
|
+
#if defined(ZSTD)
|
|
8010
8634
|
TEST_F(DBTest2, ZSTDChecksum) {
|
|
8011
8635
|
// Verify that corruption during decompression is caught.
|
|
8012
8636
|
Options options = CurrentOptions();
|