@nxtedition/rocksdb 13.1.4 → 13.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/binding.cc +43 -16
- package/deps/rocksdb/rocksdb/{TARGETS → BUCK} +27 -0
- package/deps/rocksdb/rocksdb/CMakeLists.txt +3 -1
- package/deps/rocksdb/rocksdb/Makefile +2 -2
- package/deps/rocksdb/rocksdb/cache/cache.cc +3 -1
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +2 -0
- package/deps/rocksdb/rocksdb/db/attribute_group_iterator_impl.h +34 -9
- package/deps/rocksdb/rocksdb/db/blob/blob_source.cc +7 -6
- package/deps/rocksdb/rocksdb/db/blob/blob_source.h +5 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +22 -14
- package/deps/rocksdb/rocksdb/db/blob/db_blob_basic_test.cc +149 -0
- package/deps/rocksdb/rocksdb/db/builder.cc +13 -24
- package/deps/rocksdb/rocksdb/db/coalescing_iterator.h +35 -10
- package/deps/rocksdb/rocksdb/db/column_family.cc +21 -10
- package/deps/rocksdb/rocksdb/db/column_family.h +15 -8
- package/deps/rocksdb/rocksdb/db/column_family_test.cc +98 -7
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +126 -16
- package/deps/rocksdb/rocksdb/db/compaction/compaction.h +51 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +2 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +2 -8
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +24 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +52 -22
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +9 -7
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +36 -9
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +6 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +30 -17
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +26 -23
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +43 -33
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +6 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +19 -9
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +6 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +632 -411
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +171 -51
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +7 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +37 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +51 -11
- package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.cc +10 -3
- package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +350 -154
- package/deps/rocksdb/rocksdb/db/convenience.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +62 -27
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +68 -1
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +91 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +134 -70
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +71 -23
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +43 -16
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +47 -33
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +27 -19
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +38 -25
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +3 -3
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +7 -4
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +258 -42
- package/deps/rocksdb/rocksdb/db/db_io_failure_test.cc +161 -9
- package/deps/rocksdb/rocksdb/db/db_iter.cc +118 -86
- package/deps/rocksdb/rocksdb/db/db_iter.h +44 -17
- package/deps/rocksdb/rocksdb/db/db_options_test.cc +27 -6
- package/deps/rocksdb/rocksdb/db/db_test.cc +48 -16
- package/deps/rocksdb/rocksdb/db/db_test2.cc +60 -15
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +97 -44
- package/deps/rocksdb/rocksdb/db/db_test_util.h +7 -1
- package/deps/rocksdb/rocksdb/db/dbformat.cc +15 -5
- package/deps/rocksdb/rocksdb/db/dbformat.h +137 -55
- package/deps/rocksdb/rocksdb/db/event_helpers.cc +1 -0
- package/deps/rocksdb/rocksdb/db/experimental.cc +54 -0
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +663 -8
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +152 -91
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +134 -11
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +55 -9
- package/deps/rocksdb/rocksdb/db/flush_job.cc +52 -29
- package/deps/rocksdb/rocksdb/db/flush_job.h +5 -3
- package/deps/rocksdb/rocksdb/db/flush_job_test.cc +18 -12
- package/deps/rocksdb/rocksdb/db/forward_iterator.cc +23 -29
- package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +3 -2
- package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +2 -0
- package/deps/rocksdb/rocksdb/db/internal_stats.cc +9 -6
- package/deps/rocksdb/rocksdb/db/internal_stats.h +54 -0
- package/deps/rocksdb/rocksdb/db/job_context.h +1 -1
- package/deps/rocksdb/rocksdb/db/log_reader.cc +6 -7
- package/deps/rocksdb/rocksdb/db/manifest_ops.cc +47 -0
- package/deps/rocksdb/rocksdb/db/manifest_ops.h +20 -0
- package/deps/rocksdb/rocksdb/db/memtable.cc +165 -64
- package/deps/rocksdb/rocksdb/db/memtable.h +422 -243
- package/deps/rocksdb/rocksdb/db/memtable_list.cc +99 -68
- package/deps/rocksdb/rocksdb/db/memtable_list.h +63 -38
- package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +28 -25
- package/deps/rocksdb/rocksdb/db/multi_cf_iterator_impl.h +118 -60
- package/deps/rocksdb/rocksdb/db/multi_cf_iterator_test.cc +344 -89
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +2 -3
- package/deps/rocksdb/rocksdb/db/repair.cc +15 -14
- package/deps/rocksdb/rocksdb/db/repair_test.cc +0 -13
- package/deps/rocksdb/rocksdb/db/snapshot_checker.h +7 -0
- package/deps/rocksdb/rocksdb/db/table_cache.cc +62 -65
- package/deps/rocksdb/rocksdb/db/table_cache.h +70 -76
- package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +5 -6
- package/deps/rocksdb/rocksdb/db/table_properties_collector_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/transaction_log_impl.cc +8 -7
- package/deps/rocksdb/rocksdb/db/version_builder.cc +17 -19
- package/deps/rocksdb/rocksdb/db/version_builder.h +13 -12
- package/deps/rocksdb/rocksdb/db/version_edit.h +30 -0
- package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +3 -5
- package/deps/rocksdb/rocksdb/db/version_set.cc +89 -129
- package/deps/rocksdb/rocksdb/db/version_set.h +12 -4
- package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +1 -2
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +12 -8
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.cc +0 -15
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.h +0 -2
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization_test.cc +9 -7
- package/deps/rocksdb/rocksdb/db/wide/wide_columns_helper.cc +0 -8
- package/deps/rocksdb/rocksdb/db/wide/wide_columns_helper.h +28 -2
- package/deps/rocksdb/rocksdb/db/write_batch.cc +32 -10
- package/deps/rocksdb/rocksdb/db/write_batch_internal.h +9 -0
- package/deps/rocksdb/rocksdb/db/write_batch_test.cc +2 -1
- package/deps/rocksdb/rocksdb/db/write_thread.cc +3 -1
- package/deps/rocksdb/rocksdb/db/write_thread.h +6 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +15 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +7 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +4 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +18 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +100 -22
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +15 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +34 -8
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +223 -78
- package/deps/rocksdb/rocksdb/env/file_system.cc +6 -1
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +53 -0
- package/deps/rocksdb/rocksdb/env/io_posix.cc +63 -17
- package/deps/rocksdb/rocksdb/env/io_posix.h +30 -1
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +132 -48
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +92 -24
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +727 -109
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +3 -4
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +1 -1
- package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +8 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/attribute_groups.h +20 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +9 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/configurable.h +9 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +2 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +10 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/env.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/experimental.h +7 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +34 -37
- package/deps/rocksdb/rocksdb/include/rocksdb/iterator_base.h +21 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +56 -28
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/table.h +36 -28
- package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +11 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +84 -60
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/secondary_index.h +102 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/table_properties_collectors.h +89 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +32 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +30 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +23 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +2 -0
- package/deps/rocksdb/rocksdb/memtable/inlineskiplist.h +79 -21
- package/deps/rocksdb/rocksdb/memtable/skiplist.h +41 -18
- package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +1 -5
- package/deps/rocksdb/rocksdb/memtable/wbwi_memtable.cc +169 -0
- package/deps/rocksdb/rocksdb/memtable/wbwi_memtable.h +400 -0
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +2 -0
- package/deps/rocksdb/rocksdb/options/cf_options.cc +137 -82
- package/deps/rocksdb/rocksdb/options/cf_options.h +18 -6
- package/deps/rocksdb/rocksdb/options/configurable.cc +31 -17
- package/deps/rocksdb/rocksdb/options/configurable_helper.h +7 -6
- package/deps/rocksdb/rocksdb/options/options_helper.cc +10 -8
- package/deps/rocksdb/rocksdb/options/options_parser.cc +74 -54
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +89 -0
- package/deps/rocksdb/rocksdb/options/options_test.cc +112 -26
- package/deps/rocksdb/rocksdb/port/port.h +5 -9
- package/deps/rocksdb/rocksdb/src.mk +8 -0
- package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.h +4 -0
- package/deps/rocksdb/rocksdb/table/block_based/block.h +1 -7
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +2 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +62 -80
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +13 -3
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +16 -5
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +38 -7
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +12 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +4 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +4 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +204 -1
- package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +3 -3
- package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +2 -1
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_factory.h +4 -0
- package/deps/rocksdb/rocksdb/table/format.cc +3 -3
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +4 -1
- package/deps/rocksdb/rocksdb/table/mock_table.cc +0 -50
- package/deps/rocksdb/rocksdb/table/mock_table.h +53 -0
- package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.h +4 -0
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +1 -1
- package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +10 -5
- package/deps/rocksdb/rocksdb/table/table_builder.h +3 -1
- package/deps/rocksdb/rocksdb/table/table_properties.cc +181 -0
- package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +5 -5
- package/deps/rocksdb/rocksdb/table/table_test.cc +71 -64
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_pysim.py +45 -45
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_pysim_test.py +35 -35
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_plot.py +43 -43
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +41 -4
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +1 -0
- package/deps/rocksdb/rocksdb/tools/sst_dump_test.cc +1 -1
- package/deps/rocksdb/rocksdb/unreleased_history/add.sh +13 -0
- package/deps/rocksdb/rocksdb/util/aligned_buffer.h +24 -5
- package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +7 -0
- package/deps/rocksdb/rocksdb/util/file_checksum_helper.cc +0 -52
- package/deps/rocksdb/rocksdb/util/file_checksum_helper.h +1 -10
- package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +92 -0
- package/deps/rocksdb/rocksdb/util/thread_operation.h +1 -0
- package/deps/rocksdb/rocksdb/util/udt_util.cc +50 -4
- package/deps/rocksdb/rocksdb/util/udt_util.h +24 -11
- package/deps/rocksdb/rocksdb/util/udt_util_test.cc +26 -13
- package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +1 -16
- package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +2 -0
- package/deps/rocksdb/rocksdb/utilities/secondary_index/faiss_ivf_index.cc +214 -0
- package/deps/rocksdb/rocksdb/utilities/secondary_index/faiss_ivf_index.h +60 -0
- package/deps/rocksdb/rocksdb/utilities/secondary_index/faiss_ivf_index_test.cc +124 -0
- package/deps/rocksdb/rocksdb/utilities/secondary_index/secondary_index_mixin.h +441 -0
- package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_for_tiering_collector.cc +34 -3
- package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_for_tiering_collector.h +7 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +437 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +34 -11
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +14 -7
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.cc +7 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/snapshot_checker.cc +17 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +69 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +20 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +1290 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +324 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +18 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.h +8 -1
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +57 -12
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +32 -3
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +33 -2
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +721 -9
- package/deps/rocksdb/rocksdb.gyp +2 -0
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/@nxtedition+rocksdb.node +0 -0
- package/prebuilds/linux-x64/@nxtedition+rocksdb.node +0 -0
package/binding.cc
CHANGED
|
@@ -505,6 +505,10 @@ class Iterator final : public BaseIterator {
|
|
|
505
505
|
readOptions.ignore_range_deletions = false;
|
|
506
506
|
NAPI_STATUS_THROWS(GetProperty(env, options, "ignoreRangeDeletions", readOptions.ignore_range_deletions));
|
|
507
507
|
|
|
508
|
+
if (!values) {
|
|
509
|
+
readOptions.allow_unprepared_value = true;
|
|
510
|
+
}
|
|
511
|
+
|
|
508
512
|
// uint32_t timeout = 0;
|
|
509
513
|
// NAPI_STATUS_THROWS(GetProperty(env, options, "timeout", timeout));
|
|
510
514
|
|
|
@@ -900,12 +904,39 @@ napi_status InitOptions(napi_env env, T& columnOptions, const U& options) {
|
|
|
900
904
|
NAPI_STATUS_RETURN(GetProperty(env, options, "optimizeFiltersForHits", columnOptions.optimize_filters_for_hits));
|
|
901
905
|
NAPI_STATUS_RETURN(GetProperty(env, options, "periodicCompactionSeconds", columnOptions.periodic_compaction_seconds));
|
|
902
906
|
|
|
907
|
+
NAPI_STATUS_RETURN(GetProperty(env, options, "enableBlobFiles", columnOptions.enable_blob_files));
|
|
908
|
+
NAPI_STATUS_RETURN(GetProperty(env, options, "minBlobSize", columnOptions.min_blob_size));
|
|
909
|
+
NAPI_STATUS_RETURN(GetProperty(env, options, "blobFileSize", columnOptions.blob_file_size));
|
|
910
|
+
NAPI_STATUS_RETURN(GetProperty(env, options, "enableBlobGarbageCollection", columnOptions.enable_blob_garbage_collection));
|
|
911
|
+
NAPI_STATUS_RETURN(GetProperty(env, options, "blobGarbageCollectionAgeCutoff", columnOptions.blob_garbage_collection_age_cutoff));
|
|
912
|
+
NAPI_STATUS_RETURN(GetProperty(env, options, "blobGarbageCollectionForceThreshold", columnOptions.blob_garbage_collection_force_threshold));
|
|
913
|
+
NAPI_STATUS_RETURN(GetProperty(env, options, "blobCompactionReadaheadSize", columnOptions.blob_compaction_readahead_size));
|
|
914
|
+
NAPI_STATUS_RETURN(GetProperty(env, options, "blobFileStartingLevel", columnOptions.blob_file_starting_level));
|
|
915
|
+
|
|
916
|
+
bool blobCompression = true;
|
|
917
|
+
NAPI_STATUS_RETURN(GetProperty(env, options, "blobCompression", blobCompression));
|
|
918
|
+
columnOptions.blob_compression_type = blobCompression ? rocksdb::kZSTD : rocksdb::kNoCompression;
|
|
919
|
+
|
|
920
|
+
bool prepopulateBlobCache = false;
|
|
921
|
+
NAPI_STATUS_RETURN(GetProperty(env, options, "prepopulateBlobCache", prepopulateBlobCache));
|
|
922
|
+
columnOptions.prepopulate_blob_cache = prepopulateBlobCache ? rocksdb::PrepopulateBlobCache::kFlushOnly : rocksdb::PrepopulateBlobCache::kDisable;
|
|
923
|
+
|
|
903
924
|
rocksdb::BlockBasedTableOptions tableOptions;
|
|
904
925
|
tableOptions.decouple_partitioned_filters = true;
|
|
905
926
|
|
|
927
|
+
{
|
|
928
|
+
uint32_t cacheSize = 0;
|
|
929
|
+
NAPI_STATUS_RETURN(GetProperty(env, options, "blobCacheSize", cacheSize));
|
|
930
|
+
|
|
931
|
+
if (cacheSize) {
|
|
932
|
+
columnOptions.blob_cache = rocksdb::HyperClockCacheOptions(cacheSize, 0).MakeSharedCache();
|
|
933
|
+
}
|
|
934
|
+
}
|
|
935
|
+
|
|
906
936
|
{
|
|
907
937
|
uint32_t cacheSize = 8 << 20;
|
|
908
938
|
NAPI_STATUS_RETURN(GetProperty(env, options, "cacheSize", cacheSize));
|
|
939
|
+
NAPI_STATUS_RETURN(GetProperty(env, options, "blockCacheSize", cacheSize));
|
|
909
940
|
|
|
910
941
|
if (cacheSize) {
|
|
911
942
|
tableOptions.block_cache = rocksdb::HyperClockCacheOptions(cacheSize, 0).MakeSharedCache();
|
|
@@ -914,6 +945,12 @@ napi_status InitOptions(napi_env env, T& columnOptions, const U& options) {
|
|
|
914
945
|
}
|
|
915
946
|
}
|
|
916
947
|
|
|
948
|
+
bool prepopulateBlockCache = false;
|
|
949
|
+
NAPI_STATUS_RETURN(GetProperty(env, options, "prepopulateBlockCache", prepopulateBlockCache));
|
|
950
|
+
tableOptions.prepopulate_block_cache = prepopulateBlockCache
|
|
951
|
+
? rocksdb::BlockBasedTableOptions::PrepopulateBlockCache::kFlushOnly
|
|
952
|
+
: rocksdb::BlockBasedTableOptions::PrepopulateBlockCache::kDisable;
|
|
953
|
+
|
|
917
954
|
std::string optimize = "";
|
|
918
955
|
NAPI_STATUS_RETURN(GetProperty(env, options, "optimize", optimize));
|
|
919
956
|
|
|
@@ -981,18 +1018,6 @@ napi_status InitOptions(napi_env env, T& columnOptions, const U& options) {
|
|
|
981
1018
|
return napi_invalid_arg;
|
|
982
1019
|
}
|
|
983
1020
|
|
|
984
|
-
std::string prepopulateBlockCache;
|
|
985
|
-
NAPI_STATUS_RETURN(GetProperty(env, options, "prepopulateBlockCache", prepopulateBlockCache));
|
|
986
|
-
if (prepopulateBlockCache == "") {
|
|
987
|
-
// Do nothing...
|
|
988
|
-
} else if (prepopulateBlockCache == "disable") {
|
|
989
|
-
tableOptions.prepopulate_block_cache = rocksdb::BlockBasedTableOptions::PrepopulateBlockCache::kDisable;
|
|
990
|
-
} else if (prepopulateBlockCache == "flushOnly") {
|
|
991
|
-
tableOptions.prepopulate_block_cache = rocksdb::BlockBasedTableOptions::PrepopulateBlockCache::kFlushOnly;
|
|
992
|
-
} else {
|
|
993
|
-
return napi_invalid_arg;
|
|
994
|
-
}
|
|
995
|
-
|
|
996
1021
|
NAPI_STATUS_RETURN(GetProperty(env, options, "dataBlockHashTableUtilRatio", tableOptions.data_block_hash_table_util_ratio));
|
|
997
1022
|
NAPI_STATUS_RETURN(GetProperty(env, options, "blockSize", tableOptions.block_size));
|
|
998
1023
|
NAPI_STATUS_RETURN(GetProperty(env, options, "blockRestartInterval", tableOptions.block_restart_interval));
|
|
@@ -1090,13 +1115,15 @@ NAPI_METHOD(db_open) {
|
|
|
1090
1115
|
|
|
1091
1116
|
NAPI_STATUS_THROWS(GetProperty(env, options, "pipelinedWrite", dbOptions.enable_pipelined_write));
|
|
1092
1117
|
|
|
1093
|
-
NAPI_STATUS_THROWS(GetProperty(env, options, "dailyOffpeakTime",
|
|
1118
|
+
NAPI_STATUS_THROWS(GetProperty(env, options, "dailyOffpeakTime", dbOptions.daily_offpeak_time_utc));
|
|
1119
|
+
|
|
1120
|
+
NAPI_STATUS_THROWS(GetProperty(env, options, "unorderedWrite", dbOptions.unordered_write));
|
|
1094
1121
|
|
|
1095
|
-
NAPI_STATUS_THROWS(GetProperty(env, options, "
|
|
1122
|
+
NAPI_STATUS_THROWS(GetProperty(env, options, "allowMmapReads", dbOptions.allow_mmap_reads));
|
|
1096
1123
|
|
|
1097
|
-
NAPI_STATUS_THROWS(GetProperty(env, options, "
|
|
1124
|
+
NAPI_STATUS_THROWS(GetProperty(env, options, "allowMmapWrites", dbOptions.allow_mmap_writes));
|
|
1098
1125
|
|
|
1099
|
-
NAPI_STATUS_THROWS(GetProperty(env, options, "
|
|
1126
|
+
NAPI_STATUS_THROWS(GetProperty(env, options, "memTableHugePageSize", dbOptions.memtable_huge_page_size));
|
|
1100
1127
|
|
|
1101
1128
|
// TODO (feat): dbOptions.listeners
|
|
1102
1129
|
|
|
@@ -83,6 +83,7 @@ cpp_library_wrapper(name="rocksdb_lib", srcs=[
|
|
|
83
83
|
"db/log_writer.cc",
|
|
84
84
|
"db/logs_with_prep_tracker.cc",
|
|
85
85
|
"db/malloc_stats.cc",
|
|
86
|
+
"db/manifest_ops.cc",
|
|
86
87
|
"db/memtable.cc",
|
|
87
88
|
"db/memtable_list.cc",
|
|
88
89
|
"db/merge_helper.cc",
|
|
@@ -149,6 +150,7 @@ cpp_library_wrapper(name="rocksdb_lib", srcs=[
|
|
|
149
150
|
"memtable/hash_skiplist_rep.cc",
|
|
150
151
|
"memtable/skiplistrep.cc",
|
|
151
152
|
"memtable/vectorrep.cc",
|
|
153
|
+
"memtable/wbwi_memtable.cc",
|
|
152
154
|
"memtable/write_buffer_manager.cc",
|
|
153
155
|
"monitoring/histogram.cc",
|
|
154
156
|
"monitoring/histogram_windowing.cc",
|
|
@@ -366,6 +368,11 @@ cpp_library_wrapper(name="rocksdb_lib", srcs=[
|
|
|
366
368
|
|
|
367
369
|
cpp_library_wrapper(name="rocksdb_whole_archive_lib", srcs=[], deps=[":rocksdb_lib"], headers=[], link_whole=True, extra_test_libs=False)
|
|
368
370
|
|
|
371
|
+
cpp_library_wrapper(name="rocksdb_with_faiss_lib", srcs=["utilities/secondary_index/faiss_ivf_index.cc"], deps=[
|
|
372
|
+
"//faiss:faiss",
|
|
373
|
+
":rocksdb_lib",
|
|
374
|
+
], headers=[], link_whole=False, extra_test_libs=False)
|
|
375
|
+
|
|
369
376
|
cpp_library_wrapper(name="rocksdb_test_lib", srcs=[
|
|
370
377
|
"db/db_test_util.cc",
|
|
371
378
|
"db/db_with_timestamp_test_util.cc",
|
|
@@ -380,6 +387,20 @@ cpp_library_wrapper(name="rocksdb_test_lib", srcs=[
|
|
|
380
387
|
"utilities/cassandra/test_utils.cc",
|
|
381
388
|
], deps=[":rocksdb_lib"], headers=[], link_whole=False, extra_test_libs=True)
|
|
382
389
|
|
|
390
|
+
cpp_library_wrapper(name="rocksdb_with_faiss_test_lib", srcs=[
|
|
391
|
+
"db/db_test_util.cc",
|
|
392
|
+
"db/db_with_timestamp_test_util.cc",
|
|
393
|
+
"table/mock_table.cc",
|
|
394
|
+
"test_util/mock_time_env.cc",
|
|
395
|
+
"test_util/secondary_cache_test_util.cc",
|
|
396
|
+
"test_util/testharness.cc",
|
|
397
|
+
"test_util/testutil.cc",
|
|
398
|
+
"tools/block_cache_analyzer/block_cache_trace_analyzer.cc",
|
|
399
|
+
"tools/trace_analyzer_tool.cc",
|
|
400
|
+
"utilities/agg_merge/test_agg_merge.cc",
|
|
401
|
+
"utilities/cassandra/test_utils.cc",
|
|
402
|
+
], deps=[":rocksdb_with_faiss_lib"], headers=[], link_whole=False, extra_test_libs=True)
|
|
403
|
+
|
|
383
404
|
cpp_library_wrapper(name="rocksdb_tools_lib", srcs=[
|
|
384
405
|
"test_util/testutil.cc",
|
|
385
406
|
"tools/block_cache_analyzer/block_cache_trace_analyzer.cc",
|
|
@@ -5076,6 +5097,12 @@ cpp_unittest_wrapper(name="external_sst_file_test",
|
|
|
5076
5097
|
extra_compiler_flags=[])
|
|
5077
5098
|
|
|
5078
5099
|
|
|
5100
|
+
cpp_unittest_wrapper(name="faiss_ivf_index_test",
|
|
5101
|
+
srcs=["utilities/secondary_index/faiss_ivf_index_test.cc"],
|
|
5102
|
+
deps=[":rocksdb_with_faiss_test_lib"],
|
|
5103
|
+
extra_compiler_flags=[])
|
|
5104
|
+
|
|
5105
|
+
|
|
5079
5106
|
cpp_unittest_wrapper(name="fault_injection_test",
|
|
5080
5107
|
srcs=["db/fault_injection_test.cc"],
|
|
5081
5108
|
deps=[":rocksdb_test_lib"],
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
# 3. cmake ..
|
|
33
33
|
# 4. make -j
|
|
34
34
|
|
|
35
|
-
cmake_minimum_required(VERSION 3.
|
|
35
|
+
cmake_minimum_required(VERSION 3.12)
|
|
36
36
|
|
|
37
37
|
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake/modules/")
|
|
38
38
|
include(ReadVersion)
|
|
@@ -716,6 +716,7 @@ set(SOURCES
|
|
|
716
716
|
db/log_reader.cc
|
|
717
717
|
db/log_writer.cc
|
|
718
718
|
db/malloc_stats.cc
|
|
719
|
+
db/manifest_ops.cc
|
|
719
720
|
db/memtable.cc
|
|
720
721
|
db/memtable_list.cc
|
|
721
722
|
db/merge_helper.cc
|
|
@@ -779,6 +780,7 @@ set(SOURCES
|
|
|
779
780
|
memtable/hash_skiplist_rep.cc
|
|
780
781
|
memtable/skiplistrep.cc
|
|
781
782
|
memtable/vectorrep.cc
|
|
783
|
+
memtable/wbwi_memtable.cc
|
|
782
784
|
memtable/write_buffer_manager.cc
|
|
783
785
|
monitoring/histogram.cc
|
|
784
786
|
monitoring/histogram_windowing.cc
|
|
@@ -659,7 +659,7 @@ ifneq ($(filter check-headers, $(MAKECMDGOALS)),)
|
|
|
659
659
|
# TODO: add/support JNI headers
|
|
660
660
|
DEV_HEADER_DIRS := $(sort include/ $(dir $(ALL_SOURCES)))
|
|
661
661
|
# Some headers like in port/ are platform-specific
|
|
662
|
-
DEV_HEADERS_TO_CHECK := $(shell $(FIND) $(DEV_HEADER_DIRS) -type f -name '*.h' | grep -E -v 'port/|plugin/|lua/|range_tree/')
|
|
662
|
+
DEV_HEADERS_TO_CHECK := $(shell $(FIND) $(DEV_HEADER_DIRS) -type f -name '*.h' | grep -E -v 'port/|plugin/|lua/|range_tree/|secondary_index/')
|
|
663
663
|
PUBLIC_HEADERS_TO_CHECK := $(shell $(FIND) include/ -type f -name '*.h' | grep -E -v 'lua/')
|
|
664
664
|
else
|
|
665
665
|
DEV_HEADERS_TO_CHECK :=
|
|
@@ -2489,7 +2489,7 @@ checkout_folly:
|
|
|
2489
2489
|
fi
|
|
2490
2490
|
@# Pin to a particular version for public CI, so that PR authors don't
|
|
2491
2491
|
@# need to worry about folly breaking our integration. Update periodically
|
|
2492
|
-
cd third-party/folly && git reset --hard
|
|
2492
|
+
cd third-party/folly && git reset --hard 33f5b67fcaeb8705b04fd1b850873a180dc89aaa
|
|
2493
2493
|
@# NOTE: this hack is required for clang in some cases
|
|
2494
2494
|
perl -pi -e 's/int rv = syscall/int rv = (int)syscall/' third-party/folly/folly/detail/Futex.cpp
|
|
2495
2495
|
@# NOTE: this hack is required for gcc in some cases
|
|
@@ -133,7 +133,9 @@ Status Cache::CreateFromString(const ConfigOptions& config_options,
|
|
|
133
133
|
std::shared_ptr<Cache>* result) {
|
|
134
134
|
Status status;
|
|
135
135
|
std::shared_ptr<Cache> cache;
|
|
136
|
-
if (value
|
|
136
|
+
if (StartsWith(value, "null")) {
|
|
137
|
+
cache = nullptr;
|
|
138
|
+
} else if (value.find("://") == std::string::npos) {
|
|
137
139
|
if (value.find('=') == std::string::npos) {
|
|
138
140
|
cache = NewLRUCache(ParseSizeT(value));
|
|
139
141
|
} else {
|
|
@@ -83,6 +83,8 @@ class ArenaWrappedDBIter : public Iterator {
|
|
|
83
83
|
Status Refresh() override;
|
|
84
84
|
Status Refresh(const Snapshot*) override;
|
|
85
85
|
|
|
86
|
+
bool PrepareValue() override { return db_iter_->PrepareValue(); }
|
|
87
|
+
|
|
86
88
|
void Init(Env* env, const ReadOptions& read_options,
|
|
87
89
|
const ImmutableOptions& ioptions,
|
|
88
90
|
const MutableCFOptions& mutable_cf_options, const Version* version,
|
|
@@ -13,14 +13,11 @@ namespace ROCKSDB_NAMESPACE {
|
|
|
13
13
|
class AttributeGroupIteratorImpl : public AttributeGroupIterator {
|
|
14
14
|
public:
|
|
15
15
|
AttributeGroupIteratorImpl(
|
|
16
|
-
const Comparator* comparator,
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
: impl_(
|
|
20
|
-
|
|
21
|
-
[this](const autovector<MultiCfIteratorInfo>& items) {
|
|
22
|
-
AddToAttributeGroups(items);
|
|
23
|
-
}) {}
|
|
16
|
+
const ReadOptions& read_options, const Comparator* comparator,
|
|
17
|
+
std::vector<std::pair<ColumnFamilyHandle*, std::unique_ptr<Iterator>>>&&
|
|
18
|
+
cfh_iter_pairs)
|
|
19
|
+
: impl_(read_options, comparator, std::move(cfh_iter_pairs),
|
|
20
|
+
ResetFunc(this), PopulateFunc(this)) {}
|
|
24
21
|
~AttributeGroupIteratorImpl() override {}
|
|
25
22
|
|
|
26
23
|
// No copy allowed
|
|
@@ -45,8 +42,36 @@ class AttributeGroupIteratorImpl : public AttributeGroupIterator {
|
|
|
45
42
|
|
|
46
43
|
void Reset() { attribute_groups_.clear(); }
|
|
47
44
|
|
|
45
|
+
bool PrepareValue() override { return impl_.PrepareValue(); }
|
|
46
|
+
|
|
48
47
|
private:
|
|
49
|
-
|
|
48
|
+
class ResetFunc {
|
|
49
|
+
public:
|
|
50
|
+
explicit ResetFunc(AttributeGroupIteratorImpl* iter) : iter_(iter) {}
|
|
51
|
+
|
|
52
|
+
void operator()() const {
|
|
53
|
+
assert(iter_);
|
|
54
|
+
iter_->Reset();
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
private:
|
|
58
|
+
AttributeGroupIteratorImpl* iter_;
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
class PopulateFunc {
|
|
62
|
+
public:
|
|
63
|
+
explicit PopulateFunc(AttributeGroupIteratorImpl* iter) : iter_(iter) {}
|
|
64
|
+
|
|
65
|
+
void operator()(const autovector<MultiCfIteratorInfo>& items) const {
|
|
66
|
+
assert(iter_);
|
|
67
|
+
iter_->AddToAttributeGroups(items);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
private:
|
|
71
|
+
AttributeGroupIteratorImpl* iter_;
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
MultiCfIteratorImpl<ResetFunc, PopulateFunc> impl_;
|
|
50
75
|
IteratorAttributeGroups attribute_groups_;
|
|
51
76
|
void AddToAttributeGroups(const autovector<MultiCfIteratorInfo>& items);
|
|
52
77
|
};
|
|
@@ -20,23 +20,24 @@
|
|
|
20
20
|
|
|
21
21
|
namespace ROCKSDB_NAMESPACE {
|
|
22
22
|
|
|
23
|
-
BlobSource::BlobSource(const ImmutableOptions
|
|
23
|
+
BlobSource::BlobSource(const ImmutableOptions& immutable_options,
|
|
24
|
+
const MutableCFOptions& mutable_cf_options,
|
|
24
25
|
const std::string& db_id,
|
|
25
26
|
const std::string& db_session_id,
|
|
26
27
|
BlobFileCache* blob_file_cache)
|
|
27
28
|
: db_id_(db_id),
|
|
28
29
|
db_session_id_(db_session_id),
|
|
29
|
-
statistics_(immutable_options
|
|
30
|
+
statistics_(immutable_options.statistics.get()),
|
|
30
31
|
blob_file_cache_(blob_file_cache),
|
|
31
|
-
blob_cache_(immutable_options
|
|
32
|
-
lowest_used_cache_tier_(immutable_options
|
|
32
|
+
blob_cache_(immutable_options.blob_cache),
|
|
33
|
+
lowest_used_cache_tier_(immutable_options.lowest_used_cache_tier) {
|
|
33
34
|
auto bbto =
|
|
34
|
-
|
|
35
|
+
mutable_cf_options.table_factory->GetOptions<BlockBasedTableOptions>();
|
|
35
36
|
if (bbto &&
|
|
36
37
|
bbto->cache_usage_options.options_overrides.at(CacheEntryRole::kBlobCache)
|
|
37
38
|
.charged == CacheEntryRoleOptions::Decision::kEnabled) {
|
|
38
39
|
blob_cache_ = SharedCacheInterface{std::make_shared<ChargedCache>(
|
|
39
|
-
immutable_options
|
|
40
|
+
immutable_options.blob_cache, bbto->block_cache)};
|
|
40
41
|
}
|
|
41
42
|
}
|
|
42
43
|
|
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
namespace ROCKSDB_NAMESPACE {
|
|
22
22
|
|
|
23
23
|
struct ImmutableOptions;
|
|
24
|
+
struct MutableCFOptions;
|
|
24
25
|
class Status;
|
|
25
26
|
class FilePrefetchBuffer;
|
|
26
27
|
class Slice;
|
|
@@ -31,7 +32,10 @@ class Slice;
|
|
|
31
32
|
// storage with minimal cost.
|
|
32
33
|
class BlobSource {
|
|
33
34
|
public:
|
|
34
|
-
|
|
35
|
+
// NOTE: db_id, db_session_id, and blob_file_cache are saved by reference or
|
|
36
|
+
// pointer.
|
|
37
|
+
BlobSource(const ImmutableOptions& immutable_options,
|
|
38
|
+
const MutableCFOptions& mutable_cf_options,
|
|
35
39
|
const std::string& db_id, const std::string& db_session_id,
|
|
36
40
|
BlobFileCache* blob_file_cache);
|
|
37
41
|
|
|
@@ -148,6 +148,7 @@ TEST_F(BlobSourceTest, GetBlobsFromCache) {
|
|
|
148
148
|
DestroyAndReopen(options_);
|
|
149
149
|
|
|
150
150
|
ImmutableOptions immutable_options(options_);
|
|
151
|
+
MutableCFOptions mutable_cf_options(options_);
|
|
151
152
|
|
|
152
153
|
constexpr uint32_t column_family_id = 1;
|
|
153
154
|
constexpr bool has_ttl = false;
|
|
@@ -193,8 +194,8 @@ TEST_F(BlobSourceTest, GetBlobsFromCache) {
|
|
|
193
194
|
backing_cache.get(), &immutable_options, &file_options,
|
|
194
195
|
column_family_id, blob_file_read_hist, nullptr /*IOTracer*/);
|
|
195
196
|
|
|
196
|
-
BlobSource blob_source(
|
|
197
|
-
blob_file_cache.get());
|
|
197
|
+
BlobSource blob_source(immutable_options, mutable_cf_options, db_id_,
|
|
198
|
+
db_session_id_, blob_file_cache.get());
|
|
198
199
|
|
|
199
200
|
ReadOptions read_options;
|
|
200
201
|
read_options.verify_checksums = true;
|
|
@@ -464,6 +465,7 @@ TEST_F(BlobSourceTest, GetCompressedBlobs) {
|
|
|
464
465
|
DestroyAndReopen(options_);
|
|
465
466
|
|
|
466
467
|
ImmutableOptions immutable_options(options_);
|
|
468
|
+
MutableCFOptions mutable_cf_options(options_);
|
|
467
469
|
|
|
468
470
|
constexpr uint32_t column_family_id = 1;
|
|
469
471
|
constexpr bool has_ttl = false;
|
|
@@ -498,8 +500,8 @@ TEST_F(BlobSourceTest, GetCompressedBlobs) {
|
|
|
498
500
|
backing_cache.get(), &immutable_options, &file_options,
|
|
499
501
|
column_family_id, nullptr /*HistogramImpl*/, nullptr /*IOTracer*/);
|
|
500
502
|
|
|
501
|
-
BlobSource blob_source(
|
|
502
|
-
blob_file_cache.get());
|
|
503
|
+
BlobSource blob_source(immutable_options, mutable_cf_options, db_id_,
|
|
504
|
+
db_session_id_, blob_file_cache.get());
|
|
503
505
|
|
|
504
506
|
ReadOptions read_options;
|
|
505
507
|
read_options.verify_checksums = true;
|
|
@@ -589,6 +591,7 @@ TEST_F(BlobSourceTest, MultiGetBlobsFromMultiFiles) {
|
|
|
589
591
|
DestroyAndReopen(options_);
|
|
590
592
|
|
|
591
593
|
ImmutableOptions immutable_options(options_);
|
|
594
|
+
MutableCFOptions mutable_cf_options(options_);
|
|
592
595
|
|
|
593
596
|
constexpr uint32_t column_family_id = 1;
|
|
594
597
|
constexpr bool has_ttl = false;
|
|
@@ -644,8 +647,8 @@ TEST_F(BlobSourceTest, MultiGetBlobsFromMultiFiles) {
|
|
|
644
647
|
backing_cache.get(), &immutable_options, &file_options,
|
|
645
648
|
column_family_id, blob_file_read_hist, nullptr /*IOTracer*/);
|
|
646
649
|
|
|
647
|
-
BlobSource blob_source(
|
|
648
|
-
blob_file_cache.get());
|
|
650
|
+
BlobSource blob_source(immutable_options, mutable_cf_options, db_id_,
|
|
651
|
+
db_session_id_, blob_file_cache.get());
|
|
649
652
|
|
|
650
653
|
ReadOptions read_options;
|
|
651
654
|
read_options.verify_checksums = true;
|
|
@@ -782,6 +785,7 @@ TEST_F(BlobSourceTest, MultiGetBlobsFromCache) {
|
|
|
782
785
|
DestroyAndReopen(options_);
|
|
783
786
|
|
|
784
787
|
ImmutableOptions immutable_options(options_);
|
|
788
|
+
MutableCFOptions mutable_cf_options(options_);
|
|
785
789
|
|
|
786
790
|
constexpr uint32_t column_family_id = 1;
|
|
787
791
|
constexpr bool has_ttl = false;
|
|
@@ -827,8 +831,8 @@ TEST_F(BlobSourceTest, MultiGetBlobsFromCache) {
|
|
|
827
831
|
backing_cache.get(), &immutable_options, &file_options,
|
|
828
832
|
column_family_id, blob_file_read_hist, nullptr /*IOTracer*/);
|
|
829
833
|
|
|
830
|
-
BlobSource blob_source(
|
|
831
|
-
blob_file_cache.get());
|
|
834
|
+
BlobSource blob_source(immutable_options, mutable_cf_options, db_id_,
|
|
835
|
+
db_session_id_, blob_file_cache.get());
|
|
832
836
|
|
|
833
837
|
ReadOptions read_options;
|
|
834
838
|
read_options.verify_checksums = true;
|
|
@@ -1105,6 +1109,7 @@ TEST_F(BlobSecondaryCacheTest, GetBlobsFromSecondaryCache) {
|
|
|
1105
1109
|
DestroyAndReopen(options_);
|
|
1106
1110
|
|
|
1107
1111
|
ImmutableOptions immutable_options(options_);
|
|
1112
|
+
MutableCFOptions mutable_cf_options(options_);
|
|
1108
1113
|
|
|
1109
1114
|
constexpr uint32_t column_family_id = 1;
|
|
1110
1115
|
constexpr bool has_ttl = false;
|
|
@@ -1137,8 +1142,8 @@ TEST_F(BlobSecondaryCacheTest, GetBlobsFromSecondaryCache) {
|
|
|
1137
1142
|
backing_cache.get(), &immutable_options, &file_options, column_family_id,
|
|
1138
1143
|
blob_file_read_hist, nullptr /*IOTracer*/));
|
|
1139
1144
|
|
|
1140
|
-
BlobSource blob_source(
|
|
1141
|
-
blob_file_cache.get());
|
|
1145
|
+
BlobSource blob_source(immutable_options, mutable_cf_options, db_id_,
|
|
1146
|
+
db_session_id_, blob_file_cache.get());
|
|
1142
1147
|
|
|
1143
1148
|
CacheHandleGuard<BlobFileReader> file_reader;
|
|
1144
1149
|
ReadOptions read_options;
|
|
@@ -1405,6 +1410,7 @@ TEST_F(BlobSourceCacheReservationTest, SimpleCacheReservation) {
|
|
|
1405
1410
|
DestroyAndReopen(options_);
|
|
1406
1411
|
|
|
1407
1412
|
ImmutableOptions immutable_options(options_);
|
|
1413
|
+
MutableCFOptions mutable_cf_options(options_);
|
|
1408
1414
|
|
|
1409
1415
|
constexpr ExpirationRange expiration_range;
|
|
1410
1416
|
|
|
@@ -1426,8 +1432,8 @@ TEST_F(BlobSourceCacheReservationTest, SimpleCacheReservation) {
|
|
|
1426
1432
|
backing_cache.get(), &immutable_options, &file_options,
|
|
1427
1433
|
kColumnFamilyId, blob_file_read_hist, nullptr /*IOTracer*/);
|
|
1428
1434
|
|
|
1429
|
-
BlobSource blob_source(
|
|
1430
|
-
blob_file_cache.get());
|
|
1435
|
+
BlobSource blob_source(immutable_options, mutable_cf_options, db_id_,
|
|
1436
|
+
db_session_id_, blob_file_cache.get());
|
|
1431
1437
|
|
|
1432
1438
|
ConcurrentCacheReservationManager* cache_res_mgr =
|
|
1433
1439
|
static_cast<ChargedCache*>(blob_source.GetBlobCache())
|
|
@@ -1519,6 +1525,8 @@ TEST_F(BlobSourceCacheReservationTest, IncreaseCacheReservation) {
|
|
|
1519
1525
|
DestroyAndReopen(options_);
|
|
1520
1526
|
|
|
1521
1527
|
ImmutableOptions immutable_options(options_);
|
|
1528
|
+
MutableCFOptions mutable_cf_options(options_);
|
|
1529
|
+
|
|
1522
1530
|
constexpr size_t blob_size = 24 << 10; // 24KB
|
|
1523
1531
|
for (size_t i = 0; i < kNumBlobs; ++i) {
|
|
1524
1532
|
blob_file_size_ -= blobs_[i].size(); // old blob size
|
|
@@ -1546,8 +1554,8 @@ TEST_F(BlobSourceCacheReservationTest, IncreaseCacheReservation) {
|
|
|
1546
1554
|
backing_cache.get(), &immutable_options, &file_options,
|
|
1547
1555
|
kColumnFamilyId, blob_file_read_hist, nullptr /*IOTracer*/);
|
|
1548
1556
|
|
|
1549
|
-
BlobSource blob_source(
|
|
1550
|
-
blob_file_cache.get());
|
|
1557
|
+
BlobSource blob_source(immutable_options, mutable_cf_options, db_id_,
|
|
1558
|
+
db_session_id_, blob_file_cache.get());
|
|
1551
1559
|
|
|
1552
1560
|
ConcurrentCacheReservationManager* cache_res_mgr =
|
|
1553
1561
|
static_cast<ChargedCache*>(blob_source.GetBlobCache())
|
|
@@ -374,6 +374,115 @@ TEST_F(DBBlobBasicTest, IterateBlobsFromCachePinning) {
|
|
|
374
374
|
}
|
|
375
375
|
}
|
|
376
376
|
|
|
377
|
+
TEST_F(DBBlobBasicTest, IterateBlobsAllowUnpreparedValue) {
|
|
378
|
+
Options options = GetDefaultOptions();
|
|
379
|
+
options.enable_blob_files = true;
|
|
380
|
+
|
|
381
|
+
Reopen(options);
|
|
382
|
+
|
|
383
|
+
constexpr size_t num_blobs = 5;
|
|
384
|
+
std::vector<std::string> keys;
|
|
385
|
+
std::vector<std::string> blobs;
|
|
386
|
+
|
|
387
|
+
for (size_t i = 0; i < num_blobs; ++i) {
|
|
388
|
+
keys.emplace_back("key" + std::to_string(i));
|
|
389
|
+
blobs.emplace_back("blob" + std::to_string(i));
|
|
390
|
+
ASSERT_OK(Put(keys[i], blobs[i]));
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
ASSERT_OK(Flush());
|
|
394
|
+
|
|
395
|
+
ReadOptions read_options;
|
|
396
|
+
read_options.allow_unprepared_value = true;
|
|
397
|
+
|
|
398
|
+
std::unique_ptr<Iterator> iter(db_->NewIterator(read_options));
|
|
399
|
+
|
|
400
|
+
{
|
|
401
|
+
size_t i = 0;
|
|
402
|
+
|
|
403
|
+
for (iter->SeekToFirst(); iter->Valid(); iter->Next()) {
|
|
404
|
+
ASSERT_EQ(iter->key(), keys[i]);
|
|
405
|
+
ASSERT_TRUE(iter->value().empty());
|
|
406
|
+
ASSERT_OK(iter->status());
|
|
407
|
+
|
|
408
|
+
ASSERT_TRUE(iter->PrepareValue());
|
|
409
|
+
|
|
410
|
+
ASSERT_EQ(iter->key(), keys[i]);
|
|
411
|
+
ASSERT_EQ(iter->value(), blobs[i]);
|
|
412
|
+
ASSERT_OK(iter->status());
|
|
413
|
+
|
|
414
|
+
++i;
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
ASSERT_OK(iter->status());
|
|
418
|
+
ASSERT_EQ(i, num_blobs);
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
{
|
|
422
|
+
size_t i = 0;
|
|
423
|
+
|
|
424
|
+
for (iter->SeekToLast(); iter->Valid(); iter->Prev()) {
|
|
425
|
+
ASSERT_EQ(iter->key(), keys[num_blobs - 1 - i]);
|
|
426
|
+
ASSERT_TRUE(iter->value().empty());
|
|
427
|
+
ASSERT_OK(iter->status());
|
|
428
|
+
|
|
429
|
+
ASSERT_TRUE(iter->PrepareValue());
|
|
430
|
+
|
|
431
|
+
ASSERT_EQ(iter->key(), keys[num_blobs - 1 - i]);
|
|
432
|
+
ASSERT_EQ(iter->value(), blobs[num_blobs - 1 - i]);
|
|
433
|
+
ASSERT_OK(iter->status());
|
|
434
|
+
|
|
435
|
+
++i;
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
ASSERT_OK(iter->status());
|
|
439
|
+
ASSERT_EQ(i, num_blobs);
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
{
|
|
443
|
+
size_t i = 1;
|
|
444
|
+
|
|
445
|
+
for (iter->Seek(keys[i]); iter->Valid(); iter->Next()) {
|
|
446
|
+
ASSERT_EQ(iter->key(), keys[i]);
|
|
447
|
+
ASSERT_TRUE(iter->value().empty());
|
|
448
|
+
ASSERT_OK(iter->status());
|
|
449
|
+
|
|
450
|
+
ASSERT_TRUE(iter->PrepareValue());
|
|
451
|
+
|
|
452
|
+
ASSERT_EQ(iter->key(), keys[i]);
|
|
453
|
+
ASSERT_EQ(iter->value(), blobs[i]);
|
|
454
|
+
ASSERT_OK(iter->status());
|
|
455
|
+
|
|
456
|
+
++i;
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
ASSERT_OK(iter->status());
|
|
460
|
+
ASSERT_EQ(i, num_blobs);
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
{
|
|
464
|
+
size_t i = 1;
|
|
465
|
+
|
|
466
|
+
for (iter->SeekForPrev(keys[num_blobs - 1 - i]); iter->Valid();
|
|
467
|
+
iter->Prev()) {
|
|
468
|
+
ASSERT_EQ(iter->key(), keys[num_blobs - 1 - i]);
|
|
469
|
+
ASSERT_TRUE(iter->value().empty());
|
|
470
|
+
ASSERT_OK(iter->status());
|
|
471
|
+
|
|
472
|
+
ASSERT_TRUE(iter->PrepareValue());
|
|
473
|
+
|
|
474
|
+
ASSERT_EQ(iter->key(), keys[num_blobs - 1 - i]);
|
|
475
|
+
ASSERT_EQ(iter->value(), blobs[num_blobs - 1 - i]);
|
|
476
|
+
ASSERT_OK(iter->status());
|
|
477
|
+
|
|
478
|
+
++i;
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
ASSERT_OK(iter->status());
|
|
482
|
+
ASSERT_EQ(i, num_blobs);
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
|
|
377
486
|
TEST_F(DBBlobBasicTest, MultiGetBlobs) {
|
|
378
487
|
constexpr size_t min_blob_size = 6;
|
|
379
488
|
|
|
@@ -1655,6 +1764,46 @@ TEST_P(DBBlobBasicIOErrorTest, CompactionFilterReadBlob_IOError) {
|
|
|
1655
1764
|
SyncPoint::GetInstance()->ClearAllCallBacks();
|
|
1656
1765
|
}
|
|
1657
1766
|
|
|
1767
|
+
TEST_P(DBBlobBasicIOErrorTest, IterateBlobsAllowUnpreparedValue_IOError) {
|
|
1768
|
+
Options options;
|
|
1769
|
+
options.env = fault_injection_env_.get();
|
|
1770
|
+
options.enable_blob_files = true;
|
|
1771
|
+
|
|
1772
|
+
Reopen(options);
|
|
1773
|
+
|
|
1774
|
+
constexpr char key[] = "key";
|
|
1775
|
+
constexpr char blob_value[] = "blob_value";
|
|
1776
|
+
|
|
1777
|
+
ASSERT_OK(Put(key, blob_value));
|
|
1778
|
+
|
|
1779
|
+
ASSERT_OK(Flush());
|
|
1780
|
+
|
|
1781
|
+
SyncPoint::GetInstance()->SetCallBack(sync_point_, [this](void* /* arg */) {
|
|
1782
|
+
fault_injection_env_->SetFilesystemActive(false,
|
|
1783
|
+
Status::IOError(sync_point_));
|
|
1784
|
+
});
|
|
1785
|
+
SyncPoint::GetInstance()->EnableProcessing();
|
|
1786
|
+
|
|
1787
|
+
ReadOptions read_options;
|
|
1788
|
+
read_options.allow_unprepared_value = true;
|
|
1789
|
+
|
|
1790
|
+
std::unique_ptr<Iterator> iter(db_->NewIterator(read_options));
|
|
1791
|
+
iter->SeekToFirst();
|
|
1792
|
+
|
|
1793
|
+
ASSERT_TRUE(iter->Valid());
|
|
1794
|
+
ASSERT_EQ(iter->key(), key);
|
|
1795
|
+
ASSERT_TRUE(iter->value().empty());
|
|
1796
|
+
ASSERT_OK(iter->status());
|
|
1797
|
+
|
|
1798
|
+
ASSERT_FALSE(iter->PrepareValue());
|
|
1799
|
+
|
|
1800
|
+
ASSERT_FALSE(iter->Valid());
|
|
1801
|
+
ASSERT_TRUE(iter->status().IsIOError());
|
|
1802
|
+
|
|
1803
|
+
SyncPoint::GetInstance()->DisableProcessing();
|
|
1804
|
+
SyncPoint::GetInstance()->ClearAllCallBacks();
|
|
1805
|
+
}
|
|
1806
|
+
|
|
1658
1807
|
TEST_F(DBBlobBasicTest, WarmCacheWithBlobsDuringFlush) {
|
|
1659
1808
|
Options options = GetDefaultOptions();
|
|
1660
1809
|
|