@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
|
@@ -19,8 +19,6 @@
|
|
|
19
19
|
|
|
20
20
|
ROCKSDB_NAMESPACE::Env* db_stress_listener_env = nullptr;
|
|
21
21
|
ROCKSDB_NAMESPACE::Env* db_stress_env = nullptr;
|
|
22
|
-
// If non-null, injects read error at a rate specified by the
|
|
23
|
-
// read_fault_one_in or write_fault_one_in flag
|
|
24
22
|
std::shared_ptr<ROCKSDB_NAMESPACE::FaultInjectionTestFS> fault_fs_guard;
|
|
25
23
|
std::shared_ptr<ROCKSDB_NAMESPACE::SecondaryCache> compressed_secondary_cache;
|
|
26
24
|
std::shared_ptr<ROCKSDB_NAMESPACE::Cache> block_cache;
|
|
@@ -200,7 +198,7 @@ void CompressedCacheSetCapacityThread(void* v) {
|
|
|
200
198
|
// Lower by upto 50% of usable block cache capacity
|
|
201
199
|
adjustment = (adjustment * thread->rand.Uniform(50)) / 100;
|
|
202
200
|
block_cache->SetCapacity(capacity - adjustment);
|
|
203
|
-
fprintf(stdout, "New cache capacity = %
|
|
201
|
+
fprintf(stdout, "New cache capacity = %zu\n",
|
|
204
202
|
block_cache->GetCapacity());
|
|
205
203
|
db_stress_env->SleepForMicroseconds(10 * 1000 * 1000);
|
|
206
204
|
block_cache->SetCapacity(capacity);
|
|
@@ -395,6 +393,16 @@ bool VerifyWideColumns(const WideColumns& columns) {
|
|
|
395
393
|
return VerifyWideColumns(value_of_default, columns);
|
|
396
394
|
}
|
|
397
395
|
|
|
396
|
+
bool VerifyIteratorAttributeGroups(
|
|
397
|
+
const IteratorAttributeGroups& attribute_groups) {
|
|
398
|
+
for (const auto& attribute_group : attribute_groups) {
|
|
399
|
+
if (!VerifyWideColumns(attribute_group.columns())) {
|
|
400
|
+
return false;
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
return true;
|
|
404
|
+
}
|
|
405
|
+
|
|
398
406
|
std::string GetNowNanos() {
|
|
399
407
|
uint64_t t = db_stress_env->NowNanos();
|
|
400
408
|
std::string ret;
|
|
@@ -89,7 +89,6 @@ DECLARE_string(options_file);
|
|
|
89
89
|
DECLARE_int64(active_width);
|
|
90
90
|
DECLARE_bool(test_batches_snapshots);
|
|
91
91
|
DECLARE_bool(atomic_flush);
|
|
92
|
-
DECLARE_int32(manual_wal_flush_one_in);
|
|
93
92
|
DECLARE_int32(lock_wal_one_in);
|
|
94
93
|
DECLARE_bool(test_cf_consistency);
|
|
95
94
|
DECLARE_bool(test_multi_ops_txns);
|
|
@@ -136,6 +135,7 @@ DECLARE_int32(universal_size_ratio);
|
|
|
136
135
|
DECLARE_int32(universal_min_merge_width);
|
|
137
136
|
DECLARE_int32(universal_max_merge_width);
|
|
138
137
|
DECLARE_int32(universal_max_size_amplification_percent);
|
|
138
|
+
DECLARE_int32(universal_max_read_amp);
|
|
139
139
|
DECLARE_int32(clear_column_family_one_in);
|
|
140
140
|
DECLARE_int32(get_live_files_apis_one_in);
|
|
141
141
|
DECLARE_int32(get_all_column_family_metadata_one_in);
|
|
@@ -169,6 +169,9 @@ DECLARE_int32(bloom_before_level);
|
|
|
169
169
|
DECLARE_bool(partition_filters);
|
|
170
170
|
DECLARE_bool(optimize_filters_for_memory);
|
|
171
171
|
DECLARE_bool(detect_filter_construct_corruption);
|
|
172
|
+
DECLARE_string(sqfc_name);
|
|
173
|
+
DECLARE_uint32(sqfc_version);
|
|
174
|
+
DECLARE_bool(use_sqfc_for_range_queries);
|
|
172
175
|
DECLARE_int32(index_type);
|
|
173
176
|
DECLARE_int32(data_block_index_type);
|
|
174
177
|
DECLARE_string(db);
|
|
@@ -189,7 +192,6 @@ DECLARE_uint64(bytes_per_sync);
|
|
|
189
192
|
DECLARE_uint64(wal_bytes_per_sync);
|
|
190
193
|
DECLARE_int32(kill_random_test);
|
|
191
194
|
DECLARE_string(kill_exclude_prefixes);
|
|
192
|
-
DECLARE_bool(disable_wal);
|
|
193
195
|
DECLARE_uint64(recycle_log_file_num);
|
|
194
196
|
DECLARE_int64(target_file_size_base);
|
|
195
197
|
DECLARE_int32(target_file_size_multiplier);
|
|
@@ -254,6 +256,7 @@ DECLARE_int32(prefix_size);
|
|
|
254
256
|
DECLARE_bool(use_merge);
|
|
255
257
|
DECLARE_uint32(use_put_entity_one_in);
|
|
256
258
|
DECLARE_bool(use_attribute_group);
|
|
259
|
+
DECLARE_bool(use_multi_cf_iterator);
|
|
257
260
|
DECLARE_bool(use_full_merge_v1);
|
|
258
261
|
DECLARE_int32(sync_wal_one_in);
|
|
259
262
|
DECLARE_bool(avoid_unnecessary_blocking_io);
|
|
@@ -314,8 +317,6 @@ DECLARE_int32(blob_cache_numshardbits);
|
|
|
314
317
|
DECLARE_int32(prepopulate_blob_cache);
|
|
315
318
|
|
|
316
319
|
DECLARE_int32(approximate_size_one_in);
|
|
317
|
-
DECLARE_bool(sync_fault_injection);
|
|
318
|
-
|
|
319
320
|
DECLARE_bool(best_efforts_recovery);
|
|
320
321
|
DECLARE_bool(skip_verifydb);
|
|
321
322
|
DECLARE_bool(enable_compaction_filter);
|
|
@@ -415,6 +416,7 @@ DECLARE_bool(enable_memtable_insert_with_hint_prefix_extractor);
|
|
|
415
416
|
DECLARE_bool(check_multiget_consistency);
|
|
416
417
|
DECLARE_bool(check_multiget_entity_consistency);
|
|
417
418
|
DECLARE_bool(inplace_update_support);
|
|
419
|
+
DECLARE_uint32(uncache_aggressiveness);
|
|
418
420
|
|
|
419
421
|
constexpr long KB = 1024;
|
|
420
422
|
constexpr int kRandomValueMaxFactor = 3;
|
|
@@ -761,6 +763,8 @@ WideColumns GenerateExpectedWideColumns(uint32_t value_base,
|
|
|
761
763
|
const Slice& slice);
|
|
762
764
|
bool VerifyWideColumns(const Slice& value, const WideColumns& columns);
|
|
763
765
|
bool VerifyWideColumns(const WideColumns& columns);
|
|
766
|
+
bool VerifyIteratorAttributeGroups(
|
|
767
|
+
const IteratorAttributeGroups& attribute_groups);
|
|
764
768
|
|
|
765
769
|
AttributeGroups GenerateAttributeGroups(
|
|
766
770
|
const std::vector<ColumnFamilyHandle*>& cfhs, uint32_t value_base,
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
// found in the LICENSE file. See the AUTHORS file for names of contributors.
|
|
9
9
|
//
|
|
10
10
|
|
|
11
|
+
#include "db_stress_tool/db_stress_shared_state.h"
|
|
11
12
|
#ifdef GFLAGS
|
|
12
13
|
#include "db_stress_tool/db_stress_common.h"
|
|
13
14
|
#include "utilities/fault_injection_fs.h"
|
|
@@ -81,31 +82,6 @@ bool RunStressTestImpl(SharedState* shared) {
|
|
|
81
82
|
stress->InitDb(shared);
|
|
82
83
|
stress->FinishInitDb(shared);
|
|
83
84
|
|
|
84
|
-
if (FLAGS_write_fault_one_in) {
|
|
85
|
-
if (!FLAGS_sync_fault_injection) {
|
|
86
|
-
// unsynced WAL loss is not supported without sync_fault_injection
|
|
87
|
-
fault_fs_guard->SetDirectWritableTypes({kWalFile});
|
|
88
|
-
}
|
|
89
|
-
IOStatus error_msg;
|
|
90
|
-
if (FLAGS_inject_error_severity <= 1 || FLAGS_inject_error_severity > 2) {
|
|
91
|
-
error_msg = IOStatus::IOError("Retryable injected write error");
|
|
92
|
-
error_msg.SetRetryable(true);
|
|
93
|
-
} else if (FLAGS_inject_error_severity == 2) {
|
|
94
|
-
error_msg = IOStatus::IOError("Fatal injected write error");
|
|
95
|
-
error_msg.SetDataLoss(true);
|
|
96
|
-
}
|
|
97
|
-
// TODO: inject write error for other file types including
|
|
98
|
-
// MANIFEST, CURRENT, and WAL files.
|
|
99
|
-
fault_fs_guard->SetRandomWriteError(
|
|
100
|
-
shared->GetSeed(), FLAGS_write_fault_one_in, error_msg,
|
|
101
|
-
/*inject_for_all_file_types=*/false, {FileType::kTableFile});
|
|
102
|
-
fault_fs_guard->SetFilesystemDirectWritable(false);
|
|
103
|
-
fault_fs_guard->EnableWriteErrorInjection();
|
|
104
|
-
}
|
|
105
|
-
if (FLAGS_sync_fault_injection) {
|
|
106
|
-
fault_fs_guard->SetFilesystemDirectWritable(false);
|
|
107
|
-
}
|
|
108
|
-
|
|
109
85
|
uint32_t n = FLAGS_threads;
|
|
110
86
|
uint64_t now = clock->NowMicros();
|
|
111
87
|
fprintf(stdout, "%s Initializing worker threads\n",
|
|
@@ -182,6 +158,15 @@ bool RunStressTestImpl(SharedState* shared) {
|
|
|
182
158
|
if (!FLAGS_expected_values_dir.empty()) {
|
|
183
159
|
stress->TrackExpectedState(shared);
|
|
184
160
|
}
|
|
161
|
+
|
|
162
|
+
if (FLAGS_sync_fault_injection || FLAGS_write_fault_one_in > 0) {
|
|
163
|
+
fault_fs_guard->SetFilesystemDirectWritable(false);
|
|
164
|
+
fault_fs_guard->SetInjectUnsyncedDataLoss(FLAGS_sync_fault_injection);
|
|
165
|
+
if (FLAGS_exclude_wal_from_write_fault_injection) {
|
|
166
|
+
fault_fs_guard->SetFileTypesExcludedFromWriteFaultInjection(
|
|
167
|
+
{FileType::kWalFile});
|
|
168
|
+
}
|
|
169
|
+
}
|
|
185
170
|
now = clock->NowMicros();
|
|
186
171
|
fprintf(stdout, "%s Starting database operations\n",
|
|
187
172
|
clock->TimeToString(now / 1000000).c_str());
|
|
@@ -13,6 +13,20 @@
|
|
|
13
13
|
#include "monitoring/thread_status_util.h"
|
|
14
14
|
|
|
15
15
|
namespace ROCKSDB_NAMESPACE {
|
|
16
|
+
namespace {
|
|
17
|
+
void CheckIOActivity(const IOOptions& options) {
|
|
18
|
+
#ifndef NDEBUG
|
|
19
|
+
const ThreadStatus::OperationType thread_op =
|
|
20
|
+
ThreadStatusUtil::GetThreadOperation();
|
|
21
|
+
Env::IOActivity io_activity =
|
|
22
|
+
ThreadStatusUtil::TEST_GetExpectedIOActivity(thread_op);
|
|
23
|
+
assert(io_activity == Env::IOActivity::kUnknown ||
|
|
24
|
+
io_activity == options.io_activity);
|
|
25
|
+
#else
|
|
26
|
+
(void)options;
|
|
27
|
+
#endif
|
|
28
|
+
}
|
|
29
|
+
} // namespace
|
|
16
30
|
class DbStressRandomAccessFileWrapper : public FSRandomAccessFileOwnerWrapper {
|
|
17
31
|
public:
|
|
18
32
|
explicit DbStressRandomAccessFileWrapper(
|
|
@@ -83,144 +97,67 @@ class DbStressWritableFileWrapper : public FSWritableFileOwnerWrapper {
|
|
|
83
97
|
|
|
84
98
|
IOStatus Append(const Slice& data, const IOOptions& options,
|
|
85
99
|
IODebugContext* dbg) override {
|
|
86
|
-
|
|
87
|
-
const ThreadStatus::OperationType thread_op =
|
|
88
|
-
ThreadStatusUtil::GetThreadOperation();
|
|
89
|
-
Env::IOActivity io_activity =
|
|
90
|
-
ThreadStatusUtil::TEST_GetExpectedIOActivity(thread_op);
|
|
91
|
-
assert(io_activity == Env::IOActivity::kUnknown ||
|
|
92
|
-
io_activity == options.io_activity);
|
|
93
|
-
#endif
|
|
100
|
+
CheckIOActivity(options);
|
|
94
101
|
return target()->Append(data, options, dbg);
|
|
95
102
|
}
|
|
96
103
|
IOStatus Append(const Slice& data, const IOOptions& options,
|
|
97
104
|
const DataVerificationInfo& verification_info,
|
|
98
105
|
IODebugContext* dbg) override {
|
|
99
|
-
|
|
100
|
-
const ThreadStatus::OperationType thread_op =
|
|
101
|
-
ThreadStatusUtil::GetThreadOperation();
|
|
102
|
-
Env::IOActivity io_activity =
|
|
103
|
-
ThreadStatusUtil::TEST_GetExpectedIOActivity(thread_op);
|
|
104
|
-
assert(io_activity == Env::IOActivity::kUnknown ||
|
|
105
|
-
io_activity == options.io_activity);
|
|
106
|
-
#endif
|
|
106
|
+
CheckIOActivity(options);
|
|
107
107
|
return target()->Append(data, options, verification_info, dbg);
|
|
108
108
|
}
|
|
109
109
|
IOStatus PositionedAppend(const Slice& data, uint64_t offset,
|
|
110
110
|
const IOOptions& options,
|
|
111
111
|
IODebugContext* dbg) override {
|
|
112
|
-
|
|
113
|
-
const ThreadStatus::OperationType thread_op =
|
|
114
|
-
ThreadStatusUtil::GetThreadOperation();
|
|
115
|
-
Env::IOActivity io_activity =
|
|
116
|
-
ThreadStatusUtil::TEST_GetExpectedIOActivity(thread_op);
|
|
117
|
-
assert(io_activity == Env::IOActivity::kUnknown ||
|
|
118
|
-
io_activity == options.io_activity);
|
|
119
|
-
#endif
|
|
112
|
+
CheckIOActivity(options);
|
|
120
113
|
return target()->PositionedAppend(data, offset, options, dbg);
|
|
121
114
|
}
|
|
122
115
|
IOStatus PositionedAppend(const Slice& data, uint64_t offset,
|
|
123
116
|
const IOOptions& options,
|
|
124
117
|
const DataVerificationInfo& verification_info,
|
|
125
118
|
IODebugContext* dbg) override {
|
|
126
|
-
|
|
127
|
-
const ThreadStatus::OperationType thread_op =
|
|
128
|
-
ThreadStatusUtil::GetThreadOperation();
|
|
129
|
-
Env::IOActivity io_activity =
|
|
130
|
-
ThreadStatusUtil::TEST_GetExpectedIOActivity(thread_op);
|
|
131
|
-
assert(io_activity == Env::IOActivity::kUnknown ||
|
|
132
|
-
io_activity == options.io_activity);
|
|
133
|
-
#endif
|
|
119
|
+
CheckIOActivity(options);
|
|
134
120
|
return target()->PositionedAppend(data, offset, options, verification_info,
|
|
135
121
|
dbg);
|
|
136
122
|
}
|
|
137
123
|
|
|
138
124
|
IOStatus Truncate(uint64_t size, const IOOptions& options,
|
|
139
125
|
IODebugContext* dbg) override {
|
|
140
|
-
|
|
141
|
-
const ThreadStatus::OperationType thread_op =
|
|
142
|
-
ThreadStatusUtil::GetThreadOperation();
|
|
143
|
-
Env::IOActivity io_activity =
|
|
144
|
-
ThreadStatusUtil::TEST_GetExpectedIOActivity(thread_op);
|
|
145
|
-
assert(io_activity == Env::IOActivity::kUnknown ||
|
|
146
|
-
io_activity == options.io_activity);
|
|
147
|
-
#endif
|
|
126
|
+
CheckIOActivity(options);
|
|
148
127
|
return target()->Truncate(size, options, dbg);
|
|
149
128
|
}
|
|
150
129
|
|
|
151
130
|
IOStatus Close(const IOOptions& options, IODebugContext* dbg) override {
|
|
152
|
-
|
|
153
|
-
const ThreadStatus::OperationType thread_op =
|
|
154
|
-
ThreadStatusUtil::GetThreadOperation();
|
|
155
|
-
Env::IOActivity io_activity =
|
|
156
|
-
ThreadStatusUtil::TEST_GetExpectedIOActivity(thread_op);
|
|
157
|
-
assert(io_activity == Env::IOActivity::kUnknown ||
|
|
158
|
-
io_activity == options.io_activity);
|
|
159
|
-
#endif
|
|
131
|
+
CheckIOActivity(options);
|
|
160
132
|
return target()->Close(options, dbg);
|
|
161
133
|
}
|
|
162
134
|
|
|
163
135
|
IOStatus Flush(const IOOptions& options, IODebugContext* dbg) override {
|
|
164
|
-
|
|
165
|
-
const ThreadStatus::OperationType thread_op =
|
|
166
|
-
ThreadStatusUtil::GetThreadOperation();
|
|
167
|
-
Env::IOActivity io_activity =
|
|
168
|
-
ThreadStatusUtil::TEST_GetExpectedIOActivity(thread_op);
|
|
169
|
-
assert(io_activity == Env::IOActivity::kUnknown ||
|
|
170
|
-
io_activity == options.io_activity);
|
|
171
|
-
#endif
|
|
136
|
+
CheckIOActivity(options);
|
|
172
137
|
return target()->Flush(options, dbg);
|
|
173
138
|
}
|
|
174
139
|
|
|
175
140
|
IOStatus Sync(const IOOptions& options, IODebugContext* dbg) override {
|
|
176
|
-
|
|
177
|
-
const ThreadStatus::OperationType thread_op =
|
|
178
|
-
ThreadStatusUtil::GetThreadOperation();
|
|
179
|
-
Env::IOActivity io_activity =
|
|
180
|
-
ThreadStatusUtil::TEST_GetExpectedIOActivity(thread_op);
|
|
181
|
-
assert(io_activity == Env::IOActivity::kUnknown ||
|
|
182
|
-
io_activity == options.io_activity);
|
|
183
|
-
#endif
|
|
141
|
+
CheckIOActivity(options);
|
|
184
142
|
return target()->Sync(options, dbg);
|
|
185
143
|
}
|
|
186
144
|
|
|
187
145
|
IOStatus Fsync(const IOOptions& options, IODebugContext* dbg) override {
|
|
188
|
-
|
|
189
|
-
const ThreadStatus::OperationType thread_op =
|
|
190
|
-
ThreadStatusUtil::GetThreadOperation();
|
|
191
|
-
Env::IOActivity io_activity =
|
|
192
|
-
ThreadStatusUtil::TEST_GetExpectedIOActivity(thread_op);
|
|
193
|
-
assert(io_activity == Env::IOActivity::kUnknown ||
|
|
194
|
-
io_activity == options.io_activity);
|
|
195
|
-
#endif
|
|
146
|
+
CheckIOActivity(options);
|
|
196
147
|
return target()->Fsync(options, dbg);
|
|
197
148
|
}
|
|
198
149
|
|
|
199
150
|
#ifdef ROCKSDB_FALLOCATE_PRESENT
|
|
200
151
|
IOStatus Allocate(uint64_t offset, uint64_t len, const IOOptions& options,
|
|
201
152
|
IODebugContext* dbg) override {
|
|
202
|
-
|
|
203
|
-
const ThreadStatus::OperationType thread_op =
|
|
204
|
-
ThreadStatusUtil::GetThreadOperation();
|
|
205
|
-
Env::IOActivity io_activity =
|
|
206
|
-
ThreadStatusUtil::TEST_GetExpectedIOActivity(thread_op);
|
|
207
|
-
assert(io_activity == Env::IOActivity::kUnknown ||
|
|
208
|
-
io_activity == options.io_activity);
|
|
209
|
-
#endif
|
|
153
|
+
CheckIOActivity(options);
|
|
210
154
|
return target()->Allocate(offset, len, options, dbg);
|
|
211
155
|
}
|
|
212
156
|
#endif
|
|
213
157
|
|
|
214
158
|
IOStatus RangeSync(uint64_t offset, uint64_t nbytes, const IOOptions& options,
|
|
215
159
|
IODebugContext* dbg) override {
|
|
216
|
-
|
|
217
|
-
const ThreadStatus::OperationType thread_op =
|
|
218
|
-
ThreadStatusUtil::GetThreadOperation();
|
|
219
|
-
Env::IOActivity io_activity =
|
|
220
|
-
ThreadStatusUtil::TEST_GetExpectedIOActivity(thread_op);
|
|
221
|
-
assert(io_activity == Env::IOActivity::kUnknown ||
|
|
222
|
-
io_activity == options.io_activity);
|
|
223
|
-
#endif
|
|
160
|
+
CheckIOActivity(options);
|
|
224
161
|
return target()->RangeSync(offset, nbytes, options, dbg);
|
|
225
162
|
}
|
|
226
163
|
};
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
// This source code is licensed under both the GPLv2 (found in the
|
|
3
|
+
// COPYING file in the root directory) and Apache 2.0 License
|
|
4
|
+
// (found in the LICENSE.Apache file in the root directory).
|
|
5
|
+
|
|
6
|
+
#include "db_stress_tool/db_stress_filters.h"
|
|
7
|
+
|
|
8
|
+
#include <memory>
|
|
9
|
+
#include <mutex>
|
|
10
|
+
|
|
11
|
+
namespace ROCKSDB_NAMESPACE {
|
|
12
|
+
|
|
13
|
+
#ifdef GFLAGS
|
|
14
|
+
|
|
15
|
+
using experimental::KeySegmentsExtractor;
|
|
16
|
+
using experimental::MakeSharedBytewiseMinMaxSQFC;
|
|
17
|
+
using experimental::SelectKeySegment;
|
|
18
|
+
using experimental::SstQueryFilterConfigs;
|
|
19
|
+
using experimental::SstQueryFilterConfigsManager;
|
|
20
|
+
|
|
21
|
+
namespace {
|
|
22
|
+
class VariableWidthExtractor : public KeySegmentsExtractor {
|
|
23
|
+
public:
|
|
24
|
+
const char* Name() const override { return "VariableWidthExtractor"; }
|
|
25
|
+
|
|
26
|
+
void Extract(const Slice& key_or_bound, KeyKind /*kind*/,
|
|
27
|
+
Result* result) const override {
|
|
28
|
+
uint32_t len = static_cast<uint32_t>(key_or_bound.size());
|
|
29
|
+
// This uses as delimiter any zero byte that follows a non-zero byte.
|
|
30
|
+
// And in accordance with best practice, the delimiter is part of the
|
|
31
|
+
// segment leading up to it.
|
|
32
|
+
bool prev_non_zero = false;
|
|
33
|
+
for (uint32_t i = 0; i < len; ++i) {
|
|
34
|
+
if ((prev_non_zero && key_or_bound[i] == 0) || i + 1 == len) {
|
|
35
|
+
result->segment_ends.push_back(i + 1);
|
|
36
|
+
}
|
|
37
|
+
prev_non_zero = key_or_bound[i] != 0;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
const auto kVariableWidthExtractor = std::make_shared<VariableWidthExtractor>();
|
|
42
|
+
class FixedWidthExtractor : public KeySegmentsExtractor {
|
|
43
|
+
public:
|
|
44
|
+
const char* Name() const override { return "FixedWidthExtractor"; }
|
|
45
|
+
|
|
46
|
+
void Extract(const Slice& key_or_bound, KeyKind /*kind*/,
|
|
47
|
+
Result* result) const override {
|
|
48
|
+
uint32_t len = static_cast<uint32_t>(key_or_bound.size());
|
|
49
|
+
// Fixed 8-byte segments, with any leftovers going into another
|
|
50
|
+
// segment.
|
|
51
|
+
uint32_t i = 0;
|
|
52
|
+
while (i + 8 <= len) {
|
|
53
|
+
i += 8;
|
|
54
|
+
result->segment_ends.push_back(i);
|
|
55
|
+
}
|
|
56
|
+
if (i < len) {
|
|
57
|
+
result->segment_ends.push_back(len);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
const auto kFixedWidthExtractor = std::make_shared<FixedWidthExtractor>();
|
|
62
|
+
// NOTE: MinMax filter on segment 0 is not normally useful because of metadata
|
|
63
|
+
// on smallest and largest key for each SST file. But it doesn't hurt to test.
|
|
64
|
+
const auto kFilter0 = MakeSharedBytewiseMinMaxSQFC(SelectKeySegment(0));
|
|
65
|
+
const auto kFilter1 = MakeSharedBytewiseMinMaxSQFC(SelectKeySegment(1));
|
|
66
|
+
const auto kFilter2 = MakeSharedBytewiseMinMaxSQFC(SelectKeySegment(2));
|
|
67
|
+
const auto kFilter3 = MakeSharedBytewiseMinMaxSQFC(SelectKeySegment(3));
|
|
68
|
+
const SstQueryFilterConfigs fooConfigs1{{kFilter0, kFilter2},
|
|
69
|
+
kVariableWidthExtractor};
|
|
70
|
+
const SstQueryFilterConfigs fooConfigs2{{kFilter1, kFilter3},
|
|
71
|
+
kVariableWidthExtractor};
|
|
72
|
+
const SstQueryFilterConfigs barConfigs2{{kFilter1, kFilter2},
|
|
73
|
+
kFixedWidthExtractor};
|
|
74
|
+
const SstQueryFilterConfigsManager::Data data = {
|
|
75
|
+
{1, {{"foo", fooConfigs1}}},
|
|
76
|
+
{2, {{"foo", fooConfigs2}, {"bar", barConfigs2}}},
|
|
77
|
+
};
|
|
78
|
+
} // namespace
|
|
79
|
+
|
|
80
|
+
SstQueryFilterConfigsManager& DbStressSqfcManager() {
|
|
81
|
+
std::once_flag flag;
|
|
82
|
+
static std::shared_ptr<SstQueryFilterConfigsManager> mgr;
|
|
83
|
+
std::call_once(flag, []() {
|
|
84
|
+
Status s = SstQueryFilterConfigsManager::MakeShared(data, &mgr);
|
|
85
|
+
assert(s.ok());
|
|
86
|
+
assert(mgr);
|
|
87
|
+
});
|
|
88
|
+
return *mgr;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
#endif // GFLAGS
|
|
92
|
+
|
|
93
|
+
} // namespace ROCKSDB_NAMESPACE
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
// This source code is licensed under both the GPLv2 (found in the
|
|
3
|
+
// COPYING file in the root directory) and Apache 2.0 License
|
|
4
|
+
// (found in the LICENSE.Apache file in the root directory).
|
|
5
|
+
|
|
6
|
+
#ifdef GFLAGS
|
|
7
|
+
#pragma once
|
|
8
|
+
|
|
9
|
+
#include "rocksdb/experimental.h"
|
|
10
|
+
|
|
11
|
+
namespace ROCKSDB_NAMESPACE {
|
|
12
|
+
|
|
13
|
+
experimental::SstQueryFilterConfigsManager& DbStressSqfcManager();
|
|
14
|
+
|
|
15
|
+
} // namespace ROCKSDB_NAMESPACE
|
|
16
|
+
#endif // GFLAGS
|
|
@@ -306,6 +306,9 @@ DEFINE_int32(universal_max_merge_width, 0,
|
|
|
306
306
|
DEFINE_int32(universal_max_size_amplification_percent, 0,
|
|
307
307
|
"The max size amplification for universal style compaction");
|
|
308
308
|
|
|
309
|
+
DEFINE_int32(universal_max_read_amp, -1,
|
|
310
|
+
"The limit on the number of sorted runs");
|
|
311
|
+
|
|
309
312
|
DEFINE_int32(clear_column_family_one_in, 1000000,
|
|
310
313
|
"With a chance of 1/N, delete a column family and then recreate "
|
|
311
314
|
"it again. If N == 0, never drop/create column families. "
|
|
@@ -579,6 +582,16 @@ DEFINE_bool(
|
|
|
579
582
|
.detect_filter_construct_corruption,
|
|
580
583
|
"Detect corruption during new Bloom Filter and Ribbon Filter construction");
|
|
581
584
|
|
|
585
|
+
DEFINE_string(sqfc_name, "foo",
|
|
586
|
+
"Config name to select from SstQueryFilterConfigsManager.");
|
|
587
|
+
|
|
588
|
+
DEFINE_uint32(sqfc_version, 0,
|
|
589
|
+
"User-defined filtering version to select from "
|
|
590
|
+
"SstQueryFilterConfigsManager. 0 = disable writing filters");
|
|
591
|
+
|
|
592
|
+
DEFINE_bool(use_sqfc_for_range_queries, true,
|
|
593
|
+
"Apply SstQueryFilters to range queries");
|
|
594
|
+
|
|
582
595
|
DEFINE_int32(
|
|
583
596
|
index_type,
|
|
584
597
|
static_cast<int32_t>(
|
|
@@ -955,6 +968,9 @@ DEFINE_uint32(use_put_entity_one_in, 0,
|
|
|
955
968
|
DEFINE_bool(use_attribute_group, false,
|
|
956
969
|
"If set, use the attribute_group API to put/get entities");
|
|
957
970
|
|
|
971
|
+
DEFINE_bool(use_multi_cf_iterator, false,
|
|
972
|
+
"If set, use the multi_cf_iterator for TestIterate");
|
|
973
|
+
|
|
958
974
|
DEFINE_bool(use_full_merge_v1, false,
|
|
959
975
|
"On true, use a merge operator that implement the deprecated "
|
|
960
976
|
"version of FullMerge");
|
|
@@ -1012,6 +1028,14 @@ DEFINE_int32(approximate_size_one_in, 64,
|
|
|
1012
1028
|
DEFINE_int32(read_fault_one_in, 1000,
|
|
1013
1029
|
"On non-zero, enables fault injection on read");
|
|
1014
1030
|
|
|
1031
|
+
DEFINE_bool(error_recovery_with_no_fault_injection, false,
|
|
1032
|
+
"If true, error recovery will be done without fault injection if "
|
|
1033
|
+
"fault injection is enabled");
|
|
1034
|
+
|
|
1035
|
+
DEFINE_int32(metadata_read_fault_one_in, 1000,
|
|
1036
|
+
"On non-zero, enables fault injection on metadata read (i.e, "
|
|
1037
|
+
"directory and file metadata read)");
|
|
1038
|
+
|
|
1015
1039
|
DEFINE_int32(get_property_one_in, 1000,
|
|
1016
1040
|
"If non-zero, then DB::GetProperty() will be called to get various"
|
|
1017
1041
|
" properties for every N ops on average. 0 indicates that"
|
|
@@ -1071,6 +1095,13 @@ DEFINE_int32(write_fault_one_in, 0,
|
|
|
1071
1095
|
"On non-zero, enables fault injection on write. Currently only"
|
|
1072
1096
|
"injects write error when writing to SST files.");
|
|
1073
1097
|
|
|
1098
|
+
DEFINE_bool(exclude_wal_from_write_fault_injection, false,
|
|
1099
|
+
"If true, we won't inject write fault when writing to WAL file");
|
|
1100
|
+
|
|
1101
|
+
DEFINE_int32(metadata_write_fault_one_in, 1000,
|
|
1102
|
+
"On non-zero, enables fault injection on metadata write (i.e, "
|
|
1103
|
+
"directory and file metadata write)");
|
|
1104
|
+
|
|
1074
1105
|
DEFINE_uint64(user_timestamp_size, 0,
|
|
1075
1106
|
"Number of bytes for a user-defined timestamp. Currently, only "
|
|
1076
1107
|
"8-byte is supported");
|
|
@@ -1079,6 +1110,11 @@ DEFINE_bool(persist_user_defined_timestamps, true,
|
|
|
1079
1110
|
"Flag to indicate whether user-defined timestamps will be persisted"
|
|
1080
1111
|
" during Flush");
|
|
1081
1112
|
|
|
1113
|
+
DEFINE_int32(open_metadata_read_fault_one_in, 0,
|
|
1114
|
+
"On non-zero, enables fault injection on file metadata read (i.e, "
|
|
1115
|
+
"directory and file metadata read)"
|
|
1116
|
+
"during DB reopen.");
|
|
1117
|
+
|
|
1082
1118
|
DEFINE_int32(open_metadata_write_fault_one_in, 0,
|
|
1083
1119
|
"On non-zero, enables fault injection on file metadata write "
|
|
1084
1120
|
"during DB reopen.");
|
|
@@ -1400,4 +1436,11 @@ DEFINE_bool(check_multiget_entity_consistency, true,
|
|
|
1400
1436
|
DEFINE_bool(inplace_update_support,
|
|
1401
1437
|
ROCKSDB_NAMESPACE::Options().inplace_update_support,
|
|
1402
1438
|
"Options.inplace_update_support");
|
|
1439
|
+
|
|
1440
|
+
DEFINE_uint32(uncache_aggressiveness,
|
|
1441
|
+
ROCKSDB_NAMESPACE::ColumnFamilyOptions().uncache_aggressiveness,
|
|
1442
|
+
"Aggressiveness of erasing cache entries that are likely "
|
|
1443
|
+
"obsolete. 0 = disabled, 1 = minimum, 100 = moderate, 10000 = "
|
|
1444
|
+
"normal max");
|
|
1445
|
+
|
|
1403
1446
|
#endif // GFLAGS
|