@nxtedition/rocksdb 10.1.4 → 10.1.6
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 +16 -12
- package/deps/rocksdb/rocksdb/CMakeLists.txt +16 -5
- package/deps/rocksdb/rocksdb/Makefile +38 -15
- package/deps/rocksdb/rocksdb/TARGETS +10 -0
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +58 -0
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +4 -4
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +4 -2
- package/deps/rocksdb/rocksdb/db/builder.cc +2 -2
- package/deps/rocksdb/rocksdb/db/builder.h +1 -1
- package/deps/rocksdb/rocksdb/db/c.cc +205 -6
- package/deps/rocksdb/rocksdb/db/c_test.c +189 -1
- package/deps/rocksdb/rocksdb/db/column_family.cc +28 -0
- package/deps/rocksdb/rocksdb/db/column_family.h +17 -0
- package/deps/rocksdb/rocksdb/db/column_family_test.cc +234 -60
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +8 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction.h +11 -9
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +4 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +2 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +22 -25
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +2 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +112 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +72 -21
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +2 -0
- package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +77 -0
- package/deps/rocksdb/rocksdb/db/convenience.cc +3 -0
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +269 -112
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +107 -43
- package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +93 -24
- package/deps/rocksdb/rocksdb/db/db_flush_test.cc +5 -5
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +157 -68
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +56 -15
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +78 -105
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +39 -9
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_follower.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +21 -14
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +107 -63
- package/deps/rocksdb/rocksdb/db/db_properties_test.cc +43 -2
- package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +4 -0
- package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +6 -0
- package/deps/rocksdb/rocksdb/db/db_test.cc +10 -2
- package/deps/rocksdb/rocksdb/db/db_test2.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +5 -0
- package/deps/rocksdb/rocksdb/db/db_test_util.h +7 -6
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +92 -2
- package/deps/rocksdb/rocksdb/db/error_handler.cc +34 -39
- package/deps/rocksdb/rocksdb/db/error_handler.h +3 -4
- package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +8 -4
- package/deps/rocksdb/rocksdb/db/event_helpers.cc +6 -3
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +71 -15
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +11 -0
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +383 -4
- package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +88 -72
- package/deps/rocksdb/rocksdb/db/flush_job.cc +30 -3
- package/deps/rocksdb/rocksdb/db/flush_job.h +14 -0
- package/deps/rocksdb/rocksdb/db/internal_stats.cc +60 -1
- package/deps/rocksdb/rocksdb/db/internal_stats.h +20 -1
- package/deps/rocksdb/rocksdb/db/log_writer.cc +24 -0
- package/deps/rocksdb/rocksdb/db/log_writer.h +5 -0
- package/deps/rocksdb/rocksdb/db/memtable.cc +6 -4
- package/deps/rocksdb/rocksdb/db/memtable.h +10 -10
- package/deps/rocksdb/rocksdb/db/memtable_list.cc +4 -4
- package/deps/rocksdb/rocksdb/db/multi_cf_iterator_impl.h +10 -3
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +8 -10
- package/deps/rocksdb/rocksdb/db/repair.cc +4 -3
- package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.cc +30 -0
- package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.h +9 -0
- package/deps/rocksdb/rocksdb/db/table_cache.cc +17 -2
- package/deps/rocksdb/rocksdb/db/table_cache.h +9 -1
- package/deps/rocksdb/rocksdb/db/table_properties_collector.h +9 -2
- package/deps/rocksdb/rocksdb/db/table_properties_collector_test.cc +3 -1
- package/deps/rocksdb/rocksdb/db/transaction_log_impl.cc +3 -3
- package/deps/rocksdb/rocksdb/db/transaction_log_impl.h +7 -7
- package/deps/rocksdb/rocksdb/db/version_edit.cc +0 -1
- package/deps/rocksdb/rocksdb/db/version_edit_handler.h +7 -6
- package/deps/rocksdb/rocksdb/db/version_set.cc +54 -31
- package/deps/rocksdb/rocksdb/db/version_set.h +14 -7
- package/deps/rocksdb/rocksdb/db/wal_manager.cc +37 -29
- package/deps/rocksdb/rocksdb/db/wal_manager.h +6 -5
- package/deps/rocksdb/rocksdb/db/wide/wide_columns_helper.cc +6 -0
- package/deps/rocksdb/rocksdb/db/write_batch.cc +54 -23
- package/deps/rocksdb/rocksdb/db/write_callback_test.cc +46 -5
- package/deps/rocksdb/rocksdb/db/write_thread.cc +53 -5
- package/deps/rocksdb/rocksdb/db/write_thread.h +36 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/CMakeLists.txt +1 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +5 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +57 -17
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +11 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +8 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +10 -25
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +25 -88
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_filters.cc +93 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_filters.h +16 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +43 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +109 -21
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +8 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +666 -205
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +55 -10
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +18 -16
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +19 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.h +5 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +782 -494
- package/deps/rocksdb/rocksdb/env/composite_env_wrapper.h +21 -0
- package/deps/rocksdb/rocksdb/env/env.cc +6 -0
- package/deps/rocksdb/rocksdb/env/io_posix.cc +0 -1
- package/deps/rocksdb/rocksdb/file/file_util.cc +8 -2
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +34 -19
- package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +29 -32
- package/deps/rocksdb/rocksdb/file/writable_file_writer.h +41 -15
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +4 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +63 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +16 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/env.h +5 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +0 -16
- package/deps/rocksdb/rocksdb/include/rocksdb/iterator_base.h +16 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +21 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +76 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +17 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/transaction_log.h +12 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +31 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/user_write_callback.h +29 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/checkpoint.h +4 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/customizable_util.h +0 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +17 -8
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/table_properties_collectors.h +46 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +7 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
- package/deps/rocksdb/rocksdb/options/cf_options.cc +13 -2
- package/deps/rocksdb/rocksdb/options/cf_options.h +6 -2
- package/deps/rocksdb/rocksdb/options/db_options.cc +8 -0
- package/deps/rocksdb/rocksdb/options/db_options.h +9 -5
- package/deps/rocksdb/rocksdb/options/options.cc +3 -0
- package/deps/rocksdb/rocksdb/options/options_helper.cc +1 -0
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +3 -1
- package/deps/rocksdb/rocksdb/port/jemalloc_helper.h +2 -2
- package/deps/rocksdb/rocksdb/port/stack_trace.cc +1 -0
- package/deps/rocksdb/rocksdb/port/win/port_win.cc +3 -2
- package/deps/rocksdb/rocksdb/src.mk +4 -0
- package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +1 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +4 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +15 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +102 -41
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +15 -7
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +1 -3
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +5 -6
- package/deps/rocksdb/rocksdb/table/block_based/block_cache.h +31 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +6 -0
- package/deps/rocksdb/rocksdb/table/block_based/cachable_entry.h +10 -5
- package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +11 -15
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +17 -11
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.h +5 -2
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +28 -21
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +9 -11
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block_test.cc +16 -16
- package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +1 -2
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +14 -9
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +4 -1
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +82 -41
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +13 -14
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +18 -22
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +51 -13
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.h +2 -0
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +3 -11
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +2 -3
- package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.cc +9 -10
- package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.h +3 -2
- package/deps/rocksdb/rocksdb/table/format.cc +1 -2
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +18 -13
- package/deps/rocksdb/rocksdb/table/merging_iterator.h +5 -3
- package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +2 -2
- package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +1 -1
- package/deps/rocksdb/rocksdb/table/sst_file_writer_collectors.h +3 -1
- package/deps/rocksdb/rocksdb/table/table_builder.h +8 -7
- package/deps/rocksdb/rocksdb/table/table_reader.h +9 -0
- package/deps/rocksdb/rocksdb/test_util/testutil.cc +1 -0
- package/deps/rocksdb/rocksdb/test_util/testutil.h +6 -0
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +19 -0
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +434 -110
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +3 -1
- package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +3 -0
- package/deps/rocksdb/rocksdb/util/aligned_storage.h +24 -0
- package/deps/rocksdb/rocksdb/util/filter_bench.cc +1 -1
- package/deps/rocksdb/rocksdb/util/random.cc +2 -1
- package/deps/rocksdb/rocksdb/util/stderr_logger.h +1 -1
- package/deps/rocksdb/rocksdb/util/udt_util.cc +33 -0
- package/deps/rocksdb/rocksdb/util/udt_util.h +7 -0
- package/deps/rocksdb/rocksdb/util/udt_util_test.cc +33 -0
- package/deps/rocksdb/rocksdb/util/write_batch_util.h +5 -0
- package/deps/rocksdb/rocksdb/util/xxhash.h +10 -3
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +13 -13
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +104 -48
- package/deps/rocksdb/rocksdb/utilities/debug.cc +16 -4
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +647 -235
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +274 -157
- package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_for_tiering_collector.cc +144 -0
- package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_for_tiering_collector.h +45 -0
- package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_for_tiering_collector_test.cc +139 -0
- package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.cc +12 -0
- package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector_test.cc +3 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +105 -6
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +64 -8
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +5 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +43 -5
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +5 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +154 -6
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +158 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +16 -11
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +4 -4
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +9 -8
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +2 -1
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +43 -7
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +2 -0
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +1 -1
- package/index.js +1 -2
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/@nxtedition+rocksdb.node +0 -0
- package/prebuilds/linux-x64/@nxtedition+rocksdb.node +0 -0
- package/util.h +25 -2
- package/.tap/test-results/node_modules/abstract-level/test/chained-batch-test.js.tap +0 -0
- package/.tap/test-results/node_modules/abstract-level/test/get-test.js.tap +0 -0
- package/.tap/test-results/test/abstract-level-test.js.tap +0 -1077
- package/.tap/test-results/test/batch-test.js.tap +0 -12
- package/.tap/test-results/test/chained-batch-gc-test.js.tap +0 -11
- package/.tap/test-results/test/cleanup-hanging-iterators-test.js.tap +0 -135
- package/.tap/test-results/test/clear-gc-test.js.tap +0 -13
- package/.tap/test-results/test/column-test.js.tap +0 -55
- package/.tap/test-results/test/common.js.tap +0 -0
- package/.tap/test-results/test/compression-test.js.tap +0 -30
- package/.tap/test-results/test/db-identity.js.tap +0 -12
- package/.tap/test-results/test/electron.js.tap +0 -0
- package/.tap/test-results/test/env-cleanup-hook-test.js.tap +0 -40
- package/.tap/test-results/test/env-cleanup-hook.js.tap +0 -0
- package/.tap/test-results/test/gc.js.tap +0 -0
- package/.tap/test-results/test/getproperty-test.js.tap +0 -29
- package/.tap/test-results/test/iterator-gc-test.js.tap +0 -15
- package/.tap/test-results/test/iterator-hwm-test.js.tap +0 -131
- package/.tap/test-results/test/iterator-recursion-test.js.tap +0 -12
- package/.tap/test-results/test/iterator-starvation-test.js.tap +0 -73
- package/.tap/test-results/test/iterator-test.js.tap +0 -6
- package/.tap/test-results/test/leak-tester-batch.js.tap +0 -0
- package/.tap/test-results/test/leak-tester-iterator.js.tap +0 -0
- package/.tap/test-results/test/leak-tester.js.tap +0 -0
- package/.tap/test-results/test/lock-test.js.tap +0 -18
- package/.tap/test-results/test/lock.js.tap +0 -0
- package/.tap/test-results/test/make.js.tap +0 -0
- package/.tap/test-results/test/max-rev-merge.js.tap +0 -0
- package/.tap/test-results/test/merge-operator-test.js.tap +0 -12
- package/.tap/test-results/test/mkdir-test.js.tap +0 -15
- package/.tap/test-results/test/segfault-test.js.tap +0 -76
- package/.tap/test-results/test/stack-blower.js.tap +0 -0
- package/deps/rocksdb/rocksdb/README.md +0 -29
- package/deps/rocksdb/rocksdb/microbench/README.md +0 -60
- package/deps/rocksdb/rocksdb/plugin/README.md +0 -43
- package/deps/rocksdb/rocksdb/port/README +0 -10
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/README +0 -13
- package/tmp/000099.sst +0 -0
- package/tmp/000102.sst +0 -0
- package/tmp/000103.log +0 -0
- package/tmp/CURRENT +0 -1
- package/tmp/IDENTITY +0 -1
- package/tmp/LOCK +0 -0
- package/tmp/MANIFEST-000104 +0 -0
- package/tmp/OPTIONS-000098 +0 -207
- package/tmp/OPTIONS-000106 +0 -207
|
@@ -487,7 +487,7 @@ Status ReadFooterFromFile(const IOOptions& opts, RandomAccessFileReader* file,
|
|
|
487
487
|
file->file_name());
|
|
488
488
|
}
|
|
489
489
|
|
|
490
|
-
std::
|
|
490
|
+
std::array<char, Footer::kMaxEncodedLength + 1> footer_buf;
|
|
491
491
|
AlignedBuf internal_buf;
|
|
492
492
|
Slice footer_input;
|
|
493
493
|
uint64_t read_offset = (file_size > Footer::kMaxEncodedLength)
|
|
@@ -508,7 +508,6 @@ Status ReadFooterFromFile(const IOOptions& opts, RandomAccessFileReader* file,
|
|
|
508
508
|
s = file->Read(opts, read_offset, Footer::kMaxEncodedLength,
|
|
509
509
|
&footer_input, nullptr, &internal_buf);
|
|
510
510
|
} else {
|
|
511
|
-
footer_buf.reserve(Footer::kMaxEncodedLength);
|
|
512
511
|
s = file->Read(opts, read_offset, Footer::kMaxEncodedLength,
|
|
513
512
|
&footer_input, footer_buf.data(), nullptr);
|
|
514
513
|
}
|
|
@@ -96,8 +96,9 @@ class MergingIterator : public InternalIterator {
|
|
|
96
96
|
// could be updated. In that case, this merging iterator is only responsible
|
|
97
97
|
// for freeing the new range tombstone iterator that it has pointers to in
|
|
98
98
|
// range_tombstone_iters_.
|
|
99
|
-
void AddRangeTombstoneIterator(
|
|
100
|
-
|
|
99
|
+
void AddRangeTombstoneIterator(
|
|
100
|
+
std::unique_ptr<TruncatedRangeDelIterator>&& iter) {
|
|
101
|
+
range_tombstone_iters_.emplace_back(std::move(iter));
|
|
101
102
|
}
|
|
102
103
|
|
|
103
104
|
// Called by MergingIteratorBuilder when all point iterators and range
|
|
@@ -125,9 +126,7 @@ class MergingIterator : public InternalIterator {
|
|
|
125
126
|
}
|
|
126
127
|
|
|
127
128
|
~MergingIterator() override {
|
|
128
|
-
|
|
129
|
-
delete child;
|
|
130
|
-
}
|
|
129
|
+
range_tombstone_iters_.clear();
|
|
131
130
|
|
|
132
131
|
for (auto& child : children_) {
|
|
133
132
|
child.iter.DeleteIter(is_arena_mode_);
|
|
@@ -624,7 +623,8 @@ class MergingIterator : public InternalIterator {
|
|
|
624
623
|
// Invariant(rti): pinned_heap_item_[i] is in minHeap_ iff
|
|
625
624
|
// range_tombstone_iters_[i]->Valid() and at most one pinned_heap_item_[i] is
|
|
626
625
|
// in minHeap_.
|
|
627
|
-
std::vector<TruncatedRangeDelIterator
|
|
626
|
+
std::vector<std::unique_ptr<TruncatedRangeDelIterator>>
|
|
627
|
+
range_tombstone_iters_;
|
|
628
628
|
|
|
629
629
|
// Levels (indices into range_tombstone_iters_/children_ ) that currently have
|
|
630
630
|
// "active" range tombstones. See comments above MergingIterator for meaning
|
|
@@ -841,7 +841,8 @@ void MergingIterator::SeekImpl(const Slice& target, size_t starting_level,
|
|
|
841
841
|
prefetched_target.emplace_back(
|
|
842
842
|
level, current_search_key.GetInternalKey().ToString());
|
|
843
843
|
}
|
|
844
|
-
|
|
844
|
+
UnownedPtr<TruncatedRangeDelIterator> range_tombstone_iter =
|
|
845
|
+
range_tombstone_iters_[level].get();
|
|
845
846
|
if (range_tombstone_iter) {
|
|
846
847
|
range_tombstone_iter->SeekInternalKey(
|
|
847
848
|
current_search_key.GetInternalKey());
|
|
@@ -1125,7 +1126,8 @@ void MergingIterator::SeekForPrevImpl(const Slice& target,
|
|
|
1125
1126
|
prefetched_target.emplace_back(
|
|
1126
1127
|
level, current_search_key.GetInternalKey().ToString());
|
|
1127
1128
|
}
|
|
1128
|
-
|
|
1129
|
+
UnownedPtr<TruncatedRangeDelIterator> range_tombstone_iter =
|
|
1130
|
+
range_tombstone_iters_[level].get();
|
|
1129
1131
|
if (range_tombstone_iter) {
|
|
1130
1132
|
range_tombstone_iter->SeekForPrev(current_search_key.GetUserKey());
|
|
1131
1133
|
if (range_tombstone_iter->Valid()) {
|
|
@@ -1349,7 +1351,8 @@ void MergingIterator::SwitchToForward() {
|
|
|
1349
1351
|
ParseInternalKey(target, &pik, false /* log_err_key */)
|
|
1350
1352
|
.PermitUncheckedError();
|
|
1351
1353
|
for (size_t i = 0; i < range_tombstone_iters_.size(); ++i) {
|
|
1352
|
-
|
|
1354
|
+
UnownedPtr<TruncatedRangeDelIterator> iter =
|
|
1355
|
+
range_tombstone_iters_[i].get();
|
|
1353
1356
|
if (iter) {
|
|
1354
1357
|
iter->Seek(pik.user_key);
|
|
1355
1358
|
// The while loop is needed as the Seek() call above is only for user
|
|
@@ -1395,7 +1398,8 @@ void MergingIterator::SwitchToBackward() {
|
|
|
1395
1398
|
ParseInternalKey(target, &pik, false /* log_err_key */)
|
|
1396
1399
|
.PermitUncheckedError();
|
|
1397
1400
|
for (size_t i = 0; i < range_tombstone_iters_.size(); ++i) {
|
|
1398
|
-
|
|
1401
|
+
UnownedPtr<TruncatedRangeDelIterator> iter =
|
|
1402
|
+
range_tombstone_iters_[i].get();
|
|
1399
1403
|
if (iter) {
|
|
1400
1404
|
iter->SeekForPrev(pik.user_key);
|
|
1401
1405
|
// Since the SeekForPrev() call above is only for user key,
|
|
@@ -1690,8 +1694,9 @@ void MergeIteratorBuilder::AddIterator(InternalIterator* iter) {
|
|
|
1690
1694
|
}
|
|
1691
1695
|
|
|
1692
1696
|
void MergeIteratorBuilder::AddPointAndTombstoneIterator(
|
|
1693
|
-
InternalIterator* point_iter,
|
|
1694
|
-
TruncatedRangeDelIterator
|
|
1697
|
+
InternalIterator* point_iter,
|
|
1698
|
+
std::unique_ptr<TruncatedRangeDelIterator>&& tombstone_iter,
|
|
1699
|
+
std::unique_ptr<TruncatedRangeDelIterator>** tombstone_iter_ptr) {
|
|
1695
1700
|
// tombstone_iter_ptr != nullptr means point_iter is a LevelIterator.
|
|
1696
1701
|
bool add_range_tombstone = tombstone_iter ||
|
|
1697
1702
|
!merge_iter->range_tombstone_iters_.empty() ||
|
|
@@ -1711,7 +1716,7 @@ void MergeIteratorBuilder::AddPointAndTombstoneIterator(
|
|
|
1711
1716
|
merge_iter->children_.size() - 1) {
|
|
1712
1717
|
merge_iter->AddRangeTombstoneIterator(nullptr);
|
|
1713
1718
|
}
|
|
1714
|
-
merge_iter->AddRangeTombstoneIterator(tombstone_iter);
|
|
1719
|
+
merge_iter->AddRangeTombstoneIterator(std::move(tombstone_iter));
|
|
1715
1720
|
}
|
|
1716
1721
|
|
|
1717
1722
|
if (tombstone_iter_ptr) {
|
|
@@ -70,8 +70,10 @@ class MergeIteratorBuilder {
|
|
|
70
70
|
// point iterators are not LevelIterator, then range tombstone iterator is
|
|
71
71
|
// only added to the merging iter if there is a non-null `tombstone_iter`.
|
|
72
72
|
void AddPointAndTombstoneIterator(
|
|
73
|
-
InternalIterator* point_iter,
|
|
74
|
-
TruncatedRangeDelIterator
|
|
73
|
+
InternalIterator* point_iter,
|
|
74
|
+
std::unique_ptr<TruncatedRangeDelIterator>&& tombstone_iter,
|
|
75
|
+
std::unique_ptr<TruncatedRangeDelIterator>** tombstone_iter_ptr =
|
|
76
|
+
nullptr);
|
|
75
77
|
|
|
76
78
|
// Get arena used to build the merging iterator. It is called one a child
|
|
77
79
|
// iterator needs to be allocated.
|
|
@@ -91,7 +93,7 @@ class MergeIteratorBuilder {
|
|
|
91
93
|
Arena* arena;
|
|
92
94
|
// Used to set LevelIterator.range_tombstone_iter_.
|
|
93
95
|
// See AddRangeTombstoneIterator() implementation for more detail.
|
|
94
|
-
std::vector<std::pair<size_t, TruncatedRangeDelIterator
|
|
96
|
+
std::vector<std::pair<size_t, std::unique_ptr<TruncatedRangeDelIterator>**>>
|
|
95
97
|
range_del_iter_ptrs_;
|
|
96
98
|
};
|
|
97
99
|
|
|
@@ -119,8 +119,8 @@ PlainTableBuilder::PlainTableBuilder(
|
|
|
119
119
|
assert(factory);
|
|
120
120
|
|
|
121
121
|
std::unique_ptr<InternalTblPropColl> collector{
|
|
122
|
-
factory->CreateInternalTblPropColl(column_family_id,
|
|
123
|
-
|
|
122
|
+
factory->CreateInternalTblPropColl(column_family_id, level_at_creation,
|
|
123
|
+
ioptions.num_levels)};
|
|
124
124
|
if (collector) {
|
|
125
125
|
table_properties_collectors_.emplace_back(std::move(collector));
|
|
126
126
|
}
|
|
@@ -140,7 +140,7 @@ Status SstFileReader::VerifyNumEntries(const ReadOptions& read_options) {
|
|
|
140
140
|
uint64_t num_read = 0;
|
|
141
141
|
for (; internal_iter->Valid(); internal_iter->Next()) {
|
|
142
142
|
++num_read;
|
|
143
|
-
}
|
|
143
|
+
}
|
|
144
144
|
s = internal_iter->status();
|
|
145
145
|
if (!s.ok()) {
|
|
146
146
|
return s;
|
|
@@ -79,7 +79,9 @@ class SstFileWriterPropertiesCollectorFactory
|
|
|
79
79
|
: version_(version), global_seqno_(global_seqno) {}
|
|
80
80
|
|
|
81
81
|
InternalTblPropColl* CreateInternalTblPropColl(
|
|
82
|
-
uint32_t /*column_family_id*/, int /* level_at_creation
|
|
82
|
+
uint32_t /*column_family_id*/, int /* level_at_creation */,
|
|
83
|
+
int /* num_levels */,
|
|
84
|
+
SequenceNumber /* last_level_inclusive_max_seqno_threshold */) override {
|
|
83
85
|
return new SstFileWriterPropertiesCollector(version_, global_seqno_);
|
|
84
86
|
}
|
|
85
87
|
|
|
@@ -99,7 +99,7 @@ struct TableReaderOptions {
|
|
|
99
99
|
bool user_defined_timestamps_persisted;
|
|
100
100
|
};
|
|
101
101
|
|
|
102
|
-
struct TableBuilderOptions {
|
|
102
|
+
struct TableBuilderOptions : public TablePropertiesCollectorFactory::Context {
|
|
103
103
|
TableBuilderOptions(
|
|
104
104
|
const ImmutableOptions& _ioptions, const MutableCFOptions& _moptions,
|
|
105
105
|
const ReadOptions& _read_options, const WriteOptions& _write_options,
|
|
@@ -113,8 +113,13 @@ struct TableBuilderOptions {
|
|
|
113
113
|
const int64_t _oldest_key_time = 0,
|
|
114
114
|
const uint64_t _file_creation_time = 0, const std::string& _db_id = "",
|
|
115
115
|
const std::string& _db_session_id = "",
|
|
116
|
-
const uint64_t _target_file_size = 0, const uint64_t _cur_file_num = 0
|
|
117
|
-
|
|
116
|
+
const uint64_t _target_file_size = 0, const uint64_t _cur_file_num = 0,
|
|
117
|
+
const SequenceNumber _last_level_inclusive_max_seqno_threshold =
|
|
118
|
+
kMaxSequenceNumber)
|
|
119
|
+
: TablePropertiesCollectorFactory::Context(
|
|
120
|
+
_column_family_id, _level, _ioptions.num_levels,
|
|
121
|
+
_last_level_inclusive_max_seqno_threshold),
|
|
122
|
+
ioptions(_ioptions),
|
|
118
123
|
moptions(_moptions),
|
|
119
124
|
read_options(_read_options),
|
|
120
125
|
write_options(_write_options),
|
|
@@ -122,14 +127,12 @@ struct TableBuilderOptions {
|
|
|
122
127
|
internal_tbl_prop_coll_factories(_internal_tbl_prop_coll_factories),
|
|
123
128
|
compression_type(_compression_type),
|
|
124
129
|
compression_opts(_compression_opts),
|
|
125
|
-
column_family_id(_column_family_id),
|
|
126
130
|
column_family_name(_column_family_name),
|
|
127
131
|
oldest_key_time(_oldest_key_time),
|
|
128
132
|
target_file_size(_target_file_size),
|
|
129
133
|
file_creation_time(_file_creation_time),
|
|
130
134
|
db_id(_db_id),
|
|
131
135
|
db_session_id(_db_session_id),
|
|
132
|
-
level_at_creation(_level),
|
|
133
136
|
is_bottommost(_is_bottommost),
|
|
134
137
|
reason(_reason),
|
|
135
138
|
cur_file_num(_cur_file_num) {}
|
|
@@ -142,7 +145,6 @@ struct TableBuilderOptions {
|
|
|
142
145
|
const InternalTblPropCollFactories* internal_tbl_prop_coll_factories;
|
|
143
146
|
const CompressionType compression_type;
|
|
144
147
|
const CompressionOptions& compression_opts;
|
|
145
|
-
const uint32_t column_family_id;
|
|
146
148
|
const std::string& column_family_name;
|
|
147
149
|
const int64_t oldest_key_time;
|
|
148
150
|
const uint64_t target_file_size;
|
|
@@ -150,7 +152,6 @@ struct TableBuilderOptions {
|
|
|
150
152
|
const std::string db_id;
|
|
151
153
|
const std::string db_session_id;
|
|
152
154
|
// BEGIN for FilterBuildingContext
|
|
153
|
-
const int level_at_creation;
|
|
154
155
|
const bool is_bottommost;
|
|
155
156
|
const TableFileCreationReason reason;
|
|
156
157
|
// END for FilterBuildingContext
|
|
@@ -188,6 +188,15 @@ class TableReader {
|
|
|
188
188
|
TableReaderCaller /*caller*/) {
|
|
189
189
|
return Status::NotSupported("VerifyChecksum() not supported");
|
|
190
190
|
}
|
|
191
|
+
|
|
192
|
+
// Tell the reader that the file should now be obsolete, e.g. as a hint
|
|
193
|
+
// to delete relevant cache entries on destruction. (It might not be safe
|
|
194
|
+
// to "unpin" cache entries until destruction time.) NOTE: must be thread
|
|
195
|
+
// safe because multiple table cache references might all mark this file as
|
|
196
|
+
// obsolete when they are released (the last of which destroys this reader).
|
|
197
|
+
virtual void MarkObsolete(uint32_t /*uncache_aggressiveness*/) {
|
|
198
|
+
// no-op as default
|
|
199
|
+
}
|
|
191
200
|
};
|
|
192
201
|
|
|
193
202
|
} // namespace ROCKSDB_NAMESPACE
|
|
@@ -46,6 +46,7 @@ const std::set<uint32_t> kFooterFormatVersionsToTest{
|
|
|
46
46
|
kDefaultFormatVersion,
|
|
47
47
|
kLatestFormatVersion,
|
|
48
48
|
};
|
|
49
|
+
const ReadOptionsNoIo kReadOptionsNoIo;
|
|
49
50
|
|
|
50
51
|
std::string RandomKey(Random* rnd, int len, RandomKeyType type) {
|
|
51
52
|
// Make sure to generate a wide variety of characters so we
|
|
@@ -898,5 +898,11 @@ int RegisterTestObjects(ObjectLibrary& library, const std::string& /*arg*/);
|
|
|
898
898
|
|
|
899
899
|
// Register the testutil classes with the default ObjectRegistry/Library
|
|
900
900
|
void RegisterTestLibrary(const std::string& arg = "");
|
|
901
|
+
|
|
902
|
+
struct ReadOptionsNoIo : public ReadOptions {
|
|
903
|
+
ReadOptionsNoIo() { read_tier = ReadTier::kBlockCacheTier; }
|
|
904
|
+
};
|
|
905
|
+
extern const ReadOptionsNoIo kReadOptionsNoIo;
|
|
906
|
+
|
|
901
907
|
} // namespace test
|
|
902
908
|
} // namespace ROCKSDB_NAMESPACE
|
|
@@ -544,12 +544,20 @@ DEFINE_int32(universal_compression_size_percent, -1,
|
|
|
544
544
|
"The percentage of the database to compress for universal "
|
|
545
545
|
"compaction. -1 means compress everything.");
|
|
546
546
|
|
|
547
|
+
DEFINE_int32(universal_max_read_amp, -1,
|
|
548
|
+
"The limit on the number of sorted runs");
|
|
549
|
+
|
|
547
550
|
DEFINE_bool(universal_allow_trivial_move, false,
|
|
548
551
|
"Allow trivial move in universal compaction.");
|
|
549
552
|
|
|
550
553
|
DEFINE_bool(universal_incremental, false,
|
|
551
554
|
"Enable incremental compactions in universal compaction.");
|
|
552
555
|
|
|
556
|
+
DEFINE_int32(
|
|
557
|
+
universal_stop_style,
|
|
558
|
+
(int32_t)ROCKSDB_NAMESPACE::CompactionOptionsUniversal().stop_style,
|
|
559
|
+
"Universal compaction stop style.");
|
|
560
|
+
|
|
553
561
|
DEFINE_int64(cache_size, 32 << 20, // 32MB
|
|
554
562
|
"Number of bytes to use as a cache of uncompressed data");
|
|
555
563
|
|
|
@@ -704,6 +712,12 @@ DEFINE_int64(prepopulate_block_cache, 0,
|
|
|
704
712
|
"Pre-populate hot/warm blocks in block cache. 0 to disable and 1 "
|
|
705
713
|
"to insert during flush");
|
|
706
714
|
|
|
715
|
+
DEFINE_uint32(uncache_aggressiveness,
|
|
716
|
+
ROCKSDB_NAMESPACE::ColumnFamilyOptions().uncache_aggressiveness,
|
|
717
|
+
"Aggressiveness of erasing cache entries that are likely "
|
|
718
|
+
"obsolete. 0 = disabled, 1 = minimum, 100 = moderate, 10000 = "
|
|
719
|
+
"normal max");
|
|
720
|
+
|
|
707
721
|
DEFINE_bool(use_data_block_hash_index, false,
|
|
708
722
|
"if use kDataBlockBinaryAndHash "
|
|
709
723
|
"instead of kDataBlockBinarySearch. "
|
|
@@ -4285,6 +4299,7 @@ class Benchmark {
|
|
|
4285
4299
|
FLAGS_level_compaction_dynamic_level_bytes;
|
|
4286
4300
|
options.max_bytes_for_level_multiplier =
|
|
4287
4301
|
FLAGS_max_bytes_for_level_multiplier;
|
|
4302
|
+
options.uncache_aggressiveness = FLAGS_uncache_aggressiveness;
|
|
4288
4303
|
Status s =
|
|
4289
4304
|
CreateMemTableRepFactory(config_options, &options.memtable_factory);
|
|
4290
4305
|
if (!s.ok()) {
|
|
@@ -4664,10 +4679,14 @@ class Benchmark {
|
|
|
4664
4679
|
options.compaction_options_universal.compression_size_percent =
|
|
4665
4680
|
FLAGS_universal_compression_size_percent;
|
|
4666
4681
|
}
|
|
4682
|
+
options.compaction_options_universal.max_read_amp =
|
|
4683
|
+
FLAGS_universal_max_read_amp;
|
|
4667
4684
|
options.compaction_options_universal.allow_trivial_move =
|
|
4668
4685
|
FLAGS_universal_allow_trivial_move;
|
|
4669
4686
|
options.compaction_options_universal.incremental =
|
|
4670
4687
|
FLAGS_universal_incremental;
|
|
4688
|
+
options.compaction_options_universal.stop_style =
|
|
4689
|
+
static_cast<CompactionStopStyle>(FLAGS_universal_stop_style);
|
|
4671
4690
|
if (FLAGS_thread_status_per_interval > 0) {
|
|
4672
4691
|
options.enable_thread_tracking = true;
|
|
4673
4692
|
}
|