@nxtedition/rocksdb 10.1.5 → 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.
Files changed (254) hide show
  1. package/binding.cc +5 -7
  2. package/deps/rocksdb/rocksdb/CMakeLists.txt +16 -5
  3. package/deps/rocksdb/rocksdb/Makefile +38 -15
  4. package/deps/rocksdb/rocksdb/TARGETS +10 -0
  5. package/deps/rocksdb/rocksdb/cache/cache_test.cc +58 -0
  6. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +4 -4
  7. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +4 -2
  8. package/deps/rocksdb/rocksdb/db/builder.cc +2 -2
  9. package/deps/rocksdb/rocksdb/db/builder.h +1 -1
  10. package/deps/rocksdb/rocksdb/db/c.cc +205 -6
  11. package/deps/rocksdb/rocksdb/db/c_test.c +189 -1
  12. package/deps/rocksdb/rocksdb/db/column_family.cc +28 -0
  13. package/deps/rocksdb/rocksdb/db/column_family.h +17 -0
  14. package/deps/rocksdb/rocksdb/db/column_family_test.cc +234 -60
  15. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +8 -1
  16. package/deps/rocksdb/rocksdb/db/compaction/compaction.h +11 -9
  17. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +4 -4
  18. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +2 -0
  19. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +1 -0
  20. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +22 -25
  21. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +2 -0
  22. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +112 -0
  23. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +72 -21
  24. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +2 -0
  25. package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +77 -0
  26. package/deps/rocksdb/rocksdb/db/convenience.cc +3 -0
  27. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +269 -112
  28. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +107 -43
  29. package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +93 -24
  30. package/deps/rocksdb/rocksdb/db/db_flush_test.cc +5 -5
  31. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +157 -68
  32. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +56 -15
  33. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +78 -105
  34. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +39 -9
  35. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_follower.cc +1 -0
  36. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +21 -14
  37. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +107 -63
  38. package/deps/rocksdb/rocksdb/db/db_properties_test.cc +43 -2
  39. package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +4 -0
  40. package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +6 -0
  41. package/deps/rocksdb/rocksdb/db/db_test.cc +10 -2
  42. package/deps/rocksdb/rocksdb/db/db_test2.cc +1 -1
  43. package/deps/rocksdb/rocksdb/db/db_test_util.cc +5 -0
  44. package/deps/rocksdb/rocksdb/db/db_test_util.h +7 -6
  45. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +92 -2
  46. package/deps/rocksdb/rocksdb/db/error_handler.cc +34 -39
  47. package/deps/rocksdb/rocksdb/db/error_handler.h +3 -4
  48. package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +8 -4
  49. package/deps/rocksdb/rocksdb/db/event_helpers.cc +6 -3
  50. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +71 -15
  51. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +11 -0
  52. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +383 -4
  53. package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +88 -72
  54. package/deps/rocksdb/rocksdb/db/flush_job.cc +30 -3
  55. package/deps/rocksdb/rocksdb/db/flush_job.h +14 -0
  56. package/deps/rocksdb/rocksdb/db/internal_stats.cc +60 -1
  57. package/deps/rocksdb/rocksdb/db/internal_stats.h +20 -1
  58. package/deps/rocksdb/rocksdb/db/log_writer.cc +24 -0
  59. package/deps/rocksdb/rocksdb/db/log_writer.h +5 -0
  60. package/deps/rocksdb/rocksdb/db/memtable.cc +6 -4
  61. package/deps/rocksdb/rocksdb/db/memtable.h +10 -10
  62. package/deps/rocksdb/rocksdb/db/memtable_list.cc +4 -4
  63. package/deps/rocksdb/rocksdb/db/multi_cf_iterator_impl.h +10 -3
  64. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +8 -10
  65. package/deps/rocksdb/rocksdb/db/repair.cc +4 -3
  66. package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.cc +30 -0
  67. package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.h +9 -0
  68. package/deps/rocksdb/rocksdb/db/table_cache.cc +17 -2
  69. package/deps/rocksdb/rocksdb/db/table_cache.h +9 -1
  70. package/deps/rocksdb/rocksdb/db/table_properties_collector.h +9 -2
  71. package/deps/rocksdb/rocksdb/db/table_properties_collector_test.cc +3 -1
  72. package/deps/rocksdb/rocksdb/db/transaction_log_impl.cc +3 -3
  73. package/deps/rocksdb/rocksdb/db/transaction_log_impl.h +7 -7
  74. package/deps/rocksdb/rocksdb/db/version_edit.cc +0 -1
  75. package/deps/rocksdb/rocksdb/db/version_edit_handler.h +7 -6
  76. package/deps/rocksdb/rocksdb/db/version_set.cc +54 -31
  77. package/deps/rocksdb/rocksdb/db/version_set.h +14 -7
  78. package/deps/rocksdb/rocksdb/db/wal_manager.cc +37 -29
  79. package/deps/rocksdb/rocksdb/db/wal_manager.h +6 -5
  80. package/deps/rocksdb/rocksdb/db/wide/wide_columns_helper.cc +6 -0
  81. package/deps/rocksdb/rocksdb/db/write_batch.cc +54 -23
  82. package/deps/rocksdb/rocksdb/db/write_callback_test.cc +46 -5
  83. package/deps/rocksdb/rocksdb/db/write_thread.cc +53 -5
  84. package/deps/rocksdb/rocksdb/db/write_thread.h +36 -4
  85. package/deps/rocksdb/rocksdb/db_stress_tool/CMakeLists.txt +1 -0
  86. package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +5 -0
  87. package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +57 -17
  88. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +11 -3
  89. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +8 -4
  90. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +10 -25
  91. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +25 -88
  92. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_filters.cc +93 -0
  93. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_filters.h +16 -0
  94. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +43 -0
  95. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +109 -21
  96. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +8 -0
  97. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +666 -205
  98. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +55 -10
  99. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +18 -16
  100. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +19 -0
  101. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.h +5 -0
  102. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +782 -494
  103. package/deps/rocksdb/rocksdb/env/composite_env_wrapper.h +21 -0
  104. package/deps/rocksdb/rocksdb/env/env.cc +6 -0
  105. package/deps/rocksdb/rocksdb/env/io_posix.cc +0 -1
  106. package/deps/rocksdb/rocksdb/file/file_util.cc +8 -2
  107. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +34 -19
  108. package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +29 -32
  109. package/deps/rocksdb/rocksdb/file/writable_file_writer.h +41 -15
  110. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +4 -2
  111. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +63 -0
  112. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +16 -5
  113. package/deps/rocksdb/rocksdb/include/rocksdb/env.h +5 -0
  114. package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +0 -16
  115. package/deps/rocksdb/rocksdb/include/rocksdb/iterator_base.h +16 -0
  116. package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +21 -0
  117. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +76 -3
  118. package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +17 -0
  119. package/deps/rocksdb/rocksdb/include/rocksdb/transaction_log.h +12 -6
  120. package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +31 -0
  121. package/deps/rocksdb/rocksdb/include/rocksdb/user_write_callback.h +29 -0
  122. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/checkpoint.h +4 -2
  123. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/customizable_util.h +0 -1
  124. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +17 -8
  125. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +2 -2
  126. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/table_properties_collectors.h +46 -0
  127. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +7 -0
  128. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
  129. package/deps/rocksdb/rocksdb/options/cf_options.cc +13 -2
  130. package/deps/rocksdb/rocksdb/options/cf_options.h +6 -2
  131. package/deps/rocksdb/rocksdb/options/db_options.cc +8 -0
  132. package/deps/rocksdb/rocksdb/options/db_options.h +9 -5
  133. package/deps/rocksdb/rocksdb/options/options.cc +3 -0
  134. package/deps/rocksdb/rocksdb/options/options_helper.cc +1 -0
  135. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +3 -1
  136. package/deps/rocksdb/rocksdb/port/jemalloc_helper.h +2 -2
  137. package/deps/rocksdb/rocksdb/port/stack_trace.cc +1 -0
  138. package/deps/rocksdb/rocksdb/port/win/port_win.cc +3 -2
  139. package/deps/rocksdb/rocksdb/src.mk +4 -0
  140. package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +1 -2
  141. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +4 -2
  142. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +15 -0
  143. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +102 -41
  144. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +15 -7
  145. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +1 -3
  146. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +5 -6
  147. package/deps/rocksdb/rocksdb/table/block_based/block_cache.h +31 -0
  148. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +6 -0
  149. package/deps/rocksdb/rocksdb/table/block_based/cachable_entry.h +10 -5
  150. package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +11 -15
  151. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +17 -11
  152. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.h +5 -2
  153. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +28 -21
  154. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +9 -11
  155. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block_test.cc +16 -16
  156. package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +1 -2
  157. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +14 -9
  158. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +4 -1
  159. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +82 -41
  160. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +13 -14
  161. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +18 -22
  162. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +51 -13
  163. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.h +2 -0
  164. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +3 -11
  165. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +2 -3
  166. package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.cc +9 -10
  167. package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.h +3 -2
  168. package/deps/rocksdb/rocksdb/table/format.cc +1 -2
  169. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +18 -13
  170. package/deps/rocksdb/rocksdb/table/merging_iterator.h +5 -3
  171. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +2 -2
  172. package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +1 -1
  173. package/deps/rocksdb/rocksdb/table/sst_file_writer_collectors.h +3 -1
  174. package/deps/rocksdb/rocksdb/table/table_builder.h +8 -7
  175. package/deps/rocksdb/rocksdb/table/table_reader.h +9 -0
  176. package/deps/rocksdb/rocksdb/test_util/testutil.cc +1 -0
  177. package/deps/rocksdb/rocksdb/test_util/testutil.h +6 -0
  178. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +19 -0
  179. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +434 -110
  180. package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +3 -1
  181. package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +3 -0
  182. package/deps/rocksdb/rocksdb/util/aligned_storage.h +24 -0
  183. package/deps/rocksdb/rocksdb/util/filter_bench.cc +1 -1
  184. package/deps/rocksdb/rocksdb/util/random.cc +2 -1
  185. package/deps/rocksdb/rocksdb/util/stderr_logger.h +1 -1
  186. package/deps/rocksdb/rocksdb/util/udt_util.cc +33 -0
  187. package/deps/rocksdb/rocksdb/util/udt_util.h +7 -0
  188. package/deps/rocksdb/rocksdb/util/udt_util_test.cc +33 -0
  189. package/deps/rocksdb/rocksdb/util/write_batch_util.h +5 -0
  190. package/deps/rocksdb/rocksdb/util/xxhash.h +10 -3
  191. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +13 -13
  192. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +104 -48
  193. package/deps/rocksdb/rocksdb/utilities/debug.cc +16 -4
  194. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +647 -235
  195. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +274 -157
  196. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_for_tiering_collector.cc +144 -0
  197. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_for_tiering_collector.h +45 -0
  198. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_for_tiering_collector_test.cc +139 -0
  199. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.cc +12 -0
  200. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector_test.cc +3 -0
  201. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +105 -6
  202. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +64 -8
  203. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +5 -0
  204. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +43 -5
  205. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +5 -0
  206. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +154 -6
  207. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +1 -1
  208. package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +158 -2
  209. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +16 -11
  210. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +4 -4
  211. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +9 -8
  212. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +2 -1
  213. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +43 -7
  214. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +2 -0
  215. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +1 -1
  216. package/package.json +1 -1
  217. package/prebuilds/darwin-arm64/@nxtedition+rocksdb.node +0 -0
  218. package/.tap/test-results/node_modules/abstract-level/test/chained-batch-test.js.tap +0 -0
  219. package/.tap/test-results/node_modules/abstract-level/test/get-test.js.tap +0 -0
  220. package/.tap/test-results/test/abstract-level-test.js.tap +0 -1077
  221. package/.tap/test-results/test/batch-test.js.tap +0 -12
  222. package/.tap/test-results/test/chained-batch-gc-test.js.tap +0 -11
  223. package/.tap/test-results/test/cleanup-hanging-iterators-test.js.tap +0 -135
  224. package/.tap/test-results/test/clear-gc-test.js.tap +0 -13
  225. package/.tap/test-results/test/column-test.js.tap +0 -55
  226. package/.tap/test-results/test/common.js.tap +0 -0
  227. package/.tap/test-results/test/compression-test.js.tap +0 -30
  228. package/.tap/test-results/test/db-identity.js.tap +0 -12
  229. package/.tap/test-results/test/electron.js.tap +0 -0
  230. package/.tap/test-results/test/env-cleanup-hook-test.js.tap +0 -40
  231. package/.tap/test-results/test/env-cleanup-hook.js.tap +0 -0
  232. package/.tap/test-results/test/gc.js.tap +0 -0
  233. package/.tap/test-results/test/getproperty-test.js.tap +0 -29
  234. package/.tap/test-results/test/iterator-gc-test.js.tap +0 -15
  235. package/.tap/test-results/test/iterator-hwm-test.js.tap +0 -131
  236. package/.tap/test-results/test/iterator-recursion-test.js.tap +0 -12
  237. package/.tap/test-results/test/iterator-starvation-test.js.tap +0 -73
  238. package/.tap/test-results/test/iterator-test.js.tap +0 -6
  239. package/.tap/test-results/test/leak-tester-batch.js.tap +0 -0
  240. package/.tap/test-results/test/leak-tester-iterator.js.tap +0 -0
  241. package/.tap/test-results/test/leak-tester.js.tap +0 -0
  242. package/.tap/test-results/test/lock-test.js.tap +0 -18
  243. package/.tap/test-results/test/lock.js.tap +0 -0
  244. package/.tap/test-results/test/make.js.tap +0 -0
  245. package/.tap/test-results/test/max-rev-merge.js.tap +0 -0
  246. package/.tap/test-results/test/merge-operator-test.js.tap +0 -12
  247. package/.tap/test-results/test/mkdir-test.js.tap +0 -15
  248. package/.tap/test-results/test/segfault-test.js.tap +0 -76
  249. package/.tap/test-results/test/stack-blower.js.tap +0 -0
  250. package/deps/rocksdb/rocksdb/README.md +0 -29
  251. package/deps/rocksdb/rocksdb/microbench/README.md +0 -60
  252. package/deps/rocksdb/rocksdb/plugin/README.md +0 -43
  253. package/deps/rocksdb/rocksdb/port/README +0 -10
  254. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/README +0 -13
@@ -7,11 +7,13 @@
7
7
  // Use of this source code is governed by a BSD-style license that can be
8
8
  // found in the LICENSE file. See the AUTHORS file for names of contributors.
9
9
 
10
+ #include "rocksdb/io_status.h"
10
11
  #ifdef GFLAGS
11
12
  #pragma once
12
13
 
13
14
  #include "db_stress_tool/db_stress_common.h"
14
15
  #include "db_stress_tool/db_stress_shared_state.h"
16
+ #include "rocksdb/experimental.h"
15
17
 
16
18
  namespace ROCKSDB_NAMESPACE {
17
19
  class SystemClock;
@@ -19,12 +21,13 @@ class Transaction;
19
21
  class TransactionDB;
20
22
  class OptimisticTransactionDB;
21
23
  struct TransactionDBOptions;
24
+ using experimental::SstQueryFilterConfigsManager;
22
25
 
23
26
  class StressTest {
24
27
  public:
25
28
  StressTest();
26
29
 
27
- virtual ~StressTest();
30
+ virtual ~StressTest() {}
28
31
 
29
32
  std::shared_ptr<Cache> NewCache(size_t capacity, int32_t num_shard_bits);
30
33
 
@@ -41,8 +44,25 @@ class StressTest {
41
44
  virtual void VerifyDb(ThreadState* thread) const = 0;
42
45
  virtual void ContinuouslyVerifyDb(ThreadState* /*thread*/) const = 0;
43
46
  void PrintStatistics();
47
+ bool MightHaveUnsyncedDataLoss() {
48
+ return FLAGS_sync_fault_injection || FLAGS_disable_wal ||
49
+ FLAGS_manual_wal_flush_one_in > 0;
50
+ }
51
+
52
+ void CleanUp();
44
53
 
45
54
  protected:
55
+ static int GetMinInjectedErrorCount(int error_count_1, int error_count_2) {
56
+ if (error_count_1 > 0 && error_count_2 > 0) {
57
+ return std::min(error_count_1, error_count_2);
58
+ } else if (error_count_1 > 0) {
59
+ return error_count_1;
60
+ } else if (error_count_2 > 0) {
61
+ return error_count_2;
62
+ } else {
63
+ return 0;
64
+ }
65
+ }
46
66
  Status AssertSame(DB* db, ColumnFamilyHandle* cf,
47
67
  ThreadState::SnapshotState& snap_state);
48
68
 
@@ -169,6 +189,20 @@ class StressTest {
169
189
  const std::vector<int>& rand_column_families,
170
190
  const std::vector<int64_t>& rand_keys);
171
191
 
192
+ // Given a key K, this creates an attribute group iterator which scans to K
193
+ // and then does a random sequence of Next/Prev operations. Called only when
194
+ // use_attribute_group=1
195
+ virtual Status TestIterateAttributeGroups(
196
+ ThreadState* thread, const ReadOptions& read_opts,
197
+ const std::vector<int>& rand_column_families,
198
+ const std::vector<int64_t>& rand_keys);
199
+
200
+ template <typename IterType, typename NewIterFunc, typename VerifyFunc>
201
+ Status TestIterateImpl(ThreadState* thread, const ReadOptions& read_opts,
202
+ const std::vector<int>& rand_column_families,
203
+ const std::vector<int64_t>& rand_keys,
204
+ NewIterFunc new_iter_func, VerifyFunc verify_func);
205
+
172
206
  virtual Status TestIterateAgainstExpected(
173
207
  ThreadState* /* thread */, const ReadOptions& /* read_opts */,
174
208
  const std::vector<int>& /* rand_column_families */,
@@ -192,10 +226,12 @@ class StressTest {
192
226
  // diverged = true if the two iterator is already diverged.
193
227
  // True if verification passed, false if not.
194
228
  // op_logs is the information to print when validation fails.
229
+ template <typename IterType, typename VerifyFuncType>
195
230
  void VerifyIterator(ThreadState* thread, ColumnFamilyHandle* cmp_cfh,
196
- const ReadOptions& ro, Iterator* iter, Iterator* cmp_iter,
231
+ const ReadOptions& ro, IterType* iter, Iterator* cmp_iter,
197
232
  LastIterateOp op, const Slice& seek_key,
198
- const std::string& op_logs, bool* diverged);
233
+ const std::string& op_logs, VerifyFuncType verifyFunc,
234
+ bool* diverged);
199
235
 
200
236
  virtual Status TestBackupRestore(ThreadState* thread,
201
237
  const std::vector<int>& rand_column_families,
@@ -224,13 +260,13 @@ class StressTest {
224
260
 
225
261
  Status MaybeReleaseSnapshots(ThreadState* thread, uint64_t i);
226
262
 
227
- Status VerifyGetLiveFiles() const;
228
- Status VerifyGetLiveFilesMetaData() const;
229
- Status VerifyGetLiveFilesStorageInfo() const;
230
- Status VerifyGetAllColumnFamilyMetaData() const;
263
+ Status TestGetLiveFiles() const;
264
+ Status TestGetLiveFilesMetaData() const;
265
+ Status TestGetLiveFilesStorageInfo() const;
266
+ Status TestGetAllColumnFamilyMetaData() const;
231
267
 
232
- Status VerifyGetSortedWalFiles() const;
233
- Status VerifyGetCurrentWalFile() const;
268
+ Status TestGetSortedWalFiles() const;
269
+ Status TestGetCurrentWalFile() const;
234
270
  void TestGetProperty(ThreadState* thread) const;
235
271
  Status TestGetPropertiesOfAllTables() const;
236
272
 
@@ -245,6 +281,12 @@ class StressTest {
245
281
  return Status::NotSupported("TestCustomOperations() must be overridden");
246
282
  }
247
283
 
284
+ bool IsErrorInjectedAndRetryable(const Status& error_s) const {
285
+ assert(!error_s.ok());
286
+ return error_s.getState() && std::strstr(error_s.getState(), "inject") &&
287
+ !status_to_io_status(Status(error_s)).GetDataLoss();
288
+ }
289
+
248
290
  void ProcessStatus(SharedState* shared, std::string msg, const Status& s,
249
291
  bool ignore_injected_error = true) const;
250
292
 
@@ -303,6 +345,7 @@ class StressTest {
303
345
  std::unordered_map<std::string, std::vector<std::string>> options_table_;
304
346
  std::vector<std::string> options_index_;
305
347
  std::atomic<bool> db_preload_finished_;
348
+ std::shared_ptr<SstQueryFilterConfigsManager::Factory> sqfc_factory_;
306
349
 
307
350
  // Fields used for continuous verification from another thread
308
351
  DB* cmp_db_;
@@ -344,7 +387,9 @@ void InitializeOptionsFromFlags(
344
387
  // from OPTIONS file.
345
388
  void InitializeOptionsGeneral(
346
389
  const std::shared_ptr<Cache>& cache,
347
- const std::shared_ptr<const FilterPolicy>& filter_policy, Options& options);
390
+ const std::shared_ptr<const FilterPolicy>& filter_policy,
391
+ const std::shared_ptr<SstQueryFilterConfigsManager::Factory>& sqfc_factory,
392
+ Options& options);
348
393
 
349
394
  // If no OPTIONS file is specified, set up `options` so that we can test
350
395
  // user-defined timestamp which requires `-user_timestamp_size=8`.
@@ -20,10 +20,10 @@
20
20
  // NOTE that if FLAGS_test_batches_snapshots is set, the test will have
21
21
  // different behavior. See comment of the flag for details.
22
22
 
23
- #include "db_stress_tool/db_stress_shared_state.h"
24
23
  #ifdef GFLAGS
25
24
  #include "db_stress_tool/db_stress_common.h"
26
25
  #include "db_stress_tool/db_stress_driver.h"
26
+ #include "db_stress_tool/db_stress_shared_state.h"
27
27
  #include "rocksdb/convenience.h"
28
28
  #include "utilities/fault_injection_fs.h"
29
29
 
@@ -82,16 +82,18 @@ int db_stress_tool(int argc, char** argv) {
82
82
  dbsl_env_wrapper_guard = std::make_shared<CompositeEnvWrapper>(raw_env);
83
83
  db_stress_listener_env = dbsl_env_wrapper_guard.get();
84
84
 
85
- if (FLAGS_read_fault_one_in || FLAGS_sync_fault_injection ||
86
- FLAGS_write_fault_one_in || FLAGS_open_metadata_write_fault_one_in ||
87
- FLAGS_open_write_fault_one_in || FLAGS_open_read_fault_one_in) {
85
+ if (FLAGS_open_metadata_read_fault_one_in ||
86
+ FLAGS_open_metadata_write_fault_one_in || FLAGS_open_read_fault_one_in ||
87
+ FLAGS_open_write_fault_one_in || FLAGS_metadata_read_fault_one_in ||
88
+ FLAGS_metadata_write_fault_one_in || FLAGS_read_fault_one_in ||
89
+ FLAGS_write_fault_one_in || FLAGS_sync_fault_injection) {
88
90
  FaultInjectionTestFS* fs =
89
91
  new FaultInjectionTestFS(raw_env->GetFileSystem());
90
92
  fault_fs_guard.reset(fs);
91
- // Set it to direct writable here to not lose files created during DB open
92
- // when no open fault injection is not enabled.
93
- // This will be overwritten in StressTest::Open() for open fault injection
94
- // and in RunStressTestImpl() for proper write fault injection setup.
93
+ // Set it to direct writable here to initially bypass any fault injection
94
+ // during DB open This will correspondingly be overwritten in
95
+ // StressTest::Open() for open fault injection and in RunStressTestImpl()
96
+ // for proper fault injection setup.
95
97
  fault_fs_guard->SetFilesystemDirectWritable(true);
96
98
  fault_env_guard =
97
99
  std::make_shared<CompositeEnvWrapper>(raw_env, fault_fs_guard);
@@ -301,11 +303,11 @@ int db_stress_tool(int argc, char** argv) {
301
303
  }
302
304
 
303
305
  if (FLAGS_use_put_entity_one_in > 0 &&
304
- (FLAGS_use_full_merge_v1 || FLAGS_use_txn || FLAGS_test_multi_ops_txns ||
306
+ (FLAGS_use_full_merge_v1 || FLAGS_test_multi_ops_txns ||
305
307
  FLAGS_user_timestamp_size > 0)) {
306
308
  fprintf(stderr,
307
- "Wide columns are incompatible with V1 Merge, transactions, and "
308
- "user-defined timestamps\n");
309
+ "Wide columns are incompatible with V1 Merge, the multi-op "
310
+ "transaction test, and user-defined timestamps\n");
309
311
  exit(1);
310
312
  }
311
313
 
@@ -360,11 +362,11 @@ int db_stress_tool(int argc, char** argv) {
360
362
  // Initialize the Zipfian pre-calculated array
361
363
  InitializeHotKeyGenerator(FLAGS_hot_key_alpha);
362
364
  shared.reset(new SharedState(db_stress_env, stress.get()));
363
- if (RunStressTest(shared.get())) {
364
- return 0;
365
- } else {
366
- return 1;
367
- }
365
+ bool run_stress_test = RunStressTest(shared.get());
366
+ // Close DB in CleanUp() before destructor to prevent race between destructor
367
+ // and operations in listener callbacks (e.g. MultiOpsTxnsStressListener).
368
+ stress->CleanUp();
369
+ return run_stress_test ? 0 : 1;
368
370
  }
369
371
 
370
372
  } // namespace ROCKSDB_NAMESPACE
@@ -432,6 +432,13 @@ Status MultiOpsTxnsStressTest::TestIterate(
432
432
  return s;
433
433
  }
434
434
 
435
+ Status MultiOpsTxnsStressTest::TestIterateAttributeGroups(
436
+ ThreadState* /*thread*/, const ReadOptions& /*read_opts*/,
437
+ const std::vector<int>& /*rand_column_families*/,
438
+ const std::vector<int64_t>& /*rand_keys*/) {
439
+ return Status::NotSupported();
440
+ }
441
+
435
442
  // Not intended for use.
436
443
  Status MultiOpsTxnsStressTest::TestPut(ThreadState* /*thread*/,
437
444
  WriteOptions& /*write_opts*/,
@@ -749,6 +756,10 @@ Status MultiOpsTxnsStressTest::SecondaryKeyUpdateTxn(ThreadState* thread,
749
756
  ropts.iterate_upper_bound = &iter_ub;
750
757
  ropts.rate_limiter_priority =
751
758
  FLAGS_rate_limit_user_ops ? Env::IO_USER : Env::IO_TOTAL;
759
+ if (FLAGS_use_sqfc_for_range_queries) {
760
+ ropts.table_filter =
761
+ sqfc_factory_->GetTableFilterForRangeQuery(old_sk_prefix, iter_ub);
762
+ }
752
763
  it = txn->GetIterator(ropts);
753
764
 
754
765
  assert(it);
@@ -1107,6 +1118,10 @@ void MultiOpsTxnsStressTest::VerifyDb(ThreadState* thread) const {
1107
1118
  ropts.snapshot = snapshot;
1108
1119
  ropts.total_order_seek = true;
1109
1120
  ropts.iterate_upper_bound = &iter_ub;
1121
+ if (FLAGS_use_sqfc_for_range_queries) {
1122
+ ropts.table_filter =
1123
+ sqfc_factory_->GetTableFilterForRangeQuery(start_key, iter_ub);
1124
+ }
1110
1125
 
1111
1126
  std::unique_ptr<Iterator> it(db_->NewIterator(ropts));
1112
1127
  for (it->Seek(start_key); it->Valid(); it->Next()) {
@@ -1615,6 +1630,10 @@ void MultiOpsTxnsStressTest::ScanExistingDb(SharedState* shared, int threads) {
1615
1630
  ropts.iterate_lower_bound = &pk_lb;
1616
1631
  ropts.iterate_upper_bound = &pk_ub;
1617
1632
  ropts.total_order_seek = true;
1633
+ if (FLAGS_use_sqfc_for_range_queries) {
1634
+ ropts.table_filter =
1635
+ sqfc_factory_->GetTableFilterForRangeQuery(pk_lb, pk_ub);
1636
+ }
1618
1637
  std::unique_ptr<Iterator> it(db_->NewIterator(ropts));
1619
1638
 
1620
1639
  for (it->SeekToFirst(); it->Valid(); it->Next()) {
@@ -228,6 +228,11 @@ class MultiOpsTxnsStressTest : public StressTest {
228
228
  const std::vector<int>& rand_column_families,
229
229
  const std::vector<int64_t>& rand_keys) override;
230
230
 
231
+ Status TestIterateAttributeGroups(
232
+ ThreadState* thread, const ReadOptions& read_opts,
233
+ const std::vector<int>& rand_column_families,
234
+ const std::vector<int64_t>& rand_keys) override;
235
+
231
236
  Status TestPut(ThreadState* thread, WriteOptions& write_opts,
232
237
  const ReadOptions& read_opts, const std::vector<int>& cf_ids,
233
238
  const std::vector<int64_t>& keys, char (&value)[100]) override;