@nxtedition/rocksdb 8.2.8 → 9.0.1

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 (483) hide show
  1. package/binding.cc +0 -21
  2. package/deps/rocksdb/rocksdb/CMakeLists.txt +20 -10
  3. package/deps/rocksdb/rocksdb/Makefile +37 -25
  4. package/deps/rocksdb/rocksdb/README.md +29 -0
  5. package/deps/rocksdb/rocksdb/TARGETS +25 -2
  6. package/deps/rocksdb/rocksdb/cache/cache.cc +35 -0
  7. package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +229 -74
  8. package/deps/rocksdb/rocksdb/cache/cache_helpers.cc +2 -1
  9. package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.h +4 -3
  10. package/deps/rocksdb/rocksdb/cache/cache_test.cc +58 -95
  11. package/deps/rocksdb/rocksdb/cache/charged_cache.cc +4 -2
  12. package/deps/rocksdb/rocksdb/cache/charged_cache.h +5 -3
  13. package/deps/rocksdb/rocksdb/cache/clock_cache.cc +2683 -496
  14. package/deps/rocksdb/rocksdb/cache/clock_cache.h +580 -159
  15. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +145 -42
  16. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +20 -1
  17. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +391 -17
  18. package/deps/rocksdb/rocksdb/cache/lru_cache.cc +7 -5
  19. package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +309 -212
  20. package/deps/rocksdb/rocksdb/cache/secondary_cache.cc +0 -32
  21. package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +439 -12
  22. package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.h +44 -2
  23. package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +11 -1
  24. package/deps/rocksdb/rocksdb/cache/sharded_cache.h +16 -3
  25. package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache.cc +119 -0
  26. package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache.h +155 -0
  27. package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache_test.cc +711 -0
  28. package/deps/rocksdb/rocksdb/cache/typed_cache.h +17 -11
  29. package/deps/rocksdb/rocksdb/crash_test.mk +14 -0
  30. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +28 -12
  31. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +1 -0
  32. package/deps/rocksdb/rocksdb/db/blob/blob_contents.h +2 -1
  33. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +1 -1
  34. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +1 -1
  35. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.cc +2 -2
  36. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.h +1 -1
  37. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +20 -22
  38. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +1 -2
  39. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +1 -1
  40. package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.cc +2 -3
  41. package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +1 -1
  42. package/deps/rocksdb/rocksdb/db/blob/db_blob_basic_test.cc +8 -0
  43. package/deps/rocksdb/rocksdb/db/blob/db_blob_index_test.cc +7 -3
  44. package/deps/rocksdb/rocksdb/db/builder.cc +35 -10
  45. package/deps/rocksdb/rocksdb/db/c.cc +233 -6
  46. package/deps/rocksdb/rocksdb/db/c_test.c +140 -6
  47. package/deps/rocksdb/rocksdb/db/column_family.cc +110 -51
  48. package/deps/rocksdb/rocksdb/db/column_family.h +34 -2
  49. package/deps/rocksdb/rocksdb/db/column_family_test.cc +314 -7
  50. package/deps/rocksdb/rocksdb/db/compact_files_test.cc +4 -1
  51. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +106 -23
  52. package/deps/rocksdb/rocksdb/db/compaction/compaction.h +47 -9
  53. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +10 -11
  54. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +17 -6
  55. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +2 -2
  56. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +148 -60
  57. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +22 -7
  58. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +2 -0
  59. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +8 -4
  60. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +33 -23
  61. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +14 -5
  62. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +11 -11
  63. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +3 -0
  64. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +90 -4
  65. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +170 -95
  66. package/deps/rocksdb/rocksdb/db/compaction/file_pri.h +3 -1
  67. package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +32 -58
  68. package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +3 -1
  69. package/deps/rocksdb/rocksdb/db/convenience.cc +20 -3
  70. package/deps/rocksdb/rocksdb/db/convenience_impl.h +15 -0
  71. package/deps/rocksdb/rocksdb/db/corruption_test.cc +17 -0
  72. package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +1 -0
  73. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +46 -10
  74. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +13 -3
  75. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +74 -15
  76. package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +27 -3
  77. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +850 -44
  78. package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +2 -29
  79. package/deps/rocksdb/rocksdb/db/db_flush_test.cc +275 -1
  80. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +52 -19
  81. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +6 -5
  82. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +733 -320
  83. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +155 -66
  84. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +516 -155
  85. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +8 -4
  86. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +2 -1
  87. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +17 -4
  88. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +100 -35
  89. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +95 -50
  90. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +13 -9
  91. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +136 -79
  92. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +6 -95
  93. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +31 -22
  94. package/deps/rocksdb/rocksdb/db/db_info_dumper.cc +6 -0
  95. package/deps/rocksdb/rocksdb/db/db_iter.cc +85 -57
  96. package/deps/rocksdb/rocksdb/db/db_iter.h +11 -2
  97. package/deps/rocksdb/rocksdb/db/db_iter_test.cc +29 -0
  98. package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +276 -21
  99. package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +35 -0
  100. package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +4 -11
  101. package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +193 -7
  102. package/deps/rocksdb/rocksdb/db/db_options_test.cc +294 -26
  103. package/deps/rocksdb/rocksdb/db/db_properties_test.cc +26 -36
  104. package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +364 -0
  105. package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +13 -3
  106. package/deps/rocksdb/rocksdb/db/db_readonly_with_timestamp_test.cc +52 -0
  107. package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +74 -1
  108. package/deps/rocksdb/rocksdb/db/db_sst_test.cc +22 -4
  109. package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +1 -1
  110. package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +1 -0
  111. package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +282 -167
  112. package/deps/rocksdb/rocksdb/db/db_test.cc +180 -49
  113. package/deps/rocksdb/rocksdb/db/db_test2.cc +84 -12
  114. package/deps/rocksdb/rocksdb/db/db_test_util.cc +25 -12
  115. package/deps/rocksdb/rocksdb/db/db_test_util.h +45 -2
  116. package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +14 -1
  117. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +245 -0
  118. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +480 -1
  119. package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +6 -6
  120. package/deps/rocksdb/rocksdb/db/db_write_test.cc +2 -2
  121. package/deps/rocksdb/rocksdb/db/dbformat.cc +36 -0
  122. package/deps/rocksdb/rocksdb/db/dbformat.h +169 -20
  123. package/deps/rocksdb/rocksdb/db/dbformat_test.cc +129 -0
  124. package/deps/rocksdb/rocksdb/db/deletefile_test.cc +2 -0
  125. package/deps/rocksdb/rocksdb/db/error_handler.cc +67 -34
  126. package/deps/rocksdb/rocksdb/db/error_handler.h +13 -9
  127. package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +4 -4
  128. package/deps/rocksdb/rocksdb/db/event_helpers.cc +4 -0
  129. package/deps/rocksdb/rocksdb/db/experimental.cc +2 -1
  130. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +4 -4
  131. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +17 -8
  132. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +144 -4
  133. package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +1 -1
  134. package/deps/rocksdb/rocksdb/db/file_indexer.cc +2 -4
  135. package/deps/rocksdb/rocksdb/db/flush_job.cc +105 -17
  136. package/deps/rocksdb/rocksdb/db/flush_job.h +27 -4
  137. package/deps/rocksdb/rocksdb/db/flush_job_test.cc +90 -12
  138. package/deps/rocksdb/rocksdb/db/forward_iterator.cc +2 -3
  139. package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +159 -91
  140. package/deps/rocksdb/rocksdb/db/import_column_family_job.h +19 -10
  141. package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +143 -0
  142. package/deps/rocksdb/rocksdb/db/internal_stats.cc +13 -1
  143. package/deps/rocksdb/rocksdb/db/internal_stats.h +2 -0
  144. package/deps/rocksdb/rocksdb/db/listener_test.cc +2 -1
  145. package/deps/rocksdb/rocksdb/db/log_reader.h +3 -2
  146. package/deps/rocksdb/rocksdb/db/log_test.cc +17 -21
  147. package/deps/rocksdb/rocksdb/db/log_writer.cc +1 -1
  148. package/deps/rocksdb/rocksdb/db/log_writer.h +3 -2
  149. package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +6 -3
  150. package/deps/rocksdb/rocksdb/db/memtable.cc +70 -83
  151. package/deps/rocksdb/rocksdb/db/memtable.h +45 -1
  152. package/deps/rocksdb/rocksdb/db/memtable_list.cc +45 -11
  153. package/deps/rocksdb/rocksdb/db/memtable_list.h +43 -2
  154. package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +91 -5
  155. package/deps/rocksdb/rocksdb/db/merge_helper.cc +330 -115
  156. package/deps/rocksdb/rocksdb/db/merge_helper.h +100 -12
  157. package/deps/rocksdb/rocksdb/db/merge_operator.cc +82 -0
  158. package/deps/rocksdb/rocksdb/db/merge_test.cc +267 -0
  159. package/deps/rocksdb/rocksdb/db/perf_context_test.cc +5 -2
  160. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.h +4 -4
  161. package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +3 -0
  162. package/deps/rocksdb/rocksdb/db/prefix_test.cc +1 -0
  163. package/deps/rocksdb/rocksdb/db/range_del_aggregator.h +4 -0
  164. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +4 -0
  165. package/deps/rocksdb/rocksdb/db/repair.cc +25 -7
  166. package/deps/rocksdb/rocksdb/db/repair_test.cc +143 -2
  167. package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +459 -74
  168. package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.cc +105 -69
  169. package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.h +83 -46
  170. package/deps/rocksdb/rocksdb/db/table_cache.cc +76 -54
  171. package/deps/rocksdb/rocksdb/db/table_cache.h +18 -12
  172. package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +2 -2
  173. package/deps/rocksdb/rocksdb/db/version_builder.cc +0 -1
  174. package/deps/rocksdb/rocksdb/db/version_builder_test.cc +236 -204
  175. package/deps/rocksdb/rocksdb/db/version_edit.cc +66 -4
  176. package/deps/rocksdb/rocksdb/db/version_edit.h +58 -10
  177. package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +80 -8
  178. package/deps/rocksdb/rocksdb/db/version_edit_handler.h +12 -0
  179. package/deps/rocksdb/rocksdb/db/version_edit_test.cc +86 -17
  180. package/deps/rocksdb/rocksdb/db/version_set.cc +207 -110
  181. package/deps/rocksdb/rocksdb/db/version_set.h +36 -15
  182. package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +2 -5
  183. package/deps/rocksdb/rocksdb/db/version_set_test.cc +47 -26
  184. package/deps/rocksdb/rocksdb/db/wide/db_wide_basic_test.cc +525 -0
  185. package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.cc +6 -22
  186. package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.h +0 -20
  187. package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization_test.cc +0 -29
  188. package/deps/rocksdb/rocksdb/db/wide/wide_columns_helper.cc +46 -0
  189. package/deps/rocksdb/rocksdb/db/wide/wide_columns_helper.h +40 -0
  190. package/deps/rocksdb/rocksdb/db/wide/wide_columns_helper_test.cc +39 -0
  191. package/deps/rocksdb/rocksdb/db/write_batch.cc +55 -20
  192. package/deps/rocksdb/rocksdb/db/write_batch_internal.h +3 -0
  193. package/deps/rocksdb/rocksdb/db/write_batch_test.cc +16 -0
  194. package/deps/rocksdb/rocksdb/db_stress_tool/CMakeLists.txt +1 -0
  195. package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +4 -4
  196. package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +4 -7
  197. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +88 -10
  198. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +37 -13
  199. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +110 -58
  200. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +42 -0
  201. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +68 -17
  202. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +34 -0
  203. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +8 -1
  204. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +429 -237
  205. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +13 -6
  206. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +21 -14
  207. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_wide_merge_operator.cc +51 -0
  208. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_wide_merge_operator.h +27 -0
  209. package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +3 -6
  210. package/deps/rocksdb/rocksdb/db_stress_tool/expected_value.h +2 -0
  211. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +29 -38
  212. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +302 -101
  213. package/deps/rocksdb/rocksdb/env/env.cc +6 -2
  214. package/deps/rocksdb/rocksdb/env/env_encryption.cc +11 -165
  215. package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +0 -17
  216. package/deps/rocksdb/rocksdb/env/env_posix.cc +6 -2
  217. package/deps/rocksdb/rocksdb/env/env_test.cc +86 -2
  218. package/deps/rocksdb/rocksdb/env/fs_posix.cc +6 -4
  219. package/deps/rocksdb/rocksdb/env/unique_id_gen.cc +79 -0
  220. package/deps/rocksdb/rocksdb/env/unique_id_gen.h +34 -0
  221. package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +1 -0
  222. package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +15 -4
  223. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +100 -70
  224. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +64 -18
  225. package/deps/rocksdb/rocksdb/file/file_util.cc +10 -5
  226. package/deps/rocksdb/rocksdb/file/file_util.h +13 -1
  227. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +1225 -97
  228. package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +72 -33
  229. package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +3 -16
  230. package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +23 -12
  231. package/deps/rocksdb/rocksdb/file/sequence_file_reader.h +3 -0
  232. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_cache.h +40 -14
  233. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +163 -91
  234. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +112 -2
  235. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +108 -16
  236. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +11 -0
  237. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +3 -0
  238. package/deps/rocksdb/rocksdb/include/rocksdb/comparator.h +42 -2
  239. package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +1 -1
  240. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +92 -12
  241. package/deps/rocksdb/rocksdb/include/rocksdb/env.h +34 -4
  242. package/deps/rocksdb/rocksdb/include/rocksdb/env_encryption.h +9 -109
  243. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +91 -13
  244. package/deps/rocksdb/rocksdb/include/rocksdb/filter_policy.h +8 -3
  245. package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +10 -4
  246. package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +7 -0
  247. package/deps/rocksdb/rocksdb/include/rocksdb/memory_allocator.h +1 -1
  248. package/deps/rocksdb/rocksdb/include/rocksdb/merge_operator.h +55 -4
  249. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +130 -22
  250. package/deps/rocksdb/rocksdb/include/rocksdb/port_defs.h +4 -0
  251. package/deps/rocksdb/rocksdb/include/rocksdb/rate_limiter.h +9 -0
  252. package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +92 -9
  253. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_manager.h +2 -1
  254. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +5 -1
  255. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +37 -2
  256. package/deps/rocksdb/rocksdb/include/rocksdb/status.h +35 -0
  257. package/deps/rocksdb/rocksdb/include/rocksdb/system_clock.h +15 -0
  258. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +7 -1
  259. package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +20 -3
  260. package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +7 -0
  261. package/deps/rocksdb/rocksdb/include/rocksdb/types.h +7 -0
  262. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +6 -1
  263. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/optimistic_transaction_db.h +33 -2
  264. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +2 -1
  265. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +14 -0
  266. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +42 -2
  267. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +0 -3
  268. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
  269. package/deps/rocksdb/rocksdb/include/rocksdb/wide_columns.h +53 -2
  270. package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +3 -2
  271. package/deps/rocksdb/rocksdb/memory/arena_test.cc +18 -11
  272. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +4 -3
  273. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.h +1 -1
  274. package/deps/rocksdb/rocksdb/microbench/README.md +60 -0
  275. package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +69 -34
  276. package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.h +1 -1
  277. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +22 -1
  278. package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +18 -7
  279. package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +14 -0
  280. package/deps/rocksdb/rocksdb/options/cf_options.cc +19 -0
  281. package/deps/rocksdb/rocksdb/options/cf_options.h +10 -2
  282. package/deps/rocksdb/rocksdb/options/customizable_test.cc +6 -1
  283. package/deps/rocksdb/rocksdb/options/db_options.cc +54 -2
  284. package/deps/rocksdb/rocksdb/options/db_options.h +4 -0
  285. package/deps/rocksdb/rocksdb/options/options.cc +15 -1
  286. package/deps/rocksdb/rocksdb/options/options_helper.cc +18 -0
  287. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +14 -4
  288. package/deps/rocksdb/rocksdb/options/options_test.cc +14 -1
  289. package/deps/rocksdb/rocksdb/plugin/README.md +43 -0
  290. package/deps/rocksdb/rocksdb/port/README +10 -0
  291. package/deps/rocksdb/rocksdb/port/mmap.h +20 -0
  292. package/deps/rocksdb/rocksdb/port/port_example.h +1 -1
  293. package/deps/rocksdb/rocksdb/port/port_posix.cc +1 -1
  294. package/deps/rocksdb/rocksdb/port/port_posix.h +7 -4
  295. package/deps/rocksdb/rocksdb/port/stack_trace.cc +32 -12
  296. package/deps/rocksdb/rocksdb/port/win/env_win.h +1 -1
  297. package/deps/rocksdb/rocksdb/port/win/port_win.h +5 -2
  298. package/deps/rocksdb/rocksdb/src.mk +10 -1
  299. package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +2 -1
  300. package/deps/rocksdb/rocksdb/table/block_based/block.cc +48 -22
  301. package/deps/rocksdb/rocksdb/table/block_based/block.h +60 -12
  302. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +116 -43
  303. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +9 -6
  304. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +321 -49
  305. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +98 -4
  306. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +233 -98
  307. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +58 -23
  308. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +12 -8
  309. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +52 -24
  310. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +219 -51
  311. package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +41 -8
  312. package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +25 -1
  313. package/deps/rocksdb/rocksdb/table/block_based/block_cache.cc +3 -1
  314. package/deps/rocksdb/rocksdb/table/block_based/block_cache.h +26 -7
  315. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +50 -18
  316. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +20 -8
  317. package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +232 -71
  318. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +6 -6
  319. package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +44 -26
  320. package/deps/rocksdb/rocksdb/table/block_based/filter_policy_internal.h +2 -1
  321. package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +1 -1
  322. package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +31 -16
  323. package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +97 -58
  324. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +2 -2
  325. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +6 -0
  326. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +36 -19
  327. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +3 -1
  328. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +114 -70
  329. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +4 -3
  330. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +11 -7
  331. package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +15 -3
  332. package/deps/rocksdb/rocksdb/table/block_based/reader_common.h +6 -3
  333. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +1 -1
  334. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +14 -13
  335. package/deps/rocksdb/rocksdb/table/block_fetcher.h +4 -0
  336. package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +9 -2
  337. package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.cc +1 -0
  338. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +6 -2
  339. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +1 -2
  340. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.cc +2 -3
  341. package/deps/rocksdb/rocksdb/table/format.cc +175 -33
  342. package/deps/rocksdb/rocksdb/table/format.h +63 -10
  343. package/deps/rocksdb/rocksdb/table/get_context.cc +52 -89
  344. package/deps/rocksdb/rocksdb/table/get_context.h +12 -3
  345. package/deps/rocksdb/rocksdb/table/internal_iterator.h +11 -0
  346. package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +29 -1
  347. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +22 -2
  348. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +12 -4
  349. package/deps/rocksdb/rocksdb/table/meta_blocks.h +1 -0
  350. package/deps/rocksdb/rocksdb/table/mock_table.cc +8 -3
  351. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +10 -5
  352. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.h +10 -1
  353. package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.cc +1 -2
  354. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +3 -3
  355. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +45 -9
  356. package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +1 -0
  357. package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +24 -1
  358. package/deps/rocksdb/rocksdb/table/table_builder.h +6 -2
  359. package/deps/rocksdb/rocksdb/table/table_properties.cc +6 -0
  360. package/deps/rocksdb/rocksdb/table/table_reader.h +6 -0
  361. package/deps/rocksdb/rocksdb/table/table_test.cc +52 -22
  362. package/deps/rocksdb/rocksdb/test_util/mock_time_env.h +31 -0
  363. package/deps/rocksdb/rocksdb/test_util/secondary_cache_test_util.cc +2 -1
  364. package/deps/rocksdb/rocksdb/test_util/secondary_cache_test_util.h +19 -7
  365. package/deps/rocksdb/rocksdb/test_util/sync_point.h +3 -1
  366. package/deps/rocksdb/rocksdb/test_util/testutil.cc +29 -0
  367. package/deps/rocksdb/rocksdb/test_util/testutil.h +19 -0
  368. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_pysim.py +3 -3
  369. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +87 -65
  370. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +221 -33
  371. package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +36 -0
  372. package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +1 -1
  373. package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +1 -0
  374. package/deps/rocksdb/rocksdb/tools/sst_dump_test.cc +33 -11
  375. package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +4 -0
  376. package/deps/rocksdb/rocksdb/unreleased_history/README.txt +73 -0
  377. package/deps/rocksdb/rocksdb/unreleased_history/add.sh +27 -0
  378. package/deps/rocksdb/rocksdb/unreleased_history/behavior_changes/.gitkeep +0 -0
  379. package/deps/rocksdb/rocksdb/unreleased_history/bug_fixes/.gitkeep +0 -0
  380. package/deps/rocksdb/rocksdb/unreleased_history/new_features/.gitkeep +0 -0
  381. package/deps/rocksdb/rocksdb/unreleased_history/performance_improvements/.gitkeep +0 -0
  382. package/deps/rocksdb/rocksdb/unreleased_history/public_api_changes/.gitkeep +0 -0
  383. package/deps/rocksdb/rocksdb/unreleased_history/release.sh +104 -0
  384. package/deps/rocksdb/rocksdb/util/async_file_reader.cc +5 -0
  385. package/deps/rocksdb/rocksdb/util/bloom_impl.h +3 -3
  386. package/deps/rocksdb/rocksdb/util/bloom_test.cc +32 -11
  387. package/deps/rocksdb/rocksdb/util/cast_util.h +24 -0
  388. package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +2 -0
  389. package/deps/rocksdb/rocksdb/util/comparator.cc +55 -8
  390. package/deps/rocksdb/rocksdb/util/compression.cc +4 -4
  391. package/deps/rocksdb/rocksdb/util/compression.h +119 -35
  392. package/deps/rocksdb/rocksdb/util/core_local.h +2 -1
  393. package/deps/rocksdb/rocksdb/util/crc32c.cc +7 -1
  394. package/deps/rocksdb/rocksdb/util/distributed_mutex.h +1 -1
  395. package/deps/rocksdb/rocksdb/util/dynamic_bloom.h +4 -4
  396. package/deps/rocksdb/rocksdb/util/filelock_test.cc +3 -0
  397. package/deps/rocksdb/rocksdb/util/hash.h +7 -3
  398. package/deps/rocksdb/rocksdb/util/hash_test.cc +44 -0
  399. package/deps/rocksdb/rocksdb/util/math.h +58 -6
  400. package/deps/rocksdb/rocksdb/util/math128.h +29 -7
  401. package/deps/rocksdb/rocksdb/util/mutexlock.h +35 -27
  402. package/deps/rocksdb/rocksdb/util/overload.h +23 -0
  403. package/deps/rocksdb/rocksdb/util/rate_limiter.cc +53 -18
  404. package/deps/rocksdb/rocksdb/util/rate_limiter_impl.h +6 -1
  405. package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +90 -19
  406. package/deps/rocksdb/rocksdb/util/single_thread_executor.h +1 -0
  407. package/deps/rocksdb/rocksdb/util/slice_test.cc +30 -0
  408. package/deps/rocksdb/rocksdb/util/status.cc +1 -0
  409. package/deps/rocksdb/rocksdb/util/stop_watch.h +1 -1
  410. package/deps/rocksdb/rocksdb/util/string_util.cc +39 -0
  411. package/deps/rocksdb/rocksdb/util/string_util.h +10 -0
  412. package/deps/rocksdb/rocksdb/util/thread_operation.h +10 -1
  413. package/deps/rocksdb/rocksdb/util/udt_util.cc +385 -0
  414. package/deps/rocksdb/rocksdb/util/udt_util.h +192 -1
  415. package/deps/rocksdb/rocksdb/util/udt_util_test.cc +461 -0
  416. package/deps/rocksdb/rocksdb/util/write_batch_util.cc +25 -0
  417. package/deps/rocksdb/rocksdb/util/write_batch_util.h +80 -0
  418. package/deps/rocksdb/rocksdb/util/xxhash.h +0 -3
  419. package/deps/rocksdb/rocksdb/util/xxph3.h +0 -4
  420. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +4 -4
  421. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +71 -26
  422. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +7 -6
  423. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +1 -1
  424. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +2 -3
  425. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +6 -11
  426. package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.h +1 -2
  427. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +4 -5
  428. package/deps/rocksdb/rocksdb/utilities/fault_injection_env.h +1 -0
  429. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +20 -16
  430. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +11 -7
  431. package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.cc +2 -2
  432. package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.h +7 -1
  433. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend_test.cc +3 -0
  434. package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration_test.cc +12 -3
  435. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +1 -2
  436. package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache.cc +7 -4
  437. package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.cc +2 -3
  438. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.cc +2 -2
  439. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.h +1 -1
  440. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/README +13 -0
  441. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.cc +23 -8
  442. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +9 -6
  443. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +37 -12
  444. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +272 -33
  445. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +15 -9
  446. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +4 -1
  447. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +76 -20
  448. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +18 -9
  449. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +195 -23
  450. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +19 -12
  451. package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +88 -1
  452. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +1 -1
  453. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +43 -17
  454. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.h +6 -3
  455. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +73 -24
  456. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.h +19 -4
  457. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +60 -107
  458. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +41 -12
  459. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.h +6 -3
  460. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +15 -8
  461. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.h +1 -1
  462. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +10 -5
  463. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +1 -1
  464. package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +1 -1
  465. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +59 -28
  466. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +127 -120
  467. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +129 -59
  468. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +111 -14
  469. package/deps/rocksdb/rocksdb.gyp +6 -2
  470. package/index.js +0 -8
  471. package/package.json +1 -1
  472. package/prebuilds/darwin-arm64/node.napi.node +0 -0
  473. package/prebuilds/linux-x64/node.napi.node +0 -0
  474. package/deps/rocksdb/rocksdb/cmake/modules/CxxFlags.cmake +0 -7
  475. package/deps/rocksdb/rocksdb/cmake/modules/FindJeMalloc.cmake +0 -29
  476. package/deps/rocksdb/rocksdb/cmake/modules/FindNUMA.cmake +0 -29
  477. package/deps/rocksdb/rocksdb/cmake/modules/FindSnappy.cmake +0 -29
  478. package/deps/rocksdb/rocksdb/cmake/modules/FindTBB.cmake +0 -33
  479. package/deps/rocksdb/rocksdb/cmake/modules/Findgflags.cmake +0 -29
  480. package/deps/rocksdb/rocksdb/cmake/modules/Findlz4.cmake +0 -29
  481. package/deps/rocksdb/rocksdb/cmake/modules/Finduring.cmake +0 -26
  482. package/deps/rocksdb/rocksdb/cmake/modules/Findzstd.cmake +0 -29
  483. package/deps/rocksdb/rocksdb/cmake/modules/ReadVersion.cmake +0 -10
@@ -14,6 +14,7 @@
14
14
 
15
15
  namespace ROCKSDB_NAMESPACE {
16
16
  void ThreadBody(void* v) {
17
+ ThreadStatusUtil::RegisterThread(db_stress_env, ThreadStatus::USER);
17
18
  ThreadState* thread = reinterpret_cast<ThreadState*>(v);
18
19
  SharedState* shared = thread->shared;
19
20
 
@@ -26,34 +27,40 @@ void ThreadBody(void* v) {
26
27
  if (shared->AllInitialized()) {
27
28
  shared->GetCondVar()->SignalAll();
28
29
  }
29
- while (!shared->Started()) {
30
- shared->GetCondVar()->Wait();
31
- }
32
30
  }
33
- thread->shared->GetStressTest()->OperateDb(thread);
34
-
35
- {
36
- MutexLock l(shared->GetMutex());
37
- shared->IncOperated();
38
- if (shared->AllOperated()) {
39
- shared->GetCondVar()->SignalAll();
31
+ if (!FLAGS_verification_only) {
32
+ {
33
+ MutexLock l(shared->GetMutex());
34
+ while (!shared->Started()) {
35
+ shared->GetCondVar()->Wait();
36
+ }
40
37
  }
41
- while (!shared->VerifyStarted()) {
42
- shared->GetCondVar()->Wait();
38
+ thread->shared->GetStressTest()->OperateDb(thread);
39
+ {
40
+ MutexLock l(shared->GetMutex());
41
+ shared->IncOperated();
42
+ if (shared->AllOperated()) {
43
+ shared->GetCondVar()->SignalAll();
44
+ }
45
+ while (!shared->VerifyStarted()) {
46
+ shared->GetCondVar()->Wait();
47
+ }
43
48
  }
44
- }
45
49
 
46
- if (!FLAGS_skip_verifydb) {
47
- thread->shared->GetStressTest()->VerifyDb(thread);
48
- }
50
+ if (!FLAGS_skip_verifydb) {
51
+ thread->shared->GetStressTest()->VerifyDb(thread);
52
+ }
49
53
 
50
- {
51
- MutexLock l(shared->GetMutex());
52
- shared->IncDone();
53
- if (shared->AllDone()) {
54
- shared->GetCondVar()->SignalAll();
54
+ {
55
+ MutexLock l(shared->GetMutex());
56
+ shared->IncDone();
57
+ if (shared->AllDone()) {
58
+ shared->GetCondVar()->SignalAll();
59
+ }
55
60
  }
56
61
  }
62
+
63
+ ThreadStatusUtil::UnregisterThread();
57
64
  }
58
65
  bool RunStressTestImpl(SharedState* shared) {
59
66
  SystemClock* clock = db_stress_env->GetSystemClock().get();
@@ -74,12 +81,30 @@ bool RunStressTestImpl(SharedState* shared) {
74
81
  stress->InitDb(shared);
75
82
  stress->FinishInitDb(shared);
76
83
 
77
- if (FLAGS_sync_fault_injection) {
78
- fault_fs_guard->SetFilesystemDirectWritable(false);
79
- }
80
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);
81
103
  fault_fs_guard->EnableWriteErrorInjection();
82
104
  }
105
+ if (FLAGS_sync_fault_injection) {
106
+ fault_fs_guard->SetFilesystemDirectWritable(false);
107
+ }
83
108
 
84
109
  uint32_t n = FLAGS_threads;
85
110
  uint64_t now = clock->NowMicros();
@@ -96,6 +121,11 @@ bool RunStressTestImpl(SharedState* shared) {
96
121
  shared->IncBgThreads();
97
122
  }
98
123
 
124
+ if (FLAGS_compressed_secondary_cache_size > 0 ||
125
+ FLAGS_compressed_secondary_cache_ratio > 0.0) {
126
+ shared->IncBgThreads();
127
+ }
128
+
99
129
  std::vector<ThreadState*> threads(n);
100
130
  for (uint32_t i = 0; i < n; i++) {
101
131
  threads[i] = new ThreadState(i, shared);
@@ -113,6 +143,13 @@ bool RunStressTestImpl(SharedState* shared) {
113
143
  &continuous_verification_thread);
114
144
  }
115
145
 
146
+ ThreadState compressed_cache_set_capacity_thread(0, shared);
147
+ if (FLAGS_compressed_secondary_cache_size > 0 ||
148
+ FLAGS_compressed_secondary_cache_ratio > 0.0) {
149
+ db_stress_env->StartThread(CompressedCacheSetCapacityThread,
150
+ &compressed_cache_set_capacity_thread);
151
+ }
152
+
116
153
  // Each thread goes through the following states:
117
154
  // initializing -> wait for others to init -> read/populate/depopulate
118
155
  // wait for others to operate -> verify -> done
@@ -139,45 +176,55 @@ bool RunStressTestImpl(SharedState* shared) {
139
176
  }
140
177
  }
141
178
 
142
- // This is after the verification step to avoid making all those `Get()`s
143
- // and `MultiGet()`s contend on the DB-wide trace mutex.
144
- if (!FLAGS_expected_values_dir.empty()) {
145
- stress->TrackExpectedState(shared);
146
- }
147
-
148
- now = clock->NowMicros();
149
- fprintf(stdout, "%s Starting database operations\n",
150
- clock->TimeToString(now / 1000000).c_str());
179
+ if (!FLAGS_verification_only) {
180
+ // This is after the verification step to avoid making all those `Get()`s
181
+ // and `MultiGet()`s contend on the DB-wide trace mutex.
182
+ if (!FLAGS_expected_values_dir.empty()) {
183
+ stress->TrackExpectedState(shared);
184
+ }
185
+ now = clock->NowMicros();
186
+ fprintf(stdout, "%s Starting database operations\n",
187
+ clock->TimeToString(now / 1000000).c_str());
151
188
 
152
- shared->SetStart();
153
- shared->GetCondVar()->SignalAll();
154
- while (!shared->AllOperated()) {
155
- shared->GetCondVar()->Wait();
156
- }
189
+ shared->SetStart();
190
+ shared->GetCondVar()->SignalAll();
191
+ while (!shared->AllOperated()) {
192
+ shared->GetCondVar()->Wait();
193
+ }
157
194
 
158
- now = clock->NowMicros();
159
- if (FLAGS_test_batches_snapshots) {
160
- fprintf(stdout, "%s Limited verification already done during gets\n",
161
- clock->TimeToString((uint64_t)now / 1000000).c_str());
162
- } else if (FLAGS_skip_verifydb) {
163
- fprintf(stdout, "%s Verification skipped\n",
164
- clock->TimeToString((uint64_t)now / 1000000).c_str());
165
- } else {
166
- fprintf(stdout, "%s Starting verification\n",
167
- clock->TimeToString((uint64_t)now / 1000000).c_str());
168
- }
195
+ now = clock->NowMicros();
196
+ if (FLAGS_test_batches_snapshots) {
197
+ fprintf(stdout, "%s Limited verification already done during gets\n",
198
+ clock->TimeToString((uint64_t)now / 1000000).c_str());
199
+ } else if (FLAGS_skip_verifydb) {
200
+ fprintf(stdout, "%s Verification skipped\n",
201
+ clock->TimeToString((uint64_t)now / 1000000).c_str());
202
+ } else {
203
+ fprintf(stdout, "%s Starting verification\n",
204
+ clock->TimeToString((uint64_t)now / 1000000).c_str());
205
+ }
169
206
 
170
- shared->SetStartVerify();
171
- shared->GetCondVar()->SignalAll();
172
- while (!shared->AllDone()) {
173
- shared->GetCondVar()->Wait();
207
+ shared->SetStartVerify();
208
+ shared->GetCondVar()->SignalAll();
209
+ while (!shared->AllDone()) {
210
+ shared->GetCondVar()->Wait();
211
+ }
174
212
  }
175
213
  }
176
214
 
177
- for (unsigned int i = 1; i < n; i++) {
178
- threads[0]->stats.Merge(threads[i]->stats);
215
+ // If we are running verification_only
216
+ // stats will be empty and trying to report them will
217
+ // emit no ops or writes error. To avoid this, merging and reporting stats
218
+ // are not executed when running with verification_only
219
+ // TODO: We need to create verification stats (e.g. how many keys
220
+ // are verified by which method) and report them here instead of operation
221
+ // stats.
222
+ if (!FLAGS_verification_only) {
223
+ for (unsigned int i = 1; i < n; i++) {
224
+ threads[0]->stats.Merge(threads[i]->stats);
225
+ }
226
+ threads[0]->stats.Report("Stress Test");
179
227
  }
180
- threads[0]->stats.Report("Stress Test");
181
228
 
182
229
  for (unsigned int i = 0; i < n; i++) {
183
230
  delete threads[i];
@@ -189,10 +236,15 @@ bool RunStressTestImpl(SharedState* shared) {
189
236
  fprintf(stdout, "%s Verification successful\n",
190
237
  clock->TimeToString(now / 1000000).c_str());
191
238
  }
192
- stress->PrintStatistics();
239
+
240
+ if (!FLAGS_verification_only) {
241
+ stress->PrintStatistics();
242
+ }
193
243
 
194
244
  if (FLAGS_compaction_thread_pool_adjust_interval > 0 ||
195
- FLAGS_continuous_verification_interval > 0) {
245
+ FLAGS_continuous_verification_interval > 0 ||
246
+ FLAGS_compressed_secondary_cache_size > 0 ||
247
+ FLAGS_compressed_secondary_cache_ratio > 0.0) {
196
248
  MutexLock l(shared->GetMutex());
197
249
  shared->SetShouldStopBgThread();
198
250
  while (!shared->BgThreadsFinished()) {
@@ -32,6 +32,48 @@ class DbStressRandomAccessFileWrapper : public FSRandomAccessFileOwnerWrapper {
32
32
  #endif
33
33
  return target()->Read(offset, n, options, result, scratch, dbg);
34
34
  }
35
+
36
+ IOStatus MultiRead(FSReadRequest* reqs, size_t num_reqs,
37
+ const IOOptions& options, IODebugContext* dbg) override {
38
+ #ifndef NDEBUG
39
+ const ThreadStatus::OperationType thread_op =
40
+ ThreadStatusUtil::GetThreadOperation();
41
+ Env::IOActivity io_activity =
42
+ ThreadStatusUtil::TEST_GetExpectedIOActivity(thread_op);
43
+ assert(io_activity == Env::IOActivity::kUnknown ||
44
+ io_activity == options.io_activity);
45
+ #endif
46
+ return target()->MultiRead(reqs, num_reqs, options, dbg);
47
+ }
48
+
49
+ IOStatus Prefetch(uint64_t offset, size_t n, const IOOptions& options,
50
+ IODebugContext* dbg) override {
51
+ #ifndef NDEBUG
52
+ const ThreadStatus::OperationType thread_op =
53
+ ThreadStatusUtil::GetThreadOperation();
54
+ Env::IOActivity io_activity =
55
+ ThreadStatusUtil::TEST_GetExpectedIOActivity(thread_op);
56
+ assert(io_activity == Env::IOActivity::kUnknown ||
57
+ io_activity == options.io_activity);
58
+ #endif
59
+ return target()->Prefetch(offset, n, options, dbg);
60
+ }
61
+
62
+ IOStatus ReadAsync(FSReadRequest& req, const IOOptions& options,
63
+ std::function<void(const FSReadRequest&, void*)> cb,
64
+ void* cb_arg, void** io_handle, IOHandleDeleter* del_fn,
65
+ IODebugContext* dbg) override {
66
+ #ifndef NDEBUG
67
+ const ThreadStatus::OperationType thread_op =
68
+ ThreadStatusUtil::GetThreadOperation();
69
+ Env::IOActivity io_activity =
70
+ ThreadStatusUtil::TEST_GetExpectedIOActivity(thread_op);
71
+ assert(io_activity == Env::IOActivity::kUnknown ||
72
+ io_activity == options.io_activity);
73
+ #endif
74
+ return target()->ReadAsync(req, options, cb, cb_arg, io_handle, del_fn,
75
+ dbg);
76
+ }
35
77
  };
36
78
 
37
79
  class DbStressFSWrapper : public FileSystemWrapper {
@@ -136,6 +136,9 @@ DEFINE_uint64(db_write_buffer_size,
136
136
  ROCKSDB_NAMESPACE::Options().db_write_buffer_size,
137
137
  "Number of bytes to buffer in all memtables before compacting");
138
138
 
139
+ DEFINE_bool(use_write_buffer_manager, false,
140
+ "Charge WriteBufferManager memory to the block cache");
141
+
139
142
  DEFINE_int32(
140
143
  write_buffer_size,
141
144
  static_cast<int32_t>(ROCKSDB_NAMESPACE::Options().write_buffer_size),
@@ -198,15 +201,23 @@ DEFINE_int32(open_files, ROCKSDB_NAMESPACE::Options().max_open_files,
198
201
  "Maximum number of files to keep open at the same time "
199
202
  "(use default if == 0)");
200
203
 
201
- DEFINE_int64(compressed_cache_size, 0,
202
- "Number of bytes to use as a cache of compressed data."
203
- " 0 means use default settings.");
204
+ DEFINE_uint64(compressed_secondary_cache_size, 0,
205
+ "Number of bytes to use as a cache of compressed data."
206
+ " 0 means use default settings.");
204
207
 
205
- DEFINE_int32(
206
- compressed_cache_numshardbits, -1,
207
- "Number of shards for the compressed block cache is 2 ** "
208
- "compressed_cache_numshardbits. Negative value means default settings. "
209
- "This is applied only if compressed_cache_size is greater than 0.");
208
+ DEFINE_int32(compressed_secondary_cache_numshardbits, -1,
209
+ "Number of shards for the compressed secondary cache is 2 ** "
210
+ "compressed_secondary_cache_numshardbits. "
211
+ "Negative value means default settings. This is applied only "
212
+ "if compressed_secondary_cache_size is greater than 0.");
213
+
214
+ DEFINE_double(compressed_secondary_cache_ratio, 0.0,
215
+ "Fraction of block cache memory budget to use for compressed "
216
+ "secondary cache");
217
+
218
+ DEFINE_int32(secondary_cache_update_interval, 30 * 1000 * 1000,
219
+ "Interval between modification of secondary cache parameters, in "
220
+ "microseconds");
210
221
 
211
222
  DEFINE_int32(compaction_style, ROCKSDB_NAMESPACE::Options().compaction_style,
212
223
  "");
@@ -526,10 +537,11 @@ DEFINE_double(bloom_bits, 10,
526
537
  "Negative means use default settings.");
527
538
 
528
539
  DEFINE_int32(
529
- ribbon_starting_level, 999,
540
+ bloom_before_level, 999,
530
541
  "Use Bloom filter on levels below specified and Ribbon beginning on level "
531
- "specified. Flush is considered level -1. 999 or more -> always Bloom. 0 "
532
- "-> Ribbon except Bloom for flush. -1 -> always Ribbon.");
542
+ "specified. Flush is considered level -1. Setting -1 -> always Ribbon. "
543
+ "0 -> Ribbon except Bloom for flush. INT_MAX (typically 2147483647) -> "
544
+ "always Bloom.");
533
545
 
534
546
  DEFINE_bool(partition_filters, false,
535
547
  "use partitioned filters "
@@ -669,13 +681,24 @@ DEFINE_uint64(sst_file_manager_bytes_per_truncate, 0,
669
681
  "many bytes. By default whole files will be deleted.");
670
682
 
671
683
  DEFINE_bool(use_txn, false,
672
- "Use TransactionDB. Currently the default write policy is "
673
- "TxnDBWritePolicy::WRITE_PREPARED");
684
+ "Use TransactionDB or OptimisticTransactionDB. When "
685
+ "use_optimistic_txn == false (by default), "
686
+ "it's (Pessimistic) TransactionDB");
674
687
 
675
688
  DEFINE_uint64(txn_write_policy, 0,
676
689
  "The transaction write policy. Default is "
677
690
  "TxnDBWritePolicy::WRITE_COMMITTED. Note that this should not be "
678
- "changed accross crashes.");
691
+ "changed across crashes.");
692
+
693
+ DEFINE_bool(use_optimistic_txn, false, "Use OptimisticTransactionDB.");
694
+ DEFINE_uint64(occ_validation_policy, 1,
695
+ "Optimistic Concurrency Control Validation Policy for "
696
+ "OptimisticTransactionDB");
697
+ DEFINE_bool(share_occ_lock_buckets, false,
698
+ "Share a pool of locks across DB instances for buckets");
699
+ DEFINE_uint32(
700
+ occ_lock_bucket_count, 500,
701
+ "Bucket Count for shared Optimistic Concurrency Control (OCC) locks");
679
702
 
680
703
  DEFINE_bool(unordered_write, false,
681
704
  "Turn on the unordered_write feature. This options is currently "
@@ -834,6 +857,9 @@ DEFINE_bool(
834
857
  "ZSTD 1.4.5+ is required. If ZSTD 1.4.5+ is not linked with the binary, "
835
858
  "this flag will have the default value true.");
836
859
 
860
+ DEFINE_bool(compression_checksum, false,
861
+ "Turn on zstd's checksum feature for detecting corruption.");
862
+
837
863
  DEFINE_string(bottommost_compression_type, "disable",
838
864
  "Algorithm to use to compress bottommost level of the database. "
839
865
  "\"disable\" means disabling the feature");
@@ -918,6 +944,13 @@ DEFINE_int32(verify_checksum_one_in, 0,
918
944
  " checksum verification of all the files in the database once for"
919
945
  " every N ops on average. 0 indicates that calls to"
920
946
  " VerifyChecksum() are disabled.");
947
+
948
+ DEFINE_int32(verify_file_checksums_one_in, 0,
949
+ "If non-zero, then DB::VerifyFileChecksums() will be called to do"
950
+ " checksum verification of all the files in the database once for"
951
+ " every N ops on average. 0 indicates that calls to"
952
+ " VerifyFileChecksums() are disabled.");
953
+
921
954
  DEFINE_int32(verify_db_one_in, 0,
922
955
  "If non-zero, call VerifyDb() once for every N ops. 0 indicates "
923
956
  "that VerifyDb() will not be called in OperateDb(). Note that "
@@ -985,7 +1018,8 @@ DEFINE_string(file_checksum_impl, "none",
985
1018
  "\"none\" for null.");
986
1019
 
987
1020
  DEFINE_int32(write_fault_one_in, 0,
988
- "On non-zero, enables fault injection on write");
1021
+ "On non-zero, enables fault injection on write. Currently only"
1022
+ "injects write error when writing to SST files.");
989
1023
 
990
1024
  DEFINE_uint64(user_timestamp_size, 0,
991
1025
  "Number of bytes for a user-defined timestamp. Currently, only "
@@ -1000,14 +1034,17 @@ DEFINE_string(secondary_cache_uri, "",
1000
1034
  DEFINE_int32(secondary_cache_fault_one_in, 0,
1001
1035
  "On non-zero, enables fault injection in secondary cache inserts"
1002
1036
  " and lookups");
1037
+ DEFINE_double(tiered_cache_percent_compressed, 0.0,
1038
+ "Percentage of total block cache budget to allocate to the "
1039
+ "compressed cache");
1003
1040
  DEFINE_int32(open_write_fault_one_in, 0,
1004
1041
  "On non-zero, enables fault injection on file writes "
1005
1042
  "during DB reopen.");
1006
1043
  DEFINE_int32(open_read_fault_one_in, 0,
1007
1044
  "On non-zero, enables fault injection on file reads "
1008
1045
  "during DB reopen.");
1009
- DEFINE_int32(injest_error_severity, 1,
1010
- "The severity of the injested IO Error. 1 is soft error (e.g. "
1046
+ DEFINE_int32(inject_error_severity, 1,
1047
+ "The severity of the injected IO Error. 1 is soft error (e.g. "
1011
1048
  "retryable error), 2 is fatal error, and the default is "
1012
1049
  "retryable error.");
1013
1050
  DEFINE_int32(prepopulate_block_cache,
@@ -1089,6 +1126,20 @@ DEFINE_uint64(stats_dump_period_sec,
1089
1126
  "Gap between printing stats to log in seconds");
1090
1127
 
1091
1128
  DEFINE_bool(use_io_uring, false, "Enable the use of IO uring on Posix");
1129
+
1130
+ DEFINE_bool(verification_only, false,
1131
+ "If true, tests will only execute verification step");
1092
1132
  extern "C" bool RocksDbIOUringEnable() { return FLAGS_use_io_uring; }
1093
1133
 
1134
+ DEFINE_uint32(memtable_max_range_deletions, 0,
1135
+ "If nonzero, RocksDB will try to flush the current memtable"
1136
+ "after the number of range deletions is >= this limit");
1137
+
1138
+ DEFINE_uint32(bottommost_file_compaction_delay, 0,
1139
+ "Delay kBottommostFiles compaction by this amount of seconds."
1140
+ "See more in option comment.");
1141
+
1142
+ DEFINE_bool(auto_readahead_size, false,
1143
+ "Does auto tuning of readahead_size when enabled during scans.");
1144
+
1094
1145
  #endif // GFLAGS
@@ -9,6 +9,7 @@
9
9
  #include <mutex>
10
10
  #include <unordered_set>
11
11
 
12
+ #include "db_stress_tool/db_stress_shared_state.h"
12
13
  #include "file/filename.h"
13
14
  #include "file/writable_file_writer.h"
14
15
  #include "rocksdb/db.h"
@@ -19,9 +20,12 @@
19
20
  #include "rocksdb/unique_id.h"
20
21
  #include "util/gflags_compat.h"
21
22
  #include "util/random.h"
23
+ #include "utilities/fault_injection_fs.h"
22
24
 
23
25
  DECLARE_int32(compact_files_one_in);
24
26
 
27
+ extern std::shared_ptr<ROCKSDB_NAMESPACE::FaultInjectionTestFS> fault_fs_guard;
28
+
25
29
  namespace ROCKSDB_NAMESPACE {
26
30
 
27
31
  // Verify across process executions that all seen IDs are unique
@@ -67,11 +71,23 @@ class DbStressListener : public EventListener {
67
71
  VerifyFilePath(info.file_path);
68
72
  // pretending doing some work here
69
73
  RandomSleep();
74
+ if (FLAGS_read_fault_one_in) {
75
+ (void)fault_fs_guard->GetAndResetErrorCount();
76
+ fault_fs_guard->DisableErrorInjection();
77
+ }
70
78
  }
71
79
 
72
80
  void OnFlushBegin(DB* /*db*/,
73
81
  const FlushJobInfo& /*flush_job_info*/) override {
74
82
  RandomSleep();
83
+ if (FLAGS_read_fault_one_in) {
84
+ // Hardcoded to inject retryable error as a non-retryable error would put
85
+ // the DB in read-only mode and then it would crash on the next write.
86
+ fault_fs_guard->SetThreadLocalReadErrorContext(
87
+ static_cast<uint32_t>(FLAGS_seed), FLAGS_read_fault_one_in,
88
+ true /* retryable */);
89
+ fault_fs_guard->EnableErrorInjection();
90
+ }
75
91
  }
76
92
 
77
93
  void OnTableFileDeleted(const TableFileDeletionInfo& /*info*/) override {
@@ -95,6 +111,24 @@ class DbStressListener : public EventListener {
95
111
  RandomSleep();
96
112
  }
97
113
 
114
+ void OnSubcompactionBegin(const SubcompactionJobInfo& /* si */) override {
115
+ if (FLAGS_read_fault_one_in) {
116
+ // Hardcoded to inject retryable error as a non-retryable error would put
117
+ // the DB in read-only mode and then it would crash on the next write.
118
+ fault_fs_guard->SetThreadLocalReadErrorContext(
119
+ static_cast<uint32_t>(FLAGS_seed), FLAGS_read_fault_one_in,
120
+ true /* retryable */);
121
+ fault_fs_guard->EnableErrorInjection();
122
+ }
123
+ }
124
+
125
+ void OnSubcompactionCompleted(const SubcompactionJobInfo& /* si */) override {
126
+ if (FLAGS_read_fault_one_in) {
127
+ (void)fault_fs_guard->GetAndResetErrorCount();
128
+ fault_fs_guard->DisableErrorInjection();
129
+ }
130
+ }
131
+
98
132
  void OnTableFileCreationStarted(
99
133
  const TableFileCreationBriefInfo& /*info*/) override {
100
134
  ++num_pending_file_creations_;
@@ -35,7 +35,7 @@ DECLARE_int32(open_metadata_write_fault_one_in);
35
35
  DECLARE_int32(open_write_fault_one_in);
36
36
  DECLARE_int32(open_read_fault_one_in);
37
37
 
38
- DECLARE_int32(injest_error_severity);
38
+ DECLARE_int32(inject_error_severity);
39
39
 
40
40
  namespace ROCKSDB_NAMESPACE {
41
41
  class StressTest;
@@ -342,6 +342,13 @@ class SharedState {
342
342
 
343
343
  uint64_t GetStartTimestamp() const { return start_timestamp_; }
344
344
 
345
+ void SafeTerminate() {
346
+ // Grab mutex so that we don't call terminate while another thread is
347
+ // attempting to print a stack trace due to the first one
348
+ MutexLock l(&mu_);
349
+ std::terminate();
350
+ }
351
+
345
352
  private:
346
353
  static void IgnoreReadErrorCallback(void*) { ignore_read_error = true; }
347
354