@nxtedition/rocksdb 15.4.1 → 15.5.0
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 +24 -15
- package/deps/rocksdb/rocksdb/.clang-tidy +86 -0
- package/deps/rocksdb/rocksdb/BUCK +42 -0
- package/deps/rocksdb/rocksdb/CMakeLists.txt +11 -0
- package/deps/rocksdb/rocksdb/Makefile +59 -32
- package/deps/rocksdb/rocksdb/cache/cache.cc +0 -5
- package/deps/rocksdb/rocksdb/cache/cache_entry_stats.h +9 -9
- package/deps/rocksdb/rocksdb/cache/cache_key.cc +3 -3
- package/deps/rocksdb/rocksdb/cache/cache_key.h +5 -5
- package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.h +16 -16
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +1 -1
- package/deps/rocksdb/rocksdb/cache/clock_cache.cc +258 -294
- package/deps/rocksdb/rocksdb/cache/clock_cache.h +98 -49
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +1 -5
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +2 -3
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +18 -18
- package/deps/rocksdb/rocksdb/crash_test.mk +5 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +23 -22
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.h +6 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +14 -16
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +38 -26
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +5 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +101 -18
- package/deps/rocksdb/rocksdb/db/blob/blob_index.h +12 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +6 -9
- package/deps/rocksdb/rocksdb/db/builder.cc +23 -0
- package/deps/rocksdb/rocksdb/db/builder.h +7 -0
- package/deps/rocksdb/rocksdb/db/c.cc +373 -57
- package/deps/rocksdb/rocksdb/db/c_test.c +101 -1
- package/deps/rocksdb/rocksdb/db/column_family.cc +31 -3
- package/deps/rocksdb/rocksdb/db/column_family_test.cc +10 -13
- package/deps/rocksdb/rocksdb/db/compact_files_test.cc +35 -48
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +13 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +201 -39
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +15 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +7 -7
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +2 -455
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +4 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +19 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +72 -9
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +12 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +405 -83
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +25 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +23 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +1 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +1410 -106
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +12 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +2 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +19 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +505 -45
- package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.cc +2 -2
- package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +9 -1
- package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +7 -9
- package/deps/rocksdb/rocksdb/db/convenience.cc +4 -4
- package/deps/rocksdb/rocksdb/db/convenience_impl.h +2 -1
- package/deps/rocksdb/rocksdb/db/corruption_test.cc +60 -88
- package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +10 -12
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +471 -40
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +116 -2
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +5 -15
- package/deps/rocksdb/rocksdb/db/db_compaction_abort_test.cc +993 -0
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +329 -29
- package/deps/rocksdb/rocksdb/db/db_flush_test.cc +155 -13
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +54 -31
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +1 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +232 -70
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +57 -9
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +224 -31
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +5 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +4 -2
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_follower.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +164 -8
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +6 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +5 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +47 -35
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +22 -9
- package/deps/rocksdb/rocksdb/db/db_iter.cc +9 -0
- package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +371 -6
- package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +7 -5
- package/deps/rocksdb/rocksdb/db/db_logical_block_size_cache_test.cc +22 -23
- package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +0 -2
- package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/db_options_test.cc +40 -0
- package/deps/rocksdb/rocksdb/db/db_properties_test.cc +32 -13
- package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_readonly_with_timestamp_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +68 -15
- package/deps/rocksdb/rocksdb/db/db_sst_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +2 -3
- package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +6 -21
- package/deps/rocksdb/rocksdb/db/db_test.cc +644 -128
- package/deps/rocksdb/rocksdb/db/db_test2.cc +198 -81
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +35 -10
- package/deps/rocksdb/rocksdb/db/db_test_util.h +8 -2
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +36 -32
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +11 -7
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_compaction_test.cc +499 -0
- package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +284 -20
- package/deps/rocksdb/rocksdb/db/db_write_test.cc +3 -3
- package/deps/rocksdb/rocksdb/db/dbformat.h +0 -5
- package/deps/rocksdb/rocksdb/db/error_handler.cc +24 -0
- package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +12 -14
- package/deps/rocksdb/rocksdb/db/experimental.cc +13 -10
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +22 -3
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +21 -15
- package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +4 -6
- package/deps/rocksdb/rocksdb/db/flush_job.cc +11 -3
- package/deps/rocksdb/rocksdb/db/forward_iterator_bench.cc +5 -6
- package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +4 -2
- package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +17 -17
- package/deps/rocksdb/rocksdb/db/internal_stats.cc +13 -0
- package/deps/rocksdb/rocksdb/db/internal_stats.h +2 -0
- package/deps/rocksdb/rocksdb/db/listener_test.cc +154 -27
- package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/memtable.cc +197 -51
- package/deps/rocksdb/rocksdb/db/memtable.h +6 -0
- package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +3 -4
- package/deps/rocksdb/rocksdb/db/merge_test.cc +37 -35
- package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +2 -1
- package/deps/rocksdb/rocksdb/db/options_file_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/perf_context_test.cc +9 -11
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.cc +10 -1
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler_test.cc +292 -15
- package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +10 -17
- package/deps/rocksdb/rocksdb/db/prefix_test.cc +6 -8
- package/deps/rocksdb/rocksdb/db/repair.cc +10 -10
- package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +5 -5
- package/deps/rocksdb/rocksdb/db/table_cache.cc +142 -135
- package/deps/rocksdb/rocksdb/db/table_cache.h +30 -6
- package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +7 -7
- package/deps/rocksdb/rocksdb/db/version_builder.cc +11 -50
- package/deps/rocksdb/rocksdb/db/version_builder.h +2 -1
- package/deps/rocksdb/rocksdb/db/version_builder_test.cc +2 -1
- package/deps/rocksdb/rocksdb/db/version_edit.cc +51 -2
- package/deps/rocksdb/rocksdb/db/version_edit.h +91 -29
- package/deps/rocksdb/rocksdb/db/version_edit_handler.h +7 -7
- package/deps/rocksdb/rocksdb/db/version_set.cc +211 -50
- package/deps/rocksdb/rocksdb/db/version_set.h +40 -3
- package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +5 -0
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +294 -21
- package/deps/rocksdb/rocksdb/db/version_util.cc +96 -0
- package/deps/rocksdb/rocksdb/db/version_util.h +24 -0
- package/deps/rocksdb/rocksdb/db/wide/db_wide_basic_test.cc +5 -5
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.cc +647 -31
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.h +219 -1
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization_test.cc +549 -12
- package/deps/rocksdb/rocksdb/db/write_callback_test.cc +3 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +1 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +19 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +21 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +32 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +74 -22
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +9 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +143 -61
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +15 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +76 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +92 -72
- package/deps/rocksdb/rocksdb/env/env.cc +1 -0
- package/deps/rocksdb/rocksdb/env/env_test.cc +365 -2
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +31 -30
- package/deps/rocksdb/rocksdb/env/io_posix.cc +8 -11
- package/deps/rocksdb/rocksdb/env/io_posix.h +30 -1
- package/deps/rocksdb/rocksdb/env/io_posix_test.cc +43 -0
- package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +1 -1
- package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +108 -0
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +32 -4
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +4 -4
- package/deps/rocksdb/rocksdb/file/file_util.cc +8 -2
- package/deps/rocksdb/rocksdb/file/file_util.h +2 -1
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +331 -12
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +52 -35
- package/deps/rocksdb/rocksdb/folly.mk +22 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_cache.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_compression.h +100 -54
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +67 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +149 -13
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +1 -12
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +78 -97
- package/deps/rocksdb/rocksdb/include/rocksdb/experimental.h +3 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/external_table.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/file_checksum.h +5 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +17 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/functor_wrapper.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/io_dispatcher.h +358 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +13 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +43 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +20 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +63 -21
- package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +10 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/rate_limiter.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/slice_transform.h +2 -7
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_reader.h +13 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +3 -14
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +49 -9
- package/deps/rocksdb/rocksdb/include/rocksdb/status.h +8 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/table.h +77 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +15 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/tool_hooks.h +16 -10
- package/deps/rocksdb/rocksdb/include/rocksdb/unique_id.h +5 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +2 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/user_defined_index.h +106 -46
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/db_ttl.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +14 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/memory_util.h +5 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/optimistic_transaction_db.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +7 -9
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +1 -2
- package/deps/rocksdb/rocksdb/memory/memory_allocator_test.cc +2 -2
- package/deps/rocksdb/rocksdb/memtable/inlineskiplist.h +226 -8
- package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +490 -0
- package/deps/rocksdb/rocksdb/memtable/skiplist.h +3 -3
- package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +11 -0
- package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +4 -12
- package/deps/rocksdb/rocksdb/microbench/ribbon_bench.cc +5 -5
- package/deps/rocksdb/rocksdb/monitoring/file_read_sample.h +21 -4
- package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +9 -3
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +21 -2
- package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +2 -2
- package/deps/rocksdb/rocksdb/options/cf_options.cc +21 -1
- package/deps/rocksdb/rocksdb/options/cf_options.h +2 -0
- package/deps/rocksdb/rocksdb/options/customizable_test.cc +0 -2
- package/deps/rocksdb/rocksdb/options/db_options.cc +26 -5
- package/deps/rocksdb/rocksdb/options/db_options.h +3 -1
- package/deps/rocksdb/rocksdb/options/options.cc +5 -1
- package/deps/rocksdb/rocksdb/options/options_helper.cc +7 -2
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +109 -103
- package/deps/rocksdb/rocksdb/options/options_test.cc +14 -0
- package/deps/rocksdb/rocksdb/port/jemalloc_helper.h +15 -17
- package/deps/rocksdb/rocksdb/port/lang.h +4 -0
- package/deps/rocksdb/rocksdb/port/port_example.h +0 -23
- package/deps/rocksdb/rocksdb/port/stack_trace.cc +36 -0
- package/deps/rocksdb/rocksdb/port/stack_trace.h +9 -0
- package/deps/rocksdb/rocksdb/src.mk +12 -0
- package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.cc +1 -2
- package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/block.cc +571 -292
- package/deps/rocksdb/rocksdb/table/block_based/block.h +143 -53
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +154 -90
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +5 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +51 -14
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +0 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +147 -734
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +30 -233
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +178 -108
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +13 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +17 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +5 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +70 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +168 -24
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +25 -9
- package/deps/rocksdb/rocksdb/table/block_based/block_cache.cc +7 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_cache.h +9 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +548 -169
- package/deps/rocksdb/rocksdb/table/block_based/block_type.h +30 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_util.h +156 -0
- package/deps/rocksdb/rocksdb/table/block_based/data_block_footer.cc +73 -30
- package/deps/rocksdb/rocksdb/table/block_based/data_block_footer.h +74 -7
- package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index.h +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +20 -14
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +22 -12
- package/deps/rocksdb/rocksdb/table/block_based/mock_block_based_table.h +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/multi_scan_index_iterator.cc +332 -0
- package/deps/rocksdb/rocksdb/table/block_based/multi_scan_index_iterator.h +133 -0
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +4 -2
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +3 -2
- package/deps/rocksdb/rocksdb/table/block_based/reader_common.h +4 -1
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +0 -1
- package/deps/rocksdb/rocksdb/table/block_based/user_defined_index_wrapper.h +126 -46
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +31 -3
- package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +1 -2
- package/deps/rocksdb/rocksdb/table/cleanable_test.cc +3 -1
- package/deps/rocksdb/rocksdb/table/external_table.cc +25 -4
- package/deps/rocksdb/rocksdb/table/format.cc +27 -15
- package/deps/rocksdb/rocksdb/table/format.h +41 -15
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +1 -0
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +22 -12
- package/deps/rocksdb/rocksdb/table/meta_blocks.h +0 -1
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +7 -21
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +0 -1
- package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +88 -13
- package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +53 -42
- package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +3 -12
- package/deps/rocksdb/rocksdb/table/table_builder.h +0 -4
- package/deps/rocksdb/rocksdb/table/table_properties.cc +18 -0
- package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +2 -3
- package/deps/rocksdb/rocksdb/table/table_test.cc +848 -172
- package/deps/rocksdb/rocksdb/table/unique_id.cc +24 -20
- package/deps/rocksdb/rocksdb/table/unique_id_impl.h +8 -8
- package/deps/rocksdb/rocksdb/test_util/sync_point.h +5 -4
- package/deps/rocksdb/rocksdb/test_util/testutil.cc +2 -1
- package/deps/rocksdb/rocksdb/test_util/testutil.h +2 -2
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +2 -1
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +238 -120
- package/deps/rocksdb/rocksdb/tools/db_repl_stress.cc +2 -2
- package/deps/rocksdb/rocksdb/tools/db_sanity_test.cc +2 -4
- package/deps/rocksdb/rocksdb/tools/dump/db_dump_tool.cc +4 -8
- package/deps/rocksdb/rocksdb/tools/dump/rocksdb_undump.cc +1 -1
- package/deps/rocksdb/rocksdb/tools/io_tracer_parser_test.cc +2 -3
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +82 -20
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +41 -47
- package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +9 -0
- package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +5 -6
- package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +1 -1
- package/deps/rocksdb/rocksdb/tools/tool_hooks.cc +6 -5
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_test.cc +4 -4
- package/deps/rocksdb/rocksdb/tools/write_stress.cc +1 -3
- package/deps/rocksdb/rocksdb/util/atomic.h +30 -23
- package/deps/rocksdb/rocksdb/util/auto_tune_compressor.cc +6 -7
- package/deps/rocksdb/rocksdb/util/auto_tune_compressor.h +3 -3
- package/deps/rocksdb/rocksdb/util/bit_fields.h +68 -46
- package/deps/rocksdb/rocksdb/util/bloom_impl.h +16 -16
- package/deps/rocksdb/rocksdb/util/coding.h +14 -27
- package/deps/rocksdb/rocksdb/util/compression.cc +365 -207
- package/deps/rocksdb/rocksdb/util/compression.h +16 -1298
- package/deps/rocksdb/rocksdb/util/compression_test.cc +347 -61
- package/deps/rocksdb/rocksdb/util/crc32c_arm64.cc +8 -9
- package/deps/rocksdb/rocksdb/util/crc32c_arm64.h +1 -1
- package/deps/rocksdb/rocksdb/util/crc32c_ppc.h +1 -1
- package/deps/rocksdb/rocksdb/util/dynamic_bloom_test.cc +3 -3
- package/deps/rocksdb/rocksdb/util/filter_bench.cc +18 -18
- package/deps/rocksdb/rocksdb/util/gflags_compat.h +3 -3
- package/deps/rocksdb/rocksdb/util/hash_test.cc +19 -7
- package/deps/rocksdb/rocksdb/util/io_dispatcher_imp.cc +1099 -0
- package/deps/rocksdb/rocksdb/util/io_dispatcher_imp.h +36 -0
- package/deps/rocksdb/rocksdb/util/io_dispatcher_test.cc +1919 -0
- package/deps/rocksdb/rocksdb/util/math.h +3 -1
- package/deps/rocksdb/rocksdb/util/mutexlock.h +19 -19
- package/deps/rocksdb/rocksdb/util/ribbon_alg.h +25 -25
- package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.cc +5 -7
- package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.h +4 -5
- package/deps/rocksdb/rocksdb/util/slice.cc +0 -10
- package/deps/rocksdb/rocksdb/util/slice_test.cc +35 -1
- package/deps/rocksdb/rocksdb/util/slice_transform_test.cc +5 -7
- package/deps/rocksdb/rocksdb/util/status.cc +3 -1
- package/deps/rocksdb/rocksdb/util/stop_watch.h +2 -0
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +4 -1
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +123 -78
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.cc +12 -93
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.h +1 -4
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.cc +0 -21
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.h +6 -48
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +94 -307
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +12 -58
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl_filesnapshot.cc +2 -8
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +2 -3
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +205 -811
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +18 -9
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +2 -7
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.h +1 -9
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_functional_test.cc +17 -11
- package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +68 -61
- package/deps/rocksdb/rocksdb/utilities/debug.cc +2 -1
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +105 -59
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +274 -7
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs_test.cc +94 -0
- package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +13 -17
- package/deps/rocksdb/rocksdb/utilities/memory/memory_util.cc +16 -3
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend_test.cc +25 -25
- package/deps/rocksdb/rocksdb/utilities/object_registry.cc +40 -40
- package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration.cc +2 -5
- package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +17 -19
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.h +2 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +4 -13
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +3 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +6 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_seqno_test.cc +431 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +1 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.h +91 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/bitvector.cc +562 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/bitvector.h +615 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/louds_trie.cc +2575 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/louds_trie.h +685 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_db_test.cc +2843 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_factory.cc +567 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_factory.h +275 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_test.cc +5183 -0
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +4 -3
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +3 -3
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +93 -88
- package/deps/rocksdb/rocksdb.gyp +7 -0
- package/iterator.js +2 -2
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/@nxtedition+rocksdb.node +0 -0
- package/prebuilds/linux-x64/@nxtedition+rocksdb.node +0 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/lua/rocks_lua_custom_library.h +0 -43
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/lua/rocks_lua_util.h +0 -55
|
@@ -28,25 +28,23 @@
|
|
|
28
28
|
#include "rocksdb/env.h"
|
|
29
29
|
#include "rocksdb/iterator.h"
|
|
30
30
|
#include "rocksdb/utilities/stackable_db.h"
|
|
31
|
-
#include "rocksdb/utilities/transaction.h"
|
|
32
|
-
#include "table/meta_blocks.h"
|
|
33
31
|
#include "test_util/sync_point.h"
|
|
34
32
|
#include "util/cast_util.h"
|
|
35
33
|
#include "util/crc32c.h"
|
|
36
34
|
#include "util/mutexlock.h"
|
|
37
|
-
#include "util/random.h"
|
|
38
35
|
#include "util/stop_watch.h"
|
|
39
36
|
#include "util/timer_queue.h"
|
|
40
37
|
#include "utilities/blob_db/blob_compaction_filter.h"
|
|
41
38
|
#include "utilities/blob_db/blob_db_iterator.h"
|
|
42
39
|
#include "utilities/blob_db/blob_db_listener.h"
|
|
43
40
|
|
|
44
|
-
namespace {
|
|
45
|
-
int kBlockBasedTableVersionFormat = 2;
|
|
46
|
-
} // end namespace
|
|
47
|
-
|
|
48
41
|
namespace ROCKSDB_NAMESPACE::blob_db {
|
|
49
42
|
|
|
43
|
+
// The cutoff in terms of blob file age for garbage collection. Blobs in the
|
|
44
|
+
// oldest N non-TTL blob files will be rewritten when encountered during
|
|
45
|
+
// compaction, where N = kGarbageCollectionCutoff * number_of_non_TTL_files.
|
|
46
|
+
constexpr double kGarbageCollectionCutoff = 0.25;
|
|
47
|
+
|
|
50
48
|
bool BlobFileComparator::operator()(
|
|
51
49
|
const std::shared_ptr<BlobFile>& lhs,
|
|
52
50
|
const std::shared_ptr<BlobFile>& rhs) const {
|
|
@@ -84,15 +82,10 @@ BlobDBImpl::BlobDBImpl(const std::string& dbname,
|
|
|
84
82
|
closed_(true),
|
|
85
83
|
open_file_count_(0),
|
|
86
84
|
total_blob_size_(0),
|
|
87
|
-
live_sst_size_(0)
|
|
88
|
-
fifo_eviction_seq_(0),
|
|
89
|
-
evict_expiration_up_to_(0),
|
|
90
|
-
debug_level_(0) {
|
|
85
|
+
live_sst_size_(0) {
|
|
91
86
|
clock_ = env_->GetSystemClock().get();
|
|
92
|
-
blob_dir_ =
|
|
93
|
-
|
|
94
|
-
: bdb_options_.blob_dir;
|
|
95
|
-
file_options_.bytes_per_sync = blob_db_options.bytes_per_sync;
|
|
87
|
+
blob_dir_ = dbname + "/" + kBlobDirName;
|
|
88
|
+
file_options_.bytes_per_sync = kBytesPerSync;
|
|
96
89
|
}
|
|
97
90
|
|
|
98
91
|
BlobDBImpl::~BlobDBImpl() {
|
|
@@ -120,9 +113,8 @@ Status BlobDBImpl::CloseImpl() {
|
|
|
120
113
|
// Close base DB before BlobDBImpl destructs to stop event listener and
|
|
121
114
|
// compaction filter call.
|
|
122
115
|
Status s = db_->Close();
|
|
123
|
-
//
|
|
124
|
-
|
|
125
|
-
// Reset pointers to avoid StackableDB delete the pointer again.
|
|
116
|
+
// Reset ownership to free the underlying DB.
|
|
117
|
+
shared_db_ptr_.reset();
|
|
126
118
|
db_ = nullptr;
|
|
127
119
|
db_impl_ = nullptr;
|
|
128
120
|
if (!s.ok()) {
|
|
@@ -134,8 +126,6 @@ Status BlobDBImpl::CloseImpl() {
|
|
|
134
126
|
return s;
|
|
135
127
|
}
|
|
136
128
|
|
|
137
|
-
BlobDBOptions BlobDBImpl::GetBlobDBOptions() const { return bdb_options_; }
|
|
138
|
-
|
|
139
129
|
Status BlobDBImpl::Open(std::vector<ColumnFamilyHandle*>* handles) {
|
|
140
130
|
assert(handles != nullptr);
|
|
141
131
|
assert(db_ == nullptr);
|
|
@@ -144,12 +134,6 @@ Status BlobDBImpl::Open(std::vector<ColumnFamilyHandle*>* handles) {
|
|
|
144
134
|
return Status::NotSupported("No blob directory in options");
|
|
145
135
|
}
|
|
146
136
|
|
|
147
|
-
if (bdb_options_.garbage_collection_cutoff < 0.0 ||
|
|
148
|
-
bdb_options_.garbage_collection_cutoff > 1.0) {
|
|
149
|
-
return Status::InvalidArgument(
|
|
150
|
-
"Garbage collection cutoff must be in the interval [0.0, 1.0]");
|
|
151
|
-
}
|
|
152
|
-
|
|
153
137
|
// Temporarily disable compactions in the base DB during open; save the user
|
|
154
138
|
// defined value beforehand so we can restore it once BlobDB is initialized.
|
|
155
139
|
// Note: this is only needed if garbage collection is enabled.
|
|
@@ -217,7 +201,12 @@ Status BlobDBImpl::Open(std::vector<ColumnFamilyHandle*>* handles) {
|
|
|
217
201
|
|
|
218
202
|
// Open base db.
|
|
219
203
|
ColumnFamilyDescriptor cf_descriptor(kDefaultColumnFamilyName, cf_options_);
|
|
220
|
-
|
|
204
|
+
std::unique_ptr<DB> db;
|
|
205
|
+
s = DB::Open(db_options_, dbname_, {cf_descriptor}, handles, &db);
|
|
206
|
+
if (s.ok()) {
|
|
207
|
+
shared_db_ptr_ = std::move(db);
|
|
208
|
+
db_ = shared_db_ptr_.get();
|
|
209
|
+
}
|
|
221
210
|
if (!s.ok()) {
|
|
222
211
|
return s;
|
|
223
212
|
}
|
|
@@ -281,7 +270,7 @@ Status BlobDBImpl::Open(std::vector<ColumnFamilyHandle*>* handles) {
|
|
|
281
270
|
return s;
|
|
282
271
|
}
|
|
283
272
|
|
|
284
|
-
UpdateLiveSSTSize(
|
|
273
|
+
UpdateLiveSSTSize();
|
|
285
274
|
|
|
286
275
|
// Start background jobs.
|
|
287
276
|
if (!bdb_options_.disable_background_tasks) {
|
|
@@ -595,7 +584,6 @@ bool BlobDBImpl::MarkBlobFileObsoleteIfNeeded(
|
|
|
595
584
|
assert(blob_file->Immutable());
|
|
596
585
|
assert(bdb_options_.enable_garbage_collection);
|
|
597
586
|
|
|
598
|
-
// Note: FIFO eviction could have marked this file obsolete already.
|
|
599
587
|
if (blob_file->Obsolete()) {
|
|
600
588
|
return true;
|
|
601
589
|
}
|
|
@@ -709,7 +697,7 @@ std::shared_ptr<BlobFile> BlobDBImpl::NewBlobFile(
|
|
|
709
697
|
static_cast<ColumnFamilyHandleImpl*>(DefaultColumnFamily())->GetID();
|
|
710
698
|
auto blob_file = std::make_shared<BlobFile>(
|
|
711
699
|
this, blob_dir_, file_num, db_options_.info_log.get(), column_family_id,
|
|
712
|
-
|
|
700
|
+
has_ttl, expiration_range);
|
|
713
701
|
|
|
714
702
|
ROCKS_LOG_DEBUG(db_options_.info_log, "New blob file created: %s reason='%s'",
|
|
715
703
|
blob_file->PathName().c_str(), reason.c_str());
|
|
@@ -752,11 +740,6 @@ Status BlobDBImpl::CreateWriterLocked(const std::shared_ptr<BlobFile>& bfile) {
|
|
|
752
740
|
statistics_, Histograms::BLOB_DB_BLOB_FILE_WRITE_MICROS));
|
|
753
741
|
|
|
754
742
|
uint64_t boffset = bfile->GetFileSize();
|
|
755
|
-
if (debug_level_ >= 2 && boffset) {
|
|
756
|
-
ROCKS_LOG_DEBUG(db_options_.info_log,
|
|
757
|
-
"Open blob file: %s with offset: %" PRIu64, fpath.c_str(),
|
|
758
|
-
boffset);
|
|
759
|
-
}
|
|
760
743
|
|
|
761
744
|
BlobLogWriter::ElemType et = BlobLogWriter::kEtNone;
|
|
762
745
|
if (bfile->file_size_ == BlobLogHeader::kSize) {
|
|
@@ -1036,18 +1019,27 @@ Status BlobDBImpl::Write(const WriteOptions& options, WriteBatch* updates) {
|
|
|
1036
1019
|
|
|
1037
1020
|
Status BlobDBImpl::Put(const WriteOptions& options, const Slice& key,
|
|
1038
1021
|
const Slice& value) {
|
|
1039
|
-
|
|
1022
|
+
StopWatch write_sw(clock_, statistics_, BLOB_DB_WRITE_MICROS);
|
|
1023
|
+
RecordTick(statistics_, BLOB_DB_NUM_PUT);
|
|
1024
|
+
Status s;
|
|
1025
|
+
WriteBatch batch;
|
|
1026
|
+
{
|
|
1027
|
+
// Release write_mutex_ before DB write to avoid race condition with
|
|
1028
|
+
// flush begin listener, which also require write_mutex_ to sync
|
|
1029
|
+
// blob files.
|
|
1030
|
+
MutexLock l(&write_mutex_);
|
|
1031
|
+
s = PutBlobValue(options, key, value, kNoExpiration, &batch);
|
|
1032
|
+
}
|
|
1033
|
+
if (s.ok()) {
|
|
1034
|
+
s = db_->Write(options, &batch);
|
|
1035
|
+
}
|
|
1036
|
+
return s;
|
|
1040
1037
|
}
|
|
1041
1038
|
|
|
1042
1039
|
Status BlobDBImpl::PutWithTTL(const WriteOptions& options, const Slice& key,
|
|
1043
1040
|
const Slice& value, uint64_t ttl) {
|
|
1044
1041
|
uint64_t now = EpochNow();
|
|
1045
1042
|
uint64_t expiration = kNoExpiration - now > ttl ? now + ttl : kNoExpiration;
|
|
1046
|
-
return PutUntil(options, key, value, expiration);
|
|
1047
|
-
}
|
|
1048
|
-
|
|
1049
|
-
Status BlobDBImpl::PutUntil(const WriteOptions& options, const Slice& key,
|
|
1050
|
-
const Slice& value, uint64_t expiration) {
|
|
1051
1043
|
StopWatch write_sw(clock_, statistics_, BLOB_DB_WRITE_MICROS);
|
|
1052
1044
|
RecordTick(statistics_, BLOB_DB_NUM_PUT);
|
|
1053
1045
|
Status s;
|
|
@@ -1069,77 +1061,54 @@ Status BlobDBImpl::PutBlobValue(const WriteOptions& write_options,
|
|
|
1069
1061
|
const Slice& key, const Slice& value,
|
|
1070
1062
|
uint64_t expiration, WriteBatch* batch) {
|
|
1071
1063
|
write_mutex_.AssertHeld();
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
uint32_t column_family_id =
|
|
1075
|
-
static_cast_with_check<ColumnFamilyHandleImpl>(DefaultColumnFamily())
|
|
1076
|
-
->GetID();
|
|
1077
|
-
if (value.size() < bdb_options_.min_blob_size) {
|
|
1078
|
-
if (expiration == kNoExpiration) {
|
|
1079
|
-
// Put as normal value
|
|
1080
|
-
s = batch->Put(key, value);
|
|
1081
|
-
RecordTick(statistics_, BLOB_DB_WRITE_INLINED);
|
|
1082
|
-
} else {
|
|
1083
|
-
// Inlined with TTL
|
|
1084
|
-
BlobIndex::EncodeInlinedTTL(&index_entry, expiration, value);
|
|
1085
|
-
s = WriteBatchInternal::PutBlobIndex(batch, column_family_id, key,
|
|
1086
|
-
index_entry);
|
|
1087
|
-
RecordTick(statistics_, BLOB_DB_WRITE_INLINED_TTL);
|
|
1088
|
-
}
|
|
1089
|
-
} else {
|
|
1090
|
-
std::string compression_output;
|
|
1091
|
-
Slice value_compressed = GetCompressedSlice(value, &compression_output);
|
|
1092
|
-
|
|
1093
|
-
std::string headerbuf;
|
|
1094
|
-
BlobLogWriter::ConstructBlobHeader(&headerbuf, key, value_compressed,
|
|
1095
|
-
expiration);
|
|
1096
|
-
|
|
1097
|
-
// Check DB size limit before selecting blob file to
|
|
1098
|
-
// Since CheckSizeAndEvictBlobFiles() can close blob files, it needs to be
|
|
1099
|
-
// done before calling SelectBlobFile().
|
|
1100
|
-
s = CheckSizeAndEvictBlobFiles(
|
|
1101
|
-
write_options, headerbuf.size() + key.size() + value_compressed.size());
|
|
1102
|
-
if (!s.ok()) {
|
|
1103
|
-
return s;
|
|
1104
|
-
}
|
|
1064
|
+
std::string headerbuf;
|
|
1065
|
+
BlobLogWriter::ConstructBlobHeader(&headerbuf, key, value, expiration);
|
|
1105
1066
|
|
|
1106
|
-
|
|
1067
|
+
// Check DB size limit before selecting blob file.
|
|
1068
|
+
Status s = CheckDbSizeLimit(headerbuf.size() + key.size() + value.size());
|
|
1069
|
+
if (!s.ok()) {
|
|
1070
|
+
return s;
|
|
1071
|
+
}
|
|
1072
|
+
|
|
1073
|
+
std::shared_ptr<BlobFile> blob_file;
|
|
1074
|
+
if (expiration != kNoExpiration) {
|
|
1075
|
+
s = SelectBlobFileTTL(write_options, expiration, &blob_file);
|
|
1076
|
+
} else {
|
|
1077
|
+
s = SelectBlobFile(write_options, &blob_file);
|
|
1078
|
+
}
|
|
1079
|
+
std::string index_entry;
|
|
1080
|
+
if (s.ok()) {
|
|
1081
|
+
assert(blob_file != nullptr);
|
|
1082
|
+
s = AppendBlob(write_options, blob_file, headerbuf, key, value, expiration,
|
|
1083
|
+
&index_entry);
|
|
1084
|
+
}
|
|
1085
|
+
if (s.ok()) {
|
|
1107
1086
|
if (expiration != kNoExpiration) {
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
s = SelectBlobFile(write_options, &blob_file);
|
|
1111
|
-
}
|
|
1112
|
-
if (s.ok()) {
|
|
1113
|
-
assert(blob_file != nullptr);
|
|
1114
|
-
assert(blob_file->GetCompressionType() == bdb_options_.compression);
|
|
1115
|
-
s = AppendBlob(write_options, blob_file, headerbuf, key, value_compressed,
|
|
1116
|
-
expiration, &index_entry);
|
|
1117
|
-
}
|
|
1118
|
-
if (s.ok()) {
|
|
1119
|
-
if (expiration != kNoExpiration) {
|
|
1120
|
-
WriteLock file_lock(&blob_file->mutex_);
|
|
1121
|
-
blob_file->ExtendExpirationRange(expiration);
|
|
1122
|
-
}
|
|
1123
|
-
s = CloseBlobFileIfNeeded(write_options, blob_file);
|
|
1124
|
-
}
|
|
1125
|
-
if (s.ok()) {
|
|
1126
|
-
s = WriteBatchInternal::PutBlobIndex(batch, column_family_id, key,
|
|
1127
|
-
index_entry);
|
|
1087
|
+
WriteLock file_lock(&blob_file->mutex_);
|
|
1088
|
+
blob_file->ExtendExpirationRange(expiration);
|
|
1128
1089
|
}
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1090
|
+
s = CloseBlobFileIfNeeded(write_options, blob_file);
|
|
1091
|
+
}
|
|
1092
|
+
if (s.ok()) {
|
|
1093
|
+
const uint32_t column_family_id =
|
|
1094
|
+
static_cast_with_check<ColumnFamilyHandleImpl>(DefaultColumnFamily())
|
|
1095
|
+
->GetID();
|
|
1096
|
+
s = WriteBatchInternal::PutBlobIndex(batch, column_family_id, key,
|
|
1097
|
+
index_entry);
|
|
1098
|
+
}
|
|
1099
|
+
if (s.ok()) {
|
|
1100
|
+
if (expiration == kNoExpiration) {
|
|
1101
|
+
RecordTick(statistics_, BLOB_DB_WRITE_BLOB);
|
|
1135
1102
|
} else {
|
|
1136
|
-
|
|
1137
|
-
db_options_.info_log,
|
|
1138
|
-
"Failed to append blob to FILE: %s: KEY: %s VALSZ: %" ROCKSDB_PRIszt
|
|
1139
|
-
" status: '%s' blob_file: '%s'",
|
|
1140
|
-
blob_file->PathName().c_str(), key.ToString().c_str(), value.size(),
|
|
1141
|
-
s.ToString().c_str(), blob_file->DumpState().c_str());
|
|
1103
|
+
RecordTick(statistics_, BLOB_DB_WRITE_BLOB_TTL);
|
|
1142
1104
|
}
|
|
1105
|
+
} else {
|
|
1106
|
+
ROCKS_LOG_ERROR(
|
|
1107
|
+
db_options_.info_log,
|
|
1108
|
+
"Failed to append blob to FILE: %s: KEY: %s VALSZ: %" ROCKSDB_PRIszt
|
|
1109
|
+
" status: '%s' blob_file: '%s'",
|
|
1110
|
+
blob_file->PathName().c_str(), key.ToString().c_str(), value.size(),
|
|
1111
|
+
s.ToString().c_str(), blob_file->DumpState().c_str());
|
|
1143
1112
|
}
|
|
1144
1113
|
|
|
1145
1114
|
RecordTick(statistics_, BLOB_DB_NUM_KEYS_WRITTEN);
|
|
@@ -1150,54 +1119,6 @@ Status BlobDBImpl::PutBlobValue(const WriteOptions& write_options,
|
|
|
1150
1119
|
return s;
|
|
1151
1120
|
}
|
|
1152
1121
|
|
|
1153
|
-
Slice BlobDBImpl::GetCompressedSlice(const Slice& raw,
|
|
1154
|
-
std::string* compression_output) const {
|
|
1155
|
-
if (bdb_options_.compression == kNoCompression) {
|
|
1156
|
-
return raw;
|
|
1157
|
-
}
|
|
1158
|
-
StopWatch compression_sw(clock_, statistics_, BLOB_DB_COMPRESSION_MICROS);
|
|
1159
|
-
CompressionType type = bdb_options_.compression;
|
|
1160
|
-
CompressionOptions opts;
|
|
1161
|
-
CompressionContext context(type, opts);
|
|
1162
|
-
CompressionInfo info(opts, context, CompressionDict::GetEmptyDict(), type);
|
|
1163
|
-
OLD_CompressData(raw, info,
|
|
1164
|
-
GetCompressFormatForVersion(kBlockBasedTableVersionFormat),
|
|
1165
|
-
compression_output);
|
|
1166
|
-
return *compression_output;
|
|
1167
|
-
}
|
|
1168
|
-
|
|
1169
|
-
Decompressor& BlobDecompressor() {
|
|
1170
|
-
static auto mgr = GetBuiltinCompressionManager(
|
|
1171
|
-
GetCompressFormatForVersion(kBlockBasedTableVersionFormat));
|
|
1172
|
-
static auto decompressor = mgr->GetDecompressor();
|
|
1173
|
-
|
|
1174
|
-
return *decompressor;
|
|
1175
|
-
}
|
|
1176
|
-
|
|
1177
|
-
Status BlobDBImpl::DecompressSlice(const Slice& compressed_value,
|
|
1178
|
-
CompressionType compression_type,
|
|
1179
|
-
PinnableSlice* value_output) const {
|
|
1180
|
-
assert(compression_type != kNoCompression);
|
|
1181
|
-
|
|
1182
|
-
BlockContents contents;
|
|
1183
|
-
auto cfh = static_cast<ColumnFamilyHandleImpl*>(DefaultColumnFamily());
|
|
1184
|
-
|
|
1185
|
-
{
|
|
1186
|
-
StopWatch decompression_sw(clock_, statistics_,
|
|
1187
|
-
BLOB_DB_DECOMPRESSION_MICROS);
|
|
1188
|
-
Status s = DecompressBlockData(
|
|
1189
|
-
compressed_value.data(), compressed_value.size(), compression_type,
|
|
1190
|
-
BlobDecompressor(), &contents, cfh->cfd()->ioptions());
|
|
1191
|
-
if (!s.ok()) {
|
|
1192
|
-
return Status::Corruption("Unable to decompress blob.");
|
|
1193
|
-
}
|
|
1194
|
-
}
|
|
1195
|
-
|
|
1196
|
-
value_output->PinSelf(contents.data);
|
|
1197
|
-
|
|
1198
|
-
return Status::OK();
|
|
1199
|
-
}
|
|
1200
|
-
|
|
1201
1122
|
Status BlobDBImpl::CompactFiles(
|
|
1202
1123
|
const CompactionOptions& compact_options,
|
|
1203
1124
|
const std::vector<std::string>& input_file_names, const int output_level,
|
|
@@ -1235,8 +1156,6 @@ void BlobDBImpl::GetCompactionContextCommon(BlobCompactionContext* context) {
|
|
|
1235
1156
|
for (auto& p : blob_files_) {
|
|
1236
1157
|
context->current_blob_files.insert(p.first);
|
|
1237
1158
|
}
|
|
1238
|
-
context->fifo_eviction_seq = fifo_eviction_seq_;
|
|
1239
|
-
context->evict_expiration_up_to = evict_expiration_up_to_;
|
|
1240
1159
|
}
|
|
1241
1160
|
|
|
1242
1161
|
void BlobDBImpl::GetCompactionContext(BlobCompactionContext* context) {
|
|
@@ -1256,15 +1175,15 @@ void BlobDBImpl::GetCompactionContext(BlobCompactionContext* context,
|
|
|
1256
1175
|
|
|
1257
1176
|
if (!live_imm_non_ttl_blob_files_.empty()) {
|
|
1258
1177
|
auto it = live_imm_non_ttl_blob_files_.begin();
|
|
1259
|
-
std::advance(
|
|
1260
|
-
|
|
1178
|
+
std::advance(
|
|
1179
|
+
it, kGarbageCollectionCutoff * live_imm_non_ttl_blob_files_.size());
|
|
1261
1180
|
context_gc->cutoff_file_number = it != live_imm_non_ttl_blob_files_.end()
|
|
1262
1181
|
? it->first
|
|
1263
1182
|
: std::numeric_limits<uint64_t>::max();
|
|
1264
1183
|
}
|
|
1265
1184
|
}
|
|
1266
1185
|
|
|
1267
|
-
void BlobDBImpl::UpdateLiveSSTSize(
|
|
1186
|
+
void BlobDBImpl::UpdateLiveSSTSize() {
|
|
1268
1187
|
uint64_t live_sst_size = 0;
|
|
1269
1188
|
bool ok = GetIntProperty(DB::Properties::kLiveSstFilesSize, &live_sst_size);
|
|
1270
1189
|
if (ok) {
|
|
@@ -1277,90 +1196,21 @@ void BlobDBImpl::UpdateLiveSSTSize(const WriteOptions& write_options) {
|
|
|
1277
1196
|
db_options_.info_log,
|
|
1278
1197
|
"Failed to update total SST file size after flush or compaction.");
|
|
1279
1198
|
}
|
|
1280
|
-
{
|
|
1281
|
-
// Trigger FIFO eviction if needed.
|
|
1282
|
-
MutexLock l(&write_mutex_);
|
|
1283
|
-
Status s = CheckSizeAndEvictBlobFiles(write_options, 0, true /*force*/);
|
|
1284
|
-
if (s.IsNoSpace()) {
|
|
1285
|
-
ROCKS_LOG_WARN(db_options_.info_log,
|
|
1286
|
-
"DB grow out-of-space after SST size updated. Current live"
|
|
1287
|
-
" SST size: %" PRIu64
|
|
1288
|
-
" , current blob files size: %" PRIu64 ".",
|
|
1289
|
-
live_sst_size_.load(), total_blob_size_.load());
|
|
1290
|
-
}
|
|
1291
|
-
}
|
|
1292
1199
|
}
|
|
1293
1200
|
|
|
1294
|
-
Status BlobDBImpl::
|
|
1295
|
-
|
|
1296
|
-
bool force_evict) {
|
|
1297
|
-
write_mutex_.AssertHeld();
|
|
1298
|
-
|
|
1299
|
-
uint64_t live_sst_size = live_sst_size_.load();
|
|
1300
|
-
if (bdb_options_.max_db_size == 0 ||
|
|
1301
|
-
live_sst_size + total_blob_size_.load() + blob_size <=
|
|
1302
|
-
bdb_options_.max_db_size) {
|
|
1201
|
+
Status BlobDBImpl::CheckDbSizeLimit(uint64_t blob_size) {
|
|
1202
|
+
if (bdb_options_.max_db_size == 0) {
|
|
1303
1203
|
return Status::OK();
|
|
1304
1204
|
}
|
|
1305
1205
|
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
return Status::NoSpace(
|
|
1311
|
-
"Write failed, as writing it would exceed max_db_size limit.");
|
|
1206
|
+
uint64_t live_sst_size = live_sst_size_.load();
|
|
1207
|
+
uint64_t total_blob_size = total_blob_size_.load();
|
|
1208
|
+
if (live_sst_size + total_blob_size + blob_size <= bdb_options_.max_db_size) {
|
|
1209
|
+
return Status::OK();
|
|
1312
1210
|
}
|
|
1313
1211
|
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
std::sort(candidate_files.begin(), candidate_files.end(),
|
|
1317
|
-
BlobFileComparator());
|
|
1318
|
-
fifo_eviction_seq_ = GetLatestSequenceNumber();
|
|
1319
|
-
|
|
1320
|
-
WriteLock l(&mutex_);
|
|
1321
|
-
|
|
1322
|
-
while (!candidate_files.empty() &&
|
|
1323
|
-
live_sst_size + total_blob_size_.load() + blob_size >
|
|
1324
|
-
bdb_options_.max_db_size) {
|
|
1325
|
-
std::shared_ptr<BlobFile> blob_file = candidate_files.back();
|
|
1326
|
-
candidate_files.pop_back();
|
|
1327
|
-
WriteLock file_lock(&blob_file->mutex_);
|
|
1328
|
-
if (blob_file->Obsolete()) {
|
|
1329
|
-
// File already obsoleted by someone else.
|
|
1330
|
-
assert(blob_file->Immutable());
|
|
1331
|
-
continue;
|
|
1332
|
-
}
|
|
1333
|
-
// FIFO eviction can evict open blob files.
|
|
1334
|
-
if (!blob_file->Immutable()) {
|
|
1335
|
-
Status s = CloseBlobFile(write_options, blob_file);
|
|
1336
|
-
if (!s.ok()) {
|
|
1337
|
-
return s;
|
|
1338
|
-
}
|
|
1339
|
-
}
|
|
1340
|
-
assert(blob_file->Immutable());
|
|
1341
|
-
auto expiration_range = blob_file->GetExpirationRange();
|
|
1342
|
-
ROCKS_LOG_INFO(db_options_.info_log,
|
|
1343
|
-
"Evict oldest blob file since DB out of space. Current "
|
|
1344
|
-
"live SST file size: %" PRIu64 ", total blob size: %" PRIu64
|
|
1345
|
-
", max db size: %" PRIu64 ", evicted blob file #%" PRIu64
|
|
1346
|
-
".",
|
|
1347
|
-
live_sst_size, total_blob_size_.load(),
|
|
1348
|
-
bdb_options_.max_db_size, blob_file->BlobFileNumber());
|
|
1349
|
-
ObsoleteBlobFile(blob_file, fifo_eviction_seq_, true /*update_size*/);
|
|
1350
|
-
evict_expiration_up_to_ = expiration_range.first;
|
|
1351
|
-
RecordTick(statistics_, BLOB_DB_FIFO_NUM_FILES_EVICTED);
|
|
1352
|
-
RecordTick(statistics_, BLOB_DB_FIFO_NUM_KEYS_EVICTED,
|
|
1353
|
-
blob_file->BlobCount());
|
|
1354
|
-
RecordTick(statistics_, BLOB_DB_FIFO_BYTES_EVICTED,
|
|
1355
|
-
blob_file->GetFileSize());
|
|
1356
|
-
TEST_SYNC_POINT("BlobDBImpl::EvictOldestBlobFile:Evicted");
|
|
1357
|
-
}
|
|
1358
|
-
if (live_sst_size + total_blob_size_.load() + blob_size >
|
|
1359
|
-
bdb_options_.max_db_size) {
|
|
1360
|
-
return Status::NoSpace(
|
|
1361
|
-
"Write failed, as writing it would exceed max_db_size limit.");
|
|
1362
|
-
}
|
|
1363
|
-
return Status::OK();
|
|
1212
|
+
return Status::NoSpace(
|
|
1213
|
+
"Write failed, as writing it would exceed max_db_size limit.");
|
|
1364
1214
|
}
|
|
1365
1215
|
|
|
1366
1216
|
Status BlobDBImpl::AppendBlob(const WriteOptions& write_options,
|
|
@@ -1397,11 +1247,10 @@ Status BlobDBImpl::AppendBlob(const WriteOptions& write_options,
|
|
|
1397
1247
|
|
|
1398
1248
|
if (expiration == kNoExpiration) {
|
|
1399
1249
|
BlobIndex::EncodeBlob(index_entry, bfile->BlobFileNumber(), blob_offset,
|
|
1400
|
-
value.size(),
|
|
1250
|
+
value.size(), kNoCompression);
|
|
1401
1251
|
} else {
|
|
1402
1252
|
BlobIndex::EncodeBlobTTL(index_entry, expiration, bfile->BlobFileNumber(),
|
|
1403
|
-
blob_offset, value.size(),
|
|
1404
|
-
bdb_options_.compression);
|
|
1253
|
+
blob_offset, value.size(), kNoCompression);
|
|
1405
1254
|
}
|
|
1406
1255
|
|
|
1407
1256
|
return s;
|
|
@@ -1492,46 +1341,14 @@ Status BlobDBImpl::GetBlobValue(const Slice& key, const Slice& index_entry,
|
|
|
1492
1341
|
}
|
|
1493
1342
|
}
|
|
1494
1343
|
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
// memory buffer to avoid extra copy.
|
|
1498
|
-
value->PinSelf(blob_index.value());
|
|
1499
|
-
return Status::OK();
|
|
1500
|
-
}
|
|
1501
|
-
|
|
1502
|
-
CompressionType compression_type = kNoCompression;
|
|
1503
|
-
s = GetRawBlobFromFile(key, blob_index.file_number(), blob_index.offset(),
|
|
1504
|
-
blob_index.size(), value, &compression_type);
|
|
1505
|
-
if (!s.ok()) {
|
|
1506
|
-
return s;
|
|
1507
|
-
}
|
|
1508
|
-
|
|
1509
|
-
if (compression_type != kNoCompression) {
|
|
1510
|
-
s = DecompressSlice(*value, compression_type, value);
|
|
1511
|
-
if (!s.ok()) {
|
|
1512
|
-
if (debug_level_ >= 2) {
|
|
1513
|
-
ROCKS_LOG_ERROR(
|
|
1514
|
-
db_options_.info_log,
|
|
1515
|
-
"Uncompression error during blob read from file: %" PRIu64
|
|
1516
|
-
" blob_offset: %" PRIu64 " blob_size: %" PRIu64
|
|
1517
|
-
" key: %s status: '%s'",
|
|
1518
|
-
blob_index.file_number(), blob_index.offset(), blob_index.size(),
|
|
1519
|
-
key.ToString(/* output_hex */ true).c_str(), s.ToString().c_str());
|
|
1520
|
-
}
|
|
1521
|
-
return s;
|
|
1522
|
-
}
|
|
1523
|
-
}
|
|
1524
|
-
|
|
1525
|
-
return Status::OK();
|
|
1344
|
+
return GetRawBlobFromFile(key, blob_index.file_number(), blob_index.offset(),
|
|
1345
|
+
blob_index.size(), value);
|
|
1526
1346
|
}
|
|
1527
1347
|
|
|
1528
1348
|
Status BlobDBImpl::GetRawBlobFromFile(const Slice& key, uint64_t file_number,
|
|
1529
1349
|
uint64_t offset, uint64_t size,
|
|
1530
|
-
PinnableSlice* value
|
|
1531
|
-
CompressionType* compression_type) {
|
|
1350
|
+
PinnableSlice* value) {
|
|
1532
1351
|
assert(value);
|
|
1533
|
-
assert(compression_type);
|
|
1534
|
-
assert(*compression_type == kNoCompression);
|
|
1535
1352
|
|
|
1536
1353
|
if (!size) {
|
|
1537
1354
|
value->PinSelf("");
|
|
@@ -1543,15 +1360,6 @@ Status BlobDBImpl::GetRawBlobFromFile(const Slice& key, uint64_t file_number,
|
|
|
1543
1360
|
// valid offset.
|
|
1544
1361
|
if (offset <
|
|
1545
1362
|
(BlobLogHeader::kSize + BlobLogRecord::kHeaderSize + key.size())) {
|
|
1546
|
-
if (debug_level_ >= 2) {
|
|
1547
|
-
ROCKS_LOG_ERROR(db_options_.info_log,
|
|
1548
|
-
"Invalid blob index file_number: %" PRIu64
|
|
1549
|
-
" blob_offset: %" PRIu64 " blob_size: %" PRIu64
|
|
1550
|
-
" key: %s",
|
|
1551
|
-
file_number, offset, size,
|
|
1552
|
-
key.ToString(/* output_hex */ true).c_str());
|
|
1553
|
-
}
|
|
1554
|
-
|
|
1555
1363
|
return Status::NotFound("Invalid blob offset");
|
|
1556
1364
|
}
|
|
1557
1365
|
|
|
@@ -1569,8 +1377,6 @@ Status BlobDBImpl::GetRawBlobFromFile(const Slice& key, uint64_t file_number,
|
|
|
1569
1377
|
blob_file = it->second;
|
|
1570
1378
|
}
|
|
1571
1379
|
|
|
1572
|
-
*compression_type = blob_file->GetCompressionType();
|
|
1573
|
-
|
|
1574
1380
|
// takes locks when called
|
|
1575
1381
|
std::shared_ptr<RandomAccessFileReader> reader;
|
|
1576
1382
|
Status s = GetBlobFileReader(blob_file, &reader);
|
|
@@ -1643,15 +1449,6 @@ Status BlobDBImpl::GetRawBlobFromFile(const Slice& key, uint64_t file_number,
|
|
|
1643
1449
|
blob_record.size() - sizeof(uint32_t));
|
|
1644
1450
|
crc = crc32c::Mask(crc); // Adjust for storage
|
|
1645
1451
|
if (crc != crc_exp) {
|
|
1646
|
-
if (debug_level_ >= 2) {
|
|
1647
|
-
ROCKS_LOG_ERROR(
|
|
1648
|
-
db_options_.info_log,
|
|
1649
|
-
"Blob crc mismatch file: %" PRIu64 " blob_offset: %" PRIu64
|
|
1650
|
-
" blob_size: %" PRIu64 " key: %s status: '%s'",
|
|
1651
|
-
file_number, offset, size,
|
|
1652
|
-
key.ToString(/* output_hex */ true).c_str(), s.ToString().c_str());
|
|
1653
|
-
}
|
|
1654
|
-
|
|
1655
1452
|
return Status::Corruption("Corruption. Blob CRC mismatch");
|
|
1656
1453
|
}
|
|
1657
1454
|
|
|
@@ -2110,14 +1907,6 @@ std::pair<bool, int64_t> BlobDBImpl::DeleteObsoleteFiles(bool aborted) {
|
|
|
2110
1907
|
return std::make_pair(!aborted, -1);
|
|
2111
1908
|
}
|
|
2112
1909
|
|
|
2113
|
-
void BlobDBImpl::CopyBlobFiles(
|
|
2114
|
-
std::vector<std::shared_ptr<BlobFile>>* bfiles_copy) {
|
|
2115
|
-
ReadLock rl(&mutex_);
|
|
2116
|
-
for (auto const& p : blob_files_) {
|
|
2117
|
-
bfiles_copy->push_back(p.second);
|
|
2118
|
-
}
|
|
2119
|
-
}
|
|
2120
|
-
|
|
2121
1910
|
Iterator* BlobDBImpl::NewIterator(const ReadOptions& _read_options) {
|
|
2122
1911
|
if (_read_options.io_activity != Env::IOActivity::kUnknown &&
|
|
2123
1912
|
_read_options.io_activity != Env::IOActivity::kDBIterator) {
|
|
@@ -2148,14 +1937,12 @@ Iterator* BlobDBImpl::NewIterator(const ReadOptions& _read_options) {
|
|
|
2148
1937
|
}
|
|
2149
1938
|
|
|
2150
1939
|
Status DestroyBlobDB(const std::string& dbname, const Options& options,
|
|
2151
|
-
const BlobDBOptions& bdb_options) {
|
|
1940
|
+
const BlobDBOptions& /*bdb_options*/) {
|
|
2152
1941
|
const ImmutableDBOptions soptions(SanitizeOptions(dbname, options));
|
|
2153
1942
|
Env* env = soptions.env;
|
|
2154
1943
|
|
|
2155
1944
|
Status status;
|
|
2156
|
-
std::string blobdir;
|
|
2157
|
-
blobdir = (bdb_options.path_relative) ? dbname + "/" + bdb_options.blob_dir
|
|
2158
|
-
: bdb_options.blob_dir;
|
|
1945
|
+
std::string blobdir = dbname + "/" + kBlobDirName;
|
|
2159
1946
|
|
|
2160
1947
|
std::vector<std::string> filenames;
|
|
2161
1948
|
if (env->GetChildren(blobdir, &filenames).ok()) {
|