@nxtedition/rocksdb 13.5.12 → 14.0.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 +33 -2
- package/binding.gyp +2 -2
- package/chained-batch.js +9 -16
- package/deps/rocksdb/rocksdb/BUCK +18 -1
- package/deps/rocksdb/rocksdb/CMakeLists.txt +10 -3
- package/deps/rocksdb/rocksdb/Makefile +20 -9
- package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +90 -13
- package/deps/rocksdb/rocksdb/cache/clock_cache.cc +88 -75
- package/deps/rocksdb/rocksdb/cache/clock_cache.h +44 -36
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +184 -148
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +5 -11
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +116 -47
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +1 -1
- package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +3 -6
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +1 -1
- package/deps/rocksdb/rocksdb/db/builder.cc +4 -2
- package/deps/rocksdb/rocksdb/db/c.cc +207 -0
- package/deps/rocksdb/rocksdb/db/c_test.c +72 -0
- package/deps/rocksdb/rocksdb/db/column_family.cc +3 -2
- package/deps/rocksdb/rocksdb/db/column_family.h +5 -0
- package/deps/rocksdb/rocksdb/db/compact_files_test.cc +4 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +2 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +51 -38
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +29 -12
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +5 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +566 -366
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +131 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +1 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +7 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +4 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +13 -14
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +12 -7
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +8 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +97 -76
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +11 -14
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +1 -1
- package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +8 -0
- package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +16 -3
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +448 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +22 -20
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +4 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +5 -5
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +7 -3
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_iter.cc +104 -0
- package/deps/rocksdb/rocksdb/db/db_iter.h +4 -11
- package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +331 -58
- package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +129 -0
- package/deps/rocksdb/rocksdb/db/db_sst_test.cc +64 -0
- package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +40 -0
- package/deps/rocksdb/rocksdb/db/db_test2.cc +25 -15
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +42 -24
- package/deps/rocksdb/rocksdb/db/db_test_util.h +29 -14
- package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +69 -36
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/event_helpers.cc +1 -0
- package/deps/rocksdb/rocksdb/db/experimental.cc +5 -4
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +8 -1
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +275 -79
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +23 -5
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +591 -175
- package/deps/rocksdb/rocksdb/db/flush_job.cc +3 -4
- package/deps/rocksdb/rocksdb/db/log_reader.cc +5 -2
- package/deps/rocksdb/rocksdb/db/memtable.cc +84 -35
- package/deps/rocksdb/rocksdb/db/memtable.h +39 -34
- package/deps/rocksdb/rocksdb/db/merge_helper.cc +1 -0
- package/deps/rocksdb/rocksdb/db/merge_operator.cc +1 -1
- package/deps/rocksdb/rocksdb/db/multi_scan.cc +11 -5
- package/deps/rocksdb/rocksdb/db/version_edit.cc +1 -1
- package/deps/rocksdb/rocksdb/db/version_edit.h +1 -1
- package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +34 -14
- package/deps/rocksdb/rocksdb/db/version_edit_handler.h +28 -5
- package/deps/rocksdb/rocksdb/db/version_set.cc +159 -14
- package/deps/rocksdb/rocksdb/db/version_set.h +2 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/CMakeLists.txt +1 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +60 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +16 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compaction_service.h +75 -10
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compression_manager.cc +28 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compression_manager.h +2 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +31 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +50 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +57 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_stat.h +0 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +266 -35
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +5 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +0 -6
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +18 -2
- package/deps/rocksdb/rocksdb/env/env.cc +12 -0
- package/deps/rocksdb/rocksdb/env/env_test.cc +18 -0
- package/deps/rocksdb/rocksdb/env/file_system_tracer.cc +2 -0
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +9 -5
- package/deps/rocksdb/rocksdb/env/io_posix.cc +4 -2
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +19 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_compression.h +33 -31
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +42 -9
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +93 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +43 -49
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +4 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/compression_type.h +8 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/data_structure.h +487 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +11 -12
- package/deps/rocksdb/rocksdb/include/rocksdb/env.h +135 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +5 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +12 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/ldb_tool.h +8 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +12 -8
- package/deps/rocksdb/rocksdb/include/rocksdb/metadata.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/multi_scan.h +19 -9
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +219 -24
- package/deps/rocksdb/rocksdb/include/rocksdb/point_lock_bench_tool.h +14 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/slice.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +7 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/status.h +16 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/table.h +16 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +13 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/types.h +4 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +0 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/user_defined_index.h +45 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/cache_dump_load.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +6 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +21 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
- package/deps/rocksdb/rocksdb/memory/memory_allocator_impl.h +3 -3
- package/deps/rocksdb/rocksdb/memtable/inlineskiplist.h +77 -51
- package/deps/rocksdb/rocksdb/memtable/skiplist.h +10 -13
- package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +16 -7
- package/deps/rocksdb/rocksdb/memtable/vectorrep.cc +9 -4
- package/deps/rocksdb/rocksdb/monitoring/iostats_context.cc +2 -0
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +6 -0
- package/deps/rocksdb/rocksdb/options/cf_options.cc +13 -1
- package/deps/rocksdb/rocksdb/options/cf_options.h +6 -2
- package/deps/rocksdb/rocksdb/options/options.cc +2 -0
- package/deps/rocksdb/rocksdb/options/options_helper.cc +9 -8
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +9 -5
- package/deps/rocksdb/rocksdb/port/mmap.cc +1 -1
- package/deps/rocksdb/rocksdb/port/win/xpress_win.cc +51 -0
- package/deps/rocksdb/rocksdb/port/win/xpress_win.h +4 -0
- package/deps/rocksdb/rocksdb/src.mk +8 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +1125 -765
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +35 -24
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +29 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +732 -256
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +225 -16
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +102 -26
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +2 -75
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +433 -141
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +2 -0
- package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.cc +17 -10
- package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy_impl.h +20 -0
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +112 -85
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +191 -36
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +2 -2
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/user_defined_index_wrapper.h +108 -31
- package/deps/rocksdb/rocksdb/table/external_table.cc +7 -3
- package/deps/rocksdb/rocksdb/table/format.cc +6 -12
- package/deps/rocksdb/rocksdb/table/format.h +10 -0
- package/deps/rocksdb/rocksdb/table/internal_iterator.h +1 -1
- package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +1 -1
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +1 -1
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +5 -0
- package/deps/rocksdb/rocksdb/table/multiget_context.h +3 -1
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +118 -46
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +9 -8
- package/deps/rocksdb/rocksdb/table/table_builder.h +5 -0
- package/deps/rocksdb/rocksdb/table/table_properties.cc +16 -0
- package/deps/rocksdb/rocksdb/table/table_test.cc +1540 -155
- package/deps/rocksdb/rocksdb/test_util/testutil.h +21 -5
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +26 -5
- package/deps/rocksdb/rocksdb/tools/ldb.cc +1 -2
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +2 -0
- package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +9 -3
- package/deps/rocksdb/rocksdb/tools/sst_dump_test.cc +133 -165
- package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +173 -64
- package/deps/rocksdb/rocksdb/util/aligned_buffer.h +69 -0
- package/deps/rocksdb/rocksdb/util/atomic.h +6 -0
- package/deps/rocksdb/rocksdb/util/auto_tune_compressor.cc +29 -20
- package/deps/rocksdb/rocksdb/util/auto_tune_compressor.h +10 -6
- package/deps/rocksdb/rocksdb/util/bit_fields.h +338 -0
- package/deps/rocksdb/rocksdb/util/coding.h +3 -3
- package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +2 -2
- package/deps/rocksdb/rocksdb/util/compression.cc +777 -82
- package/deps/rocksdb/rocksdb/util/compression.h +5 -0
- package/deps/rocksdb/rocksdb/util/compression_test.cc +5 -3
- package/deps/rocksdb/rocksdb/util/dynamic_bloom.cc +2 -2
- package/deps/rocksdb/rocksdb/util/dynamic_bloom.h +15 -14
- package/deps/rocksdb/rocksdb/util/interval_test.cc +102 -0
- package/deps/rocksdb/rocksdb/util/semaphore.h +164 -0
- package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.cc +10 -6
- package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.h +4 -2
- package/deps/rocksdb/rocksdb/util/slice_test.cc +136 -0
- package/deps/rocksdb/rocksdb/util/status.cc +1 -0
- package/deps/rocksdb/rocksdb/util/string_util.cc +2 -16
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +7 -4
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +35 -14
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_test.cc +2 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/lock_manager.cc +5 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/any_lock_manager_test.h +244 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_bench.cc +18 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_bench_tool.cc +159 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.cc +1244 -161
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.h +66 -12
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_stress_test.cc +103 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.cc +1275 -8
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.h +40 -262
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test_common.h +78 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_validation_test_runner.h +469 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +2 -6
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +4 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +9 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/timestamped_snapshot_test.cc +18 -9
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +2 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_db_mutex_impl.cc +2 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +72 -44
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +92 -15
- package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +6 -20
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +143 -112
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +23 -16
- package/index.js +3 -3
- 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 +38 -12
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_stat.cc +0 -17
|
@@ -35,51 +35,71 @@
|
|
|
35
35
|
|
|
36
36
|
namespace ROCKSDB_NAMESPACE {
|
|
37
37
|
|
|
38
|
+
constexpr std::array DBAsBaseDB_TransactionTest_Params = {
|
|
39
|
+
std::make_tuple(false, false, WRITE_COMMITTED, kOrderedWrite),
|
|
40
|
+
std::make_tuple(false, true, WRITE_COMMITTED, kOrderedWrite),
|
|
41
|
+
std::make_tuple(false, false, WRITE_PREPARED, kOrderedWrite),
|
|
42
|
+
std::make_tuple(false, true, WRITE_PREPARED, kOrderedWrite),
|
|
43
|
+
std::make_tuple(false, true, WRITE_PREPARED, kUnorderedWrite),
|
|
44
|
+
std::make_tuple(false, false, WRITE_UNPREPARED, kOrderedWrite),
|
|
45
|
+
std::make_tuple(false, true, WRITE_UNPREPARED, kOrderedWrite)};
|
|
46
|
+
|
|
38
47
|
INSTANTIATE_TEST_CASE_P(
|
|
39
48
|
DBAsBaseDB, TransactionTest,
|
|
40
|
-
::testing::
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
49
|
+
::testing::ValuesIn(WRAP_PARAM_WITH_PER_KEY_POINT_LOCK_MANAGER_PARAMS(
|
|
50
|
+
WRAP_PARAM(bool, bool, TxnDBWritePolicy, WriteOrdering),
|
|
51
|
+
DBAsBaseDB_TransactionTest_Params)));
|
|
52
|
+
|
|
53
|
+
constexpr std::array DBAsBaseDB_TransactionStressTest_Params = {
|
|
54
|
+
std::make_tuple(false, false, WRITE_COMMITTED, kOrderedWrite),
|
|
55
|
+
std::make_tuple(false, true, WRITE_COMMITTED, kOrderedWrite),
|
|
56
|
+
std::make_tuple(false, false, WRITE_PREPARED, kOrderedWrite),
|
|
57
|
+
std::make_tuple(false, true, WRITE_PREPARED, kOrderedWrite),
|
|
58
|
+
std::make_tuple(false, true, WRITE_PREPARED, kUnorderedWrite),
|
|
59
|
+
std::make_tuple(false, false, WRITE_UNPREPARED, kOrderedWrite),
|
|
60
|
+
std::make_tuple(false, true, WRITE_UNPREPARED, kOrderedWrite)};
|
|
61
|
+
|
|
48
62
|
INSTANTIATE_TEST_CASE_P(
|
|
49
63
|
DBAsBaseDB, TransactionStressTest,
|
|
50
|
-
::testing::
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
64
|
+
::testing::ValuesIn(WRAP_PARAM_WITH_PER_KEY_POINT_LOCK_MANAGER_PARAMS(
|
|
65
|
+
WRAP_PARAM(bool, bool, TxnDBWritePolicy, WriteOrdering),
|
|
66
|
+
DBAsBaseDB_TransactionStressTest_Params)));
|
|
67
|
+
|
|
68
|
+
constexpr std::array StackableDBAsBaseDB_TransactionTest_Params = {
|
|
69
|
+
std::make_tuple(true, true, WRITE_COMMITTED, kOrderedWrite),
|
|
70
|
+
std::make_tuple(true, true, WRITE_PREPARED, kOrderedWrite),
|
|
71
|
+
std::make_tuple(true, true, WRITE_UNPREPARED, kOrderedWrite)};
|
|
72
|
+
|
|
58
73
|
INSTANTIATE_TEST_CASE_P(
|
|
59
74
|
StackableDBAsBaseDB, TransactionTest,
|
|
60
|
-
::testing::
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
std::make_tuple(true, true, WRITE_UNPREPARED, kOrderedWrite)));
|
|
75
|
+
::testing::ValuesIn(WRAP_PARAM_WITH_PER_KEY_POINT_LOCK_MANAGER_PARAMS(
|
|
76
|
+
WRAP_PARAM(bool, bool, TxnDBWritePolicy, WriteOrdering),
|
|
77
|
+
StackableDBAsBaseDB_TransactionTest_Params)));
|
|
64
78
|
|
|
65
79
|
// MySQLStyleTransactionTest takes far too long for valgrind to run. Only do it
|
|
66
80
|
// in full mode (`ROCKSDB_FULL_VALGRIND_RUN` compiler flag is set).
|
|
67
81
|
#if !defined(ROCKSDB_VALGRIND_RUN) || defined(ROCKSDB_FULL_VALGRIND_RUN)
|
|
82
|
+
|
|
83
|
+
constexpr std::array MySQLStyleTransactionTest_Params = {
|
|
84
|
+
std::make_tuple(false, false, WRITE_COMMITTED, kOrderedWrite, false),
|
|
85
|
+
std::make_tuple(false, true, WRITE_COMMITTED, kOrderedWrite, false),
|
|
86
|
+
std::make_tuple(false, false, WRITE_PREPARED, kOrderedWrite, false),
|
|
87
|
+
std::make_tuple(false, false, WRITE_PREPARED, kOrderedWrite, true),
|
|
88
|
+
std::make_tuple(false, true, WRITE_PREPARED, kOrderedWrite, false),
|
|
89
|
+
std::make_tuple(false, true, WRITE_PREPARED, kOrderedWrite, true),
|
|
90
|
+
std::make_tuple(false, false, WRITE_UNPREPARED, kOrderedWrite, false),
|
|
91
|
+
std::make_tuple(false, false, WRITE_UNPREPARED, kOrderedWrite, true),
|
|
92
|
+
std::make_tuple(false, true, WRITE_UNPREPARED, kOrderedWrite, false),
|
|
93
|
+
std::make_tuple(false, true, WRITE_UNPREPARED, kOrderedWrite, true),
|
|
94
|
+
std::make_tuple(false, true, WRITE_PREPARED, kUnorderedWrite, false),
|
|
95
|
+
std::make_tuple(false, true, WRITE_PREPARED, kUnorderedWrite, true)};
|
|
96
|
+
|
|
68
97
|
INSTANTIATE_TEST_CASE_P(
|
|
69
98
|
MySQLStyleTransactionTest, MySQLStyleTransactionTest,
|
|
70
|
-
::testing::
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
std::make_tuple(false, false, WRITE_PREPARED, kOrderedWrite, true),
|
|
75
|
-
std::make_tuple(false, true, WRITE_PREPARED, kOrderedWrite, false),
|
|
76
|
-
std::make_tuple(false, true, WRITE_PREPARED, kOrderedWrite, true),
|
|
77
|
-
std::make_tuple(false, false, WRITE_UNPREPARED, kOrderedWrite, false),
|
|
78
|
-
std::make_tuple(false, false, WRITE_UNPREPARED, kOrderedWrite, true),
|
|
79
|
-
std::make_tuple(false, true, WRITE_UNPREPARED, kOrderedWrite, false),
|
|
80
|
-
std::make_tuple(false, true, WRITE_UNPREPARED, kOrderedWrite, true),
|
|
81
|
-
std::make_tuple(false, true, WRITE_PREPARED, kUnorderedWrite, false),
|
|
82
|
-
std::make_tuple(false, true, WRITE_PREPARED, kUnorderedWrite, true)));
|
|
99
|
+
::testing::ValuesIn(WRAP_PARAM_WITH_PER_KEY_POINT_LOCK_MANAGER_PARAMS(
|
|
100
|
+
WRAP_PARAM(bool, bool, TxnDBWritePolicy, WriteOrdering, bool),
|
|
101
|
+
MySQLStyleTransactionTest_Params)));
|
|
102
|
+
|
|
83
103
|
#endif // !defined(ROCKSDB_VALGRIND_RUN) || defined(ROCKSDB_FULL_VALGRIND_RUN)
|
|
84
104
|
|
|
85
105
|
TEST_P(TransactionTest, TestUpperBoundUponDeletion) {
|
|
@@ -5777,8 +5797,8 @@ Status TransactionStressTestInserter(
|
|
|
5777
5797
|
TransactionOptions txn_options;
|
|
5778
5798
|
txn_options.use_only_the_last_commit_time_batch_for_recovery = true;
|
|
5779
5799
|
|
|
5780
|
-
// Inside the inserter we might also retake the snapshot. We do both since
|
|
5781
|
-
// separte functions are engaged for each.
|
|
5800
|
+
// Inside the inserter we might also retake the snapshot. We do both since
|
|
5801
|
+
// two separte functions are engaged for each.
|
|
5782
5802
|
txn_options.set_snapshot = rand->OneIn(2);
|
|
5783
5803
|
|
|
5784
5804
|
RandomTransactionInserter inserter(
|
|
@@ -8862,7 +8882,7 @@ TEST_P(TransactionTest, SecondaryIndexOnKey) {
|
|
|
8862
8882
|
}
|
|
8863
8883
|
}
|
|
8864
8884
|
|
|
8865
|
-
|
|
8885
|
+
TEST_P(TransactionDBTest, CollapseKey) {
|
|
8866
8886
|
ASSERT_OK(ReOpen());
|
|
8867
8887
|
ASSERT_OK(db->Put({}, "hello", "world"));
|
|
8868
8888
|
ASSERT_OK(db->Flush({}));
|
|
@@ -8911,7 +8931,7 @@ TEST_F(TransactionDBTest, CollapseKey) {
|
|
|
8911
8931
|
}
|
|
8912
8932
|
}
|
|
8913
8933
|
|
|
8914
|
-
|
|
8934
|
+
TEST_P(TransactionDBTest, FlushedLogWithPendingPrepareIsSynced) {
|
|
8915
8935
|
// Repro for a bug where we missed a necessary sync of the old WAL during
|
|
8916
8936
|
// memtable flush. It happened due to applying an optimization to skip syncing
|
|
8917
8937
|
// the old WAL in too many scenarios (all memtable flushes on single CF
|
|
@@ -8956,8 +8976,9 @@ TEST_F(TransactionDBTest, FlushedLogWithPendingPrepareIsSynced) {
|
|
|
8956
8976
|
}
|
|
8957
8977
|
}
|
|
8958
8978
|
|
|
8959
|
-
class CommitBypassMemtableTest
|
|
8960
|
-
|
|
8979
|
+
class CommitBypassMemtableTest
|
|
8980
|
+
: public DBTestBase,
|
|
8981
|
+
public ::testing::WithParamInterface<std::tuple<bool, bool>> {
|
|
8961
8982
|
public:
|
|
8962
8983
|
CommitBypassMemtableTest() : DBTestBase("commit_bypass_memtable_test", true) {
|
|
8963
8984
|
SetUpTransactionDB();
|
|
@@ -8968,12 +8989,11 @@ class CommitBypassMemtableTest : public DBTestBase,
|
|
|
8968
8989
|
Options options;
|
|
8969
8990
|
TransactionDBOptions txn_db_opts;
|
|
8970
8991
|
|
|
8971
|
-
void SetUpTransactionDB(
|
|
8972
|
-
bool atomic_flush = false) {
|
|
8992
|
+
void SetUpTransactionDB(bool atomic_flush = false) {
|
|
8973
8993
|
options = CurrentOptions();
|
|
8974
8994
|
options.create_if_missing = true;
|
|
8975
8995
|
options.allow_2pc = true;
|
|
8976
|
-
options.two_write_queues = GetParam();
|
|
8996
|
+
options.two_write_queues = std::get<0>(GetParam());
|
|
8977
8997
|
// Avoid write stall
|
|
8978
8998
|
options.max_write_buffer_number = 8;
|
|
8979
8999
|
options.atomic_flush = atomic_flush;
|
|
@@ -8982,13 +9002,16 @@ class CommitBypassMemtableTest : public DBTestBase,
|
|
|
8982
9002
|
Destroy(options, true);
|
|
8983
9003
|
|
|
8984
9004
|
txn_db_opts.write_policy = TxnDBWritePolicy::WRITE_COMMITTED;
|
|
9005
|
+
txn_db_opts.use_per_key_point_lock_mgr = std::get<1>(GetParam());
|
|
8985
9006
|
ASSERT_OK(TransactionDB::Open(options, txn_db_opts, dbname_, &txn_db));
|
|
8986
9007
|
ASSERT_NE(txn_db, nullptr);
|
|
8987
9008
|
db_ = txn_db;
|
|
8988
9009
|
}
|
|
8989
9010
|
};
|
|
8990
9011
|
|
|
8991
|
-
INSTANTIATE_TEST_CASE_P(, CommitBypassMemtableTest,
|
|
9012
|
+
INSTANTIATE_TEST_CASE_P(, CommitBypassMemtableTest,
|
|
9013
|
+
::testing::Combine(::testing::Bool(),
|
|
9014
|
+
::testing::Bool()));
|
|
8992
9015
|
|
|
8993
9016
|
// TODO: parameterize other tests in the file with commit_bypass_memtable
|
|
8994
9017
|
TEST_P(CommitBypassMemtableTest, SingleCFUpdate) {
|
|
@@ -9776,7 +9799,7 @@ TEST_P(CommitBypassMemtableTest, MergeMiniStress) {
|
|
|
9776
9799
|
}
|
|
9777
9800
|
}
|
|
9778
9801
|
|
|
9779
|
-
|
|
9802
|
+
TEST_P(TransactionDBTest, SelfDeadlockBug) {
|
|
9780
9803
|
ASSERT_OK(ReOpen());
|
|
9781
9804
|
|
|
9782
9805
|
// Create two transactions
|
|
@@ -9820,6 +9843,11 @@ TEST_F(TransactionDBTest, SelfDeadlockBug) {
|
|
|
9820
9843
|
delete txn2;
|
|
9821
9844
|
}
|
|
9822
9845
|
|
|
9846
|
+
INSTANTIATE_TEST_CASE_P(
|
|
9847
|
+
TransactionDBBasicTest, TransactionDBTest,
|
|
9848
|
+
::testing::Combine(/*user_per_key_point_lock_manager=*/::testing::Bool(),
|
|
9849
|
+
/*deadlock_timeout_us=*/::testing::Values(0, 1000)));
|
|
9850
|
+
|
|
9823
9851
|
TEST_P(CommitBypassMemtableTest,
|
|
9824
9852
|
OptimizeLargeTxnCommitWriteBatchSizeThreshold) {
|
|
9825
9853
|
// Tests TransactionOptions::large_txn_commit_optimize_byte_threshold
|
|
@@ -49,14 +49,18 @@ class TransactionTestBase : public ::testing::Test {
|
|
|
49
49
|
|
|
50
50
|
TransactionDBOptions txn_db_options;
|
|
51
51
|
bool use_stackable_db_;
|
|
52
|
+
int64_t deadlock_timeout_us_;
|
|
52
53
|
|
|
53
54
|
TransactionTestBase(bool use_stackable_db, bool two_write_queue,
|
|
54
55
|
TxnDBWritePolicy write_policy,
|
|
55
|
-
WriteOrdering write_ordering
|
|
56
|
+
WriteOrdering write_ordering,
|
|
57
|
+
bool use_per_key_point_lock_mgr,
|
|
58
|
+
int64_t deadlock_timeout_us)
|
|
56
59
|
: db(nullptr),
|
|
57
60
|
special_env(Env::Default()),
|
|
58
61
|
env(nullptr),
|
|
59
|
-
use_stackable_db_(use_stackable_db)
|
|
62
|
+
use_stackable_db_(use_stackable_db),
|
|
63
|
+
deadlock_timeout_us_(deadlock_timeout_us) {
|
|
60
64
|
options.create_if_missing = true;
|
|
61
65
|
options.max_write_buffer_number = 2;
|
|
62
66
|
options.write_buffer_size = 4 * 1024;
|
|
@@ -77,6 +81,7 @@ class TransactionTestBase : public ::testing::Test {
|
|
|
77
81
|
txn_db_options.default_lock_timeout = 0;
|
|
78
82
|
txn_db_options.write_policy = write_policy;
|
|
79
83
|
txn_db_options.rollback_merge_operands = true;
|
|
84
|
+
txn_db_options.use_per_key_point_lock_mgr = use_per_key_point_lock_mgr;
|
|
80
85
|
// This will stress write unprepared, by forcing write batch flush on every
|
|
81
86
|
// write.
|
|
82
87
|
txn_db_options.default_write_batch_flush_threshold = 1;
|
|
@@ -481,30 +486,35 @@ class TransactionTestBase : public ::testing::Test {
|
|
|
481
486
|
|
|
482
487
|
class TransactionTest
|
|
483
488
|
: public TransactionTestBase,
|
|
484
|
-
virtual public ::testing::WithParamInterface<
|
|
485
|
-
|
|
489
|
+
virtual public ::testing::WithParamInterface<std::tuple<
|
|
490
|
+
bool, bool, TxnDBWritePolicy, WriteOrdering, bool, int64_t>> {
|
|
486
491
|
public:
|
|
487
492
|
TransactionTest()
|
|
488
493
|
: TransactionTestBase(std::get<0>(GetParam()), std::get<1>(GetParam()),
|
|
489
|
-
std::get<2>(GetParam()), std::get<3>(GetParam())
|
|
494
|
+
std::get<2>(GetParam()), std::get<3>(GetParam()),
|
|
495
|
+
std::get<4>(GetParam()), std::get<5>(GetParam())) {}
|
|
490
496
|
};
|
|
491
497
|
|
|
492
|
-
class TransactionDBTest
|
|
498
|
+
class TransactionDBTest
|
|
499
|
+
: public TransactionTestBase,
|
|
500
|
+
virtual public ::testing::WithParamInterface<std::tuple<bool, int64_t>> {
|
|
493
501
|
public:
|
|
494
502
|
TransactionDBTest()
|
|
495
|
-
: TransactionTestBase(false, false, WRITE_COMMITTED, kOrderedWrite
|
|
503
|
+
: TransactionTestBase(false, false, WRITE_COMMITTED, kOrderedWrite,
|
|
504
|
+
std::get<0>(GetParam()), std::get<1>(GetParam())) {}
|
|
496
505
|
};
|
|
497
506
|
|
|
498
507
|
class TransactionStressTest : public TransactionTest {};
|
|
499
508
|
|
|
500
509
|
class MySQLStyleTransactionTest
|
|
501
510
|
: public TransactionTestBase,
|
|
502
|
-
virtual public ::testing::WithParamInterface<
|
|
503
|
-
|
|
511
|
+
virtual public ::testing::WithParamInterface<std::tuple<
|
|
512
|
+
bool, bool, TxnDBWritePolicy, WriteOrdering, bool, bool, int64_t>> {
|
|
504
513
|
public:
|
|
505
514
|
MySQLStyleTransactionTest()
|
|
506
515
|
: TransactionTestBase(std::get<0>(GetParam()), std::get<1>(GetParam()),
|
|
507
|
-
std::get<2>(GetParam()), std::get<3>(GetParam())
|
|
516
|
+
std::get<2>(GetParam()), std::get<3>(GetParam()),
|
|
517
|
+
std::get<5>(GetParam()), std::get<6>(GetParam())),
|
|
508
518
|
with_slow_threads_(std::get<4>(GetParam())) {
|
|
509
519
|
if (with_slow_threads_ &&
|
|
510
520
|
(txn_db_options.write_policy == WRITE_PREPARED ||
|
|
@@ -527,11 +537,13 @@ class MySQLStyleTransactionTest
|
|
|
527
537
|
|
|
528
538
|
class WriteCommittedTxnWithTsTest
|
|
529
539
|
: public TransactionTestBase,
|
|
530
|
-
public ::testing::WithParamInterface<
|
|
540
|
+
public ::testing::WithParamInterface<
|
|
541
|
+
std::tuple<bool, bool, bool, bool, int64_t>> {
|
|
531
542
|
public:
|
|
532
543
|
WriteCommittedTxnWithTsTest()
|
|
533
544
|
: TransactionTestBase(std::get<0>(GetParam()), std::get<1>(GetParam()),
|
|
534
|
-
WRITE_COMMITTED, kOrderedWrite
|
|
545
|
+
WRITE_COMMITTED, kOrderedWrite,
|
|
546
|
+
std::get<3>(GetParam()), std::get<4>(GetParam())) {}
|
|
535
547
|
~WriteCommittedTxnWithTsTest() override {
|
|
536
548
|
for (auto* h : handles_) {
|
|
537
549
|
delete h;
|
|
@@ -567,12 +579,13 @@ class WriteCommittedTxnWithTsTest
|
|
|
567
579
|
|
|
568
580
|
class TimestampedSnapshotWithTsSanityCheck
|
|
569
581
|
: public TransactionTestBase,
|
|
570
|
-
public ::testing::WithParamInterface<
|
|
571
|
-
|
|
582
|
+
public ::testing::WithParamInterface<std::tuple<
|
|
583
|
+
bool, bool, TxnDBWritePolicy, WriteOrdering, bool, int64_t>> {
|
|
572
584
|
public:
|
|
573
585
|
explicit TimestampedSnapshotWithTsSanityCheck()
|
|
574
586
|
: TransactionTestBase(std::get<0>(GetParam()), std::get<1>(GetParam()),
|
|
575
|
-
std::get<2>(GetParam()), std::get<3>(GetParam())
|
|
587
|
+
std::get<2>(GetParam()), std::get<3>(GetParam()),
|
|
588
|
+
std::get<4>(GetParam()), std::get<5>(GetParam())) {}
|
|
576
589
|
~TimestampedSnapshotWithTsSanityCheck() override {
|
|
577
590
|
for (auto* h : handles_) {
|
|
578
591
|
delete h;
|
|
@@ -583,4 +596,68 @@ class TimestampedSnapshotWithTsSanityCheck
|
|
|
583
596
|
std::vector<ColumnFamilyHandle*> handles_{};
|
|
584
597
|
};
|
|
585
598
|
|
|
599
|
+
// The following templates causes a bug in GCC 14, ignore the error for now
|
|
600
|
+
#if defined(__GNUC__) && __GNUC__ == 14
|
|
601
|
+
#pragma GCC diagnostic push
|
|
602
|
+
#pragma GCC diagnostic ignored "-Wstringop-overflow"
|
|
603
|
+
#endif
|
|
604
|
+
|
|
605
|
+
// Wrap existing params with per-key point lock manager parameters
|
|
606
|
+
template <typename TargetParamType, typename SourceParamType, std::size_t... Is>
|
|
607
|
+
std::vector<TargetParamType> WrapParamWithPerKeyPointLockManagerParamsImpl(
|
|
608
|
+
SourceParamType&& source_param, std::index_sequence<Is...>) {
|
|
609
|
+
std::vector<TargetParamType> wrapped_params;
|
|
610
|
+
// Use original PointLockManager
|
|
611
|
+
wrapped_params.push_back(TargetParamType(
|
|
612
|
+
std::get<Is>(std::forward<SourceParamType>(source_param))..., false,
|
|
613
|
+
INT64_C(0)));
|
|
614
|
+
// Use PerKeyPointLockManager with deadlock timeout 0
|
|
615
|
+
wrapped_params.push_back(TargetParamType(
|
|
616
|
+
std::get<Is>(std::forward<SourceParamType>(source_param))..., true,
|
|
617
|
+
INT64_C(0)));
|
|
618
|
+
// Use PerKeyPointLockManager with deadlock timeout 1000
|
|
619
|
+
wrapped_params.push_back(TargetParamType(
|
|
620
|
+
std::get<Is>(std::forward<SourceParamType>(source_param))..., true,
|
|
621
|
+
INT64_C(1000)));
|
|
622
|
+
|
|
623
|
+
return wrapped_params;
|
|
624
|
+
}
|
|
625
|
+
|
|
626
|
+
template <typename TargetParamType, typename SourceParamType>
|
|
627
|
+
std::vector<TargetParamType> WrapParamWithPerKeyPointLockManagerParams(
|
|
628
|
+
SourceParamType&& source_param) {
|
|
629
|
+
// Get the size of the source param
|
|
630
|
+
constexpr std::size_t N = std::tuple_size_v<std::decay_t<SourceParamType>>;
|
|
631
|
+
// Create an index sequence from 0 to N-1
|
|
632
|
+
return WrapParamWithPerKeyPointLockManagerParamsImpl<TargetParamType>(
|
|
633
|
+
std::forward<SourceParamType>(source_param),
|
|
634
|
+
std::make_index_sequence<N>{});
|
|
635
|
+
}
|
|
636
|
+
|
|
637
|
+
template <typename TargetParamType, typename SourceParamType, size_t M>
|
|
638
|
+
std::vector<TargetParamType> WrapParamsWithPerKeyPointLockManagerParams(
|
|
639
|
+
std::array<SourceParamType, M> source_param) {
|
|
640
|
+
std::vector<TargetParamType> wrapped_params;
|
|
641
|
+
for (auto& param : source_param) {
|
|
642
|
+
// Create an index sequence from 0 to N-1
|
|
643
|
+
auto new_params =
|
|
644
|
+
WrapParamWithPerKeyPointLockManagerParams<TargetParamType>(
|
|
645
|
+
std::forward<SourceParamType>(param));
|
|
646
|
+
wrapped_params.insert(wrapped_params.end(), new_params.begin(),
|
|
647
|
+
new_params.end());
|
|
648
|
+
}
|
|
649
|
+
return wrapped_params;
|
|
650
|
+
}
|
|
651
|
+
|
|
652
|
+
#if defined(__GNUC__) && __GNUC__ == 14
|
|
653
|
+
#pragma GCC diagnostic pop
|
|
654
|
+
#endif
|
|
655
|
+
|
|
656
|
+
#define WRAP_PARAM(...) __VA_ARGS__
|
|
657
|
+
|
|
658
|
+
#define WRAP_PARAM_WITH_PER_KEY_POINT_LOCK_MANAGER_PARAMS(SOURCE_PARAM_TYPES, \
|
|
659
|
+
PARAMS) \
|
|
660
|
+
WrapParamsWithPerKeyPointLockManagerParams< \
|
|
661
|
+
std::tuple<SOURCE_PARAM_TYPES, bool, int64_t>>(PARAMS)
|
|
662
|
+
|
|
586
663
|
} // namespace ROCKSDB_NAMESPACE
|
|
@@ -14,26 +14,12 @@
|
|
|
14
14
|
namespace ROCKSDB_NAMESPACE {
|
|
15
15
|
|
|
16
16
|
INSTANTIATE_TEST_CASE_P(
|
|
17
|
-
|
|
18
|
-
::testing::
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
/*enable_indexing=*/true),
|
|
24
|
-
std::make_tuple(false, /*two_write_queue=*/true,
|
|
25
|
-
/*enable_indexing=*/true)));
|
|
26
|
-
|
|
27
|
-
INSTANTIATE_TEST_CASE_P(
|
|
28
|
-
DBAsStackableDB, WriteCommittedTxnWithTsTest,
|
|
29
|
-
::testing::Values(std::make_tuple(true, /*two_write_queue=*/false,
|
|
30
|
-
/*enable_indexing=*/false),
|
|
31
|
-
std::make_tuple(true, /*two_write_queue=*/true,
|
|
32
|
-
/*enable_indexing=*/false),
|
|
33
|
-
std::make_tuple(true, /*two_write_queue=*/false,
|
|
34
|
-
/*enable_indexing=*/true),
|
|
35
|
-
std::make_tuple(true, /*two_write_queue=*/true,
|
|
36
|
-
/*enable_indexing=*/true)));
|
|
17
|
+
DBAsBaseDBAndStackableDB, WriteCommittedTxnWithTsTest,
|
|
18
|
+
::testing::Combine(/*use_stackable_db=*/::testing::Bool(),
|
|
19
|
+
/*two_write_queue=*/::testing::Bool(),
|
|
20
|
+
/*enable_indexing=*/::testing::Bool(),
|
|
21
|
+
/*use_per_key_point_lock_mgr=*/::testing::Bool(),
|
|
22
|
+
/*deadlock_timeout_us=*/::testing::Values(0, 1000)));
|
|
37
23
|
|
|
38
24
|
TEST_P(WriteCommittedTxnWithTsTest, SanityChecks) {
|
|
39
25
|
ASSERT_OK(ReOpenNoDelete());
|