@nxtedition/rocksdb 8.2.0 → 8.2.2

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 (321) hide show
  1. package/binding.cc +3 -3
  2. package/deps/rocksdb/rocksdb/CMakeLists.txt +16 -52
  3. package/deps/rocksdb/rocksdb/Makefile +10 -5
  4. package/deps/rocksdb/rocksdb/TARGETS +8 -345
  5. package/deps/rocksdb/rocksdb/cache/cache_test.cc +92 -0
  6. package/deps/rocksdb/rocksdb/cache/clock_cache.cc +32 -32
  7. package/deps/rocksdb/rocksdb/cache/clock_cache.h +12 -9
  8. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +6 -43
  9. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +3 -13
  10. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +8 -5
  11. package/deps/rocksdb/rocksdb/cache/lru_cache.cc +21 -47
  12. package/deps/rocksdb/rocksdb/cache/lru_cache.h +3 -8
  13. package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +2 -1
  14. package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +1 -2
  15. package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +44 -7
  16. package/deps/rocksdb/rocksdb/cache/sharded_cache.h +13 -14
  17. package/deps/rocksdb/rocksdb/db/blob/blob_contents.h +1 -1
  18. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +1 -0
  19. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.cc +2 -2
  20. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.h +2 -1
  21. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache_test.cc +17 -8
  22. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +40 -21
  23. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +5 -1
  24. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +41 -42
  25. package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.cc +1 -1
  26. package/deps/rocksdb/rocksdb/db/blob/blob_log_writer.cc +1 -1
  27. package/deps/rocksdb/rocksdb/db/blob/blob_source.cc +5 -4
  28. package/deps/rocksdb/rocksdb/db/blob/blob_source.h +2 -2
  29. package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +5 -3
  30. package/deps/rocksdb/rocksdb/db/builder.cc +7 -6
  31. package/deps/rocksdb/rocksdb/db/builder.h +2 -2
  32. package/deps/rocksdb/rocksdb/db/c.cc +76 -5
  33. package/deps/rocksdb/rocksdb/db/c_test.c +141 -0
  34. package/deps/rocksdb/rocksdb/db/column_family.cc +32 -0
  35. package/deps/rocksdb/rocksdb/db/compact_files_test.cc +3 -2
  36. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +5 -0
  37. package/deps/rocksdb/rocksdb/db/compaction/compaction.h +8 -5
  38. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +12 -10
  39. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +21 -17
  40. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +2 -2
  41. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +8 -7
  42. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +3 -1
  43. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +1 -1
  44. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +77 -50
  45. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +4 -5
  46. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +55 -8
  47. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +142 -56
  48. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +1 -1
  49. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +1 -2
  50. package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +21 -20
  51. package/deps/rocksdb/rocksdb/db/convenience.cc +8 -6
  52. package/deps/rocksdb/rocksdb/db/corruption_test.cc +5 -4
  53. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +6 -3
  54. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +260 -220
  55. package/deps/rocksdb/rocksdb/db/db_clip_test.cc +142 -0
  56. package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +1 -1
  57. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +333 -27
  58. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +5 -0
  59. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +7 -0
  60. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +189 -27
  61. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +23 -10
  62. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +134 -90
  63. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +2 -2
  64. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +5 -3
  65. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +5 -1
  66. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +124 -16
  67. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +10 -0
  68. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +7 -0
  69. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +15 -0
  70. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +11 -5
  71. package/deps/rocksdb/rocksdb/db/db_iter.cc +7 -8
  72. package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +54 -3
  73. package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +42 -0
  74. package/deps/rocksdb/rocksdb/db/db_options_test.cc +116 -1
  75. package/deps/rocksdb/rocksdb/db/db_properties_test.cc +3 -2
  76. package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +3 -2
  77. package/deps/rocksdb/rocksdb/db/db_sst_test.cc +9 -8
  78. package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +142 -63
  79. package/deps/rocksdb/rocksdb/db/db_test.cc +28 -7
  80. package/deps/rocksdb/rocksdb/db/db_test2.cc +71 -131
  81. package/deps/rocksdb/rocksdb/db/db_test_util.cc +18 -0
  82. package/deps/rocksdb/rocksdb/db/db_test_util.h +6 -0
  83. package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +10 -10
  84. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +25 -0
  85. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +88 -0
  86. package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +67 -0
  87. package/deps/rocksdb/rocksdb/db/db_write_test.cc +5 -0
  88. package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +4 -4
  89. package/deps/rocksdb/rocksdb/db/experimental.cc +4 -2
  90. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +86 -1
  91. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +15 -2
  92. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +1 -2
  93. package/deps/rocksdb/rocksdb/db/flush_job.cc +21 -14
  94. package/deps/rocksdb/rocksdb/db/forward_iterator.cc +14 -7
  95. package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +31 -8
  96. package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +21 -19
  97. package/deps/rocksdb/rocksdb/db/internal_stats.cc +42 -12
  98. package/deps/rocksdb/rocksdb/db/internal_stats.h +1 -0
  99. package/deps/rocksdb/rocksdb/db/kv_checksum.h +92 -6
  100. package/deps/rocksdb/rocksdb/db/listener_test.cc +2 -2
  101. package/deps/rocksdb/rocksdb/db/log_format.h +8 -4
  102. package/deps/rocksdb/rocksdb/db/log_reader.cc +129 -51
  103. package/deps/rocksdb/rocksdb/db/log_reader.h +16 -0
  104. package/deps/rocksdb/rocksdb/db/log_test.cc +125 -4
  105. package/deps/rocksdb/rocksdb/db/log_writer.cc +32 -2
  106. package/deps/rocksdb/rocksdb/db/log_writer.h +16 -0
  107. package/deps/rocksdb/rocksdb/db/memtable.cc +17 -46
  108. package/deps/rocksdb/rocksdb/db/memtable.h +1 -1
  109. package/deps/rocksdb/rocksdb/db/memtable_list.cc +8 -4
  110. package/deps/rocksdb/rocksdb/db/merge_helper.cc +1 -1
  111. package/deps/rocksdb/rocksdb/db/perf_context_test.cc +2 -1
  112. package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +5 -4
  113. package/deps/rocksdb/rocksdb/db/repair.cc +38 -11
  114. package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +3 -3
  115. package/deps/rocksdb/rocksdb/db/table_cache.cc +68 -51
  116. package/deps/rocksdb/rocksdb/db/table_cache.h +20 -10
  117. package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +2 -1
  118. package/deps/rocksdb/rocksdb/db/table_properties_collector_test.cc +6 -3
  119. package/deps/rocksdb/rocksdb/db/version_builder.cc +9 -5
  120. package/deps/rocksdb/rocksdb/db/version_builder.h +2 -1
  121. package/deps/rocksdb/rocksdb/db/version_builder_test.cc +140 -120
  122. package/deps/rocksdb/rocksdb/db/version_edit.cc +14 -0
  123. package/deps/rocksdb/rocksdb/db/version_edit.h +12 -4
  124. package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +21 -13
  125. package/deps/rocksdb/rocksdb/db/version_edit_handler.h +26 -16
  126. package/deps/rocksdb/rocksdb/db/version_edit_test.cc +9 -9
  127. package/deps/rocksdb/rocksdb/db/version_set.cc +292 -96
  128. package/deps/rocksdb/rocksdb/db/version_set.h +53 -28
  129. package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +1 -0
  130. package/deps/rocksdb/rocksdb/db/version_set_test.cc +62 -22
  131. package/deps/rocksdb/rocksdb/db/version_util.h +5 -4
  132. package/deps/rocksdb/rocksdb/db/write_batch.cc +3 -1
  133. package/deps/rocksdb/rocksdb/db_stress_tool/CMakeLists.txt +1 -0
  134. package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +119 -27
  135. package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +123 -0
  136. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +4 -0
  137. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +7 -2
  138. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +34 -0
  139. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +13 -0
  140. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +43 -33
  141. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +29 -17
  142. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +5 -0
  143. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +6 -1
  144. package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +85 -50
  145. package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.h +96 -54
  146. package/deps/rocksdb/rocksdb/db_stress_tool/expected_value.cc +122 -0
  147. package/deps/rocksdb/rocksdb/db_stress_tool/expected_value.h +206 -0
  148. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +9 -1
  149. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.h +9 -3
  150. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +322 -92
  151. package/deps/rocksdb/rocksdb/env/env_posix.cc +12 -8
  152. package/deps/rocksdb/rocksdb/env/env_test.cc +31 -0
  153. package/deps/rocksdb/rocksdb/env/mock_env.cc +1 -1
  154. package/deps/rocksdb/rocksdb/env/unique_id_gen.h +14 -0
  155. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +1 -1
  156. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +5 -1
  157. package/deps/rocksdb/rocksdb/file/file_util.cc +3 -3
  158. package/deps/rocksdb/rocksdb/file/file_util.h +2 -0
  159. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +89 -0
  160. package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +22 -7
  161. package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +3 -2
  162. package/deps/rocksdb/rocksdb/file/readahead_raf.cc +1 -1
  163. package/deps/rocksdb/rocksdb/file/sequence_file_reader.cc +1 -1
  164. package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +1 -1
  165. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_cache.h +3 -0
  166. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +154 -74
  167. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +27 -7
  168. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +107 -28
  169. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +19 -0
  170. package/deps/rocksdb/rocksdb/include/rocksdb/env.h +8 -0
  171. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +2 -0
  172. package/deps/rocksdb/rocksdb/include/rocksdb/memory_allocator.h +7 -1
  173. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +137 -152
  174. package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +61 -26
  175. package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +30 -26
  176. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +33 -16
  177. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +87 -8
  178. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +1 -1
  179. package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +5 -0
  180. package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +1 -0
  181. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_util.h +1 -0
  182. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +7 -0
  183. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +0 -1
  184. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
  185. package/deps/rocksdb/rocksdb/include/rocksdb/write_buffer_manager.h +9 -2
  186. package/deps/rocksdb/rocksdb/logging/env_logger.h +2 -0
  187. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +78 -42
  188. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.h +14 -9
  189. package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +1 -0
  190. package/deps/rocksdb/rocksdb/memtable/skiplist_test.cc +1 -0
  191. package/deps/rocksdb/rocksdb/memtable/write_buffer_manager.cc +4 -9
  192. package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +19 -11
  193. package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.h +1 -1
  194. package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +211 -555
  195. package/deps/rocksdb/rocksdb/monitoring/perf_step_timer.h +1 -1
  196. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +36 -2
  197. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.cc +17 -7
  198. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.h +10 -7
  199. package/deps/rocksdb/rocksdb/monitoring/thread_status_util.cc +19 -18
  200. package/deps/rocksdb/rocksdb/monitoring/thread_status_util.h +10 -2
  201. package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +14 -0
  202. package/deps/rocksdb/rocksdb/options/cf_options.cc +35 -2
  203. package/deps/rocksdb/rocksdb/options/cf_options.h +5 -0
  204. package/deps/rocksdb/rocksdb/options/customizable_test.cc +1 -1
  205. package/deps/rocksdb/rocksdb/options/options.cc +12 -53
  206. package/deps/rocksdb/rocksdb/options/options_helper.cc +4 -0
  207. package/deps/rocksdb/rocksdb/options/options_parser.cc +11 -0
  208. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +32 -4
  209. package/deps/rocksdb/rocksdb/options/options_test.cc +89 -5
  210. package/deps/rocksdb/rocksdb/port/lang.h +27 -0
  211. package/deps/rocksdb/rocksdb/port/stack_trace.cc +67 -24
  212. package/deps/rocksdb/rocksdb/src.mk +2 -0
  213. package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +2 -3
  214. package/deps/rocksdb/rocksdb/table/block_based/block.cc +195 -35
  215. package/deps/rocksdb/rocksdb/table/block_based/block.h +197 -24
  216. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +71 -51
  217. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +7 -1
  218. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +4 -6
  219. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +3 -0
  220. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +43 -2
  221. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +36 -6
  222. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +266 -166
  223. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +44 -14
  224. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +1 -1
  225. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +63 -56
  226. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +8 -2
  227. package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +4 -2
  228. package/deps/rocksdb/rocksdb/table/block_based/block_cache.cc +10 -0
  229. package/deps/rocksdb/rocksdb/table/block_based/block_cache.h +14 -2
  230. package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +918 -2
  231. package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +3 -2
  232. package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +10 -9
  233. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +6 -8
  234. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.h +2 -2
  235. package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.cc +1 -1
  236. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +18 -23
  237. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +8 -8
  238. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block_test.cc +16 -32
  239. package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +7 -8
  240. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +4 -5
  241. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +3 -3
  242. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +46 -53
  243. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +12 -12
  244. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +7 -9
  245. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +26 -23
  246. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.h +2 -1
  247. package/deps/rocksdb/rocksdb/table/block_based/reader_common.h +3 -0
  248. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +4 -2
  249. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +3 -2
  250. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +7 -1
  251. package/deps/rocksdb/rocksdb/table/block_fetcher.h +1 -1
  252. package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +2 -1
  253. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +3 -2
  254. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.cc +5 -2
  255. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.h +4 -2
  256. package/deps/rocksdb/rocksdb/table/format.cc +4 -4
  257. package/deps/rocksdb/rocksdb/table/format.h +1 -1
  258. package/deps/rocksdb/rocksdb/table/get_context.cc +1 -1
  259. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +33 -22
  260. package/deps/rocksdb/rocksdb/table/meta_blocks.h +4 -0
  261. package/deps/rocksdb/rocksdb/table/mock_table.cc +4 -2
  262. package/deps/rocksdb/rocksdb/table/persistent_cache_helper.h +1 -1
  263. package/deps/rocksdb/rocksdb/table/persistent_cache_options.h +1 -1
  264. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +18 -10
  265. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.h +4 -3
  266. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +10 -7
  267. package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +4 -2
  268. package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +11 -0
  269. package/deps/rocksdb/rocksdb/table/table_builder.h +14 -5
  270. package/deps/rocksdb/rocksdb/table/table_properties.cc +2 -0
  271. package/deps/rocksdb/rocksdb/table/table_reader.h +6 -3
  272. package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +1 -1
  273. package/deps/rocksdb/rocksdb/table/table_test.cc +291 -34
  274. package/deps/rocksdb/rocksdb/test_util/secondary_cache_test_util.h +3 -1
  275. package/deps/rocksdb/rocksdb/test_util/testharness.h +5 -0
  276. package/deps/rocksdb/rocksdb/test_util/testutil.cc +2 -2
  277. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +33 -17
  278. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +3 -1
  279. package/deps/rocksdb/rocksdb/util/bloom_impl.h +2 -2
  280. package/deps/rocksdb/rocksdb/util/compression.h +1 -1
  281. package/deps/rocksdb/rocksdb/util/crc32c.cc +24 -83
  282. package/deps/rocksdb/rocksdb/util/crc32c_arm64.cc +7 -9
  283. package/deps/rocksdb/rocksdb/util/file_checksum_helper.cc +4 -1
  284. package/deps/rocksdb/rocksdb/util/filter_bench.cc +1 -1
  285. package/deps/rocksdb/rocksdb/util/gflags_compat.h +9 -10
  286. package/deps/rocksdb/rocksdb/util/math.h +12 -7
  287. package/deps/rocksdb/rocksdb/util/rate_limiter.cc +16 -18
  288. package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +46 -2
  289. package/deps/rocksdb/rocksdb/util/ribbon_test.cc +6 -6
  290. package/deps/rocksdb/rocksdb/util/slice_transform_test.cc +12 -7
  291. package/deps/rocksdb/rocksdb/util/stop_watch.h +31 -13
  292. package/deps/rocksdb/rocksdb/util/thread_list_test.cc +2 -0
  293. package/deps/rocksdb/rocksdb/util/thread_operation.h +2 -1
  294. package/deps/rocksdb/rocksdb/util/udt_util.h +77 -0
  295. package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge.cc +2 -2
  296. package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge_test.cc +1 -1
  297. package/deps/rocksdb/rocksdb/utilities/agg_merge/test_agg_merge.cc +1 -1
  298. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +1 -1
  299. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +1 -1
  300. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.h +1 -1
  301. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +11 -1
  302. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +34 -1
  303. package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +15 -0
  304. package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache.cc +1 -1
  305. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +5 -1
  306. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +29 -1
  307. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +0 -1
  308. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +0 -1
  309. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +6 -1
  310. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +10 -0
  311. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +6 -1
  312. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +5 -0
  313. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +5 -0
  314. package/package.json +1 -1
  315. package/prebuilds/darwin-arm64/node.napi.node +0 -0
  316. package/prebuilds/linux-x64/node.napi.node +0 -0
  317. /package/deps/rocksdb/rocksdb/memory/{memory_allocator.h → memory_allocator_impl.h} +0 -0
  318. /package/deps/rocksdb/rocksdb/monitoring/{statistics.h → statistics_impl.h} +0 -0
  319. /package/deps/rocksdb/rocksdb/table/block_based/{flush_block_policy.h → flush_block_policy_impl.h} +0 -0
  320. /package/deps/rocksdb/rocksdb/util/{rate_limiter.h → rate_limiter_impl.h} +0 -0
  321. /package/deps/rocksdb/rocksdb/utilities/agg_merge/{agg_merge.h → agg_merge_impl.h} +0 -0
@@ -581,8 +581,9 @@ void TestBoundary(InternalKey& ik1, std::string& v1, InternalKey& ik2,
581
581
  const bool kImmortal = true;
582
582
  ASSERT_OK(ioptions.table_factory->NewTableReader(
583
583
  TableReaderOptions(ioptions, moptions.prefix_extractor, soptions,
584
- internal_comparator, !kSkipFilters, !kImmortal,
585
- level_),
584
+ internal_comparator,
585
+ 0 /* block_protection_bytes_per_key */, !kSkipFilters,
586
+ !kImmortal, level_),
586
587
  std::move(file_reader), sink->contents().size(), &table_reader));
587
588
  // Search using Get()
588
589
  ReadOptions ro;
@@ -113,17 +113,17 @@ class FilterBlockReader {
113
113
  const Slice* const const_ikey_ptr,
114
114
  GetContext* get_context,
115
115
  BlockCacheLookupContext* lookup_context,
116
- Env::IOPriority rate_limiter_priority) = 0;
116
+ const ReadOptions& read_options) = 0;
117
117
 
118
118
  virtual void KeysMayMatch(MultiGetRange* range, const bool no_io,
119
119
  BlockCacheLookupContext* lookup_context,
120
- Env::IOPriority rate_limiter_priority) {
120
+ const ReadOptions& read_options) {
121
121
  for (auto iter = range->begin(); iter != range->end(); ++iter) {
122
122
  const Slice ukey_without_ts = iter->ukey_without_ts;
123
123
  const Slice ikey = iter->ikey;
124
124
  GetContext* const get_context = iter->get_context;
125
125
  if (!KeyMayMatch(ukey_without_ts, no_io, &ikey, get_context,
126
- lookup_context, rate_limiter_priority)) {
126
+ lookup_context, read_options)) {
127
127
  range->SkipKey(iter);
128
128
  }
129
129
  }
@@ -136,21 +136,20 @@ class FilterBlockReader {
136
136
  const Slice* const const_ikey_ptr,
137
137
  GetContext* get_context,
138
138
  BlockCacheLookupContext* lookup_context,
139
- Env::IOPriority rate_limiter_priority) = 0;
139
+ const ReadOptions& read_options) = 0;
140
140
 
141
141
  virtual void PrefixesMayMatch(MultiGetRange* range,
142
142
  const SliceTransform* prefix_extractor,
143
143
  const bool no_io,
144
144
  BlockCacheLookupContext* lookup_context,
145
- Env::IOPriority rate_limiter_priority) {
145
+ const ReadOptions& read_options) {
146
146
  for (auto iter = range->begin(); iter != range->end(); ++iter) {
147
147
  const Slice ukey_without_ts = iter->ukey_without_ts;
148
148
  const Slice ikey = iter->ikey;
149
149
  GetContext* const get_context = iter->get_context;
150
150
  if (prefix_extractor->InDomain(ukey_without_ts) &&
151
151
  !PrefixMayMatch(prefix_extractor->Transform(ukey_without_ts), no_io,
152
- &ikey, get_context, lookup_context,
153
- rate_limiter_priority)) {
152
+ &ikey, get_context, lookup_context, read_options)) {
154
153
  range->SkipKey(iter);
155
154
  }
156
155
  }
@@ -164,7 +163,9 @@ class FilterBlockReader {
164
163
  return error_msg;
165
164
  }
166
165
 
167
- virtual Status CacheDependencies(const ReadOptions& /*ro*/, bool /*pin*/) {
166
+ virtual Status CacheDependencies(
167
+ const ReadOptions& /*ro*/, bool /*pin*/,
168
+ FilePrefetchBuffer* /* tail_prefetch_buffer */) {
168
169
  return Status::OK();
169
170
  }
170
171
 
@@ -176,7 +177,7 @@ class FilterBlockReader {
176
177
  bool* filter_checked, bool need_upper_bound_check,
177
178
  bool no_io,
178
179
  BlockCacheLookupContext* lookup_context,
179
- Env::IOPriority rate_limiter_priority) = 0;
180
+ const ReadOptions& read_options) = 0;
180
181
  };
181
182
 
182
183
  } // namespace ROCKSDB_NAMESPACE
@@ -70,7 +70,7 @@ Status FilterBlockReaderCommon<TBlocklike>::GetOrReadFilterBlock(
70
70
  bool no_io, GetContext* get_context,
71
71
  BlockCacheLookupContext* lookup_context,
72
72
  CachableEntry<TBlocklike>* filter_block,
73
- Env::IOPriority rate_limiter_priority) const {
73
+ const ReadOptions& read_options) const {
74
74
  assert(filter_block);
75
75
 
76
76
  if (!filter_block_.IsEmpty()) {
@@ -78,13 +78,12 @@ Status FilterBlockReaderCommon<TBlocklike>::GetOrReadFilterBlock(
78
78
  return Status::OK();
79
79
  }
80
80
 
81
- ReadOptions read_options;
82
- read_options.rate_limiter_priority = rate_limiter_priority;
81
+ ReadOptions ro = read_options;
83
82
  if (no_io) {
84
- read_options.read_tier = kBlockCacheTier;
83
+ ro.read_tier = kBlockCacheTier;
85
84
  }
86
85
 
87
- return ReadFilterBlock(table_, nullptr /* prefetch_buffer */, read_options,
86
+ return ReadFilterBlock(table_, nullptr /* prefetch_buffer */, ro,
88
87
  cache_filter_blocks(), get_context, lookup_context,
89
88
  filter_block);
90
89
  }
@@ -104,8 +103,7 @@ bool FilterBlockReaderCommon<TBlocklike>::RangeMayExist(
104
103
  const SliceTransform* prefix_extractor, const Comparator* comparator,
105
104
  const Slice* const const_ikey_ptr, bool* filter_checked,
106
105
  bool need_upper_bound_check, bool no_io,
107
- BlockCacheLookupContext* lookup_context,
108
- Env::IOPriority rate_limiter_priority) {
106
+ BlockCacheLookupContext* lookup_context, const ReadOptions& read_options) {
109
107
  if (!prefix_extractor || !prefix_extractor->InDomain(user_key_without_ts)) {
110
108
  *filter_checked = false;
111
109
  return true;
@@ -119,7 +117,7 @@ bool FilterBlockReaderCommon<TBlocklike>::RangeMayExist(
119
117
  *filter_checked = true;
120
118
  return PrefixMayMatch(prefix, no_io, const_ikey_ptr,
121
119
  /* get_context */ nullptr, lookup_context,
122
- rate_limiter_priority);
120
+ read_options);
123
121
  }
124
122
  }
125
123
 
@@ -40,7 +40,7 @@ class FilterBlockReaderCommon : public FilterBlockReader {
40
40
  const Slice* const const_ikey_ptr, bool* filter_checked,
41
41
  bool need_upper_bound_check, bool no_io,
42
42
  BlockCacheLookupContext* lookup_context,
43
- Env::IOPriority rate_limiter_priority) override;
43
+ const ReadOptions& read_options) override;
44
44
 
45
45
  protected:
46
46
  static Status ReadFilterBlock(const BlockBasedTable* table,
@@ -58,7 +58,7 @@ class FilterBlockReaderCommon : public FilterBlockReader {
58
58
  Status GetOrReadFilterBlock(bool no_io, GetContext* get_context,
59
59
  BlockCacheLookupContext* lookup_context,
60
60
  CachableEntry<TBlocklike>* filter_block,
61
- Env::IOPriority rate_limiter_priority) const;
61
+ const ReadOptions& read_options) const;
62
62
 
63
63
  size_t ApproximateFilterBlockMemoryUsage() const;
64
64
 
@@ -13,7 +13,7 @@
13
13
  #include "rocksdb/utilities/customizable_util.h"
14
14
  #include "table/block_based/block_based_table_reader.h"
15
15
  #include "table/block_based/block_builder.h"
16
- #include "table/block_based/flush_block_policy.h"
16
+ #include "table/block_based/flush_block_policy_impl.h"
17
17
  #include "table/format.h"
18
18
 
19
19
  namespace ROCKSDB_NAMESPACE {
@@ -127,12 +127,11 @@ bool FullFilterBlockReader::KeyMayMatch(const Slice& key, const bool no_io,
127
127
  const Slice* const /*const_ikey_ptr*/,
128
128
  GetContext* get_context,
129
129
  BlockCacheLookupContext* lookup_context,
130
- Env::IOPriority rate_limiter_priority) {
130
+ const ReadOptions& read_options) {
131
131
  if (!whole_key_filtering()) {
132
132
  return true;
133
133
  }
134
- return MayMatch(key, no_io, get_context, lookup_context,
135
- rate_limiter_priority);
134
+ return MayMatch(key, no_io, get_context, lookup_context, read_options);
136
135
  }
137
136
 
138
137
  std::unique_ptr<FilterBlockReader> FullFilterBlockReader::Create(
@@ -165,20 +164,18 @@ std::unique_ptr<FilterBlockReader> FullFilterBlockReader::Create(
165
164
  bool FullFilterBlockReader::PrefixMayMatch(
166
165
  const Slice& prefix, const bool no_io,
167
166
  const Slice* const /*const_ikey_ptr*/, GetContext* get_context,
168
- BlockCacheLookupContext* lookup_context,
169
- Env::IOPriority rate_limiter_priority) {
170
- return MayMatch(prefix, no_io, get_context, lookup_context,
171
- rate_limiter_priority);
167
+ BlockCacheLookupContext* lookup_context, const ReadOptions& read_options) {
168
+ return MayMatch(prefix, no_io, get_context, lookup_context, read_options);
172
169
  }
173
170
 
174
- bool FullFilterBlockReader::MayMatch(
175
- const Slice& entry, bool no_io, GetContext* get_context,
176
- BlockCacheLookupContext* lookup_context,
177
- Env::IOPriority rate_limiter_priority) const {
171
+ bool FullFilterBlockReader::MayMatch(const Slice& entry, bool no_io,
172
+ GetContext* get_context,
173
+ BlockCacheLookupContext* lookup_context,
174
+ const ReadOptions& read_options) const {
178
175
  CachableEntry<ParsedFullFilterBlock> filter_block;
179
176
 
180
177
  const Status s = GetOrReadFilterBlock(no_io, get_context, lookup_context,
181
- &filter_block, rate_limiter_priority);
178
+ &filter_block, read_options);
182
179
  if (!s.ok()) {
183
180
  IGNORE_STATUS_IF_ERROR(s);
184
181
  return true;
@@ -203,33 +200,31 @@ bool FullFilterBlockReader::MayMatch(
203
200
 
204
201
  void FullFilterBlockReader::KeysMayMatch(
205
202
  MultiGetRange* range, const bool no_io,
206
- BlockCacheLookupContext* lookup_context,
207
- Env::IOPriority rate_limiter_priority) {
203
+ BlockCacheLookupContext* lookup_context, const ReadOptions& read_options) {
208
204
  if (!whole_key_filtering()) {
209
205
  // Simply return. Don't skip any key - consider all keys as likely to be
210
206
  // present
211
207
  return;
212
208
  }
213
- MayMatch(range, no_io, nullptr, lookup_context, rate_limiter_priority);
209
+ MayMatch(range, no_io, nullptr, lookup_context, read_options);
214
210
  }
215
211
 
216
212
  void FullFilterBlockReader::PrefixesMayMatch(
217
213
  MultiGetRange* range, const SliceTransform* prefix_extractor,
218
214
  const bool no_io, BlockCacheLookupContext* lookup_context,
219
- Env::IOPriority rate_limiter_priority) {
220
- MayMatch(range, no_io, prefix_extractor, lookup_context,
221
- rate_limiter_priority);
215
+ const ReadOptions& read_options) {
216
+ MayMatch(range, no_io, prefix_extractor, lookup_context, read_options);
222
217
  }
223
218
 
224
- void FullFilterBlockReader::MayMatch(
225
- MultiGetRange* range, bool no_io, const SliceTransform* prefix_extractor,
226
- BlockCacheLookupContext* lookup_context,
227
- Env::IOPriority rate_limiter_priority) const {
219
+ void FullFilterBlockReader::MayMatch(MultiGetRange* range, bool no_io,
220
+ const SliceTransform* prefix_extractor,
221
+ BlockCacheLookupContext* lookup_context,
222
+ const ReadOptions& read_options) const {
228
223
  CachableEntry<ParsedFullFilterBlock> filter_block;
229
224
 
230
225
  const Status s =
231
226
  GetOrReadFilterBlock(no_io, range->begin()->get_context, lookup_context,
232
- &filter_block, rate_limiter_priority);
227
+ &filter_block, read_options);
233
228
  if (!s.ok()) {
234
229
  IGNORE_STATUS_IF_ERROR(s);
235
230
  return;
@@ -108,40 +108,40 @@ class FullFilterBlockReader
108
108
  bool KeyMayMatch(const Slice& key, const bool no_io,
109
109
  const Slice* const const_ikey_ptr, GetContext* get_context,
110
110
  BlockCacheLookupContext* lookup_context,
111
- Env::IOPriority rate_limiter_priority) override;
111
+ const ReadOptions& read_options) override;
112
112
 
113
113
  bool PrefixMayMatch(const Slice& prefix, const bool no_io,
114
114
  const Slice* const const_ikey_ptr,
115
115
  GetContext* get_context,
116
116
  BlockCacheLookupContext* lookup_context,
117
- Env::IOPriority rate_limiter_priority) override;
117
+ const ReadOptions& read_options) override;
118
118
 
119
119
  void KeysMayMatch(MultiGetRange* range, const bool no_io,
120
120
  BlockCacheLookupContext* lookup_context,
121
- Env::IOPriority rate_limiter_priority) override;
121
+ const ReadOptions& read_options) override;
122
122
  // Used in partitioned filter code
123
123
  void KeysMayMatch2(MultiGetRange* range,
124
124
  const SliceTransform* /*prefix_extractor*/,
125
125
  const bool no_io, BlockCacheLookupContext* lookup_context,
126
- Env::IOPriority rate_limiter_priority) {
127
- KeysMayMatch(range, no_io, lookup_context, rate_limiter_priority);
126
+ const ReadOptions& read_options) {
127
+ KeysMayMatch(range, no_io, lookup_context, read_options);
128
128
  }
129
129
 
130
130
  void PrefixesMayMatch(MultiGetRange* range,
131
131
  const SliceTransform* prefix_extractor,
132
132
  const bool no_io,
133
133
  BlockCacheLookupContext* lookup_context,
134
- Env::IOPriority rate_limiter_priority) override;
134
+ const ReadOptions& read_options) override;
135
135
  size_t ApproximateMemoryUsage() const override;
136
136
 
137
137
  private:
138
138
  bool MayMatch(const Slice& entry, bool no_io, GetContext* get_context,
139
139
  BlockCacheLookupContext* lookup_context,
140
- Env::IOPriority rate_limiter_priority) const;
140
+ const ReadOptions& read_options) const;
141
141
  void MayMatch(MultiGetRange* range, bool no_io,
142
142
  const SliceTransform* prefix_extractor,
143
143
  BlockCacheLookupContext* lookup_context,
144
- Env::IOPriority rate_limiter_priority) const;
144
+ const ReadOptions& read_options) const;
145
145
  };
146
146
 
147
147
  } // namespace ROCKSDB_NAMESPACE
@@ -117,7 +117,7 @@ TEST_F(PluginFullFilterBlockTest, PluginEmptyBuilder) {
117
117
  ASSERT_TRUE(reader.KeyMayMatch("foo",
118
118
  /*no_io=*/false, /*const_ikey_ptr=*/nullptr,
119
119
  /*get_context=*/nullptr,
120
- /*lookup_context=*/nullptr, Env::IO_TOTAL));
120
+ /*lookup_context=*/nullptr, ReadOptions()));
121
121
  }
122
122
 
123
123
  TEST_F(PluginFullFilterBlockTest, PluginSingleChunk) {
@@ -135,42 +135,34 @@ TEST_F(PluginFullFilterBlockTest, PluginSingleChunk) {
135
135
  nullptr /* cache */, nullptr /* cache_handle */, true /* own_value */);
136
136
 
137
137
  FullFilterBlockReader reader(table_.get(), std::move(block));
138
- Env::IOPriority rate_limiter_priority = Env::IO_TOTAL;
139
138
  ASSERT_TRUE(reader.KeyMayMatch("foo",
140
139
  /*no_io=*/false, /*const_ikey_ptr=*/nullptr,
141
140
  /*get_context=*/nullptr,
142
- /*lookup_context=*/nullptr,
143
- rate_limiter_priority));
141
+ /*lookup_context=*/nullptr, ReadOptions()));
144
142
  ASSERT_TRUE(reader.KeyMayMatch("bar",
145
143
  /*no_io=*/false, /*const_ikey_ptr=*/nullptr,
146
144
  /*get_context=*/nullptr,
147
- /*lookup_context=*/nullptr,
148
- rate_limiter_priority));
145
+ /*lookup_context=*/nullptr, ReadOptions()));
149
146
  ASSERT_TRUE(reader.KeyMayMatch("box",
150
147
  /*no_io=*/false, /*const_ikey_ptr=*/nullptr,
151
148
  /*get_context=*/nullptr,
152
- /*lookup_context=*/nullptr,
153
- rate_limiter_priority));
149
+ /*lookup_context=*/nullptr, ReadOptions()));
154
150
  ASSERT_TRUE(reader.KeyMayMatch("hello",
155
151
  /*no_io=*/false, /*const_ikey_ptr=*/nullptr,
156
152
  /*get_context=*/nullptr,
157
- /*lookup_context=*/nullptr,
158
- rate_limiter_priority));
153
+ /*lookup_context=*/nullptr, ReadOptions()));
159
154
  ASSERT_TRUE(reader.KeyMayMatch("foo",
160
155
  /*no_io=*/false, /*const_ikey_ptr=*/nullptr,
161
156
  /*get_context=*/nullptr,
162
- /*lookup_context=*/nullptr,
163
- rate_limiter_priority));
157
+ /*lookup_context=*/nullptr, ReadOptions()));
164
158
  ASSERT_TRUE(!reader.KeyMayMatch("missing",
165
159
  /*no_io=*/false, /*const_ikey_ptr=*/nullptr,
166
160
  /*get_context=*/nullptr,
167
- /*lookup_context=*/nullptr,
168
- rate_limiter_priority));
161
+ /*lookup_context=*/nullptr, ReadOptions()));
169
162
  ASSERT_TRUE(!reader.KeyMayMatch("other",
170
163
  /*no_io=*/false, /*const_ikey_ptr=*/nullptr,
171
164
  /*get_context=*/nullptr,
172
- /*lookup_context=*/nullptr,
173
- rate_limiter_priority));
165
+ /*lookup_context=*/nullptr, ReadOptions()));
174
166
  }
175
167
 
176
168
  class FullFilterBlockTest : public mock::MockBlockBasedTableTester,
@@ -195,7 +187,7 @@ TEST_F(FullFilterBlockTest, EmptyBuilder) {
195
187
  ASSERT_TRUE(reader.KeyMayMatch("foo",
196
188
  /*no_io=*/false, /*const_ikey_ptr=*/nullptr,
197
189
  /*get_context=*/nullptr,
198
- /*lookup_context=*/nullptr, Env::IO_TOTAL));
190
+ /*lookup_context=*/nullptr, ReadOptions()));
199
191
  }
200
192
 
201
193
  class CountUniqueFilterBitsBuilderWrapper : public FilterBitsBuilder {
@@ -292,42 +284,34 @@ TEST_F(FullFilterBlockTest, SingleChunk) {
292
284
  nullptr /* cache */, nullptr /* cache_handle */, true /* own_value */);
293
285
 
294
286
  FullFilterBlockReader reader(table_.get(), std::move(block));
295
- Env::IOPriority rate_limiter_priority = Env::IO_TOTAL;
296
287
  ASSERT_TRUE(reader.KeyMayMatch("foo",
297
288
  /*no_io=*/false, /*const_ikey_ptr=*/nullptr,
298
289
  /*get_context=*/nullptr,
299
- /*lookup_context=*/nullptr,
300
- rate_limiter_priority));
290
+ /*lookup_context=*/nullptr, ReadOptions()));
301
291
  ASSERT_TRUE(reader.KeyMayMatch("bar",
302
292
  /*no_io=*/false, /*const_ikey_ptr=*/nullptr,
303
293
  /*get_context=*/nullptr,
304
- /*lookup_context=*/nullptr,
305
- rate_limiter_priority));
294
+ /*lookup_context=*/nullptr, ReadOptions()));
306
295
  ASSERT_TRUE(reader.KeyMayMatch("box",
307
296
  /*no_io=*/false, /*const_ikey_ptr=*/nullptr,
308
297
  /*get_context=*/nullptr,
309
- /*lookup_context=*/nullptr,
310
- rate_limiter_priority));
298
+ /*lookup_context=*/nullptr, ReadOptions()));
311
299
  ASSERT_TRUE(reader.KeyMayMatch("hello",
312
300
  /*no_io=*/false, /*const_ikey_ptr=*/nullptr,
313
301
  /*get_context=*/nullptr,
314
- /*lookup_context=*/nullptr,
315
- rate_limiter_priority));
302
+ /*lookup_context=*/nullptr, ReadOptions()));
316
303
  ASSERT_TRUE(reader.KeyMayMatch("foo",
317
304
  /*no_io=*/false, /*const_ikey_ptr=*/nullptr,
318
305
  /*get_context=*/nullptr,
319
- /*lookup_context=*/nullptr,
320
- rate_limiter_priority));
306
+ /*lookup_context=*/nullptr, ReadOptions()));
321
307
  ASSERT_TRUE(!reader.KeyMayMatch("missing",
322
308
  /*no_io=*/false, /*const_ikey_ptr=*/nullptr,
323
309
  /*get_context=*/nullptr,
324
- /*lookup_context=*/nullptr,
325
- rate_limiter_priority));
310
+ /*lookup_context=*/nullptr, ReadOptions()));
326
311
  ASSERT_TRUE(!reader.KeyMayMatch("other",
327
312
  /*no_io=*/false, /*const_ikey_ptr=*/nullptr,
328
313
  /*get_context=*/nullptr,
329
- /*lookup_context=*/nullptr,
330
- rate_limiter_priority));
314
+ /*lookup_context=*/nullptr, ReadOptions()));
331
315
  }
332
316
 
333
317
  } // namespace ROCKSDB_NAMESPACE
@@ -74,17 +74,17 @@ Status HashIndexReader::Create(const BlockBasedTable* table,
74
74
  // Read contents for the blocks
75
75
  BlockContents prefixes_contents;
76
76
  BlockFetcher prefixes_block_fetcher(
77
- file, prefetch_buffer, footer, ReadOptions(), prefixes_handle,
78
- &prefixes_contents, ioptions, true /*decompress*/,
79
- true /*maybe_compressed*/, BlockType::kHashIndexPrefixes,
80
- UncompressionDict::GetEmptyDict(), cache_options, memory_allocator);
77
+ file, prefetch_buffer, footer, ro, prefixes_handle, &prefixes_contents,
78
+ ioptions, true /*decompress*/, true /*maybe_compressed*/,
79
+ BlockType::kHashIndexPrefixes, UncompressionDict::GetEmptyDict(),
80
+ cache_options, memory_allocator);
81
81
  s = prefixes_block_fetcher.ReadBlockContents();
82
82
  if (!s.ok()) {
83
83
  return s;
84
84
  }
85
85
  BlockContents prefixes_meta_contents;
86
86
  BlockFetcher prefixes_meta_block_fetcher(
87
- file, prefetch_buffer, footer, ReadOptions(), prefixes_meta_handle,
87
+ file, prefetch_buffer, footer, ro, prefixes_meta_handle,
88
88
  &prefixes_meta_contents, ioptions, true /*decompress*/,
89
89
  true /*maybe_compressed*/, BlockType::kHashIndexMetadata,
90
90
  UncompressionDict::GetEmptyDict(), cache_options, memory_allocator);
@@ -116,9 +116,8 @@ InternalIteratorBase<IndexValue>* HashIndexReader::NewIterator(
116
116
  const BlockBasedTable::Rep* rep = table()->get_rep();
117
117
  const bool no_io = (read_options.read_tier == kBlockCacheTier);
118
118
  CachableEntry<Block> index_block;
119
- const Status s =
120
- GetOrReadIndexBlock(no_io, read_options.rate_limiter_priority,
121
- get_context, lookup_context, &index_block);
119
+ const Status s = GetOrReadIndexBlock(no_io, get_context, lookup_context,
120
+ &index_block, read_options);
122
121
  if (!s.ok()) {
123
122
  if (iter != nullptr) {
124
123
  iter->Invalidate(s);
@@ -35,9 +35,9 @@ Status BlockBasedTable::IndexReaderCommon::ReadIndexBlock(
35
35
  }
36
36
 
37
37
  Status BlockBasedTable::IndexReaderCommon::GetOrReadIndexBlock(
38
- bool no_io, Env::IOPriority rate_limiter_priority, GetContext* get_context,
39
- BlockCacheLookupContext* lookup_context,
40
- CachableEntry<Block>* index_block) const {
38
+ bool no_io, GetContext* get_context,
39
+ BlockCacheLookupContext* lookup_context, CachableEntry<Block>* index_block,
40
+ const ReadOptions& ro) const {
41
41
  assert(index_block != nullptr);
42
42
 
43
43
  if (!index_block_.IsEmpty()) {
@@ -45,8 +45,7 @@ Status BlockBasedTable::IndexReaderCommon::GetOrReadIndexBlock(
45
45
  return Status::OK();
46
46
  }
47
47
 
48
- ReadOptions read_options;
49
- read_options.rate_limiter_priority = rate_limiter_priority;
48
+ ReadOptions read_options = ro;
50
49
  if (no_io) {
51
50
  read_options.read_tier = kBlockCacheTier;
52
51
  }
@@ -65,10 +65,10 @@ class BlockBasedTable::IndexReaderCommon : public BlockBasedTable::IndexReader {
65
65
  return table_->get_rep()->table_options.cache_index_and_filter_blocks;
66
66
  }
67
67
 
68
- Status GetOrReadIndexBlock(bool no_io, Env::IOPriority rate_limiter_priority,
69
- GetContext* get_context,
68
+ Status GetOrReadIndexBlock(bool no_io, GetContext* get_context,
70
69
  BlockCacheLookupContext* lookup_context,
71
- CachableEntry<Block>* index_block) const;
70
+ CachableEntry<Block>* index_block,
71
+ const ReadOptions& read_options) const;
72
72
 
73
73
  size_t ApproximateIndexBlockMemoryUsage() const {
74
74
  assert(!index_block_.GetOwnValue() || index_block_.GetValue() != nullptr);