@nxtedition/rocksdb 5.2.16 → 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 +306 -403
- package/binding.gyp +78 -69
- 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 -443
- package/deps/snappy/snappy.gyp +4 -1
- 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
package/binding.cc
CHANGED
|
@@ -30,7 +30,6 @@ public:
|
|
|
30
30
|
|
|
31
31
|
struct Database;
|
|
32
32
|
struct Iterator;
|
|
33
|
-
static void iterator_do_close (napi_env env, Iterator* iterator, napi_value cb);
|
|
34
33
|
|
|
35
34
|
#define NAPI_DB_CONTEXT() \
|
|
36
35
|
Database* database = nullptr; \
|
|
@@ -41,7 +40,7 @@ static void iterator_do_close (napi_env env, Iterator* iterator, napi_value cb);
|
|
|
41
40
|
NAPI_STATUS_THROWS(napi_get_value_external(env, argv[0], (void**)&iterator));
|
|
42
41
|
|
|
43
42
|
#define NAPI_BATCH_CONTEXT() \
|
|
44
|
-
|
|
43
|
+
rocksdb::WriteBatch* batch = nullptr; \
|
|
45
44
|
NAPI_STATUS_THROWS(napi_get_value_external(env, argv[0], (void**)&batch));
|
|
46
45
|
|
|
47
46
|
static bool IsString (napi_env env, napi_value value) {
|
|
@@ -92,8 +91,7 @@ static napi_value GetProperty (napi_env env, napi_value obj, const std::string&
|
|
|
92
91
|
return value;
|
|
93
92
|
}
|
|
94
93
|
|
|
95
|
-
static bool BooleanProperty (napi_env env, napi_value obj, const std::string& key,
|
|
96
|
-
bool defaultValue) {
|
|
94
|
+
static bool BooleanProperty (napi_env env, napi_value obj, const std::string& key, bool defaultValue) {
|
|
97
95
|
if (HasProperty(env, obj, key.data())) {
|
|
98
96
|
const auto value = GetProperty(env, obj, key.data());
|
|
99
97
|
bool result;
|
|
@@ -117,8 +115,7 @@ static bool EncodingIsBuffer (napi_env env, napi_value obj, const std::string& o
|
|
|
117
115
|
return false;
|
|
118
116
|
}
|
|
119
117
|
|
|
120
|
-
static uint32_t Uint32Property (napi_env env, napi_value obj, const std::string& key,
|
|
121
|
-
uint32_t defaultValue) {
|
|
118
|
+
static uint32_t Uint32Property (napi_env env, napi_value obj, const std::string& key, uint32_t defaultValue) {
|
|
122
119
|
if (HasProperty(env, obj, key.data())) {
|
|
123
120
|
const auto value = GetProperty(env, obj, key.data());
|
|
124
121
|
uint32_t result;
|
|
@@ -129,8 +126,7 @@ static uint32_t Uint32Property (napi_env env, napi_value obj, const std::string&
|
|
|
129
126
|
return defaultValue;
|
|
130
127
|
}
|
|
131
128
|
|
|
132
|
-
static int Int32Property (napi_env env, napi_value obj, const std::string& key,
|
|
133
|
-
int defaultValue) {
|
|
129
|
+
static int Int32Property (napi_env env, napi_value obj, const std::string& key, int defaultValue) {
|
|
134
130
|
if (HasProperty(env, obj, key.data())) {
|
|
135
131
|
const auto value = GetProperty(env, obj, key.data());
|
|
136
132
|
int result;
|
|
@@ -158,7 +154,7 @@ static std::string ToString (napi_env env, napi_value from, const std::string& d
|
|
|
158
154
|
return defaultValue;
|
|
159
155
|
}
|
|
160
156
|
|
|
161
|
-
static std::string StringProperty (napi_env env, napi_value obj, const std::string& key) {
|
|
157
|
+
static std::string StringProperty (napi_env env, napi_value obj, const std::string& key, const std::string& defaultValue = "") {
|
|
162
158
|
if (HasProperty(env, obj, key)) {
|
|
163
159
|
napi_value value = GetProperty(env, obj, key);
|
|
164
160
|
if (IsString(env, value)) {
|
|
@@ -166,7 +162,7 @@ static std::string StringProperty (napi_env env, napi_value obj, const std::stri
|
|
|
166
162
|
}
|
|
167
163
|
}
|
|
168
164
|
|
|
169
|
-
return
|
|
165
|
+
return defaultValue;
|
|
170
166
|
}
|
|
171
167
|
|
|
172
168
|
static size_t StringOrBufferLength (napi_env env, napi_value value) {
|
|
@@ -211,10 +207,7 @@ static std::vector<std::string> KeyArray (napi_env env, napi_value arr) {
|
|
|
211
207
|
return result;
|
|
212
208
|
}
|
|
213
209
|
|
|
214
|
-
static napi_status CallFunction (napi_env env,
|
|
215
|
-
napi_value callback,
|
|
216
|
-
const int argc,
|
|
217
|
-
napi_value* argv) {
|
|
210
|
+
static napi_status CallFunction (napi_env env, napi_value callback, const int argc, napi_value* argv) {
|
|
218
211
|
napi_value global;
|
|
219
212
|
napi_get_global(env, &global);
|
|
220
213
|
return napi_call_function(env, global, callback, argc, argv, nullptr);
|
|
@@ -233,72 +226,60 @@ void Convert (napi_env env, const T& s, bool asBuffer, napi_value& result) {
|
|
|
233
226
|
* Base worker class. Handles the async work. Derived classes can override the
|
|
234
227
|
* following virtual methods (listed in the order in which they're called):
|
|
235
228
|
*
|
|
236
|
-
* -
|
|
237
|
-
* -
|
|
238
|
-
* -
|
|
239
|
-
* -
|
|
229
|
+
* - Execute (abstract, worker pool thread): main work
|
|
230
|
+
* - Then (main thread): call JS callback on success
|
|
231
|
+
* - Catch (main thread): call JS callback on error
|
|
232
|
+
* - Finally (main thread): do cleanup regardless of success
|
|
240
233
|
*/
|
|
241
234
|
struct BaseWorker {
|
|
242
|
-
// Note: storing env is discouraged as we'd end up using it in unsafe places.
|
|
243
235
|
BaseWorker (napi_env env,
|
|
244
236
|
Database* database,
|
|
245
237
|
napi_value callback,
|
|
246
|
-
const
|
|
238
|
+
const std::string& resourceName)
|
|
247
239
|
: database_(database) {
|
|
248
240
|
NAPI_STATUS_THROWS_VOID(napi_create_reference(env, callback, 1, &callbackRef_));
|
|
249
241
|
napi_value asyncResourceName;
|
|
250
|
-
NAPI_STATUS_THROWS_VOID(napi_create_string_utf8(env, resourceName,
|
|
251
|
-
|
|
252
|
-
|
|
242
|
+
NAPI_STATUS_THROWS_VOID(napi_create_string_utf8(env, resourceName.data(),
|
|
243
|
+
NAPI_AUTO_LENGTH,
|
|
244
|
+
&asyncResourceName));
|
|
253
245
|
NAPI_STATUS_THROWS_VOID(napi_create_async_work(env, callback,
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
246
|
+
asyncResourceName,
|
|
247
|
+
BaseWorker::Execute,
|
|
248
|
+
BaseWorker::Complete,
|
|
249
|
+
this, &asyncWork_));
|
|
258
250
|
}
|
|
259
251
|
|
|
260
252
|
virtual ~BaseWorker () {}
|
|
261
253
|
|
|
262
254
|
static void Execute (napi_env env, void* data) {
|
|
263
255
|
auto self = reinterpret_cast<BaseWorker*>(data);
|
|
264
|
-
|
|
265
|
-
// Don't pass env to DoExecute() because use of Node-API
|
|
266
|
-
// methods should generally be avoided in async work.
|
|
267
|
-
self->DoExecute();
|
|
256
|
+
self->status_ = self->Execute();
|
|
268
257
|
}
|
|
269
258
|
|
|
270
|
-
bool SetStatus (const leveldb::Status& status) {
|
|
271
|
-
status_ = status;
|
|
272
|
-
return status.ok();
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
virtual void DoExecute () = 0;
|
|
276
|
-
|
|
277
259
|
static void Complete (napi_env env, napi_status status, void* data) {
|
|
278
260
|
auto self = reinterpret_cast<BaseWorker*>(data);
|
|
279
261
|
|
|
280
|
-
self->DoComplete(env);
|
|
281
|
-
self->DoFinally(env);
|
|
282
|
-
}
|
|
283
|
-
|
|
284
|
-
void DoComplete (napi_env env) {
|
|
285
262
|
napi_value callback;
|
|
286
|
-
napi_get_reference_value(env, callbackRef_, &callback);
|
|
263
|
+
napi_get_reference_value(env, self->callbackRef_, &callback);
|
|
287
264
|
|
|
288
|
-
if (status_.ok()) {
|
|
289
|
-
|
|
265
|
+
if (self->status_.ok()) {
|
|
266
|
+
self->Then(env, callback);
|
|
290
267
|
} else {
|
|
291
|
-
|
|
268
|
+
self->Catch(env, callback);
|
|
292
269
|
}
|
|
270
|
+
|
|
271
|
+
self->Finally(env);
|
|
293
272
|
}
|
|
294
273
|
|
|
295
|
-
virtual
|
|
274
|
+
virtual rocksdb::Status Execute () = 0;
|
|
275
|
+
|
|
276
|
+
virtual void Then (napi_env env, napi_value callback) {
|
|
296
277
|
napi_value argv;
|
|
297
278
|
napi_get_null(env, &argv);
|
|
298
279
|
CallFunction(env, callback, 1, &argv);
|
|
299
280
|
}
|
|
300
281
|
|
|
301
|
-
virtual void
|
|
282
|
+
virtual void Catch (napi_env env, napi_value callback) {
|
|
302
283
|
napi_value argv;
|
|
303
284
|
|
|
304
285
|
const auto msg = status_.ToString();
|
|
@@ -324,7 +305,7 @@ struct BaseWorker {
|
|
|
324
305
|
CallFunction(env, callback, 1, &argv);
|
|
325
306
|
}
|
|
326
307
|
|
|
327
|
-
virtual void
|
|
308
|
+
virtual void Finally (napi_env env) {
|
|
328
309
|
napi_delete_reference(env, callbackRef_);
|
|
329
310
|
napi_delete_async_work(env, asyncWork_);
|
|
330
311
|
|
|
@@ -340,29 +321,21 @@ struct BaseWorker {
|
|
|
340
321
|
private:
|
|
341
322
|
napi_ref callbackRef_;
|
|
342
323
|
napi_async_work asyncWork_;
|
|
343
|
-
|
|
324
|
+
rocksdb::Status status_;
|
|
344
325
|
};
|
|
345
326
|
|
|
346
|
-
/**
|
|
347
|
-
* Owns the LevelDB storage, cache, filter policy and iterators.
|
|
348
|
-
*/
|
|
349
327
|
struct Database {
|
|
350
|
-
|
|
351
|
-
: pendingCloseWorker_(nullptr),
|
|
352
|
-
ref_(nullptr),
|
|
353
|
-
priorityWork_(0) {}
|
|
354
|
-
|
|
355
|
-
leveldb::Status Open (const leveldb::Options& options,
|
|
328
|
+
rocksdb::Status Open (const rocksdb::Options& options,
|
|
356
329
|
const bool readOnly,
|
|
357
330
|
const char* location) {
|
|
358
331
|
if (readOnly) {
|
|
359
|
-
|
|
332
|
+
rocksdb::DB* db = nullptr;
|
|
360
333
|
const auto status = rocksdb::DB::OpenForReadOnly(options, location, &db);
|
|
361
334
|
db_.reset(db);
|
|
362
335
|
return status;
|
|
363
336
|
} else {
|
|
364
|
-
|
|
365
|
-
const auto status =
|
|
337
|
+
rocksdb::DB* db = nullptr;
|
|
338
|
+
const auto status = rocksdb::DB::Open(options, location, &db);
|
|
366
339
|
db_.reset(db);
|
|
367
340
|
return status;
|
|
368
341
|
}
|
|
@@ -372,36 +345,36 @@ struct Database {
|
|
|
372
345
|
db_.reset();
|
|
373
346
|
}
|
|
374
347
|
|
|
375
|
-
|
|
348
|
+
rocksdb::Status Put (const rocksdb::WriteOptions& options,
|
|
376
349
|
const std::string& key,
|
|
377
350
|
const std::string& value) {
|
|
378
351
|
return db_->Put(options, db_->DefaultColumnFamily(), key, value);
|
|
379
352
|
}
|
|
380
353
|
|
|
381
|
-
|
|
354
|
+
rocksdb::Status Get (const rocksdb::ReadOptions& options,
|
|
382
355
|
const std::string& key,
|
|
383
356
|
rocksdb::PinnableSlice& value) {
|
|
384
357
|
return db_->Get(options, db_->DefaultColumnFamily(), key, &value);
|
|
385
358
|
}
|
|
386
359
|
|
|
387
|
-
|
|
360
|
+
rocksdb::Status Del (const rocksdb::WriteOptions& options,
|
|
388
361
|
const std::string& key) {
|
|
389
362
|
return db_->Delete(options, db_->DefaultColumnFamily(), key);
|
|
390
363
|
}
|
|
391
364
|
|
|
392
|
-
|
|
393
|
-
|
|
365
|
+
rocksdb::Status WriteBatch (const rocksdb::WriteOptions& options,
|
|
366
|
+
rocksdb::WriteBatch* batch) {
|
|
394
367
|
return db_->Write(options, batch);
|
|
395
368
|
}
|
|
396
369
|
|
|
397
|
-
uint64_t ApproximateSize (const
|
|
370
|
+
uint64_t ApproximateSize (const rocksdb::Range* range) {
|
|
398
371
|
uint64_t size = 0;
|
|
399
372
|
db_->GetApproximateSizes(range, 1, &size);
|
|
400
373
|
return size;
|
|
401
374
|
}
|
|
402
375
|
|
|
403
|
-
void CompactRange (const
|
|
404
|
-
const
|
|
376
|
+
void CompactRange (const rocksdb::Slice* start,
|
|
377
|
+
const rocksdb::Slice* end) {
|
|
405
378
|
rocksdb::CompactRangeOptions options;
|
|
406
379
|
db_->CompactRange(options, start, end);
|
|
407
380
|
}
|
|
@@ -410,15 +383,15 @@ struct Database {
|
|
|
410
383
|
db_->GetProperty(property, &value);
|
|
411
384
|
}
|
|
412
385
|
|
|
413
|
-
const
|
|
386
|
+
const rocksdb::Snapshot* NewSnapshot () {
|
|
414
387
|
return db_->GetSnapshot();
|
|
415
388
|
}
|
|
416
389
|
|
|
417
|
-
|
|
390
|
+
rocksdb::Iterator* NewIterator (const rocksdb::ReadOptions& options) {
|
|
418
391
|
return db_->NewIterator(options);
|
|
419
392
|
}
|
|
420
393
|
|
|
421
|
-
void ReleaseSnapshot (const
|
|
394
|
+
void ReleaseSnapshot (const rocksdb::Snapshot* snapshot) {
|
|
422
395
|
return db_->ReleaseSnapshot(snapshot);
|
|
423
396
|
}
|
|
424
397
|
|
|
@@ -433,11 +406,11 @@ struct Database {
|
|
|
433
406
|
}
|
|
434
407
|
|
|
435
408
|
void IncrementPriorityWork (napi_env env) {
|
|
436
|
-
napi_reference_ref(env,
|
|
409
|
+
napi_reference_ref(env, prioritRef_, &priorityWork_);
|
|
437
410
|
}
|
|
438
411
|
|
|
439
412
|
void DecrementPriorityWork (napi_env env) {
|
|
440
|
-
napi_reference_unref(env,
|
|
413
|
+
napi_reference_unref(env, prioritRef_, &priorityWork_);
|
|
441
414
|
|
|
442
415
|
if (priorityWork_ == 0 && pendingCloseWorker_) {
|
|
443
416
|
pendingCloseWorker_->Queue(env);
|
|
@@ -449,13 +422,13 @@ struct Database {
|
|
|
449
422
|
return priorityWork_ > 0;
|
|
450
423
|
}
|
|
451
424
|
|
|
452
|
-
std::unique_ptr<
|
|
425
|
+
std::unique_ptr<rocksdb::DB> db_;
|
|
453
426
|
BaseWorker* pendingCloseWorker_;
|
|
454
427
|
std::set<Iterator*> iterators_;
|
|
455
|
-
napi_ref
|
|
428
|
+
napi_ref prioritRef_;
|
|
456
429
|
|
|
457
430
|
private:
|
|
458
|
-
uint32_t priorityWork_;
|
|
431
|
+
uint32_t priorityWork_ = 0;
|
|
459
432
|
};
|
|
460
433
|
|
|
461
434
|
/**
|
|
@@ -464,14 +437,14 @@ private:
|
|
|
464
437
|
struct PriorityWorker : public BaseWorker {
|
|
465
438
|
PriorityWorker (napi_env env, Database* database, napi_value callback, const char* resourceName)
|
|
466
439
|
: BaseWorker(env, database, callback, resourceName) {
|
|
467
|
-
|
|
440
|
+
database_->IncrementPriorityWork(env);
|
|
468
441
|
}
|
|
469
442
|
|
|
470
443
|
virtual ~PriorityWorker () {}
|
|
471
444
|
|
|
472
|
-
void
|
|
445
|
+
void Finally (napi_env env) override {
|
|
473
446
|
database_->DecrementPriorityWork(env);
|
|
474
|
-
BaseWorker::
|
|
447
|
+
BaseWorker::Finally(env);
|
|
475
448
|
}
|
|
476
449
|
};
|
|
477
450
|
|
|
@@ -485,77 +458,63 @@ struct BaseIterator {
|
|
|
485
458
|
const int limit,
|
|
486
459
|
const bool fillCache)
|
|
487
460
|
: database_(database),
|
|
488
|
-
snapshot_(database->NewSnapshot()),
|
|
489
|
-
dbIterator_(database->NewIterator([&]{
|
|
490
|
-
leveldb::ReadOptions options;
|
|
491
|
-
options.fill_cache = fillCache;
|
|
492
|
-
options.verify_checksums = false;
|
|
493
|
-
options.snapshot = snapshot_;
|
|
494
|
-
return options;
|
|
495
|
-
}())),
|
|
496
|
-
didSeek_(false),
|
|
497
|
-
reverse_(reverse),
|
|
498
461
|
lt_(lt),
|
|
499
462
|
lte_(lte),
|
|
500
463
|
gt_(gt),
|
|
501
464
|
gte_(gte),
|
|
502
|
-
|
|
503
|
-
|
|
465
|
+
snapshot_(database->NewSnapshot(), [this](const rocksdb::Snapshot* ptr) {
|
|
466
|
+
database_->ReleaseSnapshot(ptr);
|
|
467
|
+
}),
|
|
468
|
+
iterator_(database->NewIterator([&]{
|
|
469
|
+
rocksdb::ReadOptions options;
|
|
470
|
+
if (lt_ && !lte_) {
|
|
471
|
+
upper_bound_ = rocksdb::Slice(lt_->data(), lt_->size());
|
|
472
|
+
options.iterate_upper_bound = &upper_bound_;
|
|
473
|
+
}
|
|
474
|
+
if (gte_) {
|
|
475
|
+
lower_bound_ = rocksdb::Slice(gte_->data(), gte_->size());
|
|
476
|
+
options.iterate_lower_bound = &lower_bound_;
|
|
477
|
+
}
|
|
478
|
+
options.fill_cache = fillCache;
|
|
479
|
+
options.snapshot = snapshot_.get();
|
|
480
|
+
return options;
|
|
481
|
+
}())),
|
|
482
|
+
reverse_(reverse),
|
|
483
|
+
limit_(limit) {
|
|
504
484
|
}
|
|
505
485
|
|
|
506
486
|
virtual ~BaseIterator () {
|
|
507
|
-
assert(!
|
|
508
|
-
|
|
509
|
-
delete lt_;
|
|
510
|
-
delete lte_;
|
|
511
|
-
delete gt_;
|
|
512
|
-
delete gte_;
|
|
487
|
+
assert(!iterator_);
|
|
513
488
|
}
|
|
514
489
|
|
|
515
490
|
bool DidSeek () const {
|
|
516
491
|
return didSeek_;
|
|
517
492
|
}
|
|
518
493
|
|
|
519
|
-
/**
|
|
520
|
-
* Seek to the first relevant key based on range options.
|
|
521
|
-
*/
|
|
522
494
|
void SeekToRange () {
|
|
523
495
|
didSeek_ = true;
|
|
524
496
|
|
|
525
|
-
if (!reverse_ && gte_) {
|
|
526
|
-
|
|
527
|
-
} else if (!reverse_ && gt_) {
|
|
528
|
-
dbIterator_->Seek(*gt_);
|
|
497
|
+
if (!reverse_ && gt_ && !gte_) {
|
|
498
|
+
iterator_->Seek(*gt_);
|
|
529
499
|
|
|
530
|
-
if (
|
|
531
|
-
|
|
500
|
+
if (iterator_->Valid() && iterator_->key().compare(*gt_) == 0) {
|
|
501
|
+
iterator_->Next();
|
|
532
502
|
}
|
|
533
503
|
} else if (reverse_ && lte_) {
|
|
534
|
-
|
|
504
|
+
iterator_->Seek(*lte_);
|
|
535
505
|
|
|
536
|
-
if (!
|
|
537
|
-
|
|
538
|
-
} else if (
|
|
539
|
-
|
|
540
|
-
}
|
|
541
|
-
} else if (reverse_ && lt_) {
|
|
542
|
-
dbIterator_->Seek(*lt_);
|
|
543
|
-
|
|
544
|
-
if (!dbIterator_->Valid()) {
|
|
545
|
-
dbIterator_->SeekToLast();
|
|
546
|
-
} else if (dbIterator_->key().compare(*lt_) >= 0) {
|
|
547
|
-
dbIterator_->Prev();
|
|
506
|
+
if (!iterator_->Valid()) {
|
|
507
|
+
iterator_->SeekToLast();
|
|
508
|
+
} else if (iterator_->key().compare(*lte_) > 0) {
|
|
509
|
+
iterator_->Prev();
|
|
548
510
|
}
|
|
549
511
|
} else if (reverse_) {
|
|
550
|
-
|
|
512
|
+
iterator_->SeekToLast();
|
|
551
513
|
} else {
|
|
552
|
-
|
|
514
|
+
iterator_->SeekToFirst();
|
|
553
515
|
}
|
|
554
516
|
}
|
|
555
517
|
|
|
556
|
-
/**
|
|
557
|
-
* Seek manually (during iteration).
|
|
558
|
-
*/
|
|
559
518
|
void Seek (const std::string& target) {
|
|
560
519
|
didSeek_ = true;
|
|
561
520
|
|
|
@@ -563,17 +522,17 @@ struct BaseIterator {
|
|
|
563
522
|
return SeekToEnd();
|
|
564
523
|
}
|
|
565
524
|
|
|
566
|
-
|
|
525
|
+
iterator_->Seek(target);
|
|
567
526
|
|
|
568
|
-
if (
|
|
569
|
-
const auto cmp =
|
|
527
|
+
if (iterator_->Valid()) {
|
|
528
|
+
const auto cmp = iterator_->key().compare(target);
|
|
570
529
|
if (reverse_ ? cmp > 0 : cmp < 0) {
|
|
571
530
|
Next();
|
|
572
531
|
}
|
|
573
532
|
} else {
|
|
574
533
|
SeekToFirst();
|
|
575
|
-
if (
|
|
576
|
-
const auto cmp =
|
|
534
|
+
if (iterator_->Valid()) {
|
|
535
|
+
const auto cmp = iterator_->key().compare(target);
|
|
577
536
|
if (reverse_ ? cmp > 0 : cmp < 0) {
|
|
578
537
|
SeekToEnd();
|
|
579
538
|
}
|
|
@@ -582,15 +541,24 @@ struct BaseIterator {
|
|
|
582
541
|
}
|
|
583
542
|
|
|
584
543
|
void Close () {
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
dbIterator_ = nullptr;
|
|
588
|
-
database_->ReleaseSnapshot(snapshot_);
|
|
589
|
-
}
|
|
544
|
+
snapshot_.reset();
|
|
545
|
+
iterator_.reset();
|
|
590
546
|
}
|
|
591
547
|
|
|
592
548
|
bool Valid () const {
|
|
593
|
-
|
|
549
|
+
if (!iterator_->Valid()) {
|
|
550
|
+
return false;
|
|
551
|
+
}
|
|
552
|
+
|
|
553
|
+
if (lte_ && iterator_->key().compare(*lte_) > 0) {
|
|
554
|
+
return false;
|
|
555
|
+
}
|
|
556
|
+
|
|
557
|
+
if (!gte_ && gt_ && iterator_->key().compare(*gt_) <= 0) {
|
|
558
|
+
return false;
|
|
559
|
+
}
|
|
560
|
+
|
|
561
|
+
return true;
|
|
594
562
|
}
|
|
595
563
|
|
|
596
564
|
bool Increment () {
|
|
@@ -598,18 +566,18 @@ struct BaseIterator {
|
|
|
598
566
|
}
|
|
599
567
|
|
|
600
568
|
void Next () {
|
|
601
|
-
if (reverse_)
|
|
602
|
-
else
|
|
569
|
+
if (reverse_) iterator_->Prev();
|
|
570
|
+
else iterator_->Next();
|
|
603
571
|
}
|
|
604
572
|
|
|
605
573
|
void SeekToFirst () {
|
|
606
|
-
if (reverse_)
|
|
607
|
-
else
|
|
574
|
+
if (reverse_) iterator_->SeekToLast();
|
|
575
|
+
else iterator_->SeekToFirst();
|
|
608
576
|
}
|
|
609
577
|
|
|
610
578
|
void SeekToLast () {
|
|
611
|
-
if (reverse_)
|
|
612
|
-
else
|
|
579
|
+
if (reverse_) iterator_->SeekToFirst();
|
|
580
|
+
else iterator_->SeekToLast();
|
|
613
581
|
}
|
|
614
582
|
|
|
615
583
|
void SeekToEnd () {
|
|
@@ -617,19 +585,19 @@ struct BaseIterator {
|
|
|
617
585
|
Next();
|
|
618
586
|
}
|
|
619
587
|
|
|
620
|
-
|
|
621
|
-
return
|
|
588
|
+
rocksdb::Slice CurrentKey () const {
|
|
589
|
+
return iterator_->key();
|
|
622
590
|
}
|
|
623
591
|
|
|
624
|
-
|
|
625
|
-
return
|
|
592
|
+
rocksdb::Slice CurrentValue () const {
|
|
593
|
+
return iterator_->value();
|
|
626
594
|
}
|
|
627
595
|
|
|
628
|
-
|
|
629
|
-
return
|
|
596
|
+
rocksdb::Status Status () const {
|
|
597
|
+
return iterator_->status();
|
|
630
598
|
}
|
|
631
599
|
|
|
632
|
-
bool OutOfRange (const
|
|
600
|
+
bool OutOfRange (const rocksdb::Slice& target) const {
|
|
633
601
|
if (lte_) {
|
|
634
602
|
if (target.compare(*lte_) > 0) return true;
|
|
635
603
|
} else if (lt_) {
|
|
@@ -648,16 +616,18 @@ struct BaseIterator {
|
|
|
648
616
|
Database* database_;
|
|
649
617
|
|
|
650
618
|
private:
|
|
651
|
-
const
|
|
652
|
-
|
|
653
|
-
|
|
619
|
+
const std::unique_ptr<const std::string> lt_;
|
|
620
|
+
const std::unique_ptr<const std::string> lte_;
|
|
621
|
+
const std::unique_ptr<const std::string> gt_;
|
|
622
|
+
const std::unique_ptr<const std::string> gte_;
|
|
623
|
+
rocksdb::Slice lower_bound_;
|
|
624
|
+
rocksdb::Slice upper_bound_;
|
|
625
|
+
std::shared_ptr<const rocksdb::Snapshot> snapshot_;
|
|
626
|
+
std::unique_ptr<rocksdb::Iterator> iterator_;
|
|
627
|
+
bool didSeek_ = false;
|
|
654
628
|
const bool reverse_;
|
|
655
|
-
const std::string* lt_;
|
|
656
|
-
const std::string* lte_;
|
|
657
|
-
const std::string* gt_;
|
|
658
|
-
const std::string* gte_;
|
|
659
629
|
const int limit_;
|
|
660
|
-
int count_;
|
|
630
|
+
int count_ = 0;
|
|
661
631
|
};
|
|
662
632
|
|
|
663
633
|
struct Iterator final : public BaseIterator {
|
|
@@ -681,9 +651,6 @@ struct Iterator final : public BaseIterator {
|
|
|
681
651
|
valueAsBuffer_(valueAsBuffer),
|
|
682
652
|
highWaterMarkBytes_(highWaterMarkBytes),
|
|
683
653
|
first_(true),
|
|
684
|
-
nexting_(false),
|
|
685
|
-
isClosing_(false),
|
|
686
|
-
closeWorker_(nullptr),
|
|
687
654
|
ref_(nullptr) {
|
|
688
655
|
}
|
|
689
656
|
|
|
@@ -697,53 +664,12 @@ struct Iterator final : public BaseIterator {
|
|
|
697
664
|
if (ref_) napi_delete_reference(env, ref_);
|
|
698
665
|
}
|
|
699
666
|
|
|
700
|
-
bool ReadMany (uint32_t size) {
|
|
701
|
-
cache_.clear();
|
|
702
|
-
cache_.reserve(size * 2);
|
|
703
|
-
size_t bytesRead = 0;
|
|
704
|
-
|
|
705
|
-
while (true) {
|
|
706
|
-
if (!first_) Next();
|
|
707
|
-
else first_ = false;
|
|
708
|
-
|
|
709
|
-
if (!Valid() || !Increment()) break;
|
|
710
|
-
|
|
711
|
-
if (keys_ && values_) {
|
|
712
|
-
auto k = CurrentKey();
|
|
713
|
-
auto v = CurrentValue();
|
|
714
|
-
cache_.emplace_back(k.data(), k.size());
|
|
715
|
-
cache_.emplace_back(v.data(), v.size());
|
|
716
|
-
bytesRead += k.size() + v.size();
|
|
717
|
-
} else if (keys_) {
|
|
718
|
-
auto k = CurrentKey();
|
|
719
|
-
cache_.emplace_back(k.data(), k.size());
|
|
720
|
-
cache_.push_back({});
|
|
721
|
-
bytesRead += k.size();
|
|
722
|
-
} else if (values_) {
|
|
723
|
-
auto v = CurrentValue();
|
|
724
|
-
cache_.push_back({});
|
|
725
|
-
cache_.emplace_back(v.data(), v.size());
|
|
726
|
-
bytesRead += v.size();
|
|
727
|
-
}
|
|
728
|
-
|
|
729
|
-
if (bytesRead > highWaterMarkBytes_ || cache_.size() / 2 >= size) {
|
|
730
|
-
return true;
|
|
731
|
-
}
|
|
732
|
-
}
|
|
733
|
-
|
|
734
|
-
return false;
|
|
735
|
-
}
|
|
736
|
-
|
|
737
667
|
const bool keys_;
|
|
738
668
|
const bool values_;
|
|
739
669
|
const bool keyAsBuffer_;
|
|
740
670
|
const bool valueAsBuffer_;
|
|
741
671
|
const uint32_t highWaterMarkBytes_;
|
|
742
672
|
bool first_;
|
|
743
|
-
bool nexting_;
|
|
744
|
-
bool isClosing_;
|
|
745
|
-
BaseWorker* closeWorker_;
|
|
746
|
-
std::vector<std::string> cache_;
|
|
747
673
|
|
|
748
674
|
private:
|
|
749
675
|
napi_ref ref_;
|
|
@@ -755,7 +681,7 @@ private:
|
|
|
755
681
|
* the guarantee that no db operations will be in-flight at this time.
|
|
756
682
|
*/
|
|
757
683
|
static void env_cleanup_hook (void* arg) {
|
|
758
|
-
|
|
684
|
+
auto database = reinterpret_cast<Database*>(arg);
|
|
759
685
|
|
|
760
686
|
// Do everything that db_close() does but synchronously. We're expecting that GC
|
|
761
687
|
// did not (yet) collect the database because that would be a user mistake (not
|
|
@@ -776,15 +702,15 @@ static void env_cleanup_hook (void* arg) {
|
|
|
776
702
|
|
|
777
703
|
static void FinalizeDatabase (napi_env env, void* data, void* hint) {
|
|
778
704
|
if (data) {
|
|
779
|
-
|
|
705
|
+
auto database = reinterpret_cast<Database*>(data);
|
|
780
706
|
napi_remove_env_cleanup_hook(env, env_cleanup_hook, database);
|
|
781
|
-
if (database->
|
|
707
|
+
if (database->prioritRef_) napi_delete_reference(env, database->prioritRef_);
|
|
782
708
|
delete database;
|
|
783
709
|
}
|
|
784
710
|
}
|
|
785
711
|
|
|
786
712
|
NAPI_METHOD(db_init) {
|
|
787
|
-
|
|
713
|
+
auto database = new Database();
|
|
788
714
|
napi_add_env_cleanup_hook(env, env_cleanup_hook, database);
|
|
789
715
|
|
|
790
716
|
napi_value result;
|
|
@@ -792,17 +718,12 @@ NAPI_METHOD(db_init) {
|
|
|
792
718
|
FinalizeDatabase,
|
|
793
719
|
nullptr, &result));
|
|
794
720
|
|
|
795
|
-
|
|
796
|
-
NAPI_STATUS_THROWS(napi_create_reference(env, result, 0, &database->ref_));
|
|
721
|
+
NAPI_STATUS_THROWS(napi_create_reference(env, result, 0, &database->prioritRef_));
|
|
797
722
|
|
|
798
723
|
return result;
|
|
799
724
|
}
|
|
800
725
|
|
|
801
|
-
|
|
802
|
-
* Worker class for opening a database.
|
|
803
|
-
* TODO: shouldn't this be a PriorityWorker?
|
|
804
|
-
*/
|
|
805
|
-
struct OpenWorker final : public BaseWorker {
|
|
726
|
+
struct OpenWorker final : public PriorityWorker {
|
|
806
727
|
OpenWorker (napi_env env,
|
|
807
728
|
Database* database,
|
|
808
729
|
napi_value callback,
|
|
@@ -818,18 +739,18 @@ struct OpenWorker final : public BaseWorker {
|
|
|
818
739
|
const uint32_t cacheSize,
|
|
819
740
|
const std::string& infoLogLevel,
|
|
820
741
|
const bool readOnly)
|
|
821
|
-
:
|
|
742
|
+
: PriorityWorker(env, database, callback, "leveldown.db.open"),
|
|
822
743
|
readOnly_(readOnly),
|
|
823
744
|
location_(location) {
|
|
824
745
|
options_.create_if_missing = createIfMissing;
|
|
825
746
|
options_.error_if_exists = errorIfExists;
|
|
826
747
|
options_.compression = compression
|
|
827
|
-
?
|
|
828
|
-
:
|
|
748
|
+
? rocksdb::kSnappyCompression
|
|
749
|
+
: rocksdb::kNoCompression;
|
|
829
750
|
options_.write_buffer_size = writeBufferSize;
|
|
830
751
|
options_.max_open_files = maxOpenFiles;
|
|
831
752
|
options_.max_log_file_size = maxFileSize;
|
|
832
|
-
options_.
|
|
753
|
+
options_.use_adaptive_mutex = true;
|
|
833
754
|
|
|
834
755
|
if (infoLogLevel.size() > 0) {
|
|
835
756
|
rocksdb::InfoLogLevel lvl = {};
|
|
@@ -861,17 +782,19 @@ struct OpenWorker final : public BaseWorker {
|
|
|
861
782
|
tableOptions.block_size = blockSize;
|
|
862
783
|
tableOptions.block_restart_interval = blockRestartInterval;
|
|
863
784
|
tableOptions.filter_policy.reset(rocksdb::NewBloomFilterPolicy(10));
|
|
785
|
+
tableOptions.format_version = 5;
|
|
786
|
+
tableOptions.checksum = rocksdb::kxxHash64;
|
|
864
787
|
|
|
865
788
|
options_.table_factory.reset(
|
|
866
789
|
rocksdb::NewBlockBasedTableFactory(tableOptions)
|
|
867
790
|
);
|
|
868
791
|
}
|
|
869
792
|
|
|
870
|
-
|
|
871
|
-
|
|
793
|
+
rocksdb::Status Execute () override {
|
|
794
|
+
return database_->Open(options_, readOnly_, location_.c_str());
|
|
872
795
|
}
|
|
873
796
|
|
|
874
|
-
|
|
797
|
+
rocksdb::Options options_;
|
|
875
798
|
const bool readOnly_;
|
|
876
799
|
const std::string location_;
|
|
877
800
|
};
|
|
@@ -916,8 +839,9 @@ struct CloseWorker final : public BaseWorker {
|
|
|
916
839
|
napi_value callback)
|
|
917
840
|
: BaseWorker(env, database, callback, "leveldown.db.close") {}
|
|
918
841
|
|
|
919
|
-
|
|
842
|
+
rocksdb::Status Execute () override {
|
|
920
843
|
database_->CloseDatabase();
|
|
844
|
+
return rocksdb::Status::OK();
|
|
921
845
|
}
|
|
922
846
|
};
|
|
923
847
|
|
|
@@ -931,13 +855,6 @@ NAPI_METHOD(db_close) {
|
|
|
931
855
|
|
|
932
856
|
const auto callback = argv[1];
|
|
933
857
|
|
|
934
|
-
napi_value noop;
|
|
935
|
-
napi_create_function(env, nullptr, 0, noop_callback, nullptr, &noop);
|
|
936
|
-
|
|
937
|
-
for (auto it : database->iterators_) {
|
|
938
|
-
iterator_do_close(env, it, noop);
|
|
939
|
-
}
|
|
940
|
-
|
|
941
858
|
auto worker = new CloseWorker(env, database, callback);
|
|
942
859
|
|
|
943
860
|
if (!database->HasPriorityWork()) {
|
|
@@ -960,10 +877,10 @@ struct PutWorker final : public PriorityWorker {
|
|
|
960
877
|
key_(key), value_(value), sync_(sync) {
|
|
961
878
|
}
|
|
962
879
|
|
|
963
|
-
|
|
964
|
-
|
|
880
|
+
rocksdb::Status Execute () override {
|
|
881
|
+
rocksdb::WriteOptions options;
|
|
965
882
|
options.sync = sync_;
|
|
966
|
-
|
|
883
|
+
return database_->Put(options, key_, value_);
|
|
967
884
|
}
|
|
968
885
|
|
|
969
886
|
const std::string key_;
|
|
@@ -997,13 +914,13 @@ struct GetWorker final : public PriorityWorker {
|
|
|
997
914
|
key_(key), asBuffer_(asBuffer), fillCache_(fillCache) {
|
|
998
915
|
}
|
|
999
916
|
|
|
1000
|
-
|
|
1001
|
-
|
|
917
|
+
rocksdb::Status Execute () override {
|
|
918
|
+
rocksdb::ReadOptions options;
|
|
1002
919
|
options.fill_cache = fillCache_;
|
|
1003
|
-
|
|
920
|
+
return database_->Get(options, key_, value_);
|
|
1004
921
|
}
|
|
1005
922
|
|
|
1006
|
-
void
|
|
923
|
+
void Then (napi_env env, napi_value callback) override {
|
|
1007
924
|
napi_value argv[2];
|
|
1008
925
|
napi_get_null(env, &argv[0]);
|
|
1009
926
|
Convert(env, std::move(value_), asBuffer_, argv[1]);
|
|
@@ -1052,44 +969,39 @@ struct GetManyWorker final : public PriorityWorker {
|
|
|
1052
969
|
}
|
|
1053
970
|
}
|
|
1054
971
|
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
leveldb::ReadOptions options;
|
|
972
|
+
rocksdb::Status Execute () override {
|
|
973
|
+
rocksdb::ReadOptions options;
|
|
1059
974
|
options.snapshot = snapshot_;
|
|
1060
975
|
options.fill_cache = fillCache_;
|
|
1061
976
|
|
|
1062
|
-
|
|
977
|
+
status_ = database_->db_->MultiGet(
|
|
978
|
+
options,
|
|
979
|
+
std::vector<rocksdb::Slice>(keys_.begin(), keys_.end()),
|
|
980
|
+
&values_
|
|
981
|
+
);
|
|
1063
982
|
|
|
1064
|
-
|
|
1065
|
-
|
|
983
|
+
database_->ReleaseSnapshot(snapshot_);
|
|
984
|
+
snapshot_ = nullptr;
|
|
1066
985
|
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
cache_.emplace_back(nullptr);
|
|
1071
|
-
} else {
|
|
1072
|
-
SetStatus(status);
|
|
1073
|
-
break;
|
|
986
|
+
for (auto status : status_) {
|
|
987
|
+
if (!status.ok() && !status.IsNotFound()) {
|
|
988
|
+
return status;
|
|
1074
989
|
}
|
|
1075
|
-
|
|
1076
|
-
value.Reset();
|
|
1077
990
|
}
|
|
1078
991
|
|
|
1079
|
-
|
|
1080
|
-
snapshot_ = nullptr;
|
|
992
|
+
return rocksdb::Status::OK();
|
|
1081
993
|
}
|
|
1082
994
|
|
|
1083
|
-
void
|
|
1084
|
-
const auto size =
|
|
995
|
+
void Then (napi_env env, napi_value callback) override {
|
|
996
|
+
const auto size = values_.size();
|
|
1085
997
|
|
|
1086
998
|
napi_value array;
|
|
1087
999
|
napi_create_array_with_length(env, size, &array);
|
|
1088
1000
|
|
|
1089
1001
|
for (size_t idx = 0; idx < size; idx++) {
|
|
1090
1002
|
napi_value element;
|
|
1091
|
-
if (
|
|
1092
|
-
Convert(env,
|
|
1003
|
+
if (status_[idx].ok()) {
|
|
1004
|
+
Convert(env, values_[idx], valueAsBuffer_, element);
|
|
1093
1005
|
} else {
|
|
1094
1006
|
napi_get_undefined(env, &element);
|
|
1095
1007
|
}
|
|
@@ -1104,10 +1016,11 @@ struct GetManyWorker final : public PriorityWorker {
|
|
|
1104
1016
|
|
|
1105
1017
|
private:
|
|
1106
1018
|
const std::vector<std::string> keys_;
|
|
1019
|
+
std::vector<std::string> values_;
|
|
1020
|
+
std::vector<rocksdb::Status> status_;
|
|
1107
1021
|
const bool valueAsBuffer_;
|
|
1108
|
-
std::vector<rocksdb::PinnableSlice> cache_;
|
|
1109
1022
|
const bool fillCache_;
|
|
1110
|
-
const
|
|
1023
|
+
const rocksdb::Snapshot* snapshot_;
|
|
1111
1024
|
};
|
|
1112
1025
|
|
|
1113
1026
|
NAPI_METHOD(db_get_many) {
|
|
@@ -1136,10 +1049,10 @@ struct DelWorker final : public PriorityWorker {
|
|
|
1136
1049
|
key_(key), sync_(sync) {
|
|
1137
1050
|
}
|
|
1138
1051
|
|
|
1139
|
-
|
|
1140
|
-
|
|
1052
|
+
rocksdb::Status Execute () override {
|
|
1053
|
+
rocksdb::WriteOptions options;
|
|
1141
1054
|
options.sync = sync_;
|
|
1142
|
-
|
|
1055
|
+
return database_->Del(options, key_);
|
|
1143
1056
|
}
|
|
1144
1057
|
|
|
1145
1058
|
const std::string key_;
|
|
@@ -1174,16 +1087,16 @@ struct ClearWorker final : public PriorityWorker {
|
|
|
1174
1087
|
iterator_(database, reverse, lt, lte, gt, gte, limit, false) {
|
|
1175
1088
|
}
|
|
1176
1089
|
|
|
1177
|
-
|
|
1090
|
+
rocksdb::Status Execute () override {
|
|
1178
1091
|
iterator_.SeekToRange();
|
|
1179
1092
|
|
|
1180
1093
|
// TODO: add option
|
|
1181
1094
|
const uint32_t hwm = 16 * 1024;
|
|
1182
|
-
leveldb::WriteBatch batch;
|
|
1183
|
-
|
|
1184
|
-
leveldb::WriteOptions options;
|
|
1185
|
-
options.sync = false;
|
|
1186
1095
|
|
|
1096
|
+
rocksdb::WriteBatch batch;
|
|
1097
|
+
rocksdb::WriteOptions options;
|
|
1098
|
+
rocksdb::Status status;
|
|
1099
|
+
|
|
1187
1100
|
while (true) {
|
|
1188
1101
|
size_t bytesRead = 0;
|
|
1189
1102
|
|
|
@@ -1194,11 +1107,13 @@ struct ClearWorker final : public PriorityWorker {
|
|
|
1194
1107
|
iterator_.Next();
|
|
1195
1108
|
}
|
|
1196
1109
|
|
|
1197
|
-
|
|
1110
|
+
status = iterator_.Status();
|
|
1111
|
+
if (!status.ok() || bytesRead == 0) {
|
|
1198
1112
|
break;
|
|
1199
1113
|
}
|
|
1200
1114
|
|
|
1201
|
-
|
|
1115
|
+
status = database_->WriteBatch(options, &batch);
|
|
1116
|
+
if (!status.ok()) {
|
|
1202
1117
|
break;
|
|
1203
1118
|
}
|
|
1204
1119
|
|
|
@@ -1206,6 +1121,8 @@ struct ClearWorker final : public PriorityWorker {
|
|
|
1206
1121
|
}
|
|
1207
1122
|
|
|
1208
1123
|
iterator_.Close();
|
|
1124
|
+
|
|
1125
|
+
return status;
|
|
1209
1126
|
}
|
|
1210
1127
|
|
|
1211
1128
|
private:
|
|
@@ -1242,12 +1159,13 @@ struct ApproximateSizeWorker final : public PriorityWorker {
|
|
|
1242
1159
|
: PriorityWorker(env, database, callback, "rocks_level.db.approximate_size"),
|
|
1243
1160
|
start_(start), end_(end) {}
|
|
1244
1161
|
|
|
1245
|
-
|
|
1246
|
-
|
|
1162
|
+
rocksdb::Status Execute () override {
|
|
1163
|
+
rocksdb::Range range(start_, end_);
|
|
1247
1164
|
size_ = database_->ApproximateSize(&range);
|
|
1165
|
+
return rocksdb::Status::OK();
|
|
1248
1166
|
}
|
|
1249
1167
|
|
|
1250
|
-
void
|
|
1168
|
+
void Then (napi_env env, napi_value callback) override {
|
|
1251
1169
|
napi_value argv[2];
|
|
1252
1170
|
napi_get_null(env, &argv[0]);
|
|
1253
1171
|
napi_create_int64(env, size_, &argv[1]);
|
|
@@ -1282,10 +1200,11 @@ struct CompactRangeWorker final : public PriorityWorker {
|
|
|
1282
1200
|
: PriorityWorker(env, database, callback, "rocks_level.db.compact_range"),
|
|
1283
1201
|
start_(start), end_(end) {}
|
|
1284
1202
|
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
|
|
1203
|
+
rocksdb::Status Execute () override {
|
|
1204
|
+
rocksdb::Slice start = start_;
|
|
1205
|
+
rocksdb::Slice end = end_;
|
|
1288
1206
|
database_->CompactRange(&start, &end);
|
|
1207
|
+
return rocksdb::Status::OK();
|
|
1289
1208
|
}
|
|
1290
1209
|
|
|
1291
1210
|
const std::string start_;
|
|
@@ -1330,9 +1249,9 @@ struct DestroyWorker final : public BaseWorker {
|
|
|
1330
1249
|
|
|
1331
1250
|
~DestroyWorker () {}
|
|
1332
1251
|
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1252
|
+
rocksdb::Status Execute () override {
|
|
1253
|
+
rocksdb::Options options;
|
|
1254
|
+
return rocksdb::DestroyDB(location_, options);
|
|
1336
1255
|
}
|
|
1337
1256
|
|
|
1338
1257
|
const std::string location_;
|
|
@@ -1357,9 +1276,9 @@ struct RepairWorker final : public BaseWorker {
|
|
|
1357
1276
|
: BaseWorker(env, nullptr, callback, "rocks_level.repair_db"),
|
|
1358
1277
|
location_(location) {}
|
|
1359
1278
|
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1279
|
+
rocksdb::Status Execute () override {
|
|
1280
|
+
rocksdb::Options options;
|
|
1281
|
+
return rocksdb::RepairDB(location_, options);
|
|
1363
1282
|
}
|
|
1364
1283
|
|
|
1365
1284
|
const std::string location_;
|
|
@@ -1422,10 +1341,6 @@ NAPI_METHOD(iterator_seek) {
|
|
|
1422
1341
|
NAPI_ARGV(2);
|
|
1423
1342
|
NAPI_ITERATOR_CONTEXT();
|
|
1424
1343
|
|
|
1425
|
-
if (iterator->isClosing_) {
|
|
1426
|
-
napi_throw_error(env, nullptr, "iterator has closed");
|
|
1427
|
-
}
|
|
1428
|
-
|
|
1429
1344
|
const auto target = ToString(env, argv[1]);
|
|
1430
1345
|
iterator->first_ = true;
|
|
1431
1346
|
iterator->Seek(target);
|
|
@@ -1440,41 +1355,28 @@ struct CloseIteratorWorker final : public BaseWorker {
|
|
|
1440
1355
|
: BaseWorker(env, iterator->database_, callback, "leveldown.iterator.end"),
|
|
1441
1356
|
iterator_(iterator) {}
|
|
1442
1357
|
|
|
1443
|
-
|
|
1358
|
+
rocksdb::Status Execute () override {
|
|
1444
1359
|
iterator_->Close();
|
|
1360
|
+
return rocksdb::Status::OK();
|
|
1445
1361
|
}
|
|
1446
1362
|
|
|
1447
|
-
void
|
|
1363
|
+
void Finally (napi_env env) override {
|
|
1448
1364
|
iterator_->Detach(env);
|
|
1449
|
-
BaseWorker::
|
|
1365
|
+
BaseWorker::Finally(env);
|
|
1450
1366
|
}
|
|
1451
1367
|
|
|
1452
1368
|
private:
|
|
1453
1369
|
Iterator* iterator_;
|
|
1454
1370
|
};
|
|
1455
1371
|
|
|
1456
|
-
/**
|
|
1457
|
-
* Called by NAPI_METHOD(iterator_) and also when closing
|
|
1458
|
-
* open iterators during NAPI_METHOD(db_close).
|
|
1459
|
-
*/
|
|
1460
|
-
static void iterator_do_close (napi_env env, Iterator* iterator, napi_value cb) {
|
|
1461
|
-
if (!iterator->isClosing_) {
|
|
1462
|
-
auto worker = new CloseIteratorWorker(env, iterator, cb);
|
|
1463
|
-
iterator->isClosing_ = true;
|
|
1464
|
-
|
|
1465
|
-
if (iterator->nexting_) {
|
|
1466
|
-
iterator->closeWorker_ = worker;
|
|
1467
|
-
} else {
|
|
1468
|
-
worker->Queue(env);
|
|
1469
|
-
}
|
|
1470
|
-
}
|
|
1471
|
-
}
|
|
1472
|
-
|
|
1473
1372
|
NAPI_METHOD(iterator_close) {
|
|
1474
1373
|
NAPI_ARGV(2);
|
|
1475
1374
|
NAPI_ITERATOR_CONTEXT();
|
|
1476
1375
|
|
|
1477
|
-
|
|
1376
|
+
const auto callback = argv[1];
|
|
1377
|
+
|
|
1378
|
+
auto worker = new CloseIteratorWorker(env, iterator, callback);
|
|
1379
|
+
worker->Queue(env);
|
|
1478
1380
|
|
|
1479
1381
|
return 0;
|
|
1480
1382
|
}
|
|
@@ -1486,63 +1388,83 @@ struct NextWorker final : public BaseWorker {
|
|
|
1486
1388
|
napi_value callback)
|
|
1487
1389
|
: BaseWorker(env, iterator->database_, callback,
|
|
1488
1390
|
"leveldown.iterator.next"),
|
|
1489
|
-
iterator_(iterator), size_(size)
|
|
1391
|
+
iterator_(iterator), size_(size) {}
|
|
1490
1392
|
|
|
1491
|
-
|
|
1393
|
+
rocksdb::Status Execute () override {
|
|
1492
1394
|
if (!iterator_->DidSeek()) {
|
|
1493
1395
|
iterator_->SeekToRange();
|
|
1494
1396
|
}
|
|
1495
1397
|
|
|
1496
1398
|
// Limit the size of the cache to prevent starving the event loop
|
|
1497
1399
|
// in JS-land while we're recursively calling process.nextTick().
|
|
1498
|
-
ok_ = iterator_->ReadMany(size_);
|
|
1499
1400
|
|
|
1500
|
-
|
|
1501
|
-
|
|
1401
|
+
finished_ = false;
|
|
1402
|
+
cache_.reserve(size_ * 2);
|
|
1403
|
+
size_t bytesRead = 0;
|
|
1404
|
+
|
|
1405
|
+
while (true) {
|
|
1406
|
+
if (!iterator_->first_) iterator_->Next();
|
|
1407
|
+
else iterator_->first_ = false;
|
|
1408
|
+
|
|
1409
|
+
if (!iterator_->Valid() || !iterator_->Increment()) break;
|
|
1410
|
+
|
|
1411
|
+
if (iterator_->keys_ && iterator_->values_) {
|
|
1412
|
+
auto k = iterator_->CurrentKey();
|
|
1413
|
+
auto v = iterator_->CurrentValue();
|
|
1414
|
+
cache_.emplace_back(k.data(), k.size());
|
|
1415
|
+
cache_.emplace_back(v.data(), v.size());
|
|
1416
|
+
bytesRead += k.size() + v.size();
|
|
1417
|
+
} else if (iterator_->keys_) {
|
|
1418
|
+
auto k = iterator_->CurrentKey();
|
|
1419
|
+
cache_.emplace_back(k.data(), k.size());
|
|
1420
|
+
cache_.push_back({});
|
|
1421
|
+
bytesRead += k.size();
|
|
1422
|
+
} else if (iterator_->values_) {
|
|
1423
|
+
auto v = iterator_->CurrentValue();
|
|
1424
|
+
cache_.push_back({});
|
|
1425
|
+
cache_.emplace_back(v.data(), v.size());
|
|
1426
|
+
bytesRead += v.size();
|
|
1427
|
+
}
|
|
1428
|
+
|
|
1429
|
+
if (bytesRead > iterator_->highWaterMarkBytes_ || cache_.size() / 2 >= size_) {
|
|
1430
|
+
finished_ = true;
|
|
1431
|
+
return rocksdb::Status::OK();
|
|
1432
|
+
}
|
|
1502
1433
|
}
|
|
1434
|
+
|
|
1435
|
+
return iterator_->Status();
|
|
1503
1436
|
}
|
|
1504
1437
|
|
|
1505
|
-
void
|
|
1506
|
-
const auto size =
|
|
1438
|
+
void Then (napi_env env, napi_value callback) override {
|
|
1439
|
+
const auto size = cache_.size();
|
|
1507
1440
|
napi_value result;
|
|
1508
1441
|
napi_create_array_with_length(env, size, &result);
|
|
1509
1442
|
|
|
1510
|
-
for (size_t idx = 0; idx <
|
|
1443
|
+
for (size_t idx = 0; idx < cache_.size(); idx += 2) {
|
|
1511
1444
|
napi_value key;
|
|
1512
1445
|
napi_value val;
|
|
1513
1446
|
|
|
1514
|
-
Convert(env,
|
|
1515
|
-
Convert(env,
|
|
1447
|
+
Convert(env, cache_[idx + 0], iterator_->keyAsBuffer_, key);
|
|
1448
|
+
Convert(env, cache_[idx + 1], iterator_->valueAsBuffer_, val);
|
|
1516
1449
|
|
|
1517
1450
|
napi_set_element(env, result, static_cast<int>(idx + 0), key);
|
|
1518
1451
|
napi_set_element(env, result, static_cast<int>(idx + 1), val);
|
|
1519
1452
|
}
|
|
1520
1453
|
|
|
1521
|
-
|
|
1454
|
+
cache_.clear();
|
|
1522
1455
|
|
|
1523
1456
|
napi_value argv[3];
|
|
1524
1457
|
napi_get_null(env, &argv[0]);
|
|
1525
1458
|
argv[1] = result;
|
|
1526
|
-
napi_get_boolean(env, !
|
|
1459
|
+
napi_get_boolean(env, !finished_, &argv[2]);
|
|
1527
1460
|
CallFunction(env, callback, 3, argv);
|
|
1528
1461
|
}
|
|
1529
1462
|
|
|
1530
|
-
void DoFinally (napi_env env) override {
|
|
1531
|
-
// clean up & handle the next/end state
|
|
1532
|
-
iterator_->nexting_ = false;
|
|
1533
|
-
|
|
1534
|
-
if (iterator_->closeWorker_) {
|
|
1535
|
-
iterator_->closeWorker_->Queue(env);
|
|
1536
|
-
iterator_->closeWorker_ = nullptr;
|
|
1537
|
-
}
|
|
1538
|
-
|
|
1539
|
-
BaseWorker::DoFinally(env);
|
|
1540
|
-
}
|
|
1541
|
-
|
|
1542
1463
|
private:
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
|
|
1464
|
+
std::vector<std::string> cache_;
|
|
1465
|
+
Iterator* iterator_ = nullptr;
|
|
1466
|
+
uint32_t size_ = 0;
|
|
1467
|
+
bool finished_ = false;
|
|
1546
1468
|
};
|
|
1547
1469
|
|
|
1548
1470
|
NAPI_METHOD(iterator_nextv) {
|
|
@@ -1555,48 +1477,63 @@ NAPI_METHOD(iterator_nextv) {
|
|
|
1555
1477
|
|
|
1556
1478
|
const auto callback = argv[2];
|
|
1557
1479
|
|
|
1558
|
-
if (iterator->isClosing_) {
|
|
1559
|
-
napi_value argv = CreateCodeError(env, "LEVEL_ITERATOR_NOT_OPEN", "Iterator is not open");
|
|
1560
|
-
NAPI_STATUS_THROWS(CallFunction(env, callback, 1, &argv));
|
|
1561
|
-
return 0;
|
|
1562
|
-
}
|
|
1563
|
-
|
|
1564
1480
|
auto worker = new NextWorker(env, iterator, size, callback);
|
|
1565
|
-
iterator->nexting_ = true;
|
|
1566
1481
|
worker->Queue(env);
|
|
1567
1482
|
|
|
1568
1483
|
return 0;
|
|
1569
1484
|
}
|
|
1570
1485
|
|
|
1571
|
-
/**
|
|
1572
|
-
* Worker class for batch write operation.
|
|
1573
|
-
*/
|
|
1574
1486
|
struct BatchWorker final : public PriorityWorker {
|
|
1575
1487
|
BatchWorker (napi_env env,
|
|
1576
1488
|
Database* database,
|
|
1577
1489
|
napi_value callback,
|
|
1578
|
-
|
|
1579
|
-
const bool sync
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
|
-
|
|
1490
|
+
napi_value array,
|
|
1491
|
+
const bool sync)
|
|
1492
|
+
: PriorityWorker(env, database, callback, "rocks_level.batch.do"), sync_(sync) {
|
|
1493
|
+
uint32_t length;
|
|
1494
|
+
NAPI_STATUS_THROWS_VOID(napi_get_array_length(env, array, &length));
|
|
1495
|
+
|
|
1496
|
+
for (uint32_t i = 0; i < length; i++) {
|
|
1497
|
+
napi_value element;
|
|
1498
|
+
NAPI_STATUS_THROWS_VOID(napi_get_element(env, array, i, &element));
|
|
1499
|
+
|
|
1500
|
+
if (!IsObject(env, element)) continue;
|
|
1501
|
+
|
|
1502
|
+
const auto type = StringProperty(env, element, "type");
|
|
1503
|
+
|
|
1504
|
+
if (type == "del") {
|
|
1505
|
+
if (!HasProperty(env, element, "key")) continue;
|
|
1506
|
+
const auto key = ToString(env, GetProperty(env, element, "key"));
|
|
1507
|
+
|
|
1508
|
+
batch_.Delete(key);
|
|
1509
|
+
if (!hasData_) hasData_ = true;
|
|
1510
|
+
} else if (type == "put") {
|
|
1511
|
+
if (!HasProperty(env, element, "key")) continue;
|
|
1512
|
+
if (!HasProperty(env, element, "value")) continue;
|
|
1513
|
+
|
|
1514
|
+
const auto key = ToString(env, GetProperty(env, element, "key"));
|
|
1515
|
+
const auto value = ToString(env, GetProperty(env, element, "value"));
|
|
1585
1516
|
|
|
1586
|
-
|
|
1587
|
-
|
|
1517
|
+
batch_.Put(key, value);
|
|
1518
|
+
if (!hasData_) hasData_ = true;
|
|
1519
|
+
}
|
|
1520
|
+
}
|
|
1588
1521
|
}
|
|
1589
1522
|
|
|
1590
|
-
|
|
1591
|
-
if (hasData_) {
|
|
1592
|
-
|
|
1523
|
+
rocksdb::Status Execute () override {
|
|
1524
|
+
if (!hasData_) {
|
|
1525
|
+
return rocksdb::Status::OK();
|
|
1593
1526
|
}
|
|
1527
|
+
|
|
1528
|
+
rocksdb::WriteOptions options;
|
|
1529
|
+
options.sync = sync_;
|
|
1530
|
+
return database_->WriteBatch(options, &batch_);
|
|
1594
1531
|
}
|
|
1595
1532
|
|
|
1596
1533
|
private:
|
|
1597
|
-
|
|
1598
|
-
|
|
1599
|
-
|
|
1534
|
+
rocksdb::WriteBatch batch_;
|
|
1535
|
+
const bool sync_;
|
|
1536
|
+
bool hasData_;
|
|
1600
1537
|
};
|
|
1601
1538
|
|
|
1602
1539
|
NAPI_METHOD(batch_do) {
|
|
@@ -1607,39 +1544,7 @@ NAPI_METHOD(batch_do) {
|
|
|
1607
1544
|
const auto sync = BooleanProperty(env, argv[2], "sync", false);
|
|
1608
1545
|
const auto callback = argv[3];
|
|
1609
1546
|
|
|
1610
|
-
|
|
1611
|
-
napi_get_array_length(env, array, &length);
|
|
1612
|
-
|
|
1613
|
-
leveldb::WriteBatch* batch = new leveldb::WriteBatch();
|
|
1614
|
-
bool hasData = false;
|
|
1615
|
-
|
|
1616
|
-
for (uint32_t i = 0; i < length; i++) {
|
|
1617
|
-
napi_value element;
|
|
1618
|
-
napi_get_element(env, array, i, &element);
|
|
1619
|
-
|
|
1620
|
-
if (!IsObject(env, element)) continue;
|
|
1621
|
-
|
|
1622
|
-
std::string type = StringProperty(env, element, "type");
|
|
1623
|
-
|
|
1624
|
-
if (type == "del") {
|
|
1625
|
-
if (!HasProperty(env, element, "key")) continue;
|
|
1626
|
-
const auto key = ToString(env, GetProperty(env, element, "key"));
|
|
1627
|
-
|
|
1628
|
-
batch->Delete(key);
|
|
1629
|
-
if (!hasData) hasData = true;
|
|
1630
|
-
} else if (type == "put") {
|
|
1631
|
-
if (!HasProperty(env, element, "key")) continue;
|
|
1632
|
-
if (!HasProperty(env, element, "value")) continue;
|
|
1633
|
-
|
|
1634
|
-
const auto key = ToString(env, GetProperty(env, element, "key"));
|
|
1635
|
-
const auto value = ToString(env, GetProperty(env, element, "value"));
|
|
1636
|
-
|
|
1637
|
-
batch->Put(key, value);
|
|
1638
|
-
if (!hasData) hasData = true;
|
|
1639
|
-
}
|
|
1640
|
-
}
|
|
1641
|
-
|
|
1642
|
-
auto worker = new BatchWorker(env, database, callback, batch, sync, hasData);
|
|
1547
|
+
auto worker = new BatchWorker(env, database, callback, array, sync);
|
|
1643
1548
|
worker->Queue(env);
|
|
1644
1549
|
|
|
1645
1550
|
return 0;
|
|
@@ -1647,7 +1552,7 @@ NAPI_METHOD(batch_do) {
|
|
|
1647
1552
|
|
|
1648
1553
|
static void FinalizeBatch (napi_env env, void* data, void* hint) {
|
|
1649
1554
|
if (data) {
|
|
1650
|
-
delete reinterpret_cast<
|
|
1555
|
+
delete reinterpret_cast<rocksdb::WriteBatch*>(data);
|
|
1651
1556
|
}
|
|
1652
1557
|
}
|
|
1653
1558
|
|
|
@@ -1655,12 +1560,10 @@ NAPI_METHOD(batch_init) {
|
|
|
1655
1560
|
NAPI_ARGV(1);
|
|
1656
1561
|
NAPI_DB_CONTEXT();
|
|
1657
1562
|
|
|
1658
|
-
auto batch = new
|
|
1563
|
+
auto batch = new rocksdb::WriteBatch();
|
|
1659
1564
|
|
|
1660
1565
|
napi_value result;
|
|
1661
|
-
NAPI_STATUS_THROWS(napi_create_external(env, batch,
|
|
1662
|
-
FinalizeBatch,
|
|
1663
|
-
nullptr, &result));
|
|
1566
|
+
NAPI_STATUS_THROWS(napi_create_external(env, batch, FinalizeBatch, nullptr, &result));
|
|
1664
1567
|
return result;
|
|
1665
1568
|
}
|
|
1666
1569
|
|
|
@@ -1711,19 +1614,19 @@ struct BatchWriteWorker final : public PriorityWorker {
|
|
|
1711
1614
|
NAPI_STATUS_THROWS_VOID(napi_create_reference(env, batch, 1, &batchRef_));
|
|
1712
1615
|
}
|
|
1713
1616
|
|
|
1714
|
-
|
|
1715
|
-
|
|
1617
|
+
rocksdb::Status Execute () override {
|
|
1618
|
+
rocksdb::WriteOptions options;
|
|
1716
1619
|
options.sync = sync_;
|
|
1717
|
-
|
|
1620
|
+
return database_->WriteBatch(options, batch_);
|
|
1718
1621
|
}
|
|
1719
1622
|
|
|
1720
|
-
void
|
|
1623
|
+
void Finally (napi_env env) override {
|
|
1721
1624
|
napi_delete_reference(env, batchRef_);
|
|
1722
|
-
PriorityWorker::
|
|
1625
|
+
PriorityWorker::Finally(env);
|
|
1723
1626
|
}
|
|
1724
1627
|
|
|
1725
1628
|
private:
|
|
1726
|
-
|
|
1629
|
+
rocksdb::WriteBatch* batch_;
|
|
1727
1630
|
const bool sync_;
|
|
1728
1631
|
napi_ref batchRef_;
|
|
1729
1632
|
};
|