@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
@@ -213,13 +213,14 @@ class PosixEnv : public CompositeEnv {
213
213
  const char* Name() const override { return kClassName(); }
214
214
  const char* NickName() const override { return kDefaultName(); }
215
215
 
216
- ~PosixEnv() override {
217
- if (this == Env::Default()) {
218
- for (const auto tid : threads_to_join_) {
216
+ struct JoinThreadsOnExit {
217
+ explicit JoinThreadsOnExit(PosixEnv& _deflt) : deflt(_deflt) {}
218
+ ~JoinThreadsOnExit() {
219
+ for (const auto tid : deflt.threads_to_join_) {
219
220
  pthread_join(tid, nullptr);
220
221
  }
221
222
  for (int pool_id = 0; pool_id < Env::Priority::TOTAL; ++pool_id) {
222
- thread_pools_[pool_id].JoinAllThreads();
223
+ deflt.thread_pools_[pool_id].JoinAllThreads();
223
224
  }
224
225
  // Do not delete the thread_status_updater_ in order to avoid the
225
226
  // free after use when Env::Default() is destructed while some other
@@ -227,7 +228,8 @@ class PosixEnv : public CompositeEnv {
227
228
  // PosixEnv instances use the same thread_status_updater_, so never
228
229
  // explicitly delete it.
229
230
  }
230
- }
231
+ PosixEnv& deflt;
232
+ };
231
233
 
232
234
  void SetFD_CLOEXEC(int fd, const EnvOptions* options) {
233
235
  if ((options == nullptr || options->set_fd_cloexec) && fd > 0) {
@@ -501,9 +503,11 @@ Env* Env::Default() {
501
503
  ThreadLocalPtr::InitSingletons();
502
504
  CompressionContextCache::InitSingleton();
503
505
  INIT_SYNC_POINT_SINGLETONS();
504
- // ~PosixEnv must be called on exit
505
- //**TODO: Can we make this a STATIC_AVOID_DESTRUCTION?
506
- static PosixEnv default_env;
506
+ // Avoid problems with accessing most members of Env::Default() during
507
+ // static destruction.
508
+ STATIC_AVOID_DESTRUCTION(PosixEnv, default_env);
509
+ // This destructor must be called on exit
510
+ static PosixEnv::JoinThreadsOnExit thread_joiner(default_env);
507
511
  return &default_env;
508
512
  }
509
513
 
@@ -3134,6 +3134,20 @@ TEST_F(EnvTest, SemiStructuredUniqueIdGenTest) {
3134
3134
  t.Run();
3135
3135
  }
3136
3136
 
3137
+ TEST_F(EnvTest, SemiStructuredUniqueIdGenTestSmaller) {
3138
+ // For small generated types, will cycle through all the possible values.
3139
+ SemiStructuredUniqueIdGen gen;
3140
+ std::vector<bool> hit(256);
3141
+ for (int i = 0; i < 256; ++i) {
3142
+ auto val = gen.GenerateNext<uint8_t>();
3143
+ ASSERT_FALSE(hit[val]);
3144
+ hit[val] = true;
3145
+ }
3146
+ for (int i = 0; i < 256; ++i) {
3147
+ ASSERT_TRUE(hit[i]);
3148
+ }
3149
+ }
3150
+
3137
3151
  TEST_F(EnvTest, FailureToCreateLockFile) {
3138
3152
  auto env = Env::Default();
3139
3153
  auto fs = env->GetFileSystem();
@@ -3537,6 +3551,23 @@ TEST_F(TestAsyncRead, ReadAsync) {
3537
3551
  }
3538
3552
  }
3539
3553
  }
3554
+
3555
+ struct StaticDestructionTester {
3556
+ bool activated = false;
3557
+ ~StaticDestructionTester() {
3558
+ if (activated && !kMustFreeHeapAllocations) {
3559
+ // Make sure we can still call some things on default Env.
3560
+ std::string hostname;
3561
+ Env::Default()->GetHostNameString(&hostname);
3562
+ }
3563
+ }
3564
+ } static_destruction_tester;
3565
+
3566
+ TEST(EnvTestMisc, StaticDestruction) {
3567
+ // Check for any crashes during static destruction.
3568
+ static_destruction_tester.activated = true;
3569
+ }
3570
+
3540
3571
  } // namespace ROCKSDB_NAMESPACE
3541
3572
 
3542
3573
  int main(int argc, char** argv) {
@@ -21,7 +21,7 @@
21
21
  #include "util/cast_util.h"
22
22
  #include "util/hash.h"
23
23
  #include "util/random.h"
24
- #include "util/rate_limiter.h"
24
+ #include "util/rate_limiter_impl.h"
25
25
  #include "util/string_util.h"
26
26
 
27
27
  namespace ROCKSDB_NAMESPACE {
@@ -14,6 +14,7 @@
14
14
 
15
15
  #include <atomic>
16
16
  #include <cstdint>
17
+ #include <type_traits>
17
18
 
18
19
  #include "rocksdb/rocksdb_namespace.h"
19
20
 
@@ -61,6 +62,19 @@ class SemiStructuredUniqueIdGen {
61
62
  // to the next (thread safe).
62
63
  void GenerateNext(uint64_t* upper, uint64_t* lower);
63
64
 
65
+ // For generating smaller values. Will cycle through all the possibilities
66
+ // before repeating.
67
+ template <typename T>
68
+ T GenerateNext() {
69
+ static_assert(sizeof(T) <= sizeof(uint64_t));
70
+ static_assert(std::is_integral_v<T>);
71
+ uint64_t ignore, val;
72
+ GenerateNext(&ignore, &val);
73
+ return static_cast<T>(val);
74
+ }
75
+
76
+ uint64_t GetBaseUpper() const { return base_upper_; }
77
+
64
78
  private:
65
79
  uint64_t base_upper_;
66
80
  uint64_t base_lower_;
@@ -18,7 +18,7 @@
18
18
  #include "port/port.h"
19
19
  #include "test_util/sync_point.h"
20
20
  #include "util/random.h"
21
- #include "util/rate_limiter.h"
21
+ #include "util/rate_limiter_impl.h"
22
22
 
23
23
  namespace ROCKSDB_NAMESPACE {
24
24
 
@@ -15,7 +15,7 @@
15
15
  #include <string>
16
16
 
17
17
  #include "file/readahead_file_info.h"
18
- #include "monitoring/statistics.h"
18
+ #include "monitoring/statistics_impl.h"
19
19
  #include "port/port.h"
20
20
  #include "rocksdb/env.h"
21
21
  #include "rocksdb/file_system.h"
@@ -180,6 +180,8 @@ class FilePrefetchBuffer {
180
180
  RecordInHistogram(stats_, PREFETCHED_BYTES_DISCARDED, bytes_discarded);
181
181
  }
182
182
 
183
+ bool Enabled() const { return enable_; }
184
+
183
185
  // Load data into the buffer from a file.
184
186
  // reader : the file reader.
185
187
  // offset : the file offset to start reading from.
@@ -232,6 +234,8 @@ class FilePrefetchBuffer {
232
234
  // tracked if track_min_offset = true.
233
235
  size_t min_offset_read() const { return min_offset_read_; }
234
236
 
237
+ size_t GetPrefetchOffset() const { return bufs_[curr_].offset_; }
238
+
235
239
  // Called in case of implicit auto prefetching.
236
240
  void UpdateReadPattern(const uint64_t& offset, const size_t& len,
237
241
  bool decrease_readaheadsize) {
@@ -185,9 +185,9 @@ IOStatus GenerateOneFileChecksum(
185
185
  if (!io_s.ok()) {
186
186
  return io_s;
187
187
  }
188
- reader.reset(new RandomAccessFileReader(std::move(r_file), file_path,
189
- nullptr /*Env*/, io_tracer, nullptr,
190
- 0, nullptr, rate_limiter));
188
+ reader.reset(new RandomAccessFileReader(
189
+ std::move(r_file), file_path, nullptr /*Env*/, io_tracer, nullptr,
190
+ Histograms::HISTOGRAM_ENUM_MAX, nullptr, rate_limiter));
191
191
  }
192
192
 
193
193
  // Found that 256 KB readahead size provides the best performance, based on
@@ -80,6 +80,8 @@ inline IOStatus PrepareIOFromReadOptions(const ReadOptions& ro,
80
80
  }
81
81
 
82
82
  opts.rate_limiter_priority = ro.rate_limiter_priority;
83
+ opts.io_activity = ro.io_activity;
84
+
83
85
  return IOStatus::OK();
84
86
  }
85
87
 
@@ -220,6 +220,7 @@ TEST_P(PrefetchTest, Basic) {
220
220
  for (iter->SeekToFirst(); iter->Valid(); iter->Next()) {
221
221
  num_keys++;
222
222
  }
223
+ (void)num_keys;
223
224
  }
224
225
 
225
226
  // Make sure prefetch is called only if file system support prefetch.
@@ -235,6 +236,93 @@ TEST_P(PrefetchTest, Basic) {
235
236
  Close();
236
237
  }
237
238
 
239
+ TEST_P(PrefetchTest, BlockBasedTableTailPrefetch) {
240
+ const bool support_prefetch =
241
+ std::get<0>(GetParam()) &&
242
+ test::IsPrefetchSupported(env_->GetFileSystem(), dbname_);
243
+ // Second param is if directIO is enabled or not
244
+ const bool use_direct_io = std::get<1>(GetParam());
245
+ const bool use_file_prefetch_buffer = !support_prefetch || use_direct_io;
246
+
247
+ std::shared_ptr<MockFS> fs =
248
+ std::make_shared<MockFS>(env_->GetFileSystem(), support_prefetch);
249
+ std::unique_ptr<Env> env(new CompositeEnvWrapper(env_, fs));
250
+
251
+ Options options;
252
+ SetGenericOptions(env.get(), use_direct_io, options);
253
+ options.statistics = CreateDBStatistics();
254
+
255
+ BlockBasedTableOptions bbto;
256
+ bbto.index_type = BlockBasedTableOptions::kTwoLevelIndexSearch;
257
+ bbto.partition_filters = true;
258
+ bbto.filter_policy.reset(NewBloomFilterPolicy(10, false));
259
+ options.table_factory.reset(NewBlockBasedTableFactory(bbto));
260
+
261
+ Status s = TryReopen(options);
262
+ if (use_direct_io && (s.IsNotSupported() || s.IsInvalidArgument())) {
263
+ // If direct IO is not supported, skip the test
264
+ ROCKSDB_GTEST_BYPASS("Direct IO is not supported");
265
+ return;
266
+ } else {
267
+ ASSERT_OK(s);
268
+ }
269
+
270
+ ASSERT_OK(Put("k1", "v1"));
271
+
272
+ HistogramData pre_flush_file_read;
273
+ options.statistics->histogramData(FILE_READ_FLUSH_MICROS,
274
+ &pre_flush_file_read);
275
+ ASSERT_OK(Flush());
276
+ HistogramData post_flush_file_read;
277
+ options.statistics->histogramData(FILE_READ_FLUSH_MICROS,
278
+ &post_flush_file_read);
279
+ if (use_file_prefetch_buffer) {
280
+ // `PartitionedFilterBlockReader/PartitionIndexReader::CacheDependencies()`
281
+ // should read from the prefetched tail in file prefetch buffer instead of
282
+ // initiating extra SST reads. Therefore `BlockBasedTable::PrefetchTail()`
283
+ // should be the only SST read in table verification during flush.
284
+ ASSERT_EQ(post_flush_file_read.count - pre_flush_file_read.count, 1);
285
+ } else {
286
+ // Without the prefetched tail in file prefetch buffer,
287
+ // `PartitionedFilterBlockReader/PartitionIndexReader::CacheDependencies()`
288
+ // will initiate extra SST reads
289
+ ASSERT_GT(post_flush_file_read.count - pre_flush_file_read.count, 1);
290
+ }
291
+ ASSERT_OK(Put("k1", "v2"));
292
+ ASSERT_OK(Put("k2", "v2"));
293
+ ASSERT_OK(Flush());
294
+
295
+ CompactRangeOptions cro;
296
+ HistogramData pre_compaction_file_read;
297
+ options.statistics->histogramData(FILE_READ_COMPACTION_MICROS,
298
+ &pre_compaction_file_read);
299
+ ASSERT_OK(db_->CompactRange(cro, nullptr, nullptr));
300
+ HistogramData post_compaction_file_read;
301
+ options.statistics->histogramData(FILE_READ_COMPACTION_MICROS,
302
+ &post_compaction_file_read);
303
+ if (use_file_prefetch_buffer) {
304
+ // `PartitionedFilterBlockReader/PartitionIndexReader::CacheDependencies()`
305
+ // should read from the prefetched tail in file prefetch buffer instead of
306
+ // initiating extra SST reads.
307
+ //
308
+ // Therefore the 3 reads are
309
+ // (1) `ProcessKeyValueCompaction()` of input file 1
310
+ // (2) `ProcessKeyValueCompaction()` of input file 2
311
+ // (3) `BlockBasedTable::PrefetchTail()` of output file during table
312
+ // verification in compaction
313
+ ASSERT_EQ(post_compaction_file_read.count - pre_compaction_file_read.count,
314
+ 3);
315
+ } else {
316
+ // Without the prefetched tail in file prefetch buffer,
317
+ // `PartitionedFilterBlockReader/PartitionIndexReader::CacheDependencies()`
318
+ // as well as reading other parts of the tail (e.g, footer, table
319
+ // properties..) will initiate extra SST reads
320
+ ASSERT_GT(post_compaction_file_read.count - pre_compaction_file_read.count,
321
+ 3);
322
+ }
323
+ Close();
324
+ }
325
+
238
326
  // This test verifies BlockBasedTableOptions.max_auto_readahead_size is
239
327
  // configured dynamically.
240
328
  TEST_P(PrefetchTest, ConfigureAutoMaxReadaheadSize) {
@@ -1803,6 +1891,7 @@ TEST_P(PrefetchTest, MultipleSeekWithPosixFS) {
1803
1891
  }
1804
1892
  MoveFilesToLevel(2);
1805
1893
  }
1894
+ (void)total_keys;
1806
1895
 
1807
1896
  int num_keys_first_batch = 0;
1808
1897
  int num_keys_second_batch = 0;
@@ -19,10 +19,15 @@
19
19
  #include "table/format.h"
20
20
  #include "test_util/sync_point.h"
21
21
  #include "util/random.h"
22
- #include "util/rate_limiter.h"
22
+ #include "util/rate_limiter_impl.h"
23
23
 
24
24
  namespace ROCKSDB_NAMESPACE {
25
-
25
+ const std::array<Histograms, std::size_t(Env::IOActivity::kUnknown)>
26
+ kReadHistograms{{
27
+ FILE_READ_FLUSH_MICROS,
28
+ FILE_READ_COMPACTION_MICROS,
29
+ FILE_READ_DB_OPEN_MICROS,
30
+ }};
26
31
  inline void RecordIOStats(Statistics* stats, Temperature file_temperature,
27
32
  bool is_last_level, size_t size) {
28
33
  IOSTATS_ADD(bytes_read, size);
@@ -94,6 +99,9 @@ IOStatus RandomAccessFileReader::Read(
94
99
  uint64_t elapsed = 0;
95
100
  {
96
101
  StopWatch sw(clock_, stats_, hist_type_,
102
+ (opts.io_activity != Env::IOActivity::kUnknown)
103
+ ? kReadHistograms[(std::size_t)(opts.io_activity)]
104
+ : Histograms::HISTOGRAM_ENUM_MAX,
97
105
  (stats_ != nullptr) ? &elapsed : nullptr, true /*overwrite*/,
98
106
  true /*delay_enabled*/);
99
107
  auto prev_perf_level = GetPerfLevel();
@@ -288,6 +296,9 @@ IOStatus RandomAccessFileReader::MultiRead(
288
296
  uint64_t elapsed = 0;
289
297
  {
290
298
  StopWatch sw(clock_, stats_, hist_type_,
299
+ (opts.io_activity != Env::IOActivity::kUnknown)
300
+ ? kReadHistograms[(std::size_t)(opts.io_activity)]
301
+ : Histograms::HISTOGRAM_ENUM_MAX,
291
302
  (stats_ != nullptr) ? &elapsed : nullptr, true /*overwrite*/,
292
303
  true /*delay_enabled*/);
293
304
  auto prev_perf_level = GetPerfLevel();
@@ -425,7 +436,7 @@ IOStatus RandomAccessFileReader::MultiRead(
425
436
  }
426
437
 
427
438
  IOStatus RandomAccessFileReader::PrepareIOOptions(const ReadOptions& ro,
428
- IOOptions& opts) {
439
+ IOOptions& opts) const {
429
440
  if (clock_ != nullptr) {
430
441
  return PrepareIOFromReadOptions(ro, clock_, opts);
431
442
  } else {
@@ -476,13 +487,17 @@ IOStatus RandomAccessFileReader::ReadAsync(
476
487
 
477
488
  assert(read_async_info->buf_.CurrentSize() == 0);
478
489
 
479
- StopWatch sw(clock_, nullptr /*stats*/, 0 /*hist_type*/, &elapsed,
480
- true /*overwrite*/, true /*delay_enabled*/);
490
+ StopWatch sw(clock_, nullptr /*stats*/,
491
+ Histograms::HISTOGRAM_ENUM_MAX /*hist_type*/,
492
+ Histograms::HISTOGRAM_ENUM_MAX, &elapsed, true /*overwrite*/,
493
+ true /*delay_enabled*/);
481
494
  s = file_->ReadAsync(aligned_req, opts, read_async_callback,
482
495
  read_async_info, io_handle, del_fn, nullptr /*dbg*/);
483
496
  } else {
484
- StopWatch sw(clock_, nullptr /*stats*/, 0 /*hist_type*/, &elapsed,
485
- true /*overwrite*/, true /*delay_enabled*/);
497
+ StopWatch sw(clock_, nullptr /*stats*/,
498
+ Histograms::HISTOGRAM_ENUM_MAX /*hist_type*/,
499
+ Histograms::HISTOGRAM_ENUM_MAX, &elapsed, true /*overwrite*/,
500
+ true /*delay_enabled*/);
486
501
  s = file_->ReadAsync(req, opts, read_async_callback, read_async_info,
487
502
  io_handle, del_fn, nullptr /*dbg*/);
488
503
  }
@@ -122,7 +122,8 @@ class RandomAccessFileReader {
122
122
  std::unique_ptr<FSRandomAccessFile>&& raf, const std::string& _file_name,
123
123
  SystemClock* clock = nullptr,
124
124
  const std::shared_ptr<IOTracer>& io_tracer = nullptr,
125
- Statistics* stats = nullptr, uint32_t hist_type = 0,
125
+ Statistics* stats = nullptr,
126
+ uint32_t hist_type = Histograms::HISTOGRAM_ENUM_MAX,
126
127
  HistogramImpl* file_read_hist = nullptr,
127
128
  RateLimiter* rate_limiter = nullptr,
128
129
  const std::vector<std::shared_ptr<EventListener>>& listeners = {},
@@ -197,7 +198,7 @@ class RandomAccessFileReader {
197
198
 
198
199
  bool use_direct_io() const { return file_->use_direct_io(); }
199
200
 
200
- IOStatus PrepareIOOptions(const ReadOptions& ro, IOOptions& opts);
201
+ IOStatus PrepareIOOptions(const ReadOptions& ro, IOOptions& opts) const;
201
202
 
202
203
  IOStatus ReadAsync(FSReadRequest& req, const IOOptions& opts,
203
204
  std::function<void(const FSReadRequest&, void*)> cb,
@@ -15,7 +15,7 @@
15
15
  #include "file/read_write_util.h"
16
16
  #include "rocksdb/file_system.h"
17
17
  #include "util/aligned_buffer.h"
18
- #include "util/rate_limiter.h"
18
+ #include "util/rate_limiter_impl.h"
19
19
 
20
20
  namespace ROCKSDB_NAMESPACE {
21
21
  namespace {
@@ -19,7 +19,7 @@
19
19
  #include "test_util/sync_point.h"
20
20
  #include "util/aligned_buffer.h"
21
21
  #include "util/random.h"
22
- #include "util/rate_limiter.h"
22
+ #include "util/rate_limiter_impl.h"
23
23
 
24
24
  namespace ROCKSDB_NAMESPACE {
25
25
  IOStatus SequentialFileReader::Create(
@@ -21,7 +21,7 @@
21
21
  #include "test_util/sync_point.h"
22
22
  #include "util/crc32c.h"
23
23
  #include "util/random.h"
24
- #include "util/rate_limiter.h"
24
+ #include "util/rate_limiter_impl.h"
25
25
 
26
26
  namespace ROCKSDB_NAMESPACE {
27
27
  IOStatus WritableFileWriter::Create(const std::shared_ptr<FileSystem>& fs,
@@ -404,6 +404,9 @@ class Cache {
404
404
 
405
405
  MemoryAllocator* memory_allocator() const { return memory_allocator_.get(); }
406
406
 
407
+ // See ShardedCacheOptions::hash_seed
408
+ virtual uint32_t GetHashSeed() const { return 0; }
409
+
407
410
  // EXPERIMENTAL
408
411
  // The following APIs are experimental and might change in the future.
409
412