@nxtedition/rocksdb 10.1.4 → 10.1.6

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