@nxtedition/rocksdb 5.2.21 → 5.2.26
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 +216 -252
- package/binding.gyp +78 -72
- package/deps/rocksdb/build_version.cc +70 -4
- package/deps/rocksdb/rocksdb/CMakeLists.txt +281 -149
- package/deps/rocksdb/rocksdb/Makefile +459 -469
- package/deps/rocksdb/rocksdb/README.md +4 -4
- package/deps/rocksdb/rocksdb/TARGETS +5244 -1500
- package/deps/rocksdb/rocksdb/cache/cache.cc +12 -3
- package/deps/rocksdb/rocksdb/cache/cache_bench.cc +7 -368
- package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +924 -0
- package/deps/rocksdb/rocksdb/cache/cache_entry_roles.cc +128 -0
- package/deps/rocksdb/rocksdb/cache/cache_entry_roles.h +103 -0
- package/deps/rocksdb/rocksdb/cache/cache_entry_stats.h +183 -0
- package/deps/rocksdb/rocksdb/cache/cache_helpers.h +11 -0
- package/deps/rocksdb/rocksdb/cache/cache_key.cc +344 -0
- package/deps/rocksdb/rocksdb/cache/cache_key.h +132 -0
- package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.cc +183 -0
- package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.h +288 -0
- package/deps/rocksdb/rocksdb/cache/cache_reservation_manager_test.cc +468 -0
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +85 -8
- package/deps/rocksdb/rocksdb/cache/clock_cache.cc +121 -51
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +171 -0
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +86 -0
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +607 -0
- package/deps/rocksdb/rocksdb/cache/lru_cache.cc +381 -154
- package/deps/rocksdb/rocksdb/cache/lru_cache.h +176 -33
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +1659 -3
- package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +94 -23
- package/deps/rocksdb/rocksdb/cache/sharded_cache.h +49 -28
- package/deps/rocksdb/rocksdb/crash_test.mk +93 -0
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +54 -31
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +10 -6
- package/deps/rocksdb/rocksdb/db/blob/blob_counting_iterator.h +146 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_counting_iterator_test.cc +326 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_fetcher.cc +34 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_fetcher.h +37 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_file_addition.cc +4 -2
- package/deps/rocksdb/rocksdb/db/blob/blob_file_addition_test.cc +8 -4
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +99 -40
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.h +20 -8
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +95 -83
- package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.cc +13 -10
- package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.h +7 -4
- package/deps/rocksdb/rocksdb/db/blob/blob_file_cache_test.cc +37 -37
- package/deps/rocksdb/rocksdb/db/blob/blob_file_completion_callback.h +101 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_file_meta.cc +8 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_meta.h +6 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +209 -44
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +37 -11
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +382 -179
- package/deps/rocksdb/rocksdb/db/blob/blob_garbage_meter.cc +100 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_garbage_meter.h +102 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_garbage_meter_test.cc +196 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_index.h +3 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_log_format.h +2 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.cc +7 -5
- package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.h +10 -3
- package/deps/rocksdb/rocksdb/db/blob/blob_log_writer.cc +12 -8
- package/deps/rocksdb/rocksdb/db/blob/blob_log_writer.h +5 -5
- package/deps/rocksdb/rocksdb/db/blob/db_blob_basic_test.cc +772 -9
- package/deps/rocksdb/rocksdb/db/blob/db_blob_compaction_test.cc +730 -0
- package/deps/rocksdb/rocksdb/db/blob/db_blob_corruption_test.cc +82 -0
- package/deps/rocksdb/rocksdb/db/blob/db_blob_index_test.cc +155 -17
- package/deps/rocksdb/rocksdb/db/blob/prefetch_buffer_collection.cc +21 -0
- package/deps/rocksdb/rocksdb/db/blob/prefetch_buffer_collection.h +38 -0
- package/deps/rocksdb/rocksdb/db/builder.cc +137 -89
- package/deps/rocksdb/rocksdb/db/builder.h +16 -37
- package/deps/rocksdb/rocksdb/db/c.cc +413 -208
- package/deps/rocksdb/rocksdb/db/c_test.c +227 -138
- package/deps/rocksdb/rocksdb/db/column_family.cc +118 -103
- package/deps/rocksdb/rocksdb/db/column_family.h +86 -44
- package/deps/rocksdb/rocksdb/db/column_family_test.cc +38 -24
- package/deps/rocksdb/rocksdb/db/compact_files_test.cc +81 -0
- package/deps/rocksdb/rocksdb/db/compaction/clipping_iterator.h +275 -0
- package/deps/rocksdb/rocksdb/db/compaction/clipping_iterator_test.cc +258 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +81 -28
- package/deps/rocksdb/rocksdb/db/compaction/compaction.h +43 -12
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iteration_stats.h +12 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +406 -215
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +147 -50
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +167 -61
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +1321 -156
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +197 -28
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +2 -3
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +246 -43
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +65 -26
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +7 -7
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +122 -9
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +8 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +18 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +1 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +536 -44
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +311 -30
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +1 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +849 -0
- package/deps/rocksdb/rocksdb/db/compaction/file_pri.h +92 -0
- package/deps/rocksdb/rocksdb/db/compaction/sst_partitioner.cc +46 -0
- package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/convenience.cc +6 -3
- package/deps/rocksdb/rocksdb/db/corruption_test.cc +383 -28
- package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +7 -2
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +154 -45
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +1095 -33
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +1249 -203
- package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +135 -9
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +1348 -166
- package/deps/rocksdb/rocksdb/db/db_dynamic_level_test.cc +3 -5
- package/deps/rocksdb/rocksdb/db/db_encryption_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +312 -45
- package/deps/rocksdb/rocksdb/db/db_flush_test.cc +1734 -48
- package/deps/rocksdb/rocksdb/db/{compacted_db_impl.cc → db_impl/compacted_db_impl.cc} +24 -7
- package/deps/rocksdb/rocksdb/db/{compacted_db_impl.h → db_impl/compacted_db_impl.h} +1 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +644 -333
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +365 -92
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +578 -210
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +38 -16
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +17 -10
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +75 -74
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +450 -183
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +42 -9
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +232 -15
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +42 -4
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +297 -100
- package/deps/rocksdb/rocksdb/db/db_info_dumper.cc +16 -15
- package/deps/rocksdb/rocksdb/db/db_inplace_update_test.cc +31 -1
- package/deps/rocksdb/rocksdb/db/db_io_failure_test.cc +6 -5
- package/deps/rocksdb/rocksdb/db/db_iter.cc +218 -153
- package/deps/rocksdb/rocksdb/db/db_iter.h +14 -12
- package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_iter_test.cc +84 -160
- package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +47 -6
- package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +204 -0
- package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +21 -13
- package/deps/rocksdb/rocksdb/db/db_logical_block_size_cache_test.cc +17 -10
- package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +38 -24
- package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +184 -19
- package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_options_test.cc +183 -3
- package/deps/rocksdb/rocksdb/db/db_properties_test.cc +409 -9
- package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +92 -23
- package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +446 -0
- package/deps/rocksdb/rocksdb/db/{db_impl/db_secondary_test.cc → db_secondary_test.cc} +363 -35
- package/deps/rocksdb/rocksdb/db/db_sst_test.cc +520 -15
- package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +50 -1
- package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +139 -4
- package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_test.cc +669 -359
- package/deps/rocksdb/rocksdb/db/db_test2.cc +2110 -304
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +76 -43
- package/deps/rocksdb/rocksdb/db/db_test_util.h +231 -103
- package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +19 -11
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +490 -71
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +980 -349
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_compaction_test.cc +11 -12
- package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +793 -0
- package/deps/rocksdb/rocksdb/db/db_write_test.cc +2 -1
- package/deps/rocksdb/rocksdb/db/dbformat.cc +4 -12
- package/deps/rocksdb/rocksdb/db/dbformat.h +28 -18
- package/deps/rocksdb/rocksdb/db/dbformat_test.cc +3 -0
- package/deps/rocksdb/rocksdb/db/deletefile_test.cc +50 -15
- package/deps/rocksdb/rocksdb/db/error_handler.cc +127 -41
- package/deps/rocksdb/rocksdb/db/error_handler.h +12 -5
- package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +524 -255
- package/deps/rocksdb/rocksdb/db/event_helpers.cc +136 -11
- package/deps/rocksdb/rocksdb/db/event_helpers.h +27 -2
- package/deps/rocksdb/rocksdb/db/experimental.cc +100 -0
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +307 -4
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +137 -60
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +12 -8
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +86 -55
- package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +86 -5
- package/deps/rocksdb/rocksdb/db/filename_test.cc +63 -0
- package/deps/rocksdb/rocksdb/db/flush_job.cc +619 -64
- package/deps/rocksdb/rocksdb/db/flush_job.h +30 -7
- package/deps/rocksdb/rocksdb/db/flush_job_test.cc +33 -16
- package/deps/rocksdb/rocksdb/db/flush_scheduler.h +2 -1
- package/deps/rocksdb/rocksdb/db/forward_iterator.cc +18 -17
- package/deps/rocksdb/rocksdb/db/forward_iterator.h +5 -4
- package/deps/rocksdb/rocksdb/db/forward_iterator_bench.cc +0 -1
- package/deps/rocksdb/rocksdb/db/history_trimming_iterator.h +91 -0
- package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +25 -14
- package/deps/rocksdb/rocksdb/db/import_column_family_job.h +6 -5
- package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/internal_stats.cc +471 -50
- package/deps/rocksdb/rocksdb/db/internal_stats.h +129 -25
- package/deps/rocksdb/rocksdb/db/job_context.h +22 -9
- package/deps/rocksdb/rocksdb/db/kv_checksum.h +394 -0
- package/deps/rocksdb/rocksdb/db/listener_test.cc +518 -41
- package/deps/rocksdb/rocksdb/db/log_format.h +4 -1
- package/deps/rocksdb/rocksdb/db/log_reader.cc +129 -6
- package/deps/rocksdb/rocksdb/db/log_reader.h +17 -1
- package/deps/rocksdb/rocksdb/db/log_test.cc +161 -11
- package/deps/rocksdb/rocksdb/db/log_writer.cc +92 -13
- package/deps/rocksdb/rocksdb/db/log_writer.h +18 -5
- package/deps/rocksdb/rocksdb/db/logs_with_prep_tracker.h +1 -1
- package/deps/rocksdb/rocksdb/db/lookup_key.h +0 -1
- package/deps/rocksdb/rocksdb/db/malloc_stats.cc +2 -2
- package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +21 -8
- package/deps/rocksdb/rocksdb/db/memtable.cc +144 -54
- package/deps/rocksdb/rocksdb/db/memtable.h +72 -15
- package/deps/rocksdb/rocksdb/db/memtable_list.cc +95 -47
- package/deps/rocksdb/rocksdb/db/memtable_list.h +33 -13
- package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +61 -31
- package/deps/rocksdb/rocksdb/db/merge_context.h +20 -8
- package/deps/rocksdb/rocksdb/db/merge_helper.cc +54 -11
- package/deps/rocksdb/rocksdb/db/merge_helper.h +17 -6
- package/deps/rocksdb/rocksdb/db/merge_helper_test.cc +13 -7
- package/deps/rocksdb/rocksdb/db/merge_test.cc +40 -19
- package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +14 -25
- package/deps/rocksdb/rocksdb/db/output_validator.cc +3 -0
- package/deps/rocksdb/rocksdb/db/output_validator.h +5 -4
- package/deps/rocksdb/rocksdb/db/perf_context_test.cc +32 -28
- package/deps/rocksdb/rocksdb/db/periodic_work_scheduler.cc +43 -29
- package/deps/rocksdb/rocksdb/db/periodic_work_scheduler.h +9 -7
- package/deps/rocksdb/rocksdb/db/periodic_work_scheduler_test.cc +21 -16
- package/deps/rocksdb/rocksdb/db/pinned_iterators_manager.h +1 -1
- package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +29 -36
- package/deps/rocksdb/rocksdb/db/pre_release_callback.h +1 -2
- package/deps/rocksdb/rocksdb/db/prefix_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/range_del_aggregator.h +2 -2
- package/deps/rocksdb/rocksdb/db/range_del_aggregator_bench.cc +11 -11
- package/deps/rocksdb/rocksdb/db/range_del_aggregator_test.cc +3 -2
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.cc +14 -8
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +17 -0
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter_test.cc +4 -2
- package/deps/rocksdb/rocksdb/db/read_callback.h +1 -0
- package/deps/rocksdb/rocksdb/db/repair.cc +87 -58
- package/deps/rocksdb/rocksdb/db/repair_test.cc +35 -5
- package/deps/rocksdb/rocksdb/db/snapshot_impl.h +2 -1
- package/deps/rocksdb/rocksdb/db/table_cache.cc +95 -69
- package/deps/rocksdb/rocksdb/db/table_cache.h +63 -53
- package/deps/rocksdb/rocksdb/db/table_properties_collector.cc +4 -4
- package/deps/rocksdb/rocksdb/db/table_properties_collector.h +78 -10
- package/deps/rocksdb/rocksdb/db/table_properties_collector_test.cc +28 -33
- package/deps/rocksdb/rocksdb/db/transaction_log_impl.cc +30 -51
- package/deps/rocksdb/rocksdb/db/transaction_log_impl.h +12 -8
- package/deps/rocksdb/rocksdb/db/version_builder.cc +564 -341
- package/deps/rocksdb/rocksdb/db/version_builder.h +8 -8
- package/deps/rocksdb/rocksdb/db/version_builder_test.cc +327 -155
- package/deps/rocksdb/rocksdb/db/version_edit.cc +89 -27
- package/deps/rocksdb/rocksdb/db/version_edit.h +42 -17
- package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +324 -43
- package/deps/rocksdb/rocksdb/db/version_edit_handler.h +79 -22
- package/deps/rocksdb/rocksdb/db/version_edit_test.cc +165 -20
- package/deps/rocksdb/rocksdb/db/version_set.cc +935 -1034
- package/deps/rocksdb/rocksdb/db/version_set.h +183 -122
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +556 -138
- package/deps/rocksdb/rocksdb/db/version_util.h +68 -0
- package/deps/rocksdb/rocksdb/db/wal_manager.cc +23 -21
- package/deps/rocksdb/rocksdb/db/wal_manager.h +5 -2
- package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +30 -27
- package/deps/rocksdb/rocksdb/db/write_batch.cc +704 -209
- package/deps/rocksdb/rocksdb/db/write_batch_internal.h +135 -2
- package/deps/rocksdb/rocksdb/db/write_batch_test.cc +209 -5
- package/deps/rocksdb/rocksdb/db/write_callback_test.cc +2 -0
- package/deps/rocksdb/rocksdb/db/write_controller.cc +47 -54
- package/deps/rocksdb/rocksdb/db/write_controller.h +12 -9
- package/deps/rocksdb/rocksdb/db/write_controller_test.cc +215 -103
- package/deps/rocksdb/rocksdb/db/write_thread.cc +11 -0
- package/deps/rocksdb/rocksdb/db/write_thread.h +14 -8
- package/deps/rocksdb/rocksdb/db_stress_tool/CMakeLists.txt +7 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +10 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +6 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress.cc +1 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +19 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +78 -25
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compaction_filter.h +13 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +29 -12
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +5 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +199 -32
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.cc +188 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +59 -10
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +77 -109
- package/deps/rocksdb/rocksdb/{third-party/folly/folly/synchronization/WaitOptions.cpp → db_stress_tool/db_stress_stat.cc} +9 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_stat.h +7 -6
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_table_properties_collector.h +1 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +699 -143
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +20 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +49 -39
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +631 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.h +287 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +1565 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.h +374 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +149 -18
- package/deps/rocksdb/rocksdb/env/composite_env.cc +464 -0
- package/deps/rocksdb/rocksdb/env/composite_env_wrapper.h +98 -646
- package/deps/rocksdb/rocksdb/env/emulated_clock.h +114 -0
- package/deps/rocksdb/rocksdb/env/env.cc +632 -42
- package/deps/rocksdb/rocksdb/env/env_basic_test.cc +84 -36
- package/deps/rocksdb/rocksdb/env/env_chroot.cc +88 -286
- package/deps/rocksdb/rocksdb/env/env_chroot.h +34 -1
- package/deps/rocksdb/rocksdb/env/env_encryption.cc +469 -277
- package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +9 -30
- package/deps/rocksdb/rocksdb/env/env_posix.cc +110 -119
- package/deps/rocksdb/rocksdb/env/env_test.cc +1128 -39
- package/deps/rocksdb/rocksdb/env/file_system.cc +147 -8
- package/deps/rocksdb/rocksdb/env/file_system_tracer.cc +207 -136
- package/deps/rocksdb/rocksdb/env/file_system_tracer.h +86 -54
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +192 -64
- package/deps/rocksdb/rocksdb/env/fs_readonly.h +107 -0
- package/deps/rocksdb/rocksdb/env/fs_remap.cc +339 -0
- package/deps/rocksdb/rocksdb/env/fs_remap.h +139 -0
- package/deps/rocksdb/rocksdb/env/io_posix.cc +245 -41
- package/deps/rocksdb/rocksdb/env/io_posix.h +66 -1
- package/deps/rocksdb/rocksdb/env/mock_env.cc +147 -149
- package/deps/rocksdb/rocksdb/env/mock_env.h +113 -11
- package/deps/rocksdb/rocksdb/env/mock_env_test.cc +2 -4
- package/deps/rocksdb/rocksdb/env/unique_id_gen.cc +164 -0
- package/deps/rocksdb/rocksdb/env/unique_id_gen.h +71 -0
- package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +9 -5
- package/deps/rocksdb/rocksdb/file/delete_scheduler.h +6 -4
- package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +19 -12
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +459 -70
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +205 -28
- package/deps/rocksdb/rocksdb/file/file_util.cc +39 -28
- package/deps/rocksdb/rocksdb/file/file_util.h +18 -27
- package/deps/rocksdb/rocksdb/file/filename.cc +59 -22
- package/deps/rocksdb/rocksdb/file/filename.h +13 -8
- package/deps/rocksdb/rocksdb/file/line_file_reader.cc +68 -0
- package/deps/rocksdb/rocksdb/file/line_file_reader.h +59 -0
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +1130 -6
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +220 -36
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +69 -17
- package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +13 -12
- package/deps/rocksdb/rocksdb/file/read_write_util.cc +3 -38
- package/deps/rocksdb/rocksdb/file/read_write_util.h +0 -4
- package/deps/rocksdb/rocksdb/file/readahead_file_info.h +33 -0
- package/deps/rocksdb/rocksdb/file/sequence_file_reader.cc +57 -9
- package/deps/rocksdb/rocksdb/file/sequence_file_reader.h +58 -6
- package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.cc +29 -54
- package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.h +22 -29
- package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +424 -50
- package/deps/rocksdb/rocksdb/file/writable_file_writer.h +66 -19
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +157 -66
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +224 -121
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +333 -30
- package/deps/rocksdb/rocksdb/include/rocksdb/cache_bench_tool.h +14 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/cleanable.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +90 -50
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +13 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/comparator.h +20 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/concurrent_task_limiter.h +8 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/configurable.h +53 -12
- package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +31 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/customizable.h +102 -7
- package/deps/rocksdb/rocksdb/include/rocksdb/data_structure.h +51 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +370 -262
- package/deps/rocksdb/rocksdb/include/rocksdb/env.h +286 -87
- package/deps/rocksdb/rocksdb/include/rocksdb/env_encryption.h +124 -64
- package/deps/rocksdb/rocksdb/include/rocksdb/experimental.h +27 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/file_checksum.h +21 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +384 -41
- package/deps/rocksdb/rocksdb/include/rocksdb/filter_policy.h +111 -143
- package/deps/rocksdb/rocksdb/include/rocksdb/flush_block_policy.h +20 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/functor_wrapper.h +56 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/io_status.h +15 -33
- package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +37 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +1 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +314 -26
- package/deps/rocksdb/rocksdb/include/rocksdb/memory_allocator.h +11 -7
- package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +50 -15
- package/deps/rocksdb/rocksdb/include/rocksdb/merge_operator.h +10 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/metadata.h +186 -96
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +373 -103
- package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +13 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/persistent_cache.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/rate_limiter.h +37 -7
- package/deps/rocksdb/rocksdb/include/rocksdb/rocksdb_namespace.h +6 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +87 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/slice.h +5 -12
- package/deps/rocksdb/rocksdb/include/rocksdb/slice_transform.h +59 -30
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_manager.h +11 -11
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +22 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_partitioner.h +17 -10
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +121 -41
- package/deps/rocksdb/rocksdb/include/rocksdb/stats_history.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/status.h +114 -136
- package/deps/rocksdb/rocksdb/include/rocksdb/system_clock.h +116 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/table.h +160 -18
- package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +57 -15
- package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +3 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/trace_reader_writer.h +10 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/trace_record.h +247 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/trace_record_result.h +187 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/transaction_log.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/types.h +14 -24
- package/deps/rocksdb/rocksdb/include/rocksdb/unique_id.h +46 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +14 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/agg_merge.h +138 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/backup_engine.h +631 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/cache_dump_load.h +142 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/checkpoint.h +12 -9
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/customizable_util.h +368 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +24 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd_execute_result.h +4 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/object_registry.h +418 -63
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +143 -73
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_util.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/replayer.h +87 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/sim_cache.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +43 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/table_properties_collectors.h +18 -23
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +26 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +32 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db_mutex.h +1 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +20 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +30 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/wal_filter.h +11 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +89 -11
- package/deps/rocksdb/rocksdb/include/rocksdb/write_batch_base.h +11 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/write_buffer_manager.h +108 -38
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger.cc +40 -23
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger.h +12 -5
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +100 -49
- package/deps/rocksdb/rocksdb/logging/env_logger.h +7 -5
- package/deps/rocksdb/rocksdb/logging/env_logger_test.cc +0 -1
- package/deps/rocksdb/rocksdb/logging/posix_logger.h +3 -9
- package/deps/rocksdb/rocksdb/memory/arena.cc +3 -1
- package/deps/rocksdb/rocksdb/memory/arena.h +1 -1
- package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +171 -106
- package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.h +31 -15
- package/deps/rocksdb/rocksdb/memory/memkind_kmem_allocator.cc +15 -4
- package/deps/rocksdb/rocksdb/memory/memkind_kmem_allocator.h +24 -8
- package/deps/rocksdb/rocksdb/memory/memory_allocator.cc +91 -0
- package/deps/rocksdb/rocksdb/memory/memory_allocator_test.cc +239 -0
- package/deps/rocksdb/rocksdb/memory/memory_usage.h +14 -1
- package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.cc +72 -9
- package/deps/rocksdb/rocksdb/memtable/hash_skiplist_rep.cc +52 -6
- package/deps/rocksdb/rocksdb/memtable/inlineskiplist.h +53 -0
- package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +5 -5
- package/deps/rocksdb/rocksdb/memtable/memtablerep_bench.cc +17 -5
- package/deps/rocksdb/rocksdb/memtable/skiplist_test.cc +1 -1
- package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +87 -0
- package/deps/rocksdb/rocksdb/memtable/vectorrep.cc +20 -10
- package/deps/rocksdb/rocksdb/memtable/write_buffer_manager.cc +148 -94
- package/deps/rocksdb/rocksdb/memtable/write_buffer_manager_test.cc +160 -62
- package/deps/rocksdb/rocksdb/microbench/CMakeLists.txt +17 -0
- package/deps/rocksdb/rocksdb/microbench/README.md +60 -0
- package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +1360 -0
- package/deps/rocksdb/rocksdb/microbench/ribbon_bench.cc +153 -0
- package/deps/rocksdb/rocksdb/monitoring/histogram.cc +8 -15
- package/deps/rocksdb/rocksdb/monitoring/histogram.h +0 -1
- package/deps/rocksdb/rocksdb/monitoring/histogram_test.cc +18 -16
- package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.cc +9 -7
- package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.h +5 -3
- package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.cc +7 -5
- package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.h +37 -12
- package/deps/rocksdb/rocksdb/monitoring/iostats_context.cc +26 -6
- package/deps/rocksdb/rocksdb/monitoring/iostats_context_imp.h +6 -10
- package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +14 -13
- package/deps/rocksdb/rocksdb/monitoring/perf_context_imp.h +19 -20
- package/deps/rocksdb/rocksdb/monitoring/perf_step_timer.h +18 -18
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +84 -2
- package/deps/rocksdb/rocksdb/monitoring/statistics.h +6 -0
- package/deps/rocksdb/rocksdb/monitoring/statistics_test.cc +47 -2
- package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +67 -54
- package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.cc +4 -1
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util.cc +2 -1
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +2 -2
- package/deps/rocksdb/rocksdb/options/cf_options.cc +280 -212
- package/deps/rocksdb/rocksdb/options/cf_options.h +51 -57
- package/deps/rocksdb/rocksdb/options/configurable.cc +242 -138
- package/deps/rocksdb/rocksdb/options/configurable_helper.h +4 -68
- package/deps/rocksdb/rocksdb/options/configurable_test.cc +144 -21
- package/deps/rocksdb/rocksdb/options/configurable_test.h +2 -3
- package/deps/rocksdb/rocksdb/options/customizable.cc +67 -7
- package/deps/rocksdb/rocksdb/options/customizable_test.cc +1773 -151
- package/deps/rocksdb/rocksdb/options/db_options.cc +275 -47
- package/deps/rocksdb/rocksdb/options/db_options.h +36 -7
- package/deps/rocksdb/rocksdb/options/options.cc +49 -17
- package/deps/rocksdb/rocksdb/options/options_helper.cc +369 -352
- package/deps/rocksdb/rocksdb/options/options_helper.h +23 -23
- package/deps/rocksdb/rocksdb/options/options_parser.cc +18 -13
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +67 -54
- package/deps/rocksdb/rocksdb/options/options_test.cc +1162 -187
- package/deps/rocksdb/rocksdb/plugin/README.md +43 -0
- package/deps/rocksdb/rocksdb/port/jemalloc_helper.h +1 -1
- package/deps/rocksdb/rocksdb/port/lang.h +52 -0
- package/deps/rocksdb/rocksdb/port/port_example.h +1 -1
- package/deps/rocksdb/rocksdb/port/port_posix.cc +31 -2
- package/deps/rocksdb/rocksdb/port/port_posix.h +20 -2
- package/deps/rocksdb/rocksdb/port/stack_trace.cc +20 -4
- package/deps/rocksdb/rocksdb/port/sys_time.h +2 -2
- package/deps/rocksdb/rocksdb/port/win/env_default.cc +7 -7
- package/deps/rocksdb/rocksdb/port/win/env_win.cc +44 -74
- package/deps/rocksdb/rocksdb/port/win/env_win.h +25 -23
- package/deps/rocksdb/rocksdb/port/win/io_win.cc +32 -34
- package/deps/rocksdb/rocksdb/port/win/io_win.h +12 -6
- package/deps/rocksdb/rocksdb/port/win/port_win.cc +55 -35
- package/deps/rocksdb/rocksdb/port/win/port_win.h +22 -5
- package/deps/rocksdb/rocksdb/port/win/win_logger.cc +3 -3
- package/deps/rocksdb/rocksdb/port/win/win_logger.h +3 -5
- package/deps/rocksdb/rocksdb/port/win/win_thread.cc +7 -1
- package/deps/rocksdb/rocksdb/port/win/win_thread.h +12 -17
- package/deps/rocksdb/rocksdb/python.mk +9 -0
- package/deps/rocksdb/rocksdb/src.mk +82 -34
- package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.cc +3 -4
- package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.h +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/block.cc +158 -80
- package/deps/rocksdb/rocksdb/table/block_based/block.h +64 -36
- package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.cc +23 -14
- package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.h +13 -5
- package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block_test.cc +3 -218
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +603 -328
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +28 -22
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +220 -82
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +8 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +3 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +28 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +598 -492
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +151 -96
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +31 -58
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +330 -92
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +50 -19
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +23 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_like_traits.h +226 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +56 -22
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +42 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +5 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_type.h +2 -0
- package/deps/rocksdb/rocksdb/table/block_based/cachable_entry.h +34 -20
- package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +9 -10
- package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +26 -3
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +844 -202
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy_internal.h +281 -81
- package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.cc +62 -2
- package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.h +2 -3
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +28 -7
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +22 -6
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block_test.cc +28 -26
- package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +1 -2
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/mock_block_based_table.h +11 -4
- package/deps/rocksdb/rocksdb/table/block_based/parsed_full_filter_block.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/parsed_full_filter_block.h +2 -0
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +68 -26
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +44 -9
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +12 -10
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +3 -4
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.h +23 -4
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +44 -19
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.h +5 -1
- package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +16 -28
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +7 -4
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +2 -2
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +77 -57
- package/deps/rocksdb/rocksdb/table/block_fetcher.h +23 -12
- package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +43 -56
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +8 -8
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.h +2 -1
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +52 -70
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_factory.cc +5 -8
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_factory.h +1 -1
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.cc +17 -11
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.h +2 -3
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +42 -51
- package/deps/rocksdb/rocksdb/table/format.cc +258 -104
- package/deps/rocksdb/rocksdb/table/format.h +120 -109
- package/deps/rocksdb/rocksdb/table/get_context.cc +97 -65
- package/deps/rocksdb/rocksdb/table/get_context.h +19 -12
- package/deps/rocksdb/rocksdb/table/internal_iterator.h +14 -0
- package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +8 -0
- package/deps/rocksdb/rocksdb/table/merger_test.cc +3 -2
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +11 -21
- package/deps/rocksdb/rocksdb/table/merging_iterator.h +3 -3
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +176 -171
- package/deps/rocksdb/rocksdb/table/meta_blocks.h +47 -33
- package/deps/rocksdb/rocksdb/table/mock_table.cc +7 -9
- package/deps/rocksdb/rocksdb/table/mock_table.h +3 -2
- package/deps/rocksdb/rocksdb/table/multiget_context.h +15 -8
- package/deps/rocksdb/rocksdb/table/persistent_cache_helper.cc +22 -29
- package/deps/rocksdb/rocksdb/table/persistent_cache_options.h +6 -3
- package/deps/rocksdb/rocksdb/table/plain/plain_table_bloom.h +5 -8
- package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +29 -26
- package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.h +12 -16
- package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.cc +145 -69
- package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.h +1 -1
- package/deps/rocksdb/rocksdb/table/plain/plain_table_index.cc +7 -6
- package/deps/rocksdb/rocksdb/table/plain/plain_table_index.h +3 -4
- package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.cc +3 -1
- package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.h +1 -1
- package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +13 -18
- package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.h +4 -9
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +55 -37
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +10 -5
- package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +11 -8
- package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +222 -16
- package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +106 -58
- package/deps/rocksdb/rocksdb/table/sst_file_writer_collectors.h +6 -5
- package/deps/rocksdb/rocksdb/table/table_builder.h +68 -44
- package/deps/rocksdb/rocksdb/table/table_factory.cc +37 -10
- package/deps/rocksdb/rocksdb/table/table_properties.cc +109 -54
- package/deps/rocksdb/rocksdb/table/table_properties_internal.h +4 -20
- package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +33 -32
- package/deps/rocksdb/rocksdb/table/table_reader_caller.h +2 -0
- package/deps/rocksdb/rocksdb/table/table_test.cc +989 -326
- package/deps/rocksdb/rocksdb/table/two_level_iterator.cc +4 -0
- package/deps/rocksdb/rocksdb/table/unique_id.cc +166 -0
- package/deps/rocksdb/rocksdb/table/unique_id_impl.h +59 -0
- package/deps/rocksdb/rocksdb/test_util/mock_time_env.cc +1 -1
- package/deps/rocksdb/rocksdb/test_util/mock_time_env.h +13 -10
- package/deps/rocksdb/rocksdb/test_util/sync_point.cc +1 -2
- package/deps/rocksdb/rocksdb/test_util/sync_point.h +35 -16
- package/deps/rocksdb/rocksdb/test_util/sync_point_impl.cc +32 -10
- package/deps/rocksdb/rocksdb/test_util/sync_point_impl.h +31 -4
- package/deps/rocksdb/rocksdb/test_util/testharness.cc +53 -1
- package/deps/rocksdb/rocksdb/test_util/testharness.h +67 -3
- package/deps/rocksdb/rocksdb/test_util/testutil.cc +236 -66
- package/deps/rocksdb/rocksdb/test_util/testutil.h +63 -100
- package/deps/rocksdb/rocksdb/test_util/transaction_test_util.cc +12 -1
- package/deps/rocksdb/rocksdb/tools/blob_dump.cc +2 -2
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.cc +6 -3
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.h +1 -0
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +9 -3
- package/deps/rocksdb/rocksdb/tools/db_bench.cc +1 -1
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +1420 -611
- package/deps/rocksdb/rocksdb/tools/db_bench_tool_test.cc +11 -8
- package/deps/rocksdb/rocksdb/tools/db_repl_stress.cc +11 -1
- package/deps/rocksdb/rocksdb/tools/io_tracer_parser_test.cc +4 -2
- package/deps/rocksdb/rocksdb/tools/io_tracer_parser_tool.cc +46 -22
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +655 -179
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +58 -6
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +472 -29
- package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +23 -2
- package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +2 -2
- package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.cc +246 -0
- package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.h +126 -0
- package/deps/rocksdb/rocksdb/tools/sst_dump_test.cc +83 -29
- package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +38 -17
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_test.cc +191 -55
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +219 -296
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.h +87 -53
- package/deps/rocksdb/rocksdb/tools/write_stress.cc +8 -7
- package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.cc +6 -5
- package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.h +5 -4
- package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer_test.cc +14 -9
- package/deps/rocksdb/rocksdb/trace_replay/io_tracer.cc +134 -60
- package/deps/rocksdb/rocksdb/trace_replay/io_tracer.h +49 -38
- package/deps/rocksdb/rocksdb/trace_replay/io_tracer_test.cc +152 -15
- package/deps/rocksdb/rocksdb/trace_replay/trace_record.cc +206 -0
- package/deps/rocksdb/rocksdb/trace_replay/trace_record_handler.cc +190 -0
- package/deps/rocksdb/rocksdb/trace_replay/trace_record_handler.h +46 -0
- package/deps/rocksdb/rocksdb/trace_replay/trace_record_result.cc +146 -0
- package/deps/rocksdb/rocksdb/trace_replay/trace_replay.cc +475 -344
- package/deps/rocksdb/rocksdb/trace_replay/trace_replay.h +83 -95
- package/deps/rocksdb/rocksdb/util/autovector.h +38 -18
- package/deps/rocksdb/rocksdb/util/autovector_test.cc +1 -1
- package/deps/rocksdb/rocksdb/util/bloom_impl.h +4 -0
- package/deps/rocksdb/rocksdb/util/bloom_test.cc +276 -94
- package/deps/rocksdb/rocksdb/util/build_version.cc.in +81 -4
- package/deps/rocksdb/rocksdb/util/cast_util.h +22 -0
- package/deps/rocksdb/rocksdb/util/channel.h +2 -0
- package/deps/rocksdb/rocksdb/util/coding.h +1 -33
- package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +8 -0
- package/deps/rocksdb/rocksdb/util/comparator.cc +163 -3
- package/deps/rocksdb/rocksdb/util/compression.cc +122 -0
- package/deps/rocksdb/rocksdb/util/compression.h +212 -7
- package/deps/rocksdb/rocksdb/util/compression_context_cache.cc +1 -3
- package/deps/rocksdb/rocksdb/util/crc32c.cc +165 -2
- package/deps/rocksdb/rocksdb/util/crc32c.h +6 -0
- package/deps/rocksdb/rocksdb/util/crc32c_arm64.cc +14 -0
- package/deps/rocksdb/rocksdb/util/crc32c_ppc.h +3 -0
- package/deps/rocksdb/rocksdb/util/crc32c_test.cc +47 -0
- package/deps/rocksdb/rocksdb/util/defer.h +30 -1
- package/deps/rocksdb/rocksdb/util/defer_test.cc +11 -0
- package/deps/rocksdb/rocksdb/util/duplicate_detector.h +3 -1
- package/deps/rocksdb/rocksdb/util/dynamic_bloom.h +3 -3
- package/deps/rocksdb/rocksdb/util/dynamic_bloom_test.cc +5 -4
- package/deps/rocksdb/rocksdb/util/fastrange.h +2 -0
- package/deps/rocksdb/rocksdb/util/file_checksum_helper.cc +36 -0
- package/deps/rocksdb/rocksdb/util/file_checksum_helper.h +3 -1
- package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +512 -52
- package/deps/rocksdb/rocksdb/util/filter_bench.cc +65 -10
- package/deps/rocksdb/rocksdb/util/gflags_compat.h +6 -1
- package/deps/rocksdb/rocksdb/util/hash.cc +121 -3
- package/deps/rocksdb/rocksdb/util/hash.h +31 -1
- package/deps/rocksdb/rocksdb/util/hash128.h +26 -0
- package/deps/rocksdb/rocksdb/util/hash_containers.h +51 -0
- package/deps/rocksdb/rocksdb/util/hash_test.cc +194 -2
- package/deps/rocksdb/rocksdb/util/heap.h +6 -1
- package/deps/rocksdb/rocksdb/util/kv_map.h +1 -1
- package/deps/rocksdb/rocksdb/util/log_write_bench.cc +8 -6
- package/deps/rocksdb/rocksdb/util/math.h +74 -7
- package/deps/rocksdb/rocksdb/util/math128.h +13 -1
- package/deps/rocksdb/rocksdb/util/murmurhash.h +3 -3
- package/deps/rocksdb/rocksdb/util/random.cc +9 -0
- package/deps/rocksdb/rocksdb/util/random.h +6 -0
- package/deps/rocksdb/rocksdb/util/rate_limiter.cc +298 -144
- package/deps/rocksdb/rocksdb/util/rate_limiter.h +68 -19
- package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +335 -23
- package/deps/rocksdb/rocksdb/util/repeatable_thread.h +10 -12
- package/deps/rocksdb/rocksdb/util/repeatable_thread_test.cc +18 -15
- package/deps/rocksdb/rocksdb/util/ribbon_alg.h +98 -74
- package/deps/rocksdb/rocksdb/util/ribbon_config.cc +506 -0
- package/deps/rocksdb/rocksdb/util/ribbon_config.h +182 -0
- package/deps/rocksdb/rocksdb/util/ribbon_impl.h +154 -79
- package/deps/rocksdb/rocksdb/util/ribbon_test.cc +742 -365
- package/deps/rocksdb/rocksdb/util/set_comparator.h +2 -0
- package/deps/rocksdb/rocksdb/util/slice.cc +198 -35
- package/deps/rocksdb/rocksdb/util/slice_test.cc +30 -1
- package/deps/rocksdb/rocksdb/util/status.cc +32 -29
- package/deps/rocksdb/rocksdb/util/stop_watch.h +18 -18
- package/deps/rocksdb/rocksdb/util/string_util.cc +85 -6
- package/deps/rocksdb/rocksdb/util/string_util.h +47 -2
- package/deps/rocksdb/rocksdb/util/thread_guard.h +41 -0
- package/deps/rocksdb/rocksdb/util/thread_local.h +2 -2
- package/deps/rocksdb/rocksdb/util/thread_local_test.cc +22 -24
- package/deps/rocksdb/rocksdb/util/threadpool_imp.cc +7 -6
- package/deps/rocksdb/rocksdb/util/timer.h +55 -46
- package/deps/rocksdb/rocksdb/util/timer_test.cc +50 -48
- package/deps/rocksdb/rocksdb/util/user_comparator_wrapper.h +4 -0
- package/deps/rocksdb/rocksdb/util/vector_iterator.h +31 -15
- package/deps/rocksdb/rocksdb/util/work_queue.h +2 -0
- package/deps/rocksdb/rocksdb/util/xxhash.cc +35 -1144
- package/deps/rocksdb/rocksdb/util/xxhash.h +5117 -373
- package/deps/rocksdb/rocksdb/util/xxph3.h +1762 -0
- package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge.cc +238 -0
- package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge.h +49 -0
- package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge_test.cc +134 -0
- package/deps/rocksdb/rocksdb/utilities/agg_merge/test_agg_merge.cc +104 -0
- package/deps/rocksdb/rocksdb/utilities/agg_merge/test_agg_merge.h +47 -0
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +3164 -0
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_impl.h +29 -0
- package/deps/rocksdb/rocksdb/utilities/{backupable/backupable_db_test.cc → backup/backup_engine_test.cc} +1679 -485
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.cc +6 -4
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.h +14 -9
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.cc +2 -0
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.h +1 -0
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_gc_stats.h +4 -0
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +37 -27
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +8 -4
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl_filesnapshot.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_iterator.h +13 -10
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +5 -0
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +44 -25
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +3 -4
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +27 -19
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.h +4 -2
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load.cc +69 -0
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +489 -0
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.h +366 -0
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.cc +67 -4
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.h +21 -6
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_functional_test.cc +107 -7
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_options.h +43 -0
- package/deps/rocksdb/rocksdb/utilities/cassandra/format.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.cc +24 -8
- package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.h +7 -7
- package/deps/rocksdb/rocksdb/utilities/cassandra/serialize.h +5 -0
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +99 -218
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.h +8 -24
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +114 -1
- package/deps/rocksdb/rocksdb/utilities/compaction_filters/layered_compaction_filter_base.h +6 -2
- package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc +0 -4
- package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.h +7 -6
- package/deps/rocksdb/rocksdb/utilities/compaction_filters.cc +56 -0
- package/deps/rocksdb/rocksdb/utilities/convenience/info_log_finder.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/counted_fs.cc +355 -0
- package/deps/rocksdb/rocksdb/utilities/counted_fs.h +152 -0
- package/deps/rocksdb/rocksdb/utilities/env_mirror.cc +13 -0
- package/deps/rocksdb/rocksdb/utilities/env_timed.cc +164 -122
- package/deps/rocksdb/rocksdb/utilities/env_timed.h +97 -0
- package/deps/rocksdb/rocksdb/utilities/fault_injection_env.cc +75 -17
- package/deps/rocksdb/rocksdb/utilities/fault_injection_env.h +19 -3
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +539 -126
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +162 -17
- package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.cc +110 -0
- package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.h +94 -0
- package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +5 -2
- package/deps/rocksdb/rocksdb/utilities/memory_allocators.h +104 -0
- package/deps/rocksdb/rocksdb/utilities/merge_operators/bytesxor.h +5 -3
- package/deps/rocksdb/rocksdb/utilities/merge_operators/max.cc +4 -1
- package/deps/rocksdb/rocksdb/utilities/merge_operators/put.cc +11 -3
- package/deps/rocksdb/rocksdb/utilities/merge_operators/sortlist.cc +0 -2
- package/deps/rocksdb/rocksdb/utilities/merge_operators/sortlist.h +5 -1
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.cc +29 -10
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.h +6 -3
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend2.cc +29 -14
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend2.h +6 -3
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend_test.cc +71 -18
- package/deps/rocksdb/rocksdb/utilities/merge_operators/uint64add.cc +15 -9
- package/deps/rocksdb/rocksdb/utilities/merge_operators.cc +120 -0
- package/deps/rocksdb/rocksdb/utilities/merge_operators.h +3 -23
- package/deps/rocksdb/rocksdb/utilities/object_registry.cc +267 -42
- package/deps/rocksdb/rocksdb/utilities/object_registry_test.cc +702 -76
- package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration_test.cc +26 -5
- package/deps/rocksdb/rocksdb/utilities/options/options_util.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +124 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.cc +2 -3
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.h +8 -9
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +15 -13
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.h +4 -4
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_evictable.h +2 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_bench.cc +8 -9
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.h +6 -3
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.h +2 -2
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/cache_simulator.cc +3 -0
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/cache_simulator_test.cc +2 -0
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache.cc +43 -35
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache_test.cc +20 -18
- package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.cc +107 -2
- package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.cc +23 -15
- package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.h +2 -2
- package/deps/rocksdb/rocksdb/utilities/trace/replayer_impl.cc +316 -0
- package/deps/rocksdb/rocksdb/utilities/trace/replayer_impl.h +86 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.cc +4 -5
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.h +4 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +119 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.cc +20 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.h +20 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_external_pthread.h +3 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +4 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc +38 -14
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.h +17 -10
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +1 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +1 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +423 -34
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +82 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.cc +72 -40
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.h +32 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +13 -5
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +7 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +207 -43
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +50 -7
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.cc +28 -10
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.h +11 -6
- package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +516 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +506 -15
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +27 -13
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +14 -14
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.h +3 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +14 -5
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +305 -27
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +55 -159
- package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +209 -2
- package/deps/rocksdb/rocksdb/utilities/wal_filter.cc +23 -0
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +157 -88
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +501 -114
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +91 -316
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +1212 -672
- package/deps/rocksdb/rocksdb.gyp +425 -446
- package/package.json +8 -8
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/prebuilds/darwin-x86/node.napi.node +0 -0
- package/prebuilds/{darwin-x64+arm64 → linux-x64}/node.napi.node +0 -0
- package/deps/rocksdb/rocksdb/env/env_hdfs.cc +0 -648
- package/deps/rocksdb/rocksdb/hdfs/README +0 -23
- package/deps/rocksdb/rocksdb/hdfs/env_hdfs.h +0 -386
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/backupable_db.h +0 -535
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/env_librados.h +0 -175
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/utility_db.h +0 -34
- package/deps/rocksdb/rocksdb/memory/memkind_kmem_allocator_test.cc +0 -102
- package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.h +0 -49
- package/deps/rocksdb/rocksdb/memtable/hash_skiplist_rep.h +0 -44
- package/deps/rocksdb/rocksdb/options/customizable_helper.h +0 -216
- package/deps/rocksdb/rocksdb/third-party/folly/folly/CPortability.h +0 -27
- package/deps/rocksdb/rocksdb/third-party/folly/folly/ConstexprMath.h +0 -45
- package/deps/rocksdb/rocksdb/third-party/folly/folly/Indestructible.h +0 -166
- package/deps/rocksdb/rocksdb/third-party/folly/folly/Optional.h +0 -570
- package/deps/rocksdb/rocksdb/third-party/folly/folly/Portability.h +0 -92
- package/deps/rocksdb/rocksdb/third-party/folly/folly/ScopeGuard.h +0 -54
- package/deps/rocksdb/rocksdb/third-party/folly/folly/Traits.h +0 -152
- package/deps/rocksdb/rocksdb/third-party/folly/folly/Unit.h +0 -59
- package/deps/rocksdb/rocksdb/third-party/folly/folly/Utility.h +0 -141
- package/deps/rocksdb/rocksdb/third-party/folly/folly/chrono/Hardware.h +0 -33
- package/deps/rocksdb/rocksdb/third-party/folly/folly/container/Array.h +0 -74
- package/deps/rocksdb/rocksdb/third-party/folly/folly/detail/Futex-inl.h +0 -117
- package/deps/rocksdb/rocksdb/third-party/folly/folly/detail/Futex.cpp +0 -263
- package/deps/rocksdb/rocksdb/third-party/folly/folly/detail/Futex.h +0 -96
- package/deps/rocksdb/rocksdb/third-party/folly/folly/functional/Invoke.h +0 -40
- package/deps/rocksdb/rocksdb/third-party/folly/folly/hash/Hash.h +0 -29
- package/deps/rocksdb/rocksdb/third-party/folly/folly/lang/Align.h +0 -144
- package/deps/rocksdb/rocksdb/third-party/folly/folly/lang/Bits.h +0 -30
- package/deps/rocksdb/rocksdb/third-party/folly/folly/lang/Launder.h +0 -51
- package/deps/rocksdb/rocksdb/third-party/folly/folly/portability/Asm.h +0 -28
- package/deps/rocksdb/rocksdb/third-party/folly/folly/portability/SysSyscall.h +0 -10
- package/deps/rocksdb/rocksdb/third-party/folly/folly/portability/SysTypes.h +0 -26
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicNotification-inl.h +0 -138
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicNotification.cpp +0 -23
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicNotification.h +0 -57
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicUtil-inl.h +0 -260
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicUtil.h +0 -52
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/Baton.h +0 -328
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutex-inl.h +0 -1703
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutex.cpp +0 -16
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutex.h +0 -304
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutexSpecializations.h +0 -39
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/ParkingLot.cpp +0 -26
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/ParkingLot.h +0 -318
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/WaitOptions.h +0 -57
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/InlineFunctionRef.h +0 -219
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/ProxyLockable-inl.h +0 -207
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/ProxyLockable.h +0 -164
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/Sleeper.h +0 -57
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/Spin.h +0 -77
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/test/DistributedMutexTest.cpp +0 -1145
- package/deps/rocksdb/rocksdb/util/build_version.h +0 -15
- package/deps/rocksdb/rocksdb/util/xxh3p.h +0 -1392
- package/deps/rocksdb/rocksdb/utilities/backupable/backupable_db.cc +0 -2354
- package/deps/rocksdb/rocksdb/utilities/env_librados.cc +0 -1497
- package/deps/rocksdb/rocksdb/utilities/env_librados_test.cc +0 -1146
- package/prebuilds/linux-x64/node.napi.glibc.node +0 -0
|
@@ -21,13 +21,16 @@
|
|
|
21
21
|
#include "db/db_impl/db_impl.h"
|
|
22
22
|
#include "db/dbformat.h"
|
|
23
23
|
#include "db/log_reader.h"
|
|
24
|
+
#include "db/version_util.h"
|
|
24
25
|
#include "db/write_batch_internal.h"
|
|
25
|
-
#include "env/composite_env_wrapper.h"
|
|
26
26
|
#include "file/filename.h"
|
|
27
27
|
#include "rocksdb/cache.h"
|
|
28
|
+
#include "rocksdb/experimental.h"
|
|
28
29
|
#include "rocksdb/file_checksum.h"
|
|
30
|
+
#include "rocksdb/filter_policy.h"
|
|
31
|
+
#include "rocksdb/options.h"
|
|
29
32
|
#include "rocksdb/table_properties.h"
|
|
30
|
-
#include "rocksdb/utilities/
|
|
33
|
+
#include "rocksdb/utilities/backup_engine.h"
|
|
31
34
|
#include "rocksdb/utilities/checkpoint.h"
|
|
32
35
|
#include "rocksdb/utilities/debug.h"
|
|
33
36
|
#include "rocksdb/utilities/options_util.h"
|
|
@@ -50,6 +53,7 @@ class FileChecksumGenCrc32c;
|
|
|
50
53
|
class FileChecksumGenCrc32cFactory;
|
|
51
54
|
|
|
52
55
|
const std::string LDBCommand::ARG_ENV_URI = "env_uri";
|
|
56
|
+
const std::string LDBCommand::ARG_FS_URI = "fs_uri";
|
|
53
57
|
const std::string LDBCommand::ARG_DB = "db";
|
|
54
58
|
const std::string LDBCommand::ARG_PATH = "path";
|
|
55
59
|
const std::string LDBCommand::ARG_SECONDARY_PATH = "secondary_path";
|
|
@@ -81,6 +85,20 @@ const std::string LDBCommand::ARG_WRITE_BUFFER_SIZE = "write_buffer_size";
|
|
|
81
85
|
const std::string LDBCommand::ARG_FILE_SIZE = "file_size";
|
|
82
86
|
const std::string LDBCommand::ARG_CREATE_IF_MISSING = "create_if_missing";
|
|
83
87
|
const std::string LDBCommand::ARG_NO_VALUE = "no_value";
|
|
88
|
+
const std::string LDBCommand::ARG_ENABLE_BLOB_FILES = "enable_blob_files";
|
|
89
|
+
const std::string LDBCommand::ARG_MIN_BLOB_SIZE = "min_blob_size";
|
|
90
|
+
const std::string LDBCommand::ARG_BLOB_FILE_SIZE = "blob_file_size";
|
|
91
|
+
const std::string LDBCommand::ARG_BLOB_COMPRESSION_TYPE =
|
|
92
|
+
"blob_compression_type";
|
|
93
|
+
const std::string LDBCommand::ARG_ENABLE_BLOB_GARBAGE_COLLECTION =
|
|
94
|
+
"enable_blob_garbage_collection";
|
|
95
|
+
const std::string LDBCommand::ARG_BLOB_GARBAGE_COLLECTION_AGE_CUTOFF =
|
|
96
|
+
"blob_garbage_collection_age_cutoff";
|
|
97
|
+
const std::string LDBCommand::ARG_BLOB_GARBAGE_COLLECTION_FORCE_THRESHOLD =
|
|
98
|
+
"blob_garbage_collection_force_threshold";
|
|
99
|
+
const std::string LDBCommand::ARG_BLOB_COMPACTION_READAHEAD_SIZE =
|
|
100
|
+
"blob_compaction_readahead_size";
|
|
101
|
+
const std::string LDBCommand::ARG_DECODE_BLOB_INDEX = "decode_blob_index";
|
|
84
102
|
|
|
85
103
|
const char* LDBCommand::DELIM = " ==> ";
|
|
86
104
|
|
|
@@ -91,7 +109,7 @@ void DumpWalFile(Options options, std::string wal_file, bool print_header,
|
|
|
91
109
|
LDBCommandExecuteResult* exec_state);
|
|
92
110
|
|
|
93
111
|
void DumpSstFile(Options options, std::string filename, bool output_hex,
|
|
94
|
-
bool show_properties);
|
|
112
|
+
bool show_properties, bool decode_blob_index);
|
|
95
113
|
};
|
|
96
114
|
|
|
97
115
|
LDBCommand* LDBCommand::InitFromCmdLineArgs(
|
|
@@ -247,6 +265,10 @@ LDBCommand* LDBCommand::SelectCommand(const ParsedParams& parsed_params) {
|
|
|
247
265
|
return new DBFileDumperCommand(parsed_params.cmd_params,
|
|
248
266
|
parsed_params.option_map,
|
|
249
267
|
parsed_params.flags);
|
|
268
|
+
} else if (parsed_params.cmd == DBLiveFilesMetadataDumperCommand::Name()) {
|
|
269
|
+
return new DBLiveFilesMetadataDumperCommand(parsed_params.cmd_params,
|
|
270
|
+
parsed_params.option_map,
|
|
271
|
+
parsed_params.flags);
|
|
250
272
|
} else if (parsed_params.cmd == InternalDumpCommand::Name()) {
|
|
251
273
|
return new InternalDumpCommand(parsed_params.cmd_params,
|
|
252
274
|
parsed_params.option_map,
|
|
@@ -283,6 +305,10 @@ LDBCommand* LDBCommand::SelectCommand(const ParsedParams& parsed_params) {
|
|
|
283
305
|
return new UnsafeRemoveSstFileCommand(parsed_params.cmd_params,
|
|
284
306
|
parsed_params.option_map,
|
|
285
307
|
parsed_params.flags);
|
|
308
|
+
} else if (parsed_params.cmd == UpdateManifestCommand::Name()) {
|
|
309
|
+
return new UpdateManifestCommand(parsed_params.cmd_params,
|
|
310
|
+
parsed_params.option_map,
|
|
311
|
+
parsed_params.flags);
|
|
286
312
|
}
|
|
287
313
|
return nullptr;
|
|
288
314
|
}
|
|
@@ -295,9 +321,10 @@ void LDBCommand::Run() {
|
|
|
295
321
|
|
|
296
322
|
if (!options_.env || options_.env == Env::Default()) {
|
|
297
323
|
Env* env = Env::Default();
|
|
298
|
-
Status s = Env::
|
|
299
|
-
|
|
300
|
-
|
|
324
|
+
Status s = Env::CreateFromUri(config_options_, env_uri_, fs_uri_, &env,
|
|
325
|
+
&env_guard_);
|
|
326
|
+
if (!s.ok()) {
|
|
327
|
+
fprintf(stderr, "%s\n", s.ToString().c_str());
|
|
301
328
|
exec_state_ = LDBCommandExecuteResult::Failed(s.ToString());
|
|
302
329
|
return;
|
|
303
330
|
}
|
|
@@ -342,7 +369,7 @@ LDBCommand::LDBCommand(const std::map<std::string, std::string>& options,
|
|
|
342
369
|
option_map_(options),
|
|
343
370
|
flags_(flags),
|
|
344
371
|
valid_cmd_line_options_(valid_cmd_line_options) {
|
|
345
|
-
|
|
372
|
+
auto itr = options.find(ARG_DB);
|
|
346
373
|
if (itr != options.end()) {
|
|
347
374
|
db_path_ = itr->second;
|
|
348
375
|
}
|
|
@@ -352,6 +379,11 @@ LDBCommand::LDBCommand(const std::map<std::string, std::string>& options,
|
|
|
352
379
|
env_uri_ = itr->second;
|
|
353
380
|
}
|
|
354
381
|
|
|
382
|
+
itr = options.find(ARG_FS_URI);
|
|
383
|
+
if (itr != options.end()) {
|
|
384
|
+
fs_uri_ = itr->second;
|
|
385
|
+
}
|
|
386
|
+
|
|
355
387
|
itr = options.find(ARG_CF_NAME);
|
|
356
388
|
if (itr != options.end()) {
|
|
357
389
|
column_family_name_ = itr->second;
|
|
@@ -372,6 +404,9 @@ LDBCommand::LDBCommand(const std::map<std::string, std::string>& options,
|
|
|
372
404
|
try_load_options_ = IsFlagPresent(flags, ARG_TRY_LOAD_OPTIONS);
|
|
373
405
|
force_consistency_checks_ =
|
|
374
406
|
!IsFlagPresent(flags, ARG_DISABLE_CONSISTENCY_CHECKS);
|
|
407
|
+
enable_blob_files_ = IsFlagPresent(flags, ARG_ENABLE_BLOB_FILES);
|
|
408
|
+
enable_blob_garbage_collection_ =
|
|
409
|
+
IsFlagPresent(flags, ARG_ENABLE_BLOB_GARBAGE_COLLECTION);
|
|
375
410
|
config_options_.ignore_unknown_options =
|
|
376
411
|
IsFlagPresent(flags, ARG_IGNORE_UNKNOWN_OPTIONS);
|
|
377
412
|
}
|
|
@@ -484,6 +519,7 @@ ColumnFamilyHandle* LDBCommand::GetCfHandle() {
|
|
|
484
519
|
std::vector<std::string> LDBCommand::BuildCmdLineOptions(
|
|
485
520
|
std::vector<std::string> options) {
|
|
486
521
|
std::vector<std::string> ret = {ARG_ENV_URI,
|
|
522
|
+
ARG_FS_URI,
|
|
487
523
|
ARG_DB,
|
|
488
524
|
ARG_SECONDARY_PATH,
|
|
489
525
|
ARG_BLOOM_BITS,
|
|
@@ -496,12 +532,61 @@ std::vector<std::string> LDBCommand::BuildCmdLineOptions(
|
|
|
496
532
|
ARG_FIX_PREFIX_LEN,
|
|
497
533
|
ARG_TRY_LOAD_OPTIONS,
|
|
498
534
|
ARG_DISABLE_CONSISTENCY_CHECKS,
|
|
535
|
+
ARG_ENABLE_BLOB_FILES,
|
|
536
|
+
ARG_MIN_BLOB_SIZE,
|
|
537
|
+
ARG_BLOB_FILE_SIZE,
|
|
538
|
+
ARG_BLOB_COMPRESSION_TYPE,
|
|
539
|
+
ARG_ENABLE_BLOB_GARBAGE_COLLECTION,
|
|
540
|
+
ARG_BLOB_GARBAGE_COLLECTION_AGE_CUTOFF,
|
|
541
|
+
ARG_BLOB_GARBAGE_COLLECTION_FORCE_THRESHOLD,
|
|
542
|
+
ARG_BLOB_COMPACTION_READAHEAD_SIZE,
|
|
499
543
|
ARG_IGNORE_UNKNOWN_OPTIONS,
|
|
500
544
|
ARG_CF_NAME};
|
|
501
545
|
ret.insert(ret.end(), options.begin(), options.end());
|
|
502
546
|
return ret;
|
|
503
547
|
}
|
|
504
548
|
|
|
549
|
+
/**
|
|
550
|
+
* Parses the specific double option and fills in the value.
|
|
551
|
+
* Returns true if the option is found.
|
|
552
|
+
* Returns false if the option is not found or if there is an error parsing the
|
|
553
|
+
* value. If there is an error, the specified exec_state is also
|
|
554
|
+
* updated.
|
|
555
|
+
*/
|
|
556
|
+
bool LDBCommand::ParseDoubleOption(
|
|
557
|
+
const std::map<std::string, std::string>& /*options*/,
|
|
558
|
+
const std::string& option, double& value,
|
|
559
|
+
LDBCommandExecuteResult& exec_state) {
|
|
560
|
+
auto itr = option_map_.find(option);
|
|
561
|
+
if (itr != option_map_.end()) {
|
|
562
|
+
#if defined(CYGWIN)
|
|
563
|
+
char* str_end = nullptr;
|
|
564
|
+
value = std::strtod(itr->second.c_str(), &str_end);
|
|
565
|
+
if (str_end == itr->second.c_str()) {
|
|
566
|
+
exec_state =
|
|
567
|
+
LDBCommandExecuteResult::Failed(option + " has an invalid value.");
|
|
568
|
+
} else if (errno == ERANGE) {
|
|
569
|
+
exec_state = LDBCommandExecuteResult::Failed(
|
|
570
|
+
option + " has a value out-of-range.");
|
|
571
|
+
} else {
|
|
572
|
+
return true;
|
|
573
|
+
}
|
|
574
|
+
#else
|
|
575
|
+
try {
|
|
576
|
+
value = std::stod(itr->second);
|
|
577
|
+
return true;
|
|
578
|
+
} catch (const std::invalid_argument&) {
|
|
579
|
+
exec_state =
|
|
580
|
+
LDBCommandExecuteResult::Failed(option + " has an invalid value.");
|
|
581
|
+
} catch (const std::out_of_range&) {
|
|
582
|
+
exec_state = LDBCommandExecuteResult::Failed(
|
|
583
|
+
option + " has a value out-of-range.");
|
|
584
|
+
}
|
|
585
|
+
#endif
|
|
586
|
+
}
|
|
587
|
+
return false;
|
|
588
|
+
}
|
|
589
|
+
|
|
505
590
|
/**
|
|
506
591
|
* Parses the specific integer option and fills in the value.
|
|
507
592
|
* Returns true if the option is found.
|
|
@@ -513,15 +598,23 @@ bool LDBCommand::ParseIntOption(
|
|
|
513
598
|
const std::map<std::string, std::string>& /*options*/,
|
|
514
599
|
const std::string& option, int& value,
|
|
515
600
|
LDBCommandExecuteResult& exec_state) {
|
|
516
|
-
|
|
517
|
-
option_map_.find(option);
|
|
601
|
+
auto itr = option_map_.find(option);
|
|
518
602
|
if (itr != option_map_.end()) {
|
|
519
|
-
try {
|
|
520
603
|
#if defined(CYGWIN)
|
|
521
|
-
|
|
604
|
+
char* str_end = nullptr;
|
|
605
|
+
value = strtol(itr->second.c_str(), &str_end, 10);
|
|
606
|
+
if (str_end == itr->second.c_str()) {
|
|
607
|
+
exec_state =
|
|
608
|
+
LDBCommandExecuteResult::Failed(option + " has an invalid value.");
|
|
609
|
+
} else if (errno == ERANGE) {
|
|
610
|
+
exec_state = LDBCommandExecuteResult::Failed(
|
|
611
|
+
option + " has a value out-of-range.");
|
|
612
|
+
} else {
|
|
613
|
+
return true;
|
|
614
|
+
}
|
|
522
615
|
#else
|
|
616
|
+
try {
|
|
523
617
|
value = std::stoi(itr->second);
|
|
524
|
-
#endif
|
|
525
618
|
return true;
|
|
526
619
|
} catch (const std::invalid_argument&) {
|
|
527
620
|
exec_state =
|
|
@@ -530,6 +623,7 @@ bool LDBCommand::ParseIntOption(
|
|
|
530
623
|
exec_state = LDBCommandExecuteResult::Failed(
|
|
531
624
|
option + " has a value out-of-range.");
|
|
532
625
|
}
|
|
626
|
+
#endif
|
|
533
627
|
}
|
|
534
628
|
return false;
|
|
535
629
|
}
|
|
@@ -550,6 +644,51 @@ bool LDBCommand::ParseStringOption(
|
|
|
550
644
|
return false;
|
|
551
645
|
}
|
|
552
646
|
|
|
647
|
+
/**
|
|
648
|
+
* Parses the specified compression type and fills in the value.
|
|
649
|
+
* Returns true if the compression type is found.
|
|
650
|
+
* Returns false otherwise.
|
|
651
|
+
*/
|
|
652
|
+
bool LDBCommand::ParseCompressionTypeOption(
|
|
653
|
+
const std::map<std::string, std::string>& /*options*/,
|
|
654
|
+
const std::string& option, CompressionType& value,
|
|
655
|
+
LDBCommandExecuteResult& exec_state) {
|
|
656
|
+
auto itr = option_map_.find(option);
|
|
657
|
+
if (itr != option_map_.end()) {
|
|
658
|
+
const std::string& comp = itr->second;
|
|
659
|
+
if (comp == "no") {
|
|
660
|
+
value = kNoCompression;
|
|
661
|
+
return true;
|
|
662
|
+
} else if (comp == "snappy") {
|
|
663
|
+
value = kSnappyCompression;
|
|
664
|
+
return true;
|
|
665
|
+
} else if (comp == "zlib") {
|
|
666
|
+
value = kZlibCompression;
|
|
667
|
+
return true;
|
|
668
|
+
} else if (comp == "bzip2") {
|
|
669
|
+
value = kBZip2Compression;
|
|
670
|
+
return true;
|
|
671
|
+
} else if (comp == "lz4") {
|
|
672
|
+
value = kLZ4Compression;
|
|
673
|
+
return true;
|
|
674
|
+
} else if (comp == "lz4hc") {
|
|
675
|
+
value = kLZ4HCCompression;
|
|
676
|
+
return true;
|
|
677
|
+
} else if (comp == "xpress") {
|
|
678
|
+
value = kXpressCompression;
|
|
679
|
+
return true;
|
|
680
|
+
} else if (comp == "zstd") {
|
|
681
|
+
value = kZSTD;
|
|
682
|
+
return true;
|
|
683
|
+
} else {
|
|
684
|
+
// Unknown compression.
|
|
685
|
+
exec_state = LDBCommandExecuteResult::Failed(
|
|
686
|
+
"Unknown compression algorithm: " + comp);
|
|
687
|
+
}
|
|
688
|
+
}
|
|
689
|
+
return false;
|
|
690
|
+
}
|
|
691
|
+
|
|
553
692
|
void LDBCommand::OverrideBaseOptions() {
|
|
554
693
|
options_.create_if_missing = false;
|
|
555
694
|
|
|
@@ -602,37 +741,88 @@ void LDBCommand::OverrideBaseCFOptions(ColumnFamilyOptions* cf_opts) {
|
|
|
602
741
|
cf_opts->table_factory.reset(NewBlockBasedTableFactory(table_options));
|
|
603
742
|
}
|
|
604
743
|
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
744
|
+
cf_opts->enable_blob_files = enable_blob_files_;
|
|
745
|
+
|
|
746
|
+
int min_blob_size;
|
|
747
|
+
if (ParseIntOption(option_map_, ARG_MIN_BLOB_SIZE, min_blob_size,
|
|
748
|
+
exec_state_)) {
|
|
749
|
+
if (min_blob_size >= 0) {
|
|
750
|
+
cf_opts->min_blob_size = min_blob_size;
|
|
751
|
+
} else {
|
|
752
|
+
exec_state_ =
|
|
753
|
+
LDBCommandExecuteResult::Failed(ARG_MIN_BLOB_SIZE + " must be >= 0.");
|
|
754
|
+
}
|
|
608
755
|
}
|
|
609
756
|
|
|
610
|
-
|
|
611
|
-
if (
|
|
612
|
-
|
|
613
|
-
if (
|
|
614
|
-
cf_opts->
|
|
615
|
-
} else if (comp == "snappy") {
|
|
616
|
-
cf_opts->compression = kSnappyCompression;
|
|
617
|
-
} else if (comp == "zlib") {
|
|
618
|
-
cf_opts->compression = kZlibCompression;
|
|
619
|
-
} else if (comp == "bzip2") {
|
|
620
|
-
cf_opts->compression = kBZip2Compression;
|
|
621
|
-
} else if (comp == "lz4") {
|
|
622
|
-
cf_opts->compression = kLZ4Compression;
|
|
623
|
-
} else if (comp == "lz4hc") {
|
|
624
|
-
cf_opts->compression = kLZ4HCCompression;
|
|
625
|
-
} else if (comp == "xpress") {
|
|
626
|
-
cf_opts->compression = kXpressCompression;
|
|
627
|
-
} else if (comp == "zstd") {
|
|
628
|
-
cf_opts->compression = kZSTD;
|
|
757
|
+
int blob_file_size;
|
|
758
|
+
if (ParseIntOption(option_map_, ARG_BLOB_FILE_SIZE, blob_file_size,
|
|
759
|
+
exec_state_)) {
|
|
760
|
+
if (blob_file_size > 0) {
|
|
761
|
+
cf_opts->blob_file_size = blob_file_size;
|
|
629
762
|
} else {
|
|
630
|
-
// Unknown compression.
|
|
631
763
|
exec_state_ =
|
|
632
|
-
LDBCommandExecuteResult::Failed("
|
|
764
|
+
LDBCommandExecuteResult::Failed(ARG_BLOB_FILE_SIZE + " must be > 0.");
|
|
765
|
+
}
|
|
766
|
+
}
|
|
767
|
+
|
|
768
|
+
cf_opts->enable_blob_garbage_collection = enable_blob_garbage_collection_;
|
|
769
|
+
|
|
770
|
+
double blob_garbage_collection_age_cutoff;
|
|
771
|
+
if (ParseDoubleOption(option_map_, ARG_BLOB_GARBAGE_COLLECTION_AGE_CUTOFF,
|
|
772
|
+
blob_garbage_collection_age_cutoff, exec_state_)) {
|
|
773
|
+
if (blob_garbage_collection_age_cutoff >= 0 &&
|
|
774
|
+
blob_garbage_collection_age_cutoff <= 1) {
|
|
775
|
+
cf_opts->blob_garbage_collection_age_cutoff =
|
|
776
|
+
blob_garbage_collection_age_cutoff;
|
|
777
|
+
} else {
|
|
778
|
+
exec_state_ = LDBCommandExecuteResult::Failed(
|
|
779
|
+
ARG_BLOB_GARBAGE_COLLECTION_AGE_CUTOFF + " must be >= 0 and <= 1.");
|
|
780
|
+
}
|
|
781
|
+
}
|
|
782
|
+
|
|
783
|
+
double blob_garbage_collection_force_threshold;
|
|
784
|
+
if (ParseDoubleOption(option_map_,
|
|
785
|
+
ARG_BLOB_GARBAGE_COLLECTION_FORCE_THRESHOLD,
|
|
786
|
+
blob_garbage_collection_force_threshold, exec_state_)) {
|
|
787
|
+
if (blob_garbage_collection_force_threshold >= 0 &&
|
|
788
|
+
blob_garbage_collection_force_threshold <= 1) {
|
|
789
|
+
cf_opts->blob_garbage_collection_force_threshold =
|
|
790
|
+
blob_garbage_collection_force_threshold;
|
|
791
|
+
} else {
|
|
792
|
+
exec_state_ = LDBCommandExecuteResult::Failed(
|
|
793
|
+
ARG_BLOB_GARBAGE_COLLECTION_FORCE_THRESHOLD +
|
|
794
|
+
" must be >= 0 and <= 1.");
|
|
795
|
+
}
|
|
796
|
+
}
|
|
797
|
+
|
|
798
|
+
int blob_compaction_readahead_size;
|
|
799
|
+
if (ParseIntOption(option_map_, ARG_BLOB_COMPACTION_READAHEAD_SIZE,
|
|
800
|
+
blob_compaction_readahead_size, exec_state_)) {
|
|
801
|
+
if (blob_compaction_readahead_size > 0) {
|
|
802
|
+
cf_opts->blob_compaction_readahead_size = blob_compaction_readahead_size;
|
|
803
|
+
} else {
|
|
804
|
+
exec_state_ = LDBCommandExecuteResult::Failed(
|
|
805
|
+
ARG_BLOB_COMPACTION_READAHEAD_SIZE + " must be > 0.");
|
|
633
806
|
}
|
|
634
807
|
}
|
|
635
808
|
|
|
809
|
+
auto itr = option_map_.find(ARG_AUTO_COMPACTION);
|
|
810
|
+
if (itr != option_map_.end()) {
|
|
811
|
+
cf_opts->disable_auto_compactions = !StringToBool(itr->second);
|
|
812
|
+
}
|
|
813
|
+
|
|
814
|
+
CompressionType compression_type;
|
|
815
|
+
if (ParseCompressionTypeOption(option_map_, ARG_COMPRESSION_TYPE,
|
|
816
|
+
compression_type, exec_state_)) {
|
|
817
|
+
cf_opts->compression = compression_type;
|
|
818
|
+
}
|
|
819
|
+
|
|
820
|
+
CompressionType blob_compression_type;
|
|
821
|
+
if (ParseCompressionTypeOption(option_map_, ARG_BLOB_COMPRESSION_TYPE,
|
|
822
|
+
blob_compression_type, exec_state_)) {
|
|
823
|
+
cf_opts->blob_compression_type = blob_compression_type;
|
|
824
|
+
}
|
|
825
|
+
|
|
636
826
|
int compression_max_dict_bytes;
|
|
637
827
|
if (ParseIntOption(option_map_, ARG_COMPRESSION_MAX_DICT_BYTES,
|
|
638
828
|
compression_max_dict_bytes, exec_state_)) {
|
|
@@ -693,11 +883,13 @@ void LDBCommand::PrepareOptions() {
|
|
|
693
883
|
db_ = nullptr;
|
|
694
884
|
return;
|
|
695
885
|
}
|
|
696
|
-
if (options_.
|
|
697
|
-
options_.wal_dir
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
886
|
+
if (!options_.wal_dir.empty()) {
|
|
887
|
+
if (options_.env->FileExists(options_.wal_dir).IsNotFound()) {
|
|
888
|
+
options_.wal_dir = db_path_;
|
|
889
|
+
fprintf(
|
|
890
|
+
stderr,
|
|
891
|
+
"wal_dir loaded from the option file doesn't exist. Ignore it.\n");
|
|
892
|
+
}
|
|
701
893
|
}
|
|
702
894
|
|
|
703
895
|
// If merge operator is not set, set a string append operator.
|
|
@@ -709,6 +901,10 @@ void LDBCommand::PrepareOptions() {
|
|
|
709
901
|
}
|
|
710
902
|
}
|
|
711
903
|
|
|
904
|
+
if (options_.env == Env::Default()) {
|
|
905
|
+
options_.env = config_options_.env;
|
|
906
|
+
}
|
|
907
|
+
|
|
712
908
|
OverrideBaseOptions();
|
|
713
909
|
if (exec_state_.IsFailed()) {
|
|
714
910
|
return;
|
|
@@ -775,9 +971,7 @@ bool LDBCommand::ParseKeyValue(const std::string& line, std::string* key,
|
|
|
775
971
|
* appropriate error msg to stderr.
|
|
776
972
|
*/
|
|
777
973
|
bool LDBCommand::ValidateCmdLineOptions() {
|
|
778
|
-
for (
|
|
779
|
-
option_map_.begin();
|
|
780
|
-
itr != option_map_.end(); ++itr) {
|
|
974
|
+
for (auto itr = option_map_.begin(); itr != option_map_.end(); ++itr) {
|
|
781
975
|
if (std::find(valid_cmd_line_options_.begin(),
|
|
782
976
|
valid_cmd_line_options_.end(),
|
|
783
977
|
itr->first) == valid_cmd_line_options_.end()) {
|
|
@@ -866,7 +1060,7 @@ bool LDBCommand::IsValueHex(const std::map<std::string, std::string>& options,
|
|
|
866
1060
|
bool LDBCommand::ParseBooleanOption(
|
|
867
1061
|
const std::map<std::string, std::string>& options,
|
|
868
1062
|
const std::string& option, bool default_val) {
|
|
869
|
-
|
|
1063
|
+
auto itr = options.find(option);
|
|
870
1064
|
if (itr != options.end()) {
|
|
871
1065
|
std::string option_val = itr->second;
|
|
872
1066
|
return StringToBool(itr->second);
|
|
@@ -896,8 +1090,7 @@ CompactorCommand::CompactorCommand(
|
|
|
896
1090
|
ARG_VALUE_HEX, ARG_TTL})),
|
|
897
1091
|
null_from_(true),
|
|
898
1092
|
null_to_(true) {
|
|
899
|
-
|
|
900
|
-
options.find(ARG_FROM);
|
|
1093
|
+
auto itr = options.find(ARG_FROM);
|
|
901
1094
|
if (itr != options.end()) {
|
|
902
1095
|
null_from_ = false;
|
|
903
1096
|
from_ = itr->second;
|
|
@@ -944,8 +1137,14 @@ void CompactorCommand::DoCommand() {
|
|
|
944
1137
|
CompactRangeOptions cro;
|
|
945
1138
|
cro.bottommost_level_compaction = BottommostLevelCompaction::kForceOptimized;
|
|
946
1139
|
|
|
947
|
-
db_->CompactRange(cro, GetCfHandle(), begin, end);
|
|
948
|
-
|
|
1140
|
+
Status s = db_->CompactRange(cro, GetCfHandle(), begin, end);
|
|
1141
|
+
if (!s.ok()) {
|
|
1142
|
+
std::stringstream oss;
|
|
1143
|
+
oss << "Compaction failed: " << s.ToString();
|
|
1144
|
+
exec_state_ = LDBCommandExecuteResult::Failed(oss.str());
|
|
1145
|
+
} else {
|
|
1146
|
+
exec_state_ = LDBCommandExecuteResult::Succeed("");
|
|
1147
|
+
}
|
|
949
1148
|
|
|
950
1149
|
delete begin;
|
|
951
1150
|
delete end;
|
|
@@ -1008,11 +1207,12 @@ void DBLoaderCommand::DoCommand() {
|
|
|
1008
1207
|
// prefer ifstream getline performance vs that from std::cin istream
|
|
1009
1208
|
std::ifstream ifs_stdin("/dev/stdin");
|
|
1010
1209
|
std::istream* istream_p = ifs_stdin.is_open() ? &ifs_stdin : &std::cin;
|
|
1011
|
-
|
|
1210
|
+
Status s;
|
|
1211
|
+
while (s.ok() && getline(*istream_p, line, '\n')) {
|
|
1012
1212
|
std::string key;
|
|
1013
1213
|
std::string value;
|
|
1014
1214
|
if (ParseKeyValue(line, &key, &value, is_key_hex_, is_value_hex_)) {
|
|
1015
|
-
db_->Put(write_options, GetCfHandle(), Slice(key), Slice(value));
|
|
1215
|
+
s = db_->Put(write_options, GetCfHandle(), Slice(key), Slice(value));
|
|
1016
1216
|
} else if (0 == line.find("Keys in range:")) {
|
|
1017
1217
|
// ignore this line
|
|
1018
1218
|
} else if (0 == line.find("Created bg thread 0x")) {
|
|
@@ -1025,8 +1225,19 @@ void DBLoaderCommand::DoCommand() {
|
|
|
1025
1225
|
if (bad_lines > 0) {
|
|
1026
1226
|
std::cout << "Warning: " << bad_lines << " bad lines ignored." << std::endl;
|
|
1027
1227
|
}
|
|
1028
|
-
if (
|
|
1029
|
-
|
|
1228
|
+
if (!s.ok()) {
|
|
1229
|
+
std::stringstream oss;
|
|
1230
|
+
oss << "Load failed: " << s.ToString();
|
|
1231
|
+
exec_state_ = LDBCommandExecuteResult::Failed(oss.str());
|
|
1232
|
+
}
|
|
1233
|
+
if (compact_ && s.ok()) {
|
|
1234
|
+
s = db_->CompactRange(CompactRangeOptions(), GetCfHandle(), nullptr,
|
|
1235
|
+
nullptr);
|
|
1236
|
+
}
|
|
1237
|
+
if (!s.ok()) {
|
|
1238
|
+
std::stringstream oss;
|
|
1239
|
+
oss << "Compaction failed: " << s.ToString();
|
|
1240
|
+
exec_state_ = LDBCommandExecuteResult::Failed(oss.str());
|
|
1030
1241
|
}
|
|
1031
1242
|
}
|
|
1032
1243
|
|
|
@@ -1049,7 +1260,8 @@ void DumpManifestFile(Options options, std::string file, bool verbose, bool hex,
|
|
|
1049
1260
|
WriteBufferManager wb(options.db_write_buffer_size);
|
|
1050
1261
|
ImmutableDBOptions immutable_db_options(options);
|
|
1051
1262
|
VersionSet versions(dbname, &immutable_db_options, sopt, tc.get(), &wb, &wc,
|
|
1052
|
-
/*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr
|
|
1263
|
+
/*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr,
|
|
1264
|
+
/*db_session_id*/ "");
|
|
1053
1265
|
Status s = versions.DumpManifest(options, file, verbose, hex, json);
|
|
1054
1266
|
if (!s.ok()) {
|
|
1055
1267
|
fprintf(stderr, "Error in processing file %s %s\n", file.c_str(),
|
|
@@ -1085,8 +1297,7 @@ ManifestDumpCommand::ManifestDumpCommand(
|
|
|
1085
1297
|
verbose_ = IsFlagPresent(flags, ARG_VERBOSE);
|
|
1086
1298
|
json_ = IsFlagPresent(flags, ARG_JSON);
|
|
1087
1299
|
|
|
1088
|
-
|
|
1089
|
-
options.find(ARG_PATH);
|
|
1300
|
+
auto itr = options.find(ARG_PATH);
|
|
1090
1301
|
if (itr != options.end()) {
|
|
1091
1302
|
path_ = itr->second;
|
|
1092
1303
|
if (path_.empty()) {
|
|
@@ -1154,7 +1365,7 @@ void ManifestDumpCommand::DoCommand() {
|
|
|
1154
1365
|
exec_state_ = LDBCommandExecuteResult::Failed(err_msg);
|
|
1155
1366
|
return;
|
|
1156
1367
|
}
|
|
1157
|
-
if (db_path_
|
|
1368
|
+
if (db_path_.back() != '/') {
|
|
1158
1369
|
db_path_.append("/");
|
|
1159
1370
|
}
|
|
1160
1371
|
manifestfile = db_path_ + matched_file;
|
|
@@ -1174,9 +1385,9 @@ void ManifestDumpCommand::DoCommand() {
|
|
|
1174
1385
|
// ----------------------------------------------------------------------------
|
|
1175
1386
|
namespace {
|
|
1176
1387
|
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
|
|
1388
|
+
Status GetLiveFilesChecksumInfoFromVersionSet(Options options,
|
|
1389
|
+
const std::string& db_path,
|
|
1390
|
+
FileChecksumList* checksum_list) {
|
|
1180
1391
|
EnvOptions sopt;
|
|
1181
1392
|
Status s;
|
|
1182
1393
|
std::string dbname(db_path);
|
|
@@ -1191,7 +1402,8 @@ void GetLiveFilesChecksumInfoFromVersionSet(Options options,
|
|
|
1191
1402
|
WriteBufferManager wb(options.db_write_buffer_size);
|
|
1192
1403
|
ImmutableDBOptions immutable_db_options(options);
|
|
1193
1404
|
VersionSet versions(dbname, &immutable_db_options, sopt, tc.get(), &wb, &wc,
|
|
1194
|
-
/*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr
|
|
1405
|
+
/*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr,
|
|
1406
|
+
/*db_session_id*/ "");
|
|
1195
1407
|
std::vector<std::string> cf_name_list;
|
|
1196
1408
|
s = versions.ListColumnFamilies(&cf_name_list, db_path,
|
|
1197
1409
|
immutable_db_options.fs.get());
|
|
@@ -1205,9 +1417,7 @@ void GetLiveFilesChecksumInfoFromVersionSet(Options options,
|
|
|
1205
1417
|
if (s.ok()) {
|
|
1206
1418
|
s = versions.GetLiveFilesChecksumInfo(checksum_list);
|
|
1207
1419
|
}
|
|
1208
|
-
|
|
1209
|
-
fprintf(stderr, "Error Status: %s", s.ToString().c_str());
|
|
1210
|
-
}
|
|
1420
|
+
return s;
|
|
1211
1421
|
}
|
|
1212
1422
|
|
|
1213
1423
|
} // namespace
|
|
@@ -1228,8 +1438,7 @@ FileChecksumDumpCommand::FileChecksumDumpCommand(
|
|
|
1228
1438
|
: LDBCommand(options, flags, false,
|
|
1229
1439
|
BuildCmdLineOptions({ARG_PATH, ARG_HEX})),
|
|
1230
1440
|
path_("") {
|
|
1231
|
-
|
|
1232
|
-
options.find(ARG_PATH);
|
|
1441
|
+
auto itr = options.find(ARG_PATH);
|
|
1233
1442
|
if (itr != options.end()) {
|
|
1234
1443
|
path_ = itr->second;
|
|
1235
1444
|
if (path_.empty()) {
|
|
@@ -1246,14 +1455,14 @@ void FileChecksumDumpCommand::DoCommand() {
|
|
|
1246
1455
|
// ......
|
|
1247
1456
|
|
|
1248
1457
|
std::unique_ptr<FileChecksumList> checksum_list(NewFileChecksumList());
|
|
1249
|
-
GetLiveFilesChecksumInfoFromVersionSet(options_, db_path_,
|
|
1250
|
-
|
|
1251
|
-
if (checksum_list != nullptr) {
|
|
1458
|
+
Status s = GetLiveFilesChecksumInfoFromVersionSet(options_, db_path_,
|
|
1459
|
+
checksum_list.get());
|
|
1460
|
+
if (s.ok() && checksum_list != nullptr) {
|
|
1252
1461
|
std::vector<uint64_t> file_numbers;
|
|
1253
1462
|
std::vector<std::string> checksums;
|
|
1254
1463
|
std::vector<std::string> checksum_func_names;
|
|
1255
|
-
|
|
1256
|
-
|
|
1464
|
+
s = checksum_list->GetAllFileChecksums(&file_numbers, &checksums,
|
|
1465
|
+
&checksum_func_names);
|
|
1257
1466
|
if (s.ok()) {
|
|
1258
1467
|
for (size_t i = 0; i < file_numbers.size(); i++) {
|
|
1259
1468
|
assert(i < file_numbers.size());
|
|
@@ -1268,8 +1477,12 @@ void FileChecksumDumpCommand::DoCommand() {
|
|
|
1268
1477
|
fprintf(stdout, "%" PRId64 ", %s, %s\n", file_numbers[i],
|
|
1269
1478
|
checksum_func_names[i].c_str(), checksum.c_str());
|
|
1270
1479
|
}
|
|
1480
|
+
fprintf(stdout, "Print SST file checksum information finished \n");
|
|
1271
1481
|
}
|
|
1272
|
-
|
|
1482
|
+
}
|
|
1483
|
+
|
|
1484
|
+
if (!s.ok()) {
|
|
1485
|
+
exec_state_ = LDBCommandExecuteResult::Failed(s.ToString());
|
|
1273
1486
|
}
|
|
1274
1487
|
}
|
|
1275
1488
|
|
|
@@ -1500,8 +1713,7 @@ InternalDumpCommand::InternalDumpCommand(
|
|
|
1500
1713
|
has_to_ = ParseStringOption(options, ARG_TO, &to_);
|
|
1501
1714
|
|
|
1502
1715
|
ParseIntOption(options, ARG_MAX_KEYS, max_keys_, exec_state_);
|
|
1503
|
-
|
|
1504
|
-
options.find(ARG_COUNT_DELIM);
|
|
1716
|
+
auto itr = options.find(ARG_COUNT_DELIM);
|
|
1505
1717
|
if (itr != options.end()) {
|
|
1506
1718
|
delim_ = itr->second;
|
|
1507
1719
|
count_delim_ = true;
|
|
@@ -1636,8 +1848,7 @@ DBDumperCommand::DBDumperCommand(
|
|
|
1636
1848
|
count_only_(false),
|
|
1637
1849
|
count_delim_(false),
|
|
1638
1850
|
print_stats_(false) {
|
|
1639
|
-
|
|
1640
|
-
options.find(ARG_FROM);
|
|
1851
|
+
auto itr = options.find(ARG_FROM);
|
|
1641
1852
|
if (itr != options.end()) {
|
|
1642
1853
|
null_from_ = false;
|
|
1643
1854
|
from_ = itr->second;
|
|
@@ -1746,7 +1957,8 @@ void DBDumperCommand::DoCommand() {
|
|
|
1746
1957
|
&exec_state_);
|
|
1747
1958
|
break;
|
|
1748
1959
|
case kTableFile:
|
|
1749
|
-
DumpSstFile(options_, path_, is_key_hex_, /* show_properties */ true
|
|
1960
|
+
DumpSstFile(options_, path_, is_key_hex_, /* show_properties */ true,
|
|
1961
|
+
/* decode_blob_index */ false);
|
|
1750
1962
|
break;
|
|
1751
1963
|
case kDescriptorFile:
|
|
1752
1964
|
DumpManifestFile(options_, path_, /* verbose_ */ false, is_key_hex_,
|
|
@@ -1972,7 +2184,8 @@ Status ReduceDBLevelsCommand::GetOldNumOfLevels(Options& opt,
|
|
|
1972
2184
|
WriteController wc(opt.delayed_write_rate);
|
|
1973
2185
|
WriteBufferManager wb(opt.db_write_buffer_size);
|
|
1974
2186
|
VersionSet versions(db_path_, &db_options, soptions, tc.get(), &wb, &wc,
|
|
1975
|
-
/*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr
|
|
2187
|
+
/*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr,
|
|
2188
|
+
/*db_session_id*/ "");
|
|
1976
2189
|
std::vector<ColumnFamilyDescriptor> dummy;
|
|
1977
2190
|
ColumnFamilyDescriptor dummy_descriptor(kDefaultColumnFamilyName,
|
|
1978
2191
|
ColumnFamilyOptions(opt));
|
|
@@ -2129,8 +2342,7 @@ void ChangeCompactionStyleCommand::DoCommand() {
|
|
|
2129
2342
|
std::string property;
|
|
2130
2343
|
std::string files_per_level;
|
|
2131
2344
|
for (int i = 0; i < db_->NumberLevels(GetCfHandle()); i++) {
|
|
2132
|
-
db_->GetProperty(GetCfHandle(),
|
|
2133
|
-
"rocksdb.num-files-at-level" + NumberToString(i),
|
|
2345
|
+
db_->GetProperty(GetCfHandle(), "rocksdb.num-files-at-level" + ToString(i),
|
|
2134
2346
|
&property);
|
|
2135
2347
|
|
|
2136
2348
|
// format print string
|
|
@@ -2145,14 +2357,20 @@ void ChangeCompactionStyleCommand::DoCommand() {
|
|
|
2145
2357
|
CompactRangeOptions compact_options;
|
|
2146
2358
|
compact_options.change_level = true;
|
|
2147
2359
|
compact_options.target_level = 0;
|
|
2148
|
-
|
|
2360
|
+
Status s =
|
|
2361
|
+
db_->CompactRange(compact_options, GetCfHandle(), nullptr, nullptr);
|
|
2362
|
+
if (!s.ok()) {
|
|
2363
|
+
std::stringstream oss;
|
|
2364
|
+
oss << "Compaction failed: " << s.ToString();
|
|
2365
|
+
exec_state_ = LDBCommandExecuteResult::Failed(oss.str());
|
|
2366
|
+
return;
|
|
2367
|
+
}
|
|
2149
2368
|
|
|
2150
2369
|
// verify compaction result
|
|
2151
2370
|
files_per_level = "";
|
|
2152
2371
|
int num_files = 0;
|
|
2153
2372
|
for (int i = 0; i < db_->NumberLevels(GetCfHandle()); i++) {
|
|
2154
|
-
db_->GetProperty(GetCfHandle(),
|
|
2155
|
-
"rocksdb.num-files-at-level" + NumberToString(i),
|
|
2373
|
+
db_->GetProperty(GetCfHandle(), "rocksdb.num-files-at-level" + ToString(i),
|
|
2156
2374
|
&property);
|
|
2157
2375
|
|
|
2158
2376
|
// format print string
|
|
@@ -2276,6 +2494,14 @@ class InMemoryHandler : public WriteBatch::Handler {
|
|
|
2276
2494
|
return Status::OK();
|
|
2277
2495
|
}
|
|
2278
2496
|
|
|
2497
|
+
Status MarkCommitWithTimestamp(const Slice& xid,
|
|
2498
|
+
const Slice& commit_ts) override {
|
|
2499
|
+
row_ << "COMMIT_WITH_TIMESTAMP(";
|
|
2500
|
+
row_ << LDBCommand::StringToHex(xid.ToString()) << ", ";
|
|
2501
|
+
row_ << LDBCommand::StringToHex(commit_ts.ToString()) << ") ";
|
|
2502
|
+
return Status::OK();
|
|
2503
|
+
}
|
|
2504
|
+
|
|
2279
2505
|
~InMemoryHandler() override {}
|
|
2280
2506
|
|
|
2281
2507
|
protected:
|
|
@@ -2290,19 +2516,11 @@ class InMemoryHandler : public WriteBatch::Handler {
|
|
|
2290
2516
|
void DumpWalFile(Options options, std::string wal_file, bool print_header,
|
|
2291
2517
|
bool print_values, bool is_write_committed,
|
|
2292
2518
|
LDBCommandExecuteResult* exec_state) {
|
|
2293
|
-
|
|
2294
|
-
|
|
2519
|
+
const auto& fs = options.env->GetFileSystem();
|
|
2520
|
+
FileOptions soptions(options);
|
|
2295
2521
|
std::unique_ptr<SequentialFileReader> wal_file_reader;
|
|
2296
|
-
|
|
2297
|
-
|
|
2298
|
-
{
|
|
2299
|
-
std::unique_ptr<SequentialFile> file;
|
|
2300
|
-
status = env->NewSequentialFile(wal_file, &file, soptions);
|
|
2301
|
-
if (status.ok()) {
|
|
2302
|
-
wal_file_reader.reset(new SequentialFileReader(
|
|
2303
|
-
NewLegacySequentialFileWrapper(file), wal_file));
|
|
2304
|
-
}
|
|
2305
|
-
}
|
|
2522
|
+
Status status = SequentialFileReader::Create(fs, wal_file, soptions,
|
|
2523
|
+
&wal_file_reader, nullptr);
|
|
2306
2524
|
if (!status.ok()) {
|
|
2307
2525
|
if (exec_state) {
|
|
2308
2526
|
*exec_state = LDBCommandExecuteResult::Failed("Failed to open WAL file " +
|
|
@@ -2338,19 +2556,38 @@ void DumpWalFile(Options options, std::string wal_file, bool print_header,
|
|
|
2338
2556
|
}
|
|
2339
2557
|
std::cout << "\n";
|
|
2340
2558
|
}
|
|
2341
|
-
while (reader.ReadRecord(&record, &scratch)) {
|
|
2559
|
+
while (status.ok() && reader.ReadRecord(&record, &scratch)) {
|
|
2342
2560
|
row.str("");
|
|
2343
2561
|
if (record.size() < WriteBatchInternal::kHeader) {
|
|
2344
2562
|
reporter.Corruption(record.size(),
|
|
2345
2563
|
Status::Corruption("log record too small"));
|
|
2346
2564
|
} else {
|
|
2347
|
-
WriteBatchInternal::SetContents(&batch, record);
|
|
2565
|
+
status = WriteBatchInternal::SetContents(&batch, record);
|
|
2566
|
+
if (!status.ok()) {
|
|
2567
|
+
std::stringstream oss;
|
|
2568
|
+
oss << "Parsing write batch failed: " << status.ToString();
|
|
2569
|
+
if (exec_state) {
|
|
2570
|
+
*exec_state = LDBCommandExecuteResult::Failed(oss.str());
|
|
2571
|
+
} else {
|
|
2572
|
+
std::cerr << oss.str() << std::endl;
|
|
2573
|
+
}
|
|
2574
|
+
break;
|
|
2575
|
+
}
|
|
2348
2576
|
row << WriteBatchInternal::Sequence(&batch) << ",";
|
|
2349
2577
|
row << WriteBatchInternal::Count(&batch) << ",";
|
|
2350
2578
|
row << WriteBatchInternal::ByteSize(&batch) << ",";
|
|
2351
2579
|
row << reader.LastRecordOffset() << ",";
|
|
2352
2580
|
InMemoryHandler handler(row, print_values, is_write_committed);
|
|
2353
|
-
batch.Iterate(&handler);
|
|
2581
|
+
status = batch.Iterate(&handler);
|
|
2582
|
+
if (!status.ok()) {
|
|
2583
|
+
if (exec_state) {
|
|
2584
|
+
std::stringstream oss;
|
|
2585
|
+
oss << "Print write batch error: " << status.ToString();
|
|
2586
|
+
*exec_state = LDBCommandExecuteResult::Failed(oss.str());
|
|
2587
|
+
}
|
|
2588
|
+
row << "error: " << status.ToString();
|
|
2589
|
+
break;
|
|
2590
|
+
}
|
|
2354
2591
|
row << "\n";
|
|
2355
2592
|
}
|
|
2356
2593
|
std::cout << row.str();
|
|
@@ -2377,8 +2614,7 @@ WALDumperCommand::WALDumperCommand(
|
|
|
2377
2614
|
is_write_committed_(false) {
|
|
2378
2615
|
wal_file_.clear();
|
|
2379
2616
|
|
|
2380
|
-
|
|
2381
|
-
options.find(ARG_WAL_FILE);
|
|
2617
|
+
auto itr = options.find(ARG_WAL_FILE);
|
|
2382
2618
|
if (itr != options.end()) {
|
|
2383
2619
|
wal_file_ = itr->second;
|
|
2384
2620
|
}
|
|
@@ -2448,7 +2684,9 @@ void GetCommand::DoCommand() {
|
|
|
2448
2684
|
fprintf(stdout, "%s\n",
|
|
2449
2685
|
(is_value_hex_ ? StringToHex(value) : value).c_str());
|
|
2450
2686
|
} else {
|
|
2451
|
-
|
|
2687
|
+
std::stringstream oss;
|
|
2688
|
+
oss << "Get failed: " << st.ToString();
|
|
2689
|
+
exec_state_ = LDBCommandExecuteResult::Failed(oss.str());
|
|
2452
2690
|
}
|
|
2453
2691
|
}
|
|
2454
2692
|
|
|
@@ -2500,7 +2738,9 @@ void ApproxSizeCommand::DoCommand() {
|
|
|
2500
2738
|
uint64_t sizes[1];
|
|
2501
2739
|
Status s = db_->GetApproximateSizes(GetCfHandle(), ranges, 1, sizes);
|
|
2502
2740
|
if (!s.ok()) {
|
|
2503
|
-
|
|
2741
|
+
std::stringstream oss;
|
|
2742
|
+
oss << "ApproximateSize failed: " << s.ToString();
|
|
2743
|
+
exec_state_ = LDBCommandExecuteResult::Failed(oss.str());
|
|
2504
2744
|
} else {
|
|
2505
2745
|
fprintf(stdout, "%lu\n", (unsigned long)sizes[0]);
|
|
2506
2746
|
}
|
|
@@ -2549,16 +2789,28 @@ void BatchPutCommand::DoCommand() {
|
|
|
2549
2789
|
}
|
|
2550
2790
|
WriteBatch batch;
|
|
2551
2791
|
|
|
2792
|
+
Status st;
|
|
2793
|
+
std::stringstream oss;
|
|
2552
2794
|
for (std::vector<std::pair<std::string, std::string>>::const_iterator itr =
|
|
2553
2795
|
key_values_.begin();
|
|
2554
2796
|
itr != key_values_.end(); ++itr) {
|
|
2555
|
-
batch.Put(GetCfHandle(), itr->first, itr->second);
|
|
2797
|
+
st = batch.Put(GetCfHandle(), itr->first, itr->second);
|
|
2798
|
+
if (!st.ok()) {
|
|
2799
|
+
oss << "Put to write batch failed: " << itr->first << "=>" << itr->second
|
|
2800
|
+
<< " error: " << st.ToString();
|
|
2801
|
+
break;
|
|
2802
|
+
}
|
|
2803
|
+
}
|
|
2804
|
+
if (st.ok()) {
|
|
2805
|
+
st = db_->Write(WriteOptions(), &batch);
|
|
2806
|
+
if (!st.ok()) {
|
|
2807
|
+
oss << "Write failed: " << st.ToString();
|
|
2808
|
+
}
|
|
2556
2809
|
}
|
|
2557
|
-
Status st = db_->Write(WriteOptions(), &batch);
|
|
2558
2810
|
if (st.ok()) {
|
|
2559
2811
|
fprintf(stdout, "OK\n");
|
|
2560
2812
|
} else {
|
|
2561
|
-
exec_state_ = LDBCommandExecuteResult::Failed(
|
|
2813
|
+
exec_state_ = LDBCommandExecuteResult::Failed(oss.str());
|
|
2562
2814
|
}
|
|
2563
2815
|
}
|
|
2564
2816
|
|
|
@@ -2581,8 +2833,7 @@ ScanCommand::ScanCommand(const std::vector<std::string>& /*params*/,
|
|
|
2581
2833
|
end_key_specified_(false),
|
|
2582
2834
|
max_keys_scanned_(-1),
|
|
2583
2835
|
no_value_(false) {
|
|
2584
|
-
|
|
2585
|
-
options.find(ARG_FROM);
|
|
2836
|
+
auto itr = options.find(ARG_FROM);
|
|
2586
2837
|
if (itr != options.end()) {
|
|
2587
2838
|
start_key_ = itr->second;
|
|
2588
2839
|
if (is_key_hex_) {
|
|
@@ -2886,7 +3137,9 @@ void DBQuerierCommand::DoCommand() {
|
|
|
2886
3137
|
std::string line;
|
|
2887
3138
|
std::string key;
|
|
2888
3139
|
std::string value;
|
|
2889
|
-
|
|
3140
|
+
Status s;
|
|
3141
|
+
std::stringstream oss;
|
|
3142
|
+
while (s.ok() && getline(std::cin, line, '\n')) {
|
|
2890
3143
|
// Parse line into std::vector<std::string>
|
|
2891
3144
|
std::vector<std::string> tokens;
|
|
2892
3145
|
size_t pos = 0;
|
|
@@ -2909,26 +3162,42 @@ void DBQuerierCommand::DoCommand() {
|
|
|
2909
3162
|
"delete <key>\n");
|
|
2910
3163
|
} else if (cmd == DELETE_CMD && tokens.size() == 2) {
|
|
2911
3164
|
key = (is_key_hex_ ? HexToString(tokens[1]) : tokens[1]);
|
|
2912
|
-
db_->Delete(write_options, GetCfHandle(), Slice(key));
|
|
2913
|
-
|
|
3165
|
+
s = db_->Delete(write_options, GetCfHandle(), Slice(key));
|
|
3166
|
+
if (s.ok()) {
|
|
3167
|
+
fprintf(stdout, "Successfully deleted %s\n", tokens[1].c_str());
|
|
3168
|
+
} else {
|
|
3169
|
+
oss << "delete " << key << " failed: " << s.ToString();
|
|
3170
|
+
}
|
|
2914
3171
|
} else if (cmd == PUT_CMD && tokens.size() == 3) {
|
|
2915
3172
|
key = (is_key_hex_ ? HexToString(tokens[1]) : tokens[1]);
|
|
2916
3173
|
value = (is_value_hex_ ? HexToString(tokens[2]) : tokens[2]);
|
|
2917
|
-
db_->Put(write_options, GetCfHandle(), Slice(key), Slice(value));
|
|
2918
|
-
|
|
2919
|
-
|
|
3174
|
+
s = db_->Put(write_options, GetCfHandle(), Slice(key), Slice(value));
|
|
3175
|
+
if (s.ok()) {
|
|
3176
|
+
fprintf(stdout, "Successfully put %s %s\n", tokens[1].c_str(),
|
|
3177
|
+
tokens[2].c_str());
|
|
3178
|
+
} else {
|
|
3179
|
+
oss << "put " << key << "=>" << value << " failed: " << s.ToString();
|
|
3180
|
+
}
|
|
2920
3181
|
} else if (cmd == GET_CMD && tokens.size() == 2) {
|
|
2921
3182
|
key = (is_key_hex_ ? HexToString(tokens[1]) : tokens[1]);
|
|
2922
|
-
|
|
3183
|
+
s = db_->Get(read_options, GetCfHandle(), Slice(key), &value);
|
|
3184
|
+
if (s.ok()) {
|
|
2923
3185
|
fprintf(stdout, "%s\n", PrintKeyValue(key, value,
|
|
2924
3186
|
is_key_hex_, is_value_hex_).c_str());
|
|
2925
3187
|
} else {
|
|
2926
|
-
|
|
3188
|
+
if (s.IsNotFound()) {
|
|
3189
|
+
fprintf(stdout, "Not found %s\n", tokens[1].c_str());
|
|
3190
|
+
} else {
|
|
3191
|
+
oss << "get " << key << " error: " << s.ToString();
|
|
3192
|
+
}
|
|
2927
3193
|
}
|
|
2928
3194
|
} else {
|
|
2929
3195
|
fprintf(stdout, "Unknown command %s\n", line.c_str());
|
|
2930
3196
|
}
|
|
2931
3197
|
}
|
|
3198
|
+
if (!s.ok()) {
|
|
3199
|
+
exec_state_ = LDBCommandExecuteResult::Failed(oss.str());
|
|
3200
|
+
}
|
|
2932
3201
|
}
|
|
2933
3202
|
|
|
2934
3203
|
// ----------------------------------------------------------------------------
|
|
@@ -2995,20 +3264,26 @@ void CheckPointCommand::DoCommand() {
|
|
|
2995
3264
|
|
|
2996
3265
|
// ----------------------------------------------------------------------------
|
|
2997
3266
|
|
|
3267
|
+
const std::string RepairCommand::ARG_VERBOSE = "verbose";
|
|
3268
|
+
|
|
2998
3269
|
RepairCommand::RepairCommand(const std::vector<std::string>& /*params*/,
|
|
2999
3270
|
const std::map<std::string, std::string>& options,
|
|
3000
3271
|
const std::vector<std::string>& flags)
|
|
3001
|
-
: LDBCommand(options, flags, false, BuildCmdLineOptions({})) {
|
|
3272
|
+
: LDBCommand(options, flags, false, BuildCmdLineOptions({ARG_VERBOSE})) {
|
|
3273
|
+
verbose_ = IsFlagPresent(flags, ARG_VERBOSE);
|
|
3274
|
+
}
|
|
3002
3275
|
|
|
3003
3276
|
void RepairCommand::Help(std::string& ret) {
|
|
3004
3277
|
ret.append(" ");
|
|
3005
3278
|
ret.append(RepairCommand::Name());
|
|
3279
|
+
ret.append(" [--" + ARG_VERBOSE + "]");
|
|
3006
3280
|
ret.append("\n");
|
|
3007
3281
|
}
|
|
3008
3282
|
|
|
3009
3283
|
void RepairCommand::OverrideBaseOptions() {
|
|
3010
3284
|
LDBCommand::OverrideBaseOptions();
|
|
3011
|
-
|
|
3285
|
+
auto level = verbose_ ? InfoLogLevel::INFO_LEVEL : InfoLogLevel::WARN_LEVEL;
|
|
3286
|
+
options_.info_log.reset(new StderrLogger(level));
|
|
3012
3287
|
}
|
|
3013
3288
|
|
|
3014
3289
|
void RepairCommand::DoCommand() {
|
|
@@ -3023,18 +3298,21 @@ void RepairCommand::DoCommand() {
|
|
|
3023
3298
|
|
|
3024
3299
|
// ----------------------------------------------------------------------------
|
|
3025
3300
|
|
|
3026
|
-
const std::string
|
|
3027
|
-
const std::string
|
|
3028
|
-
const std::string
|
|
3029
|
-
const std::string
|
|
3301
|
+
const std::string BackupEngineCommand::ARG_NUM_THREADS = "num_threads";
|
|
3302
|
+
const std::string BackupEngineCommand::ARG_BACKUP_ENV_URI = "backup_env_uri";
|
|
3303
|
+
const std::string BackupEngineCommand::ARG_BACKUP_FS_URI = "backup_fs_uri";
|
|
3304
|
+
const std::string BackupEngineCommand::ARG_BACKUP_DIR = "backup_dir";
|
|
3305
|
+
const std::string BackupEngineCommand::ARG_STDERR_LOG_LEVEL =
|
|
3306
|
+
"stderr_log_level";
|
|
3030
3307
|
|
|
3031
|
-
|
|
3308
|
+
BackupEngineCommand::BackupEngineCommand(
|
|
3032
3309
|
const std::vector<std::string>& /*params*/,
|
|
3033
3310
|
const std::map<std::string, std::string>& options,
|
|
3034
3311
|
const std::vector<std::string>& flags)
|
|
3035
3312
|
: LDBCommand(options, flags, false /* is_read_only */,
|
|
3036
|
-
BuildCmdLineOptions({ARG_BACKUP_ENV_URI,
|
|
3037
|
-
|
|
3313
|
+
BuildCmdLineOptions({ARG_BACKUP_ENV_URI, ARG_BACKUP_FS_URI,
|
|
3314
|
+
ARG_BACKUP_DIR, ARG_NUM_THREADS,
|
|
3315
|
+
ARG_STDERR_LOG_LEVEL})),
|
|
3038
3316
|
num_threads_(1) {
|
|
3039
3317
|
auto itr = options.find(ARG_NUM_THREADS);
|
|
3040
3318
|
if (itr != options.end()) {
|
|
@@ -3044,6 +3322,15 @@ BackupableCommand::BackupableCommand(
|
|
|
3044
3322
|
if (itr != options.end()) {
|
|
3045
3323
|
backup_env_uri_ = itr->second;
|
|
3046
3324
|
}
|
|
3325
|
+
itr = options.find(ARG_BACKUP_FS_URI);
|
|
3326
|
+
if (itr != options.end()) {
|
|
3327
|
+
backup_fs_uri_ = itr->second;
|
|
3328
|
+
}
|
|
3329
|
+
if (!backup_env_uri_.empty() && !backup_fs_uri_.empty()) {
|
|
3330
|
+
exec_state_ = LDBCommandExecuteResult::Failed(
|
|
3331
|
+
"you may not specity both --" + ARG_BACKUP_ENV_URI + " and --" +
|
|
3332
|
+
ARG_BACKUP_FS_URI);
|
|
3333
|
+
}
|
|
3047
3334
|
itr = options.find(ARG_BACKUP_DIR);
|
|
3048
3335
|
if (itr == options.end()) {
|
|
3049
3336
|
exec_state_ = LDBCommandExecuteResult::Failed("--" + ARG_BACKUP_DIR +
|
|
@@ -3067,10 +3354,10 @@ BackupableCommand::BackupableCommand(
|
|
|
3067
3354
|
}
|
|
3068
3355
|
}
|
|
3069
3356
|
|
|
3070
|
-
void
|
|
3357
|
+
void BackupEngineCommand::Help(const std::string& name, std::string& ret) {
|
|
3071
3358
|
ret.append(" ");
|
|
3072
3359
|
ret.append(name);
|
|
3073
|
-
ret.append(" [--" + ARG_BACKUP_ENV_URI + "] ");
|
|
3360
|
+
ret.append(" [--" + ARG_BACKUP_ENV_URI + " | --" + ARG_BACKUP_FS_URI + "] ");
|
|
3074
3361
|
ret.append(" [--" + ARG_BACKUP_DIR + "] ");
|
|
3075
3362
|
ret.append(" [--" + ARG_NUM_THREADS + "] ");
|
|
3076
3363
|
ret.append(" [--" + ARG_STDERR_LOG_LEVEL + "=<int (InfoLogLevel)>] ");
|
|
@@ -3082,10 +3369,10 @@ void BackupableCommand::Help(const std::string& name, std::string& ret) {
|
|
|
3082
3369
|
BackupCommand::BackupCommand(const std::vector<std::string>& params,
|
|
3083
3370
|
const std::map<std::string, std::string>& options,
|
|
3084
3371
|
const std::vector<std::string>& flags)
|
|
3085
|
-
:
|
|
3372
|
+
: BackupEngineCommand(params, options, flags) {}
|
|
3086
3373
|
|
|
3087
3374
|
void BackupCommand::Help(std::string& ret) {
|
|
3088
|
-
|
|
3375
|
+
BackupEngineCommand::Help(Name(), ret);
|
|
3089
3376
|
}
|
|
3090
3377
|
|
|
3091
3378
|
void BackupCommand::DoCommand() {
|
|
@@ -3096,15 +3383,24 @@ void BackupCommand::DoCommand() {
|
|
|
3096
3383
|
return;
|
|
3097
3384
|
}
|
|
3098
3385
|
fprintf(stdout, "open db OK\n");
|
|
3099
|
-
|
|
3100
|
-
Env
|
|
3386
|
+
|
|
3387
|
+
Env* custom_env = backup_env_guard_.get();
|
|
3388
|
+
if (custom_env == nullptr) {
|
|
3389
|
+
Status s =
|
|
3390
|
+
Env::CreateFromUri(config_options_, backup_env_uri_, backup_fs_uri_,
|
|
3391
|
+
&custom_env, &backup_env_guard_);
|
|
3392
|
+
if (!s.ok()) {
|
|
3393
|
+
exec_state_ = LDBCommandExecuteResult::Failed(s.ToString());
|
|
3394
|
+
return;
|
|
3395
|
+
}
|
|
3396
|
+
}
|
|
3101
3397
|
assert(custom_env != nullptr);
|
|
3102
3398
|
|
|
3103
|
-
|
|
3104
|
-
|
|
3399
|
+
BackupEngineOptions backup_options =
|
|
3400
|
+
BackupEngineOptions(backup_dir_, custom_env);
|
|
3105
3401
|
backup_options.info_log = logger_.get();
|
|
3106
3402
|
backup_options.max_background_operations = num_threads_;
|
|
3107
|
-
status = BackupEngine::Open(
|
|
3403
|
+
status = BackupEngine::Open(options_.env, backup_options, &backup_engine);
|
|
3108
3404
|
if (status.ok()) {
|
|
3109
3405
|
fprintf(stdout, "open backup engine OK\n");
|
|
3110
3406
|
} else {
|
|
@@ -3126,26 +3422,34 @@ RestoreCommand::RestoreCommand(
|
|
|
3126
3422
|
const std::vector<std::string>& params,
|
|
3127
3423
|
const std::map<std::string, std::string>& options,
|
|
3128
3424
|
const std::vector<std::string>& flags)
|
|
3129
|
-
:
|
|
3425
|
+
: BackupEngineCommand(params, options, flags) {}
|
|
3130
3426
|
|
|
3131
3427
|
void RestoreCommand::Help(std::string& ret) {
|
|
3132
|
-
|
|
3428
|
+
BackupEngineCommand::Help(Name(), ret);
|
|
3133
3429
|
}
|
|
3134
3430
|
|
|
3135
3431
|
void RestoreCommand::DoCommand() {
|
|
3136
|
-
Env* custom_env =
|
|
3137
|
-
|
|
3432
|
+
Env* custom_env = backup_env_guard_.get();
|
|
3433
|
+
if (custom_env == nullptr) {
|
|
3434
|
+
Status s =
|
|
3435
|
+
Env::CreateFromUri(config_options_, backup_env_uri_, backup_fs_uri_,
|
|
3436
|
+
&custom_env, &backup_env_guard_);
|
|
3437
|
+
if (!s.ok()) {
|
|
3438
|
+
exec_state_ = LDBCommandExecuteResult::Failed(s.ToString());
|
|
3439
|
+
return;
|
|
3440
|
+
}
|
|
3441
|
+
}
|
|
3138
3442
|
assert(custom_env != nullptr);
|
|
3139
3443
|
|
|
3140
3444
|
std::unique_ptr<BackupEngineReadOnly> restore_engine;
|
|
3141
3445
|
Status status;
|
|
3142
3446
|
{
|
|
3143
|
-
|
|
3447
|
+
BackupEngineOptions opts(backup_dir_, custom_env);
|
|
3144
3448
|
opts.info_log = logger_.get();
|
|
3145
3449
|
opts.max_background_operations = num_threads_;
|
|
3146
3450
|
BackupEngineReadOnly* raw_restore_engine_ptr;
|
|
3147
3451
|
status =
|
|
3148
|
-
BackupEngineReadOnly::Open(
|
|
3452
|
+
BackupEngineReadOnly::Open(options_.env, opts, &raw_restore_engine_ptr);
|
|
3149
3453
|
if (status.ok()) {
|
|
3150
3454
|
restore_engine.reset(raw_restore_engine_ptr);
|
|
3151
3455
|
}
|
|
@@ -3166,7 +3470,7 @@ void RestoreCommand::DoCommand() {
|
|
|
3166
3470
|
namespace {
|
|
3167
3471
|
|
|
3168
3472
|
void DumpSstFile(Options options, std::string filename, bool output_hex,
|
|
3169
|
-
bool show_properties) {
|
|
3473
|
+
bool show_properties, bool decode_blob_index) {
|
|
3170
3474
|
std::string from_key;
|
|
3171
3475
|
std::string to_key;
|
|
3172
3476
|
if (filename.length() <= 4 ||
|
|
@@ -3175,11 +3479,10 @@ void DumpSstFile(Options options, std::string filename, bool output_hex,
|
|
|
3175
3479
|
return;
|
|
3176
3480
|
}
|
|
3177
3481
|
// no verification
|
|
3178
|
-
// TODO: add support for decoding blob indexes in ldb as well
|
|
3179
3482
|
ROCKSDB_NAMESPACE::SstFileDumper dumper(
|
|
3180
|
-
options, filename,
|
|
3181
|
-
|
|
3182
|
-
/*
|
|
3483
|
+
options, filename, Temperature::kUnknown,
|
|
3484
|
+
2 * 1024 * 1024 /* readahead_size */,
|
|
3485
|
+
/* verify_checksum */ false, output_hex, decode_blob_index);
|
|
3183
3486
|
Status st = dumper.ReadSequential(true, std::numeric_limits<uint64_t>::max(),
|
|
3184
3487
|
false, // has_from
|
|
3185
3488
|
from_key, false, // has_to
|
|
@@ -3216,11 +3519,14 @@ DBFileDumperCommand::DBFileDumperCommand(
|
|
|
3216
3519
|
const std::vector<std::string>& /*params*/,
|
|
3217
3520
|
const std::map<std::string, std::string>& options,
|
|
3218
3521
|
const std::vector<std::string>& flags)
|
|
3219
|
-
: LDBCommand(options, flags, true,
|
|
3522
|
+
: LDBCommand(options, flags, true,
|
|
3523
|
+
BuildCmdLineOptions({ARG_DECODE_BLOB_INDEX})),
|
|
3524
|
+
decode_blob_index_(IsFlagPresent(flags, ARG_DECODE_BLOB_INDEX)) {}
|
|
3220
3525
|
|
|
3221
3526
|
void DBFileDumperCommand::Help(std::string& ret) {
|
|
3222
3527
|
ret.append(" ");
|
|
3223
3528
|
ret.append(DBFileDumperCommand::Name());
|
|
3529
|
+
ret.append(" [--" + ARG_DECODE_BLOB_INDEX + "] ");
|
|
3224
3530
|
ret.append("\n");
|
|
3225
3531
|
}
|
|
3226
3532
|
|
|
@@ -3244,6 +3550,11 @@ void DBFileDumperCommand::DoCommand() {
|
|
|
3244
3550
|
// remove the trailing '\n'
|
|
3245
3551
|
manifest_filename.resize(manifest_filename.size() - 1);
|
|
3246
3552
|
std::string manifest_filepath = db_->GetName() + "/" + manifest_filename;
|
|
3553
|
+
// Correct concatenation of filepath and filename:
|
|
3554
|
+
// Check that there is no double slashes (or more!) when concatenation
|
|
3555
|
+
// happens.
|
|
3556
|
+
manifest_filepath = NormalizePath(manifest_filepath);
|
|
3557
|
+
|
|
3247
3558
|
std::cout << manifest_filepath << std::endl;
|
|
3248
3559
|
DumpManifestFile(options_, manifest_filepath, false, false, false);
|
|
3249
3560
|
std::cout << std::endl;
|
|
@@ -3253,10 +3564,14 @@ void DBFileDumperCommand::DoCommand() {
|
|
|
3253
3564
|
std::vector<LiveFileMetaData> metadata;
|
|
3254
3565
|
db_->GetLiveFilesMetaData(&metadata);
|
|
3255
3566
|
for (auto& fileMetadata : metadata) {
|
|
3256
|
-
std::string filename = fileMetadata.db_path + fileMetadata.name;
|
|
3567
|
+
std::string filename = fileMetadata.db_path + "/" + fileMetadata.name;
|
|
3568
|
+
// Correct concatenation of filepath and filename:
|
|
3569
|
+
// Check that there is no double slashes (or more!) when concatenation
|
|
3570
|
+
// happens.
|
|
3571
|
+
filename = NormalizePath(filename);
|
|
3257
3572
|
std::cout << filename << " level:" << fileMetadata.level << std::endl;
|
|
3258
3573
|
std::cout << "------------------------------" << std::endl;
|
|
3259
|
-
DumpSstFile(options_, filename, false, true);
|
|
3574
|
+
DumpSstFile(options_, filename, false, true, decode_blob_index_);
|
|
3260
3575
|
std::cout << std::endl;
|
|
3261
3576
|
}
|
|
3262
3577
|
std::cout << std::endl;
|
|
@@ -3268,9 +3583,15 @@ void DBFileDumperCommand::DoCommand() {
|
|
|
3268
3583
|
if (!s.ok()) {
|
|
3269
3584
|
std::cerr << "Error when getting WAL files" << std::endl;
|
|
3270
3585
|
} else {
|
|
3586
|
+
std::string wal_dir;
|
|
3587
|
+
if (options_.wal_dir.empty()) {
|
|
3588
|
+
wal_dir = db_->GetName();
|
|
3589
|
+
} else {
|
|
3590
|
+
wal_dir = NormalizePath(options_.wal_dir + "/");
|
|
3591
|
+
}
|
|
3271
3592
|
for (auto& wal : wal_files) {
|
|
3272
3593
|
// TODO(qyang): option.wal_dir should be passed into ldb command
|
|
3273
|
-
std::string filename =
|
|
3594
|
+
std::string filename = wal_dir + wal->PathName();
|
|
3274
3595
|
std::cout << filename << std::endl;
|
|
3275
3596
|
// TODO(myabandeh): allow configuring is_write_commited
|
|
3276
3597
|
DumpWalFile(options_, filename, true, true, true /* is_write_commited */,
|
|
@@ -3279,6 +3600,129 @@ void DBFileDumperCommand::DoCommand() {
|
|
|
3279
3600
|
}
|
|
3280
3601
|
}
|
|
3281
3602
|
|
|
3603
|
+
const std::string DBLiveFilesMetadataDumperCommand::ARG_SORT_BY_FILENAME =
|
|
3604
|
+
"sort_by_filename";
|
|
3605
|
+
|
|
3606
|
+
DBLiveFilesMetadataDumperCommand::DBLiveFilesMetadataDumperCommand(
|
|
3607
|
+
const std::vector<std::string>& /*params*/,
|
|
3608
|
+
const std::map<std::string, std::string>& options,
|
|
3609
|
+
const std::vector<std::string>& flags)
|
|
3610
|
+
: LDBCommand(options, flags, true,
|
|
3611
|
+
BuildCmdLineOptions({ARG_SORT_BY_FILENAME})) {
|
|
3612
|
+
sort_by_filename_ = IsFlagPresent(flags, ARG_SORT_BY_FILENAME);
|
|
3613
|
+
}
|
|
3614
|
+
|
|
3615
|
+
void DBLiveFilesMetadataDumperCommand::Help(std::string& ret) {
|
|
3616
|
+
ret.append(" ");
|
|
3617
|
+
ret.append(DBLiveFilesMetadataDumperCommand::Name());
|
|
3618
|
+
ret.append(" [--" + ARG_SORT_BY_FILENAME + "] ");
|
|
3619
|
+
ret.append("\n");
|
|
3620
|
+
}
|
|
3621
|
+
|
|
3622
|
+
void DBLiveFilesMetadataDumperCommand::DoCommand() {
|
|
3623
|
+
if (!db_) {
|
|
3624
|
+
assert(GetExecuteState().IsFailed());
|
|
3625
|
+
return;
|
|
3626
|
+
}
|
|
3627
|
+
Status s;
|
|
3628
|
+
|
|
3629
|
+
std::vector<ColumnFamilyMetaData> metadata;
|
|
3630
|
+
db_->GetAllColumnFamilyMetaData(&metadata);
|
|
3631
|
+
if (sort_by_filename_) {
|
|
3632
|
+
std::cout << "Live SST and Blob Files:" << std::endl;
|
|
3633
|
+
// tuple of <file path, level, column family name>
|
|
3634
|
+
std::vector<std::tuple<std::string, int, std::string>> all_files;
|
|
3635
|
+
|
|
3636
|
+
for (const auto& column_metadata : metadata) {
|
|
3637
|
+
// Iterate Levels
|
|
3638
|
+
const auto& levels = column_metadata.levels;
|
|
3639
|
+
const std::string& cf = column_metadata.name;
|
|
3640
|
+
for (const auto& level_metadata : levels) {
|
|
3641
|
+
// Iterate SST files
|
|
3642
|
+
const auto& sst_files = level_metadata.files;
|
|
3643
|
+
int level = level_metadata.level;
|
|
3644
|
+
for (const auto& sst_metadata : sst_files) {
|
|
3645
|
+
// The SstFileMetaData.name always starts with "/",
|
|
3646
|
+
// however SstFileMetaData.db_path is the string provided by
|
|
3647
|
+
// the user as an input. Therefore we check if we can
|
|
3648
|
+
// concantenate the two strings directly or if we need to
|
|
3649
|
+
// drop a possible extra "/" at the end of SstFileMetaData.db_path.
|
|
3650
|
+
std::string filename =
|
|
3651
|
+
NormalizePath(sst_metadata.db_path + "/" + sst_metadata.name);
|
|
3652
|
+
all_files.emplace_back(filename, level, cf);
|
|
3653
|
+
} // End of for-loop over sst files
|
|
3654
|
+
} // End of for-loop over levels
|
|
3655
|
+
|
|
3656
|
+
const auto& blob_files = column_metadata.blob_files;
|
|
3657
|
+
for (const auto& blob_metadata : blob_files) {
|
|
3658
|
+
// The BlobMetaData.blob_file_name always starts with "/",
|
|
3659
|
+
// however BlobMetaData.blob_file_path is the string provided by
|
|
3660
|
+
// the user as an input. Therefore we check if we can
|
|
3661
|
+
// concantenate the two strings directly or if we need to
|
|
3662
|
+
// drop a possible extra "/" at the end of BlobMetaData.blob_file_path.
|
|
3663
|
+
std::string filename = NormalizePath(
|
|
3664
|
+
blob_metadata.blob_file_path + "/" + blob_metadata.blob_file_name);
|
|
3665
|
+
// Level for blob files is encoded as -1
|
|
3666
|
+
all_files.emplace_back(filename, -1, cf);
|
|
3667
|
+
} // End of for-loop over blob files
|
|
3668
|
+
} // End of for-loop over column metadata
|
|
3669
|
+
|
|
3670
|
+
// Sort by filename (i.e. first entry in tuple)
|
|
3671
|
+
std::sort(all_files.begin(), all_files.end());
|
|
3672
|
+
|
|
3673
|
+
for (const auto& item : all_files) {
|
|
3674
|
+
const std::string& filename = std::get<0>(item);
|
|
3675
|
+
int level = std::get<1>(item);
|
|
3676
|
+
const std::string& cf = std::get<2>(item);
|
|
3677
|
+
if (level == -1) { // Blob File
|
|
3678
|
+
std::cout << filename << ", column family '" << cf << "'" << std::endl;
|
|
3679
|
+
} else { // SST file
|
|
3680
|
+
std::cout << filename << " : level " << level << ", column family '"
|
|
3681
|
+
<< cf << "'" << std::endl;
|
|
3682
|
+
}
|
|
3683
|
+
}
|
|
3684
|
+
} else {
|
|
3685
|
+
for (const auto& column_metadata : metadata) {
|
|
3686
|
+
std::cout << "===== Column Family: " << column_metadata.name
|
|
3687
|
+
<< " =====" << std::endl;
|
|
3688
|
+
|
|
3689
|
+
std::cout << "Live SST Files:" << std::endl;
|
|
3690
|
+
// Iterate levels
|
|
3691
|
+
const auto& levels = column_metadata.levels;
|
|
3692
|
+
for (const auto& level_metadata : levels) {
|
|
3693
|
+
std::cout << "---------- level " << level_metadata.level
|
|
3694
|
+
<< " ----------" << std::endl;
|
|
3695
|
+
// Iterate SST files
|
|
3696
|
+
const auto& sst_files = level_metadata.files;
|
|
3697
|
+
for (const auto& sst_metadata : sst_files) {
|
|
3698
|
+
// The SstFileMetaData.name always starts with "/",
|
|
3699
|
+
// however SstFileMetaData.db_path is the string provided by
|
|
3700
|
+
// the user as an input. Therefore we check if we can
|
|
3701
|
+
// concantenate the two strings directly or if we need to
|
|
3702
|
+
// drop a possible extra "/" at the end of SstFileMetaData.db_path.
|
|
3703
|
+
std::string filename =
|
|
3704
|
+
NormalizePath(sst_metadata.db_path + "/" + sst_metadata.name);
|
|
3705
|
+
std::cout << filename << std::endl;
|
|
3706
|
+
} // End of for-loop over sst files
|
|
3707
|
+
} // End of for-loop over levels
|
|
3708
|
+
|
|
3709
|
+
std::cout << "Live Blob Files:" << std::endl;
|
|
3710
|
+
const auto& blob_files = column_metadata.blob_files;
|
|
3711
|
+
for (const auto& blob_metadata : blob_files) {
|
|
3712
|
+
// The BlobMetaData.blob_file_name always starts with "/",
|
|
3713
|
+
// however BlobMetaData.blob_file_path is the string provided by
|
|
3714
|
+
// the user as an input. Therefore we check if we can
|
|
3715
|
+
// concantenate the two strings directly or if we need to
|
|
3716
|
+
// drop a possible extra "/" at the end of BlobMetaData.blob_file_path.
|
|
3717
|
+
std::string filename = NormalizePath(
|
|
3718
|
+
blob_metadata.blob_file_path + "/" + blob_metadata.blob_file_name);
|
|
3719
|
+
std::cout << filename << std::endl;
|
|
3720
|
+
} // End of for-loop over blob files
|
|
3721
|
+
} // End of for-loop over column metadata
|
|
3722
|
+
} // End of else ("not sort_by_filename")
|
|
3723
|
+
std::cout << "------------------------------" << std::endl;
|
|
3724
|
+
}
|
|
3725
|
+
|
|
3282
3726
|
void WriteExternalSstFilesCommand::Help(std::string& ret) {
|
|
3283
3727
|
ret.append(" ");
|
|
3284
3728
|
ret.append(WriteExternalSstFilesCommand::Name());
|
|
@@ -3479,8 +3923,7 @@ ListFileRangeDeletesCommand::ListFileRangeDeletesCommand(
|
|
|
3479
3923
|
const std::map<std::string, std::string>& options,
|
|
3480
3924
|
const std::vector<std::string>& flags)
|
|
3481
3925
|
: LDBCommand(options, flags, true, BuildCmdLineOptions({ARG_MAX_KEYS})) {
|
|
3482
|
-
|
|
3483
|
-
options.find(ARG_MAX_KEYS);
|
|
3926
|
+
auto itr = options.find(ARG_MAX_KEYS);
|
|
3484
3927
|
if (itr != options.end()) {
|
|
3485
3928
|
try {
|
|
3486
3929
|
#if defined(CYGWIN)
|
|
@@ -3528,7 +3971,7 @@ void UnsafeRemoveSstFileCommand::Help(std::string& ret) {
|
|
|
3528
3971
|
ret.append(" ");
|
|
3529
3972
|
ret.append(UnsafeRemoveSstFileCommand::Name());
|
|
3530
3973
|
ret.append(" <SST file number>");
|
|
3531
|
-
ret.append("
|
|
3974
|
+
ret.append(" ");
|
|
3532
3975
|
ret.append(" MUST NOT be used on a live DB.");
|
|
3533
3976
|
ret.append("\n");
|
|
3534
3977
|
}
|
|
@@ -3553,48 +3996,27 @@ UnsafeRemoveSstFileCommand::UnsafeRemoveSstFileCommand(
|
|
|
3553
3996
|
}
|
|
3554
3997
|
|
|
3555
3998
|
void UnsafeRemoveSstFileCommand::DoCommand() {
|
|
3556
|
-
// Instead of opening a `DB` and calling `DeleteFile()`, this implementation
|
|
3557
|
-
// uses the underlying `VersionSet` API to read and modify the MANIFEST. This
|
|
3558
|
-
// allows us to use the user's real options, while not having to worry about
|
|
3559
|
-
// the DB persisting new SST files via flush/compaction or attempting to read/
|
|
3560
|
-
// compact files which may fail, particularly for the file we intend to remove
|
|
3561
|
-
// (the user may want to remove an already deleted file from MANIFEST).
|
|
3562
3999
|
PrepareOptions();
|
|
3563
4000
|
|
|
3564
|
-
|
|
3565
|
-
|
|
3566
|
-
|
|
3567
|
-
options_.db_paths.emplace_back(db_path_, 0 /* target_size */);
|
|
4001
|
+
OfflineManifestWriter w(options_, db_path_);
|
|
4002
|
+
if (column_families_.empty()) {
|
|
4003
|
+
column_families_.emplace_back(kDefaultColumnFamilyName, options_);
|
|
3568
4004
|
}
|
|
3569
|
-
|
|
3570
|
-
WriteController wc(options_.delayed_write_rate);
|
|
3571
|
-
WriteBufferManager wb(options_.db_write_buffer_size);
|
|
3572
|
-
ImmutableDBOptions immutable_db_options(options_);
|
|
3573
|
-
std::shared_ptr<Cache> tc(
|
|
3574
|
-
NewLRUCache(1 << 20 /* capacity */, options_.table_cache_numshardbits));
|
|
3575
|
-
EnvOptions sopt;
|
|
3576
|
-
VersionSet versions(db_path_, &immutable_db_options, sopt, tc.get(), &wb, &wc,
|
|
3577
|
-
/*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr);
|
|
3578
|
-
Status s = versions.Recover(column_families_);
|
|
4005
|
+
Status s = w.Recover(column_families_);
|
|
3579
4006
|
|
|
3580
4007
|
ColumnFamilyData* cfd = nullptr;
|
|
3581
4008
|
int level = -1;
|
|
3582
4009
|
if (s.ok()) {
|
|
3583
4010
|
FileMetaData* metadata = nullptr;
|
|
3584
|
-
s =
|
|
4011
|
+
s = w.Versions().GetMetadataForFile(sst_file_number_, &level, &metadata,
|
|
4012
|
+
&cfd);
|
|
3585
4013
|
}
|
|
3586
4014
|
|
|
3587
4015
|
if (s.ok()) {
|
|
3588
4016
|
VersionEdit edit;
|
|
3589
4017
|
edit.SetColumnFamily(cfd->GetID());
|
|
3590
4018
|
edit.DeleteFile(level, sst_file_number_);
|
|
3591
|
-
|
|
3592
|
-
InstrumentedMutex mutex;
|
|
3593
|
-
mutex.Lock();
|
|
3594
|
-
s = versions.LogAndApply(cfd, *cfd->GetLatestMutableCFOptions(), &edit,
|
|
3595
|
-
&mutex, nullptr /* db_directory */,
|
|
3596
|
-
false /* new_descriptor_log */);
|
|
3597
|
-
mutex.Unlock();
|
|
4019
|
+
s = w.LogAndApply(cfd, &edit);
|
|
3598
4020
|
}
|
|
3599
4021
|
|
|
3600
4022
|
if (!s.ok()) {
|
|
@@ -3605,5 +4027,59 @@ void UnsafeRemoveSstFileCommand::DoCommand() {
|
|
|
3605
4027
|
}
|
|
3606
4028
|
}
|
|
3607
4029
|
|
|
4030
|
+
const std::string UpdateManifestCommand::ARG_VERBOSE = "verbose";
|
|
4031
|
+
const std::string UpdateManifestCommand::ARG_UPDATE_TEMPERATURES =
|
|
4032
|
+
"update_temperatures";
|
|
4033
|
+
|
|
4034
|
+
void UpdateManifestCommand::Help(std::string& ret) {
|
|
4035
|
+
ret.append(" ");
|
|
4036
|
+
ret.append(UpdateManifestCommand::Name());
|
|
4037
|
+
ret.append(" [--update_temperatures]");
|
|
4038
|
+
ret.append(" ");
|
|
4039
|
+
ret.append(" MUST NOT be used on a live DB.");
|
|
4040
|
+
ret.append("\n");
|
|
4041
|
+
}
|
|
4042
|
+
|
|
4043
|
+
UpdateManifestCommand::UpdateManifestCommand(
|
|
4044
|
+
const std::vector<std::string>& /*params*/,
|
|
4045
|
+
const std::map<std::string, std::string>& options,
|
|
4046
|
+
const std::vector<std::string>& flags)
|
|
4047
|
+
: LDBCommand(options, flags, false /* is_read_only */,
|
|
4048
|
+
BuildCmdLineOptions({ARG_VERBOSE, ARG_UPDATE_TEMPERATURES})) {
|
|
4049
|
+
verbose_ = IsFlagPresent(flags, ARG_VERBOSE) ||
|
|
4050
|
+
ParseBooleanOption(options, ARG_VERBOSE, false);
|
|
4051
|
+
update_temperatures_ =
|
|
4052
|
+
IsFlagPresent(flags, ARG_UPDATE_TEMPERATURES) ||
|
|
4053
|
+
ParseBooleanOption(options, ARG_UPDATE_TEMPERATURES, false);
|
|
4054
|
+
|
|
4055
|
+
if (!update_temperatures_) {
|
|
4056
|
+
exec_state_ = LDBCommandExecuteResult::Failed(
|
|
4057
|
+
"No action like --update_temperatures specified for update_manifest");
|
|
4058
|
+
}
|
|
4059
|
+
}
|
|
4060
|
+
|
|
4061
|
+
void UpdateManifestCommand::DoCommand() {
|
|
4062
|
+
PrepareOptions();
|
|
4063
|
+
|
|
4064
|
+
auto level = verbose_ ? InfoLogLevel::INFO_LEVEL : InfoLogLevel::WARN_LEVEL;
|
|
4065
|
+
options_.info_log.reset(new StderrLogger(level));
|
|
4066
|
+
|
|
4067
|
+
experimental::UpdateManifestForFilesStateOptions opts;
|
|
4068
|
+
opts.update_temperatures = update_temperatures_;
|
|
4069
|
+
if (column_families_.empty()) {
|
|
4070
|
+
column_families_.emplace_back(kDefaultColumnFamilyName, options_);
|
|
4071
|
+
}
|
|
4072
|
+
Status s = experimental::UpdateManifestForFilesState(options_, db_path_,
|
|
4073
|
+
column_families_);
|
|
4074
|
+
|
|
4075
|
+
if (!s.ok()) {
|
|
4076
|
+
exec_state_ = LDBCommandExecuteResult::Failed(
|
|
4077
|
+
"failed to update manifest: " + s.ToString());
|
|
4078
|
+
} else {
|
|
4079
|
+
exec_state_ =
|
|
4080
|
+
LDBCommandExecuteResult::Succeed("Manifest updates successful");
|
|
4081
|
+
}
|
|
4082
|
+
}
|
|
4083
|
+
|
|
3608
4084
|
} // namespace ROCKSDB_NAMESPACE
|
|
3609
4085
|
#endif // ROCKSDB_LITE
|