@nxtedition/rocksdb 7.1.20 → 7.1.21
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/deps/rocksdb/rocksdb/CMakeLists.txt +13 -6
- package/deps/rocksdb/rocksdb/Makefile +1 -1
- package/deps/rocksdb/rocksdb/TARGETS +2 -0
- package/deps/rocksdb/rocksdb/cache/cache_reservation_manager_test.cc +1 -0
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +4 -4
- package/deps/rocksdb/rocksdb/cache/clock_cache.cc +139 -161
- package/deps/rocksdb/rocksdb/cache/clock_cache.h +92 -82
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +16 -3
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +9 -3
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +73 -30
- package/deps/rocksdb/rocksdb/cache/fast_lru_cache.cc +25 -67
- package/deps/rocksdb/rocksdb/cache/fast_lru_cache.h +41 -40
- package/deps/rocksdb/rocksdb/cache/lru_cache.cc +109 -155
- package/deps/rocksdb/rocksdb/cache/lru_cache.h +127 -149
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +75 -80
- package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +22 -172
- package/deps/rocksdb/rocksdb/cache/sharded_cache.h +272 -85
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +12 -4
- package/deps/rocksdb/rocksdb/db/blob/blob_counting_iterator_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_file_addition_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_file_cache_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_file_garbage_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_garbage_meter_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +13 -4
- package/deps/rocksdb/rocksdb/db/builder.cc +1 -1
- package/deps/rocksdb/rocksdb/db/column_family.cc +15 -1
- package/deps/rocksdb/rocksdb/db/compact_files_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/compaction/clipping_iterator_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +25 -7
- package/deps/rocksdb/rocksdb/db/compaction/compaction.h +10 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +22 -8
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +14 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +38 -12
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +9 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +408 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +244 -54
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +27 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +25 -30
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +87 -26
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +23 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +61 -0
- package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +294 -21
- package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +28 -10
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +272 -0
- package/deps/rocksdb/rocksdb/db/db_flush_test.cc +38 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +69 -25
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +7 -3
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +29 -12
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +0 -12
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +10 -4
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +35 -22
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +5 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +40 -5
- package/deps/rocksdb/rocksdb/db/db_iter.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_iter_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +22 -0
- package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_logical_block_size_cache_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +72 -5
- package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +60 -21
- package/deps/rocksdb/rocksdb/db/db_test.cc +170 -1
- package/deps/rocksdb/rocksdb/db/db_test2.cc +9 -3
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +19 -0
- package/deps/rocksdb/rocksdb/db/db_test_util.h +32 -0
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +444 -3
- package/deps/rocksdb/rocksdb/db/db_write_test.cc +8 -8
- package/deps/rocksdb/rocksdb/db/dbformat.cc +13 -0
- package/deps/rocksdb/rocksdb/db/dbformat.h +59 -4
- package/deps/rocksdb/rocksdb/db/dbformat_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/experimental.cc +3 -1
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +24 -3
- package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/filename_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/flush_job.cc +4 -3
- package/deps/rocksdb/rocksdb/db/flush_job_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/forward_iterator.cc +85 -43
- package/deps/rocksdb/rocksdb/db/forward_iterator.h +3 -1
- package/deps/rocksdb/rocksdb/db/internal_stats.cc +33 -6
- package/deps/rocksdb/rocksdb/db/internal_stats.h +6 -0
- package/deps/rocksdb/rocksdb/db/listener_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/log_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/log_writer.cc +1 -1
- package/deps/rocksdb/rocksdb/db/log_writer.h +1 -1
- package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/memtable.cc +158 -56
- package/deps/rocksdb/rocksdb/db/memtable.h +2 -0
- package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/merge_helper_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/options_file_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/perf_context_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/prefix_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/range_del_aggregator.cc +52 -9
- package/deps/rocksdb/rocksdb/db/range_del_aggregator.h +31 -2
- package/deps/rocksdb/rocksdb/db/range_del_aggregator_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.cc +81 -42
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +78 -12
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/repair_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +154 -27
- package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.cc +21 -4
- package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.h +4 -1
- package/deps/rocksdb/rocksdb/db/table_cache.cc +18 -6
- package/deps/rocksdb/rocksdb/db/table_properties_collector_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/version_builder_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/version_edit_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/version_set.cc +15 -7
- package/deps/rocksdb/rocksdb/db/version_set.h +2 -1
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/version_util.h +3 -1
- package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.cc +28 -9
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.h +21 -0
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization_test.cc +30 -0
- package/deps/rocksdb/rocksdb/db/wide/wide_columns.cc +4 -0
- package/deps/rocksdb/rocksdb/db/write_batch.cc +30 -7
- package/deps/rocksdb/rocksdb/db/write_batch_internal.h +24 -13
- package/deps/rocksdb/rocksdb/db/write_batch_test.cc +5 -4
- package/deps/rocksdb/rocksdb/db/write_callback_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/write_controller_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +104 -60
- package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +199 -108
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +39 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +8 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +3 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +19 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +26 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +247 -118
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +24 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +18 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +129 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +22 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.h +4 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +312 -117
- package/deps/rocksdb/rocksdb/env/env_basic_test.cc +1 -0
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +10 -2
- package/deps/rocksdb/rocksdb/env/io_posix_test.cc +1 -0
- package/deps/rocksdb/rocksdb/env/mock_env_test.cc +1 -0
- package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +5 -1
- package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +1 -0
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +1 -0
- package/deps/rocksdb/rocksdb/file/writable_file_writer.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +49 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +44 -18
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +8 -7
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +6 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +17 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_reader.h +4 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +7 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/wide_columns.h +9 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +3 -6
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +1 -0
- package/deps/rocksdb/rocksdb/logging/env_logger_test.cc +1 -0
- package/deps/rocksdb/rocksdb/logging/event_logger_test.cc +1 -0
- package/deps/rocksdb/rocksdb/memory/arena.cc +23 -88
- package/deps/rocksdb/rocksdb/memory/arena.h +25 -31
- package/deps/rocksdb/rocksdb/memory/arena_test.cc +61 -0
- package/deps/rocksdb/rocksdb/memory/memory_allocator_test.cc +1 -0
- package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +1 -0
- package/deps/rocksdb/rocksdb/memtable/skiplist_test.cc +1 -0
- package/deps/rocksdb/rocksdb/memtable/write_buffer_manager_test.cc +1 -0
- package/deps/rocksdb/rocksdb/monitoring/histogram_test.cc +1 -0
- package/deps/rocksdb/rocksdb/monitoring/iostats_context_test.cc +1 -0
- package/deps/rocksdb/rocksdb/options/cf_options.cc +19 -0
- package/deps/rocksdb/rocksdb/options/cf_options.h +8 -0
- package/deps/rocksdb/rocksdb/options/configurable_test.cc +1 -0
- package/deps/rocksdb/rocksdb/options/options.cc +7 -0
- package/deps/rocksdb/rocksdb/options/options_helper.cc +6 -0
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +6 -0
- package/deps/rocksdb/rocksdb/options/options_test.cc +63 -40
- package/deps/rocksdb/rocksdb/port/mmap.cc +98 -0
- package/deps/rocksdb/rocksdb/port/mmap.h +70 -0
- package/deps/rocksdb/rocksdb/port/stack_trace.cc +7 -0
- package/deps/rocksdb/rocksdb/port/stack_trace.h +4 -1
- package/deps/rocksdb/rocksdb/port/win/port_win.h +2 -7
- package/deps/rocksdb/rocksdb/src.mk +1 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +7 -7
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +3 -3
- package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +1 -0
- package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +1 -0
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block_test.cc +1 -0
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +1 -0
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +1 -0
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +1 -0
- package/deps/rocksdb/rocksdb/table/get_context.cc +19 -1
- package/deps/rocksdb/rocksdb/table/get_context.h +9 -0
- package/deps/rocksdb/rocksdb/table/merger_test.cc +1 -0
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +10 -11
- package/deps/rocksdb/rocksdb/table/mock_table.cc +37 -19
- package/deps/rocksdb/rocksdb/table/mock_table.h +5 -1
- package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +6 -0
- package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +33 -0
- package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +45 -6
- package/deps/rocksdb/rocksdb/test_util/testharness.h +2 -0
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +1 -0
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +5 -0
- package/deps/rocksdb/rocksdb/tools/db_bench_tool_test.cc +1 -0
- package/deps/rocksdb/rocksdb/tools/io_tracer_parser_test.cc +1 -0
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +36 -0
- package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +1 -0
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_test.cc +1 -0
- package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer_test.cc +1 -0
- package/deps/rocksdb/rocksdb/trace_replay/io_tracer_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/autovector_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/bloom_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/coding_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/crc32c_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/dynamic_bloom_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/filelock_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/gflags_compat.h +12 -7
- package/deps/rocksdb/rocksdb/util/hash_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/heap_test.cc +4 -2
- package/deps/rocksdb/rocksdb/util/random_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/repeatable_thread_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/ribbon_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/slice_transform_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/thread_list_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/thread_local_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/timer_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/work_queue_test.cc +4 -0
- package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +13 -0
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +9 -3
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_format_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_functional_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_row_merge_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_serialize_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/env_mirror_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/env_timed_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.h +8 -0
- package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/object_registry_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/cache_simulator_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/timestamped_snapshot_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/util_merge_operators_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +7 -0
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +20 -0
- package/index.js +12 -4
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/prebuilds/linux-x64/node.napi.node +0 -0
|
@@ -697,6 +697,11 @@ void MergingIterator::SeekImpl(const Slice& target, size_t starting_level,
|
|
|
697
697
|
// is not the same as the original target, it should not affect
|
|
698
698
|
// correctness. Besides, in most cases, range tombstone start and
|
|
699
699
|
// end key should have the same prefix?
|
|
700
|
+
// If range_tombstone_iter->end_key() is truncated to its largest_
|
|
701
|
+
// boundary, the timestamp in user_key will not be max timestamp,
|
|
702
|
+
// but the timestamp of `range_tombstone_iter.largest_`. This should
|
|
703
|
+
// be fine here as current_search_key is used to Seek into lower
|
|
704
|
+
// levels.
|
|
700
705
|
current_search_key.SetInternalKey(
|
|
701
706
|
range_tombstone_iter->end_key().user_key, kMaxSequenceNumber);
|
|
702
707
|
}
|
|
@@ -919,7 +924,6 @@ void MergingIterator::SeekForPrevImpl(const Slice& target,
|
|
|
919
924
|
current_search_key.GetUserKey(),
|
|
920
925
|
range_tombstone_iter->end_key().user_key) < 0) {
|
|
921
926
|
range_tombstone_reseek = true;
|
|
922
|
-
// covered by this range tombstone
|
|
923
927
|
current_search_key.SetInternalKey(
|
|
924
928
|
range_tombstone_iter->start_key().user_key, kMaxSequenceNumber,
|
|
925
929
|
kValueTypeForSeekForPrev);
|
|
@@ -988,10 +992,6 @@ bool MergingIterator::SkipPrevDeleted() {
|
|
|
988
992
|
return true /* current key deleted */;
|
|
989
993
|
}
|
|
990
994
|
if (current->iter.IsDeleteRangeSentinelKey()) {
|
|
991
|
-
// Different from SkipNextDeleted(): range tombstone start key is before
|
|
992
|
-
// file boundary due to op_type set in SetTombstoneKey().
|
|
993
|
-
assert(ExtractValueType(current->iter.key()) != kTypeRangeDeletion ||
|
|
994
|
-
active_.count(current->level));
|
|
995
995
|
// LevelIterator enters a new SST file
|
|
996
996
|
current->iter.Prev();
|
|
997
997
|
if (current->iter.Valid()) {
|
|
@@ -1025,12 +1025,11 @@ bool MergingIterator::SkipPrevDeleted() {
|
|
|
1025
1025
|
std::string target;
|
|
1026
1026
|
AppendInternalKey(&target, range_tombstone_iters_[i]->start_key());
|
|
1027
1027
|
// This is different from SkipNextDeleted() which does reseek at sorted
|
|
1028
|
-
// runs
|
|
1029
|
-
//
|
|
1030
|
-
//
|
|
1031
|
-
//
|
|
1032
|
-
//
|
|
1033
|
-
// all have internal keys smaller than level L's current internal key,
|
|
1028
|
+
// runs >= level (instead of i+1 here). With min heap, if level L is at
|
|
1029
|
+
// top of the heap, then levels <L all have internal keys > level L's
|
|
1030
|
+
// current internal key, which means levels <L are already at a different
|
|
1031
|
+
// user key. With max heap, if level L is at top of the heap, then levels
|
|
1032
|
+
// <L all have internal keys smaller than level L's current internal key,
|
|
1034
1033
|
// which might still be the same user key.
|
|
1035
1034
|
SeekForPrevImpl(target, i + 1, true);
|
|
1036
1035
|
return true /* current key deleted */;
|
|
@@ -122,8 +122,12 @@ class MockTableBuilder : public TableBuilder {
|
|
|
122
122
|
public:
|
|
123
123
|
MockTableBuilder(uint32_t id, MockTableFileSystem* file_system,
|
|
124
124
|
MockTableFactory::MockCorruptionMode corrupt_mode =
|
|
125
|
-
MockTableFactory::kCorruptNone
|
|
126
|
-
|
|
125
|
+
MockTableFactory::kCorruptNone,
|
|
126
|
+
size_t key_value_size = 1)
|
|
127
|
+
: id_(id),
|
|
128
|
+
file_system_(file_system),
|
|
129
|
+
corrupt_mode_(corrupt_mode),
|
|
130
|
+
key_value_size_(key_value_size) {
|
|
127
131
|
table_ = MakeMockFile({});
|
|
128
132
|
}
|
|
129
133
|
|
|
@@ -171,7 +175,7 @@ class MockTableBuilder : public TableBuilder {
|
|
|
171
175
|
|
|
172
176
|
uint64_t NumEntries() const override { return table_.size(); }
|
|
173
177
|
|
|
174
|
-
uint64_t FileSize() const override { return table_.size(); }
|
|
178
|
+
uint64_t FileSize() const override { return table_.size() * key_value_size_; }
|
|
175
179
|
|
|
176
180
|
TableProperties GetTableProperties() const override {
|
|
177
181
|
return TableProperties();
|
|
@@ -191,6 +195,7 @@ class MockTableBuilder : public TableBuilder {
|
|
|
191
195
|
MockTableFileSystem* file_system_;
|
|
192
196
|
int corrupt_mode_;
|
|
193
197
|
KVVector table_;
|
|
198
|
+
size_t key_value_size_;
|
|
194
199
|
};
|
|
195
200
|
|
|
196
201
|
InternalIterator* MockTableReader::NewIterator(
|
|
@@ -260,7 +265,8 @@ TableBuilder* MockTableFactory::NewTableBuilder(
|
|
|
260
265
|
Status s = GetAndWriteNextID(file, &id);
|
|
261
266
|
assert(s.ok());
|
|
262
267
|
|
|
263
|
-
return new MockTableBuilder(id, &file_system_, corrupt_mode_
|
|
268
|
+
return new MockTableBuilder(id, &file_system_, corrupt_mode_,
|
|
269
|
+
key_value_size_);
|
|
264
270
|
}
|
|
265
271
|
|
|
266
272
|
Status MockTableFactory::CreateMockTable(Env* env, const std::string& fname,
|
|
@@ -303,22 +309,34 @@ void MockTableFactory::AssertSingleFile(const KVVector& file_contents) {
|
|
|
303
309
|
ASSERT_EQ(file_contents, file_system_.files.begin()->second);
|
|
304
310
|
}
|
|
305
311
|
|
|
306
|
-
void MockTableFactory::
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
312
|
+
void MockTableFactory::AssertLatestFiles(
|
|
313
|
+
const std::vector<KVVector>& files_contents) {
|
|
314
|
+
ASSERT_GE(file_system_.files.size(), files_contents.size());
|
|
315
|
+
auto it = file_system_.files.rbegin();
|
|
316
|
+
for (auto expect = files_contents.rbegin(); expect != files_contents.rend();
|
|
317
|
+
expect++, it++) {
|
|
318
|
+
ASSERT_TRUE(it != file_system_.files.rend());
|
|
319
|
+
if (*expect != it->second) {
|
|
320
|
+
std::cout << "Wrong content! Content of file, expect:" << std::endl;
|
|
321
|
+
for (const auto& kv : *expect) {
|
|
322
|
+
ParsedInternalKey ikey;
|
|
323
|
+
std::string key, value;
|
|
324
|
+
std::tie(key, value) = kv;
|
|
325
|
+
ASSERT_OK(ParseInternalKey(Slice(key), &ikey, true /* log_err_key */));
|
|
326
|
+
std::cout << ikey.DebugString(true, false) << " -> " << value
|
|
327
|
+
<< std::endl;
|
|
328
|
+
}
|
|
329
|
+
std::cout << "actual:" << std::endl;
|
|
330
|
+
for (const auto& kv : it->second) {
|
|
331
|
+
ParsedInternalKey ikey;
|
|
332
|
+
std::string key, value;
|
|
333
|
+
std::tie(key, value) = kv;
|
|
334
|
+
ASSERT_OK(ParseInternalKey(Slice(key), &ikey, true /* log_err_key */));
|
|
335
|
+
std::cout << ikey.DebugString(true, false) << " -> " << value
|
|
336
|
+
<< std::endl;
|
|
337
|
+
}
|
|
338
|
+
FAIL();
|
|
320
339
|
}
|
|
321
|
-
FAIL();
|
|
322
340
|
}
|
|
323
341
|
}
|
|
324
342
|
|
|
@@ -72,10 +72,12 @@ class MockTableFactory : public TableFactory {
|
|
|
72
72
|
}
|
|
73
73
|
|
|
74
74
|
void SetCorruptionMode(MockCorruptionMode mode) { corrupt_mode_ = mode; }
|
|
75
|
+
|
|
76
|
+
void SetKeyValueSize(size_t size) { key_value_size_ = size; }
|
|
75
77
|
// This function will assert that only a single file exists and that the
|
|
76
78
|
// contents are equal to file_contents
|
|
77
79
|
void AssertSingleFile(const KVVector& file_contents);
|
|
78
|
-
void
|
|
80
|
+
void AssertLatestFiles(const std::vector<KVVector>& files_contents);
|
|
79
81
|
|
|
80
82
|
private:
|
|
81
83
|
Status GetAndWriteNextID(WritableFileWriter* file, uint32_t* id) const;
|
|
@@ -84,6 +86,8 @@ class MockTableFactory : public TableFactory {
|
|
|
84
86
|
mutable MockTableFileSystem file_system_;
|
|
85
87
|
mutable std::atomic<uint32_t> next_id_;
|
|
86
88
|
MockCorruptionMode corrupt_mode_;
|
|
89
|
+
|
|
90
|
+
size_t key_value_size_ = 1;
|
|
87
91
|
};
|
|
88
92
|
|
|
89
93
|
} // namespace mock
|
|
@@ -86,6 +86,12 @@ Iterator* SstFileReader::NewIterator(const ReadOptions& roptions) {
|
|
|
86
86
|
return res;
|
|
87
87
|
}
|
|
88
88
|
|
|
89
|
+
FragmentedRangeTombstoneIterator* SstFileReader::NewRangeTombstoneIterator(
|
|
90
|
+
const ReadOptions& options) {
|
|
91
|
+
auto r = rep_.get();
|
|
92
|
+
return r->table_reader->NewRangeTombstoneIterator(options);
|
|
93
|
+
}
|
|
94
|
+
|
|
89
95
|
std::shared_ptr<const TableProperties> SstFileReader::GetTableProperties()
|
|
90
96
|
const {
|
|
91
97
|
return rep_->table_reader->GetTableProperties();
|
|
@@ -385,6 +385,39 @@ TEST_F(SstFileReaderTimestampTest, Basic) {
|
|
|
385
385
|
}
|
|
386
386
|
}
|
|
387
387
|
|
|
388
|
+
TEST_F(SstFileReaderTimestampTest, BasicDeleteRange) {
|
|
389
|
+
SstFileWriter writer(soptions_, options_);
|
|
390
|
+
ASSERT_OK(writer.Open(sst_name_));
|
|
391
|
+
ASSERT_OK(writer.DeleteRange("key1", "key2", EncodeAsUint64(1)));
|
|
392
|
+
ASSERT_OK(writer.Finish());
|
|
393
|
+
|
|
394
|
+
SstFileReader reader(options_);
|
|
395
|
+
ASSERT_OK(reader.Open(sst_name_));
|
|
396
|
+
ASSERT_OK(reader.VerifyChecksum());
|
|
397
|
+
|
|
398
|
+
ReadOptions read_options;
|
|
399
|
+
std::string ts = EncodeAsUint64(2);
|
|
400
|
+
Slice ts_slice = ts;
|
|
401
|
+
read_options.timestamp = &ts_slice;
|
|
402
|
+
FragmentedRangeTombstoneIterator* iter =
|
|
403
|
+
reader.NewRangeTombstoneIterator(read_options);
|
|
404
|
+
iter->SeekToFirst();
|
|
405
|
+
ASSERT_TRUE(iter->Valid());
|
|
406
|
+
ASSERT_OK(iter->status());
|
|
407
|
+
ASSERT_EQ(
|
|
408
|
+
StripTimestampFromUserKey(iter->start_key(), EncodeAsUint64(1).size()),
|
|
409
|
+
"key1");
|
|
410
|
+
ASSERT_EQ(
|
|
411
|
+
StripTimestampFromUserKey(iter->end_key(), EncodeAsUint64(1).size()),
|
|
412
|
+
"key2");
|
|
413
|
+
ASSERT_EQ(iter->timestamp(), EncodeAsUint64(1));
|
|
414
|
+
iter->Next();
|
|
415
|
+
ASSERT_FALSE(iter->Valid());
|
|
416
|
+
ASSERT_OK(iter->status());
|
|
417
|
+
|
|
418
|
+
delete iter;
|
|
419
|
+
}
|
|
420
|
+
|
|
388
421
|
TEST_F(SstFileReaderTimestampTest, TimestampsOutOfOrder) {
|
|
389
422
|
SstFileWriter writer(soptions_, options_);
|
|
390
423
|
|
|
@@ -131,15 +131,10 @@ struct SstFileWriter::Rep {
|
|
|
131
131
|
return AddImpl(user_key_with_ts, value, value_type);
|
|
132
132
|
}
|
|
133
133
|
|
|
134
|
-
Status
|
|
135
|
-
if (internal_comparator.user_comparator()->timestamp_size() != 0) {
|
|
136
|
-
return Status::InvalidArgument("Timestamp size mismatch");
|
|
137
|
-
}
|
|
138
|
-
|
|
134
|
+
Status DeleteRangeImpl(const Slice& begin_key, const Slice& end_key) {
|
|
139
135
|
if (!builder) {
|
|
140
136
|
return Status::InvalidArgument("File is not opened");
|
|
141
137
|
}
|
|
142
|
-
|
|
143
138
|
RangeTombstone tombstone(begin_key, end_key, 0 /* Sequence Number */);
|
|
144
139
|
if (file_info.num_range_del_entries == 0) {
|
|
145
140
|
file_info.smallest_range_del_key.assign(tombstone.start_key_.data(),
|
|
@@ -170,6 +165,45 @@ struct SstFileWriter::Rep {
|
|
|
170
165
|
return Status::OK();
|
|
171
166
|
}
|
|
172
167
|
|
|
168
|
+
Status DeleteRange(const Slice& begin_key, const Slice& end_key) {
|
|
169
|
+
if (internal_comparator.user_comparator()->timestamp_size() != 0) {
|
|
170
|
+
return Status::InvalidArgument("Timestamp size mismatch");
|
|
171
|
+
}
|
|
172
|
+
return DeleteRangeImpl(begin_key, end_key);
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
// begin_key and end_key should be users keys without timestamp.
|
|
176
|
+
Status DeleteRange(const Slice& begin_key, const Slice& end_key,
|
|
177
|
+
const Slice& timestamp) {
|
|
178
|
+
const size_t timestamp_size = timestamp.size();
|
|
179
|
+
|
|
180
|
+
if (internal_comparator.user_comparator()->timestamp_size() !=
|
|
181
|
+
timestamp_size) {
|
|
182
|
+
return Status::InvalidArgument("Timestamp size mismatch");
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
const size_t begin_key_size = begin_key.size();
|
|
186
|
+
const size_t end_key_size = end_key.size();
|
|
187
|
+
if (begin_key.data() + begin_key_size == timestamp.data() ||
|
|
188
|
+
end_key.data() + begin_key_size == timestamp.data()) {
|
|
189
|
+
assert(memcmp(begin_key.data() + begin_key_size,
|
|
190
|
+
end_key.data() + end_key_size, timestamp_size) == 0);
|
|
191
|
+
Slice begin_key_with_ts(begin_key.data(),
|
|
192
|
+
begin_key_size + timestamp_size);
|
|
193
|
+
Slice end_key_with_ts(end_key.data(), end_key.size() + timestamp_size);
|
|
194
|
+
return DeleteRangeImpl(begin_key_with_ts, end_key_with_ts);
|
|
195
|
+
}
|
|
196
|
+
std::string begin_key_with_ts;
|
|
197
|
+
begin_key_with_ts.reserve(begin_key_size + timestamp_size);
|
|
198
|
+
begin_key_with_ts.append(begin_key.data(), begin_key_size);
|
|
199
|
+
begin_key_with_ts.append(timestamp.data(), timestamp_size);
|
|
200
|
+
std::string end_key_with_ts;
|
|
201
|
+
end_key_with_ts.reserve(end_key_size + timestamp_size);
|
|
202
|
+
end_key_with_ts.append(end_key.data(), end_key_size);
|
|
203
|
+
end_key_with_ts.append(timestamp.data(), timestamp_size);
|
|
204
|
+
return DeleteRangeImpl(begin_key_with_ts, end_key_with_ts);
|
|
205
|
+
}
|
|
206
|
+
|
|
173
207
|
Status InvalidatePageCache(bool closing) {
|
|
174
208
|
Status s = Status::OK();
|
|
175
209
|
if (invalidate_page_cache == false) {
|
|
@@ -346,6 +380,11 @@ Status SstFileWriter::DeleteRange(const Slice& begin_key,
|
|
|
346
380
|
return rep_->DeleteRange(begin_key, end_key);
|
|
347
381
|
}
|
|
348
382
|
|
|
383
|
+
Status SstFileWriter::DeleteRange(const Slice& begin_key, const Slice& end_key,
|
|
384
|
+
const Slice& timestamp) {
|
|
385
|
+
return rep_->DeleteRange(begin_key, end_key, timestamp);
|
|
386
|
+
}
|
|
387
|
+
|
|
349
388
|
Status SstFileWriter::Finish(ExternalSstFileInfo* file_info) {
|
|
350
389
|
Rep* r = rep_.get();
|
|
351
390
|
if (!r->builder) {
|
|
@@ -711,6 +711,7 @@ TEST_F(BlockCacheTracerTest, MixedBlocks) {
|
|
|
711
711
|
} // namespace ROCKSDB_NAMESPACE
|
|
712
712
|
|
|
713
713
|
int main(int argc, char** argv) {
|
|
714
|
+
ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
|
|
714
715
|
::testing::InitGoogleTest(&argc, argv);
|
|
715
716
|
return RUN_ALL_TESTS();
|
|
716
717
|
}
|
|
@@ -1353,6 +1353,9 @@ DEFINE_int64(
|
|
|
1353
1353
|
preclude_last_level_data_seconds, 0,
|
|
1354
1354
|
"Preclude the latest data from the last level. (Used for tiered storage)");
|
|
1355
1355
|
|
|
1356
|
+
DEFINE_int64(preserve_internal_time_seconds, 0,
|
|
1357
|
+
"Preserve the internal time information which stores with SST.");
|
|
1358
|
+
|
|
1356
1359
|
static std::shared_ptr<ROCKSDB_NAMESPACE::Env> env_guard;
|
|
1357
1360
|
|
|
1358
1361
|
static ROCKSDB_NAMESPACE::Env* FLAGS_env = ROCKSDB_NAMESPACE::Env::Default();
|
|
@@ -4530,6 +4533,8 @@ class Benchmark {
|
|
|
4530
4533
|
}
|
|
4531
4534
|
options.preclude_last_level_data_seconds =
|
|
4532
4535
|
FLAGS_preclude_last_level_data_seconds;
|
|
4536
|
+
options.preserve_internal_time_seconds =
|
|
4537
|
+
FLAGS_preserve_internal_time_seconds;
|
|
4533
4538
|
options.sample_for_compression = FLAGS_sample_for_compression;
|
|
4534
4539
|
options.WAL_ttl_seconds = FLAGS_wal_ttl_seconds;
|
|
4535
4540
|
options.WAL_size_limit_MB = FLAGS_wal_size_limit_MB;
|
|
@@ -320,6 +320,7 @@ TEST_F(DBBenchTest, OptionsFileFromFile) {
|
|
|
320
320
|
} // namespace ROCKSDB_NAMESPACE
|
|
321
321
|
|
|
322
322
|
int main(int argc, char** argv) {
|
|
323
|
+
ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
|
|
323
324
|
::testing::InitGoogleTest(&argc, argv);
|
|
324
325
|
GFLAGS_NAMESPACE::ParseCommandLineFlags(&argc, &argv, true);
|
|
325
326
|
return RUN_ALL_TESTS();
|
|
@@ -176,6 +176,7 @@ TEST_F(IOTracerParserTest, NoRecordingBeforeStartIOTrace) {
|
|
|
176
176
|
} // namespace ROCKSDB_NAMESPACE
|
|
177
177
|
|
|
178
178
|
int main(int argc, char** argv) {
|
|
179
|
+
ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
|
|
179
180
|
::testing::InitGoogleTest(&argc, argv);
|
|
180
181
|
return RUN_ALL_TESTS();
|
|
181
182
|
}
|
|
@@ -1024,6 +1024,42 @@ TEST_F(LdbCmdTest, UnsafeRemoveSstFile) {
|
|
|
1024
1024
|
ASSERT_OK(db->Get(ReadOptions(), handles[0], "0", &val));
|
|
1025
1025
|
ASSERT_EQ(val, "0");
|
|
1026
1026
|
|
|
1027
|
+
// Determine which is the "first" one (most likely to be opened in recovery)
|
|
1028
|
+
sst_files.clear();
|
|
1029
|
+
db->GetLiveFilesMetaData(&sst_files);
|
|
1030
|
+
|
|
1031
|
+
numbers.clear();
|
|
1032
|
+
for (auto& f : sst_files) {
|
|
1033
|
+
numbers.push_back(f.file_number);
|
|
1034
|
+
}
|
|
1035
|
+
ASSERT_EQ(numbers.size(), 3);
|
|
1036
|
+
std::sort(numbers.begin(), numbers.end());
|
|
1037
|
+
to_remove = numbers.front();
|
|
1038
|
+
|
|
1039
|
+
// This time physically delete the file before unsafe_remove
|
|
1040
|
+
{
|
|
1041
|
+
std::string f = dbname + "/" + MakeTableFileName(to_remove);
|
|
1042
|
+
ASSERT_OK(Env::Default()->DeleteFile(f));
|
|
1043
|
+
}
|
|
1044
|
+
|
|
1045
|
+
// Close for unsafe_remove_sst_file
|
|
1046
|
+
for (auto& h : handles) {
|
|
1047
|
+
delete h;
|
|
1048
|
+
}
|
|
1049
|
+
delete db;
|
|
1050
|
+
db = nullptr;
|
|
1051
|
+
|
|
1052
|
+
snprintf(arg4, sizeof(arg4), "%" PRIu64, to_remove);
|
|
1053
|
+
ASSERT_EQ(0,
|
|
1054
|
+
LDBCommandRunner::RunCommand(4, argv, opts, LDBOptions(), nullptr));
|
|
1055
|
+
|
|
1056
|
+
ASSERT_OK(DB::Open(opts, dbname, cfds, &handles, &db));
|
|
1057
|
+
|
|
1058
|
+
ASSERT_OK(db->Get(ReadOptions(), handles[1], "3", &val));
|
|
1059
|
+
ASSERT_EQ(val, "3");
|
|
1060
|
+
|
|
1061
|
+
ASSERT_TRUE(db->Get(ReadOptions(), handles[0], "0", &val).IsNotFound());
|
|
1062
|
+
|
|
1027
1063
|
for (auto& h : handles) {
|
|
1028
1064
|
delete h;
|
|
1029
1065
|
}
|
|
@@ -379,6 +379,7 @@ TEST_F(BlockCacheTracerTest, HumanReadableTrace) {
|
|
|
379
379
|
} // namespace ROCKSDB_NAMESPACE
|
|
380
380
|
|
|
381
381
|
int main(int argc, char** argv) {
|
|
382
|
+
ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
|
|
382
383
|
::testing::InitGoogleTest(&argc, argv);
|
|
383
384
|
return RUN_ALL_TESTS();
|
|
384
385
|
}
|
|
@@ -347,6 +347,7 @@ TEST_F(IOTracerTest, AtomicMultipleWrites) {
|
|
|
347
347
|
} // namespace ROCKSDB_NAMESPACE
|
|
348
348
|
|
|
349
349
|
int main(int argc, char** argv) {
|
|
350
|
+
ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
|
|
350
351
|
::testing::InitGoogleTest(&argc, argv);
|
|
351
352
|
return RUN_ALL_TESTS();
|
|
352
353
|
}
|
|
@@ -1169,6 +1169,7 @@ TEST(RibbonTest, RibbonTestLevelThreshold) {
|
|
|
1169
1169
|
} // namespace ROCKSDB_NAMESPACE
|
|
1170
1170
|
|
|
1171
1171
|
int main(int argc, char** argv) {
|
|
1172
|
+
ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
|
|
1172
1173
|
::testing::InitGoogleTest(&argc, argv);
|
|
1173
1174
|
ParseCommandLineFlags(&argc, &argv, true);
|
|
1174
1175
|
|
|
@@ -315,6 +315,7 @@ TEST_F(DynamicBloomTest, concurrent_with_perf) {
|
|
|
315
315
|
} // namespace ROCKSDB_NAMESPACE
|
|
316
316
|
|
|
317
317
|
int main(int argc, char** argv) {
|
|
318
|
+
ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
|
|
318
319
|
::testing::InitGoogleTest(&argc, argv);
|
|
319
320
|
ParseCommandLineFlags(&argc, &argv, true);
|
|
320
321
|
|
|
@@ -1060,6 +1060,7 @@ TEST_F(WritableFileWriterIOPriorityTest, BasicOp) {
|
|
|
1060
1060
|
} // namespace ROCKSDB_NAMESPACE
|
|
1061
1061
|
|
|
1062
1062
|
int main(int argc, char** argv) {
|
|
1063
|
+
ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
|
|
1063
1064
|
::testing::InitGoogleTest(&argc, argv);
|
|
1064
1065
|
return RUN_ALL_TESTS();
|
|
1065
1066
|
}
|
|
@@ -6,6 +6,8 @@
|
|
|
6
6
|
#pragma once
|
|
7
7
|
#include <gflags/gflags.h>
|
|
8
8
|
|
|
9
|
+
#include <functional>
|
|
10
|
+
|
|
9
11
|
#ifndef GFLAGS_NAMESPACE
|
|
10
12
|
// in case it's not defined in old versions, that's probably because it was
|
|
11
13
|
// still google by default.
|
|
@@ -16,10 +18,13 @@
|
|
|
16
18
|
// DEFINE_uint32 does not appear in older versions of gflags. This should be
|
|
17
19
|
// a sane definition for those versions.
|
|
18
20
|
#include <cstdint>
|
|
19
|
-
#define DEFINE_uint32(name, val, txt)
|
|
20
|
-
namespace gflags_compat {
|
|
21
|
-
DEFINE_int32(name, val, txt);
|
|
22
|
-
}
|
|
23
|
-
uint32_t
|
|
24
|
-
*reinterpret_cast<uint32_t *>(&gflags_compat::FLAGS_##name);
|
|
25
|
-
|
|
21
|
+
#define DEFINE_uint32(name, val, txt) \
|
|
22
|
+
namespace gflags_compat { \
|
|
23
|
+
DEFINE_int32(name, val, txt); \
|
|
24
|
+
} \
|
|
25
|
+
std::reference_wrapper<uint32_t> FLAGS_##name = \
|
|
26
|
+
std::ref(*reinterpret_cast<uint32_t *>(&gflags_compat::FLAGS_##name));
|
|
27
|
+
|
|
28
|
+
#define DECLARE_uint32(name) \
|
|
29
|
+
extern std::reference_wrapper<uint32_t> FLAGS_##name;
|
|
30
|
+
#endif // !DEFINE_uint32
|
|
@@ -846,6 +846,7 @@ TEST(MathTest, CodingGeneric) {
|
|
|
846
846
|
int main(int argc, char** argv) {
|
|
847
847
|
fprintf(stderr, "NPHash64 id: %x\n",
|
|
848
848
|
static_cast<int>(ROCKSDB_NAMESPACE::GetSliceNPHash64("RocksDB")));
|
|
849
|
+
ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
|
|
849
850
|
::testing::InitGoogleTest(&argc, argv);
|
|
850
851
|
|
|
851
852
|
return RUN_ALL_TESTS();
|
|
@@ -3,15 +3,16 @@
|
|
|
3
3
|
// COPYING file in the root directory) and Apache 2.0 License
|
|
4
4
|
// (found in the LICENSE.Apache file in the root directory).
|
|
5
5
|
|
|
6
|
+
#include "util/heap.h"
|
|
7
|
+
|
|
6
8
|
#include <gtest/gtest.h>
|
|
7
9
|
|
|
8
10
|
#include <climits>
|
|
9
|
-
|
|
10
11
|
#include <queue>
|
|
11
12
|
#include <random>
|
|
12
13
|
#include <utility>
|
|
13
14
|
|
|
14
|
-
#include "
|
|
15
|
+
#include "port/stack_trace.h"
|
|
15
16
|
|
|
16
17
|
#ifndef GFLAGS
|
|
17
18
|
const int64_t FLAGS_iters = 100000;
|
|
@@ -131,6 +132,7 @@ INSTANTIATE_TEST_CASE_P(
|
|
|
131
132
|
} // namespace ROCKSDB_NAMESPACE
|
|
132
133
|
|
|
133
134
|
int main(int argc, char** argv) {
|
|
135
|
+
ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
|
|
134
136
|
::testing::InitGoogleTest(&argc, argv);
|
|
135
137
|
#ifdef GFLAGS
|
|
136
138
|
GFLAGS_NAMESPACE::ParseCommandLineFlags(&argc, &argv, true);
|
|
@@ -470,6 +470,7 @@ TEST_F(RateLimiterTest, AutoTuneIncreaseWhenFull) {
|
|
|
470
470
|
} // namespace ROCKSDB_NAMESPACE
|
|
471
471
|
|
|
472
472
|
int main(int argc, char** argv) {
|
|
473
|
+
ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
|
|
473
474
|
::testing::InitGoogleTest(&argc, argv);
|
|
474
475
|
return RUN_ALL_TESTS();
|
|
475
476
|
}
|
|
@@ -1298,6 +1298,7 @@ TYPED_TEST(RibbonTypeParamTest, OptimizeHomogAtScale) {
|
|
|
1298
1298
|
}
|
|
1299
1299
|
|
|
1300
1300
|
int main(int argc, char** argv) {
|
|
1301
|
+
ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
|
|
1301
1302
|
::testing::InitGoogleTest(&argc, argv);
|
|
1302
1303
|
#ifdef GFLAGS
|
|
1303
1304
|
ParseCommandLineFlags(&argc, &argv, true);
|
|
@@ -148,6 +148,7 @@ TEST_F(SliceTransformDBTest, CapPrefix) {
|
|
|
148
148
|
} // namespace ROCKSDB_NAMESPACE
|
|
149
149
|
|
|
150
150
|
int main(int argc, char** argv) {
|
|
151
|
+
ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
|
|
151
152
|
::testing::InitGoogleTest(&argc, argv);
|
|
152
153
|
return RUN_ALL_TESTS();
|
|
153
154
|
}
|
|
@@ -357,6 +357,7 @@ TEST_F(ThreadListTest, SimpleEventTest) {
|
|
|
357
357
|
} // namespace ROCKSDB_NAMESPACE
|
|
358
358
|
|
|
359
359
|
int main(int argc, char** argv) {
|
|
360
|
+
ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
|
|
360
361
|
::testing::InitGoogleTest(&argc, argv);
|
|
361
362
|
return RUN_ALL_TESTS();
|
|
362
363
|
}
|
|
@@ -576,6 +576,7 @@ TEST_F(ThreadLocalTest, DISABLED_MainThreadDiesFirst) {
|
|
|
576
576
|
} // namespace ROCKSDB_NAMESPACE
|
|
577
577
|
|
|
578
578
|
int main(int argc, char** argv) {
|
|
579
|
+
ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
|
|
579
580
|
::testing::InitGoogleTest(&argc, argv);
|
|
580
581
|
return RUN_ALL_TESTS();
|
|
581
582
|
}
|
|
@@ -395,6 +395,7 @@ TEST_F(TimerTest, DestroyTimerWithRunningFunc) {
|
|
|
395
395
|
} // namespace ROCKSDB_NAMESPACE
|
|
396
396
|
|
|
397
397
|
int main(int argc, char** argv) {
|
|
398
|
+
ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
|
|
398
399
|
::testing::InitGoogleTest(&argc, argv);
|
|
399
400
|
|
|
400
401
|
return RUN_ALL_TESTS();
|