@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
@@ -529,7 +529,7 @@ class MemTable {
529
529
 
530
530
  // Returns Corruption status if verification fails.
531
531
  static Status VerifyEntryChecksum(const char* entry,
532
- size_t protection_bytes_per_key,
532
+ uint32_t protection_bytes_per_key,
533
533
  bool allow_data_in_errors = false);
534
534
 
535
535
  private:
@@ -467,6 +467,8 @@ Status MemTableList::TryInstallMemtableFlushResults(
467
467
  ThreadStatus::STAGE_MEMTABLE_INSTALL_FLUSH_RESULTS);
468
468
  mu->AssertHeld();
469
469
 
470
+ const ReadOptions read_options(Env::IOActivity::kFlush);
471
+
470
472
  // Flush was successful
471
473
  // Record the status on the memtable object. Either this call or a call by a
472
474
  // concurrent flush thread will read the status and write it to manifest.
@@ -578,8 +580,8 @@ Status MemTableList::TryInstallMemtableFlushResults(
578
580
  };
579
581
  if (write_edits) {
580
582
  // this can release and reacquire the mutex.
581
- s = vset->LogAndApply(cfd, mutable_cf_options, edit_list, mu,
582
- db_directory, /*new_descriptor_log=*/false,
583
+ s = vset->LogAndApply(cfd, mutable_cf_options, read_options, edit_list,
584
+ mu, db_directory, /*new_descriptor_log=*/false,
583
585
  /*column_family_options=*/nullptr,
584
586
  manifest_write_cb);
585
587
  } else {
@@ -798,6 +800,8 @@ Status InstallMemtableAtomicFlushResults(
798
800
  ThreadStatus::STAGE_MEMTABLE_INSTALL_FLUSH_RESULTS);
799
801
  mu->AssertHeld();
800
802
 
803
+ const ReadOptions read_options(Env::IOActivity::kFlush);
804
+
801
805
  size_t num = mems_list.size();
802
806
  assert(cfds.size() == num);
803
807
  if (imm_lists != nullptr) {
@@ -875,8 +879,8 @@ Status InstallMemtableAtomicFlushResults(
875
879
  }
876
880
 
877
881
  // this can release and reacquire the mutex.
878
- s = vset->LogAndApply(cfds, mutable_cf_options_list, edit_lists, mu,
879
- db_directory);
882
+ s = vset->LogAndApply(cfds, mutable_cf_options_list, read_options, edit_lists,
883
+ mu, db_directory);
880
884
 
881
885
  for (size_t k = 0; k != cfds.size(); ++k) {
882
886
  auto* imm = (imm_lists == nullptr) ? cfds[k]->imm() : imm_lists->at(k);
@@ -15,7 +15,7 @@
15
15
  #include "db/wide/wide_column_serialization.h"
16
16
  #include "logging/logging.h"
17
17
  #include "monitoring/perf_context_imp.h"
18
- #include "monitoring/statistics.h"
18
+ #include "monitoring/statistics_impl.h"
19
19
  #include "port/likely.h"
20
20
  #include "rocksdb/comparator.h"
21
21
  #include "rocksdb/db.h"
@@ -187,7 +187,8 @@ TEST_F(PerfContextTest, StopWatchOverhead) {
187
187
  uint64_t elapsed = 0;
188
188
  std::vector<uint64_t> timings(kTotalIterations);
189
189
 
190
- StopWatch timer(SystemClock::Default().get(), nullptr, 0, &elapsed);
190
+ StopWatch timer(SystemClock::Default().get(), nullptr, 0,
191
+ Histograms::HISTOGRAM_ENUM_MAX, &elapsed);
191
192
  for (auto& timing : timings) {
192
193
  timing = elapsed;
193
194
  }
@@ -329,21 +329,23 @@ class TestPlainTableFactory : public PlainTableFactory {
329
329
  std::unique_ptr<TableReader>* table,
330
330
  bool /*prefetch_index_and_filter_in_cache*/) const override {
331
331
  std::unique_ptr<TableProperties> props;
332
+ const ReadOptions read_options;
332
333
  auto s = ReadTableProperties(file.get(), file_size, kPlainTableMagicNumber,
333
- table_reader_options.ioptions, &props);
334
+ table_reader_options.ioptions, read_options,
335
+ &props);
334
336
  EXPECT_TRUE(s.ok());
335
337
 
336
338
  if (store_index_in_file_) {
337
339
  BlockHandle bloom_block_handle;
338
340
  s = FindMetaBlockInFile(file.get(), file_size, kPlainTableMagicNumber,
339
- table_reader_options.ioptions,
341
+ table_reader_options.ioptions, read_options,
340
342
  BloomBlockBuilder::kBloomBlock,
341
343
  &bloom_block_handle);
342
344
  EXPECT_TRUE(s.ok());
343
345
 
344
346
  BlockHandle index_block_handle;
345
347
  s = FindMetaBlockInFile(file.get(), file_size, kPlainTableMagicNumber,
346
- table_reader_options.ioptions,
348
+ table_reader_options.ioptions, read_options,
347
349
  PlainTableIndexBuilder::kPlainTableIndexBlock,
348
350
  &index_block_handle);
349
351
  EXPECT_TRUE(s.ok());
@@ -1344,4 +1346,3 @@ int main(int argc, char** argv) {
1344
1346
  ::testing::InitGoogleTest(&argc, argv);
1345
1347
  return RUN_ALL_TESTS();
1346
1348
  }
1347
-
@@ -145,6 +145,8 @@ class Repairer {
145
145
  // Adds a column family to the VersionSet with cf_options_ and updates
146
146
  // manifest.
147
147
  Status AddColumnFamily(const std::string& cf_name, uint32_t cf_id) {
148
+ // TODO: plumb Env::IOActivity;
149
+ const ReadOptions read_options;
148
150
  const auto* cf_opts = GetColumnFamilyOptions(cf_name);
149
151
  if (cf_opts == nullptr) {
150
152
  return Status::Corruption("Encountered unknown column family with name=" +
@@ -166,8 +168,9 @@ class Repairer {
166
168
  Status status = env_->GetFileSystem()->NewDirectory(dbname_, IOOptions(),
167
169
  &db_dir, nullptr);
168
170
  if (status.ok()) {
169
- status = vset_.LogAndApply(cfd, mut_cf_opts, &edit, &mutex_, db_dir.get(),
170
- false /* new_descriptor_log */, cf_opts);
171
+ status = vset_.LogAndApply(cfd, mut_cf_opts, read_options, &edit, &mutex_,
172
+ db_dir.get(), false /* new_descriptor_log */,
173
+ cf_opts);
171
174
  }
172
175
  mutex_.Unlock();
173
176
  return status;
@@ -357,6 +360,9 @@ class Repairer {
357
360
  }
358
361
  };
359
362
 
363
+ // TODO: plumb Env::IOActivity
364
+ const ReadOptions read_options;
365
+
360
366
  // Open the log file
361
367
  std::string logname = LogFileName(wal_dir, log);
362
368
  const auto& fs = env_->GetFileSystem();
@@ -422,6 +428,7 @@ class Repairer {
422
428
 
423
429
  FileMetaData meta;
424
430
  meta.fd = FileDescriptor(next_file_number_++, 0, 0);
431
+ // TODO: plumb Env::IOActivity
425
432
  ReadOptions ro;
426
433
  ro.total_order_seek = true;
427
434
  Arena arena;
@@ -456,7 +463,7 @@ class Repairer {
456
463
  SeqnoToTimeMapping empty_seqno_time_mapping;
457
464
  status = BuildTable(
458
465
  dbname_, /* versions */ nullptr, immutable_db_options_, tboptions,
459
- file_options_, table_cache_.get(), iter.get(),
466
+ file_options_, read_options, table_cache_.get(), iter.get(),
460
467
  std::move(range_del_iters), &meta, nullptr /* blob_file_additions */,
461
468
  {}, kMaxSequenceNumber, kMaxSequenceNumber, snapshot_checker,
462
469
  false /* paranoid_file_checks*/, nullptr /* internal_stats */, &io_s,
@@ -509,8 +516,11 @@ class Repairer {
509
516
  file_size);
510
517
  std::shared_ptr<const TableProperties> props;
511
518
  if (status.ok()) {
512
- status = table_cache_->GetTableProperties(file_options_, icmp_, t->meta,
513
- &props);
519
+ // TODO: plumb Env::IOActivity
520
+ const ReadOptions read_options;
521
+ status = table_cache_->GetTableProperties(
522
+ file_options_, read_options, icmp_, t->meta, &props,
523
+ 0 /* block_protection_bytes_per_key */);
514
524
  }
515
525
  if (status.ok()) {
516
526
  auto s =
@@ -541,6 +551,17 @@ class Repairer {
541
551
  }
542
552
  t->meta.oldest_ancester_time = props->creation_time;
543
553
  }
554
+ if (status.ok()) {
555
+ uint64_t tail_size = 0;
556
+ bool contain_no_data_blocks =
557
+ props->num_entries > 0 &&
558
+ (props->num_entries == props->num_range_deletions);
559
+ if (props->tail_start_offset > 0 || contain_no_data_blocks) {
560
+ assert(props->tail_start_offset <= file_size);
561
+ tail_size = file_size - props->tail_start_offset;
562
+ }
563
+ t->meta.tail_size = tail_size;
564
+ }
544
565
  ColumnFamilyData* cfd = nullptr;
545
566
  if (status.ok()) {
546
567
  cfd = vset_.GetColumnFamilySet()->GetColumnFamily(t->column_family_id);
@@ -556,6 +577,7 @@ class Repairer {
556
577
  }
557
578
  }
558
579
  if (status.ok()) {
580
+ // TODO: plumb Env::IOActivity
559
581
  ReadOptions ropts;
560
582
  ropts.total_order_seek = true;
561
583
  InternalIterator* iter = table_cache_->NewIterator(
@@ -567,7 +589,8 @@ class Repairer {
567
589
  /*level=*/-1, /*max_file_size_for_l0_meta_pin=*/0,
568
590
  /*smallest_compaction_key=*/nullptr,
569
591
  /*largest_compaction_key=*/nullptr,
570
- /*allow_unprepared_value=*/false);
592
+ /*allow_unprepared_value=*/false,
593
+ cfd->GetLatestMutableCFOptions()->block_protection_bytes_per_key);
571
594
  ParsedInternalKey parsed;
572
595
  for (iter->SeekToFirst(); iter->Valid(); iter->Next()) {
573
596
  Slice key = iter->key();
@@ -603,10 +626,13 @@ class Repairer {
603
626
  // an SST file is a full sorted run. This probably needs the extra logic
604
627
  // from compaction_job.cc around call to UpdateBoundariesForRange (to
605
628
  // handle range tombstones extendingg beyond range of other entries).
629
+ // TODO: plumb Env::IOActivity
606
630
  ReadOptions ropts;
607
631
  std::unique_ptr<FragmentedRangeTombstoneIterator> r_iter;
608
632
  status = table_cache_->GetRangeTombstoneIterator(
609
- ropts, cfd->internal_comparator(), t->meta, &r_iter);
633
+ ropts, cfd->internal_comparator(), t->meta,
634
+ cfd->GetLatestMutableCFOptions()->block_protection_bytes_per_key,
635
+ &r_iter);
610
636
 
611
637
  if (r_iter) {
612
638
  r_iter->SeekToFirst();
@@ -625,6 +651,8 @@ class Repairer {
625
651
  }
626
652
 
627
653
  Status AddTables() {
654
+ // TODO: plumb Env::IOActivity;
655
+ const ReadOptions read_options;
628
656
  std::unordered_map<uint32_t, std::vector<const TableInfo*>> cf_id_to_tables;
629
657
  SequenceNumber max_sequence = 0;
630
658
  for (size_t i = 0; i < tables_.size(); i++) {
@@ -665,7 +693,7 @@ class Repairer {
665
693
  table->meta.oldest_ancester_time, table->meta.file_creation_time,
666
694
  table->meta.epoch_number, table->meta.file_checksum,
667
695
  table->meta.file_checksum_func_name, table->meta.unique_id,
668
- table->meta.compensated_range_deletion_size);
696
+ table->meta.compensated_range_deletion_size, table->meta.tail_size);
669
697
  }
670
698
  s = dummy_version_builder.Apply(&dummy_edit);
671
699
  if (s.ok()) {
@@ -706,8 +734,8 @@ class Repairer {
706
734
  s = env_->GetFileSystem()->NewDirectory(dbname_, IOOptions(), &db_dir,
707
735
  nullptr);
708
736
  if (s.ok()) {
709
- s = vset_.LogAndApply(cfd, *cfd->GetLatestMutableCFOptions(), &edit,
710
- &mutex_, db_dir.get(),
737
+ s = vset_.LogAndApply(cfd, *cfd->GetLatestMutableCFOptions(),
738
+ read_options, &edit, &mutex_, db_dir.get(),
711
739
  false /* new_descriptor_log */);
712
740
  }
713
741
  mutex_.Unlock();
@@ -809,4 +837,3 @@ Status RepairDB(const std::string& dbname, const Options& options) {
809
837
  }
810
838
 
811
839
  } // namespace ROCKSDB_NAMESPACE
812
-
@@ -93,7 +93,7 @@ TEST_F(SeqnoTimeTest, TemperatureBasicUniversal) {
93
93
  }
94
94
  ASSERT_OK(Flush());
95
95
  }
96
- ASSERT_OK(dbfull()->WaitForCompact(true));
96
+ ASSERT_OK(dbfull()->WaitForCompact());
97
97
 
98
98
  // All data is hot, only output to penultimate level
99
99
  ASSERT_EQ("0,0,0,0,0,1", FilesPerLevel());
@@ -114,7 +114,7 @@ TEST_F(SeqnoTimeTest, TemperatureBasicUniversal) {
114
114
  });
115
115
  }
116
116
  ASSERT_OK(Flush());
117
- ASSERT_OK(dbfull()->WaitForCompact(true));
117
+ ASSERT_OK(dbfull()->WaitForCompact());
118
118
  ASSERT_GT(GetSstSizeHelper(Temperature::kUnknown), 0);
119
119
  ASSERT_EQ(GetSstSizeHelper(Temperature::kCold), 0);
120
120
  }
@@ -128,7 +128,7 @@ TEST_F(SeqnoTimeTest, TemperatureBasicUniversal) {
128
128
  });
129
129
  }
130
130
  ASSERT_OK(Flush());
131
- ASSERT_OK(dbfull()->WaitForCompact(true));
131
+ ASSERT_OK(dbfull()->WaitForCompact());
132
132
  }
133
133
 
134
134
  CompactRangeOptions cro;
@@ -91,7 +91,8 @@ Status TableCache::GetTableReader(
91
91
  const ReadOptions& ro, const FileOptions& file_options,
92
92
  const InternalKeyComparator& internal_comparator,
93
93
  const FileMetaData& file_meta, bool sequential_mode, bool record_read_stats,
94
- HistogramImpl* file_read_hist, std::unique_ptr<TableReader>* table_reader,
94
+ uint8_t block_protection_bytes_per_key, HistogramImpl* file_read_hist,
95
+ std::unique_ptr<TableReader>* table_reader,
95
96
  const std::shared_ptr<const SliceTransform>& prefix_extractor,
96
97
  bool skip_filters, int level, bool prefetch_index_and_filter_in_cache,
97
98
  size_t max_file_size_for_l0_meta_pin, Temperature file_temperature) {
@@ -139,12 +140,13 @@ Status TableCache::GetTableReader(
139
140
  }
140
141
  s = ioptions_.table_factory->NewTableReader(
141
142
  ro,
142
- TableReaderOptions(ioptions_, prefix_extractor, file_options,
143
- internal_comparator, skip_filters, immortal_tables_,
144
- false /* force_direct_prefetch */, level,
145
- block_cache_tracer_, max_file_size_for_l0_meta_pin,
146
- db_session_id_, file_meta.fd.GetNumber(),
147
- expected_unique_id, file_meta.fd.largest_seqno),
143
+ TableReaderOptions(
144
+ ioptions_, prefix_extractor, file_options, internal_comparator,
145
+ block_protection_bytes_per_key, skip_filters, immortal_tables_,
146
+ false /* force_direct_prefetch */, level, block_cache_tracer_,
147
+ max_file_size_for_l0_meta_pin, db_session_id_,
148
+ file_meta.fd.GetNumber(), expected_unique_id,
149
+ file_meta.fd.largest_seqno, file_meta.tail_size),
148
150
  std::move(file_reader), file_meta.fd.GetFileSize(), table_reader,
149
151
  prefetch_index_and_filter_in_cache);
150
152
  TEST_SYNC_POINT("TableCache::GetTableReader:0");
@@ -156,6 +158,7 @@ Status TableCache::FindTable(
156
158
  const ReadOptions& ro, const FileOptions& file_options,
157
159
  const InternalKeyComparator& internal_comparator,
158
160
  const FileMetaData& file_meta, TypedHandle** handle,
161
+ uint8_t block_protection_bytes_per_key,
159
162
  const std::shared_ptr<const SliceTransform>& prefix_extractor,
160
163
  const bool no_io, bool record_read_stats, HistogramImpl* file_read_hist,
161
164
  bool skip_filters, int level, bool prefetch_index_and_filter_in_cache,
@@ -179,12 +182,12 @@ Status TableCache::FindTable(
179
182
  }
180
183
 
181
184
  std::unique_ptr<TableReader> table_reader;
182
- Status s =
183
- GetTableReader(ro, file_options, internal_comparator, file_meta,
184
- false /* sequential mode */, record_read_stats,
185
- file_read_hist, &table_reader, prefix_extractor,
186
- skip_filters, level, prefetch_index_and_filter_in_cache,
187
- max_file_size_for_l0_meta_pin, file_temperature);
185
+ Status s = GetTableReader(ro, file_options, internal_comparator, file_meta,
186
+ false /* sequential mode */, record_read_stats,
187
+ block_protection_bytes_per_key, file_read_hist,
188
+ &table_reader, prefix_extractor, skip_filters,
189
+ level, prefetch_index_and_filter_in_cache,
190
+ max_file_size_for_l0_meta_pin, file_temperature);
188
191
  if (!s.ok()) {
189
192
  assert(table_reader == nullptr);
190
193
  RecordTick(ioptions_.stats, NO_FILE_ERRORS);
@@ -212,6 +215,7 @@ InternalIterator* TableCache::NewIterator(
212
215
  size_t max_file_size_for_l0_meta_pin,
213
216
  const InternalKey* smallest_compaction_key,
214
217
  const InternalKey* largest_compaction_key, bool allow_unprepared_value,
218
+ uint8_t block_protection_bytes_per_key,
215
219
  TruncatedRangeDelIterator** range_del_iter) {
216
220
  PERF_TIMER_GUARD(new_table_iterator_nanos);
217
221
 
@@ -225,12 +229,13 @@ InternalIterator* TableCache::NewIterator(
225
229
  auto& fd = file_meta.fd;
226
230
  table_reader = fd.table_reader;
227
231
  if (table_reader == nullptr) {
228
- s = FindTable(
229
- options, file_options, icomparator, file_meta, &handle,
230
- prefix_extractor, options.read_tier == kBlockCacheTier /* no_io */,
231
- !for_compaction /* record_read_stats */, file_read_hist, skip_filters,
232
- level, true /* prefetch_index_and_filter_in_cache */,
233
- max_file_size_for_l0_meta_pin, file_meta.temperature);
232
+ s = FindTable(options, file_options, icomparator, file_meta, &handle,
233
+ block_protection_bytes_per_key, prefix_extractor,
234
+ options.read_tier == kBlockCacheTier /* no_io */,
235
+ !for_compaction /* record_read_stats */, file_read_hist,
236
+ skip_filters, level,
237
+ true /* prefetch_index_and_filter_in_cache */,
238
+ max_file_size_for_l0_meta_pin, file_meta.temperature);
234
239
  if (s.ok()) {
235
240
  table_reader = cache_.Value(handle);
236
241
  }
@@ -308,7 +313,7 @@ InternalIterator* TableCache::NewIterator(
308
313
  Status TableCache::GetRangeTombstoneIterator(
309
314
  const ReadOptions& options,
310
315
  const InternalKeyComparator& internal_comparator,
311
- const FileMetaData& file_meta,
316
+ const FileMetaData& file_meta, uint8_t block_protection_bytes_per_key,
312
317
  std::unique_ptr<FragmentedRangeTombstoneIterator>* out_iter) {
313
318
  assert(out_iter);
314
319
  const FileDescriptor& fd = file_meta.fd;
@@ -317,7 +322,7 @@ Status TableCache::GetRangeTombstoneIterator(
317
322
  TypedHandle* handle = nullptr;
318
323
  if (t == nullptr) {
319
324
  s = FindTable(options, file_options_, internal_comparator, file_meta,
320
- &handle);
325
+ &handle, block_protection_bytes_per_key);
321
326
  if (s.ok()) {
322
327
  t = cache_.Value(handle);
323
328
  }
@@ -403,6 +408,7 @@ Status TableCache::Get(
403
408
  const ReadOptions& options,
404
409
  const InternalKeyComparator& internal_comparator,
405
410
  const FileMetaData& file_meta, const Slice& k, GetContext* get_context,
411
+ uint8_t block_protection_bytes_per_key,
406
412
  const std::shared_ptr<const SliceTransform>& prefix_extractor,
407
413
  HistogramImpl* file_read_hist, bool skip_filters, int level,
408
414
  size_t max_file_size_for_l0_meta_pin) {
@@ -430,7 +436,7 @@ Status TableCache::Get(
430
436
  assert(s.ok());
431
437
  if (t == nullptr) {
432
438
  s = FindTable(options, file_options_, internal_comparator, file_meta,
433
- &handle, prefix_extractor,
439
+ &handle, block_protection_bytes_per_key, prefix_extractor,
434
440
  options.read_tier == kBlockCacheTier /* no_io */,
435
441
  true /* record_read_stats */, file_read_hist, skip_filters,
436
442
  level, true /* prefetch_index_and_filter_in_cache */,
@@ -513,7 +519,8 @@ Status TableCache::MultiGetFilter(
513
519
  const FileMetaData& file_meta,
514
520
  const std::shared_ptr<const SliceTransform>& prefix_extractor,
515
521
  HistogramImpl* file_read_hist, int level,
516
- MultiGetContext::Range* mget_range, TypedHandle** table_handle) {
522
+ MultiGetContext::Range* mget_range, TypedHandle** table_handle,
523
+ uint8_t block_protection_bytes_per_key) {
517
524
  auto& fd = file_meta.fd;
518
525
  IterKey row_cache_key;
519
526
  std::string row_cache_entry_buffer;
@@ -531,12 +538,13 @@ Status TableCache::MultiGetFilter(
531
538
  MultiGetContext::Range tombstone_range(*mget_range, mget_range->begin(),
532
539
  mget_range->end());
533
540
  if (t == nullptr) {
534
- s = FindTable(
535
- options, file_options_, internal_comparator, file_meta, &handle,
536
- prefix_extractor, options.read_tier == kBlockCacheTier /* no_io */,
537
- true /* record_read_stats */, file_read_hist, /*skip_filters=*/false,
538
- level, true /* prefetch_index_and_filter_in_cache */,
539
- /*max_file_size_for_l0_meta_pin=*/0, file_meta.temperature);
541
+ s = FindTable(options, file_options_, internal_comparator, file_meta,
542
+ &handle, block_protection_bytes_per_key, prefix_extractor,
543
+ options.read_tier == kBlockCacheTier /* no_io */,
544
+ true /* record_read_stats */, file_read_hist,
545
+ /*skip_filters=*/false, level,
546
+ true /* prefetch_index_and_filter_in_cache */,
547
+ /*max_file_size_for_l0_meta_pin=*/0, file_meta.temperature);
540
548
  if (s.ok()) {
541
549
  t = cache_.Value(handle);
542
550
  }
@@ -560,10 +568,11 @@ Status TableCache::MultiGetFilter(
560
568
  }
561
569
 
562
570
  Status TableCache::GetTableProperties(
563
- const FileOptions& file_options,
571
+ const FileOptions& file_options, const ReadOptions& read_options,
564
572
  const InternalKeyComparator& internal_comparator,
565
573
  const FileMetaData& file_meta,
566
574
  std::shared_ptr<const TableProperties>* properties,
575
+ uint8_t block_protection_bytes_per_key,
567
576
  const std::shared_ptr<const SliceTransform>& prefix_extractor, bool no_io) {
568
577
  auto table_reader = file_meta.fd.table_reader;
569
578
  // table already been pre-loaded?
@@ -574,8 +583,9 @@ Status TableCache::GetTableProperties(
574
583
  }
575
584
 
576
585
  TypedHandle* table_handle = nullptr;
577
- Status s = FindTable(ReadOptions(), file_options, internal_comparator,
578
- file_meta, &table_handle, prefix_extractor, no_io);
586
+ Status s = FindTable(read_options, file_options, internal_comparator,
587
+ file_meta, &table_handle, block_protection_bytes_per_key,
588
+ prefix_extractor, no_io);
579
589
  if (!s.ok()) {
580
590
  return s;
581
591
  }
@@ -588,12 +598,14 @@ Status TableCache::GetTableProperties(
588
598
 
589
599
  Status TableCache::ApproximateKeyAnchors(
590
600
  const ReadOptions& ro, const InternalKeyComparator& internal_comparator,
591
- const FileMetaData& file_meta, std::vector<TableReader::Anchor>& anchors) {
601
+ const FileMetaData& file_meta, uint8_t block_protection_bytes_per_key,
602
+ std::vector<TableReader::Anchor>& anchors) {
592
603
  Status s;
593
604
  TableReader* t = file_meta.fd.table_reader;
594
605
  TypedHandle* handle = nullptr;
595
606
  if (t == nullptr) {
596
- s = FindTable(ro, file_options_, internal_comparator, file_meta, &handle);
607
+ s = FindTable(ro, file_options_, internal_comparator, file_meta, &handle,
608
+ block_protection_bytes_per_key);
597
609
  if (s.ok()) {
598
610
  t = cache_.Value(handle);
599
611
  }
@@ -608,9 +620,9 @@ Status TableCache::ApproximateKeyAnchors(
608
620
  }
609
621
 
610
622
  size_t TableCache::GetMemoryUsageByTableReader(
611
- const FileOptions& file_options,
623
+ const FileOptions& file_options, const ReadOptions& read_options,
612
624
  const InternalKeyComparator& internal_comparator,
613
- const FileMetaData& file_meta,
625
+ const FileMetaData& file_meta, uint8_t block_protection_bytes_per_key,
614
626
  const std::shared_ptr<const SliceTransform>& prefix_extractor) {
615
627
  auto table_reader = file_meta.fd.table_reader;
616
628
  // table already been pre-loaded?
@@ -619,8 +631,9 @@ size_t TableCache::GetMemoryUsageByTableReader(
619
631
  }
620
632
 
621
633
  TypedHandle* table_handle = nullptr;
622
- Status s = FindTable(ReadOptions(), file_options, internal_comparator,
623
- file_meta, &table_handle, prefix_extractor, true);
634
+ Status s = FindTable(read_options, file_options, internal_comparator,
635
+ file_meta, &table_handle, block_protection_bytes_per_key,
636
+ prefix_extractor, true /* no_io */);
624
637
  if (!s.ok()) {
625
638
  return 0;
626
639
  }
@@ -636,25 +649,27 @@ void TableCache::Evict(Cache* cache, uint64_t file_number) {
636
649
  }
637
650
 
638
651
  uint64_t TableCache::ApproximateOffsetOf(
639
- const Slice& key, const FileMetaData& file_meta, TableReaderCaller caller,
652
+ const ReadOptions& read_options, const Slice& key,
653
+ const FileMetaData& file_meta, TableReaderCaller caller,
640
654
  const InternalKeyComparator& internal_comparator,
655
+ uint8_t block_protection_bytes_per_key,
641
656
  const std::shared_ptr<const SliceTransform>& prefix_extractor) {
642
657
  uint64_t result = 0;
643
658
  TableReader* table_reader = file_meta.fd.table_reader;
644
659
  TypedHandle* table_handle = nullptr;
645
660
  if (table_reader == nullptr) {
646
661
  const bool for_compaction = (caller == TableReaderCaller::kCompaction);
647
- Status s =
648
- FindTable(ReadOptions(), file_options_, internal_comparator, file_meta,
649
- &table_handle, prefix_extractor, false /* no_io */,
650
- !for_compaction /* record_read_stats */);
662
+ Status s = FindTable(
663
+ read_options, file_options_, internal_comparator, file_meta,
664
+ &table_handle, block_protection_bytes_per_key, prefix_extractor,
665
+ false /* no_io */, !for_compaction /* record_read_stats */);
651
666
  if (s.ok()) {
652
667
  table_reader = cache_.Value(table_handle);
653
668
  }
654
669
  }
655
670
 
656
671
  if (table_reader != nullptr) {
657
- result = table_reader->ApproximateOffsetOf(key, caller);
672
+ result = table_reader->ApproximateOffsetOf(read_options, key, caller);
658
673
  }
659
674
  if (table_handle != nullptr) {
660
675
  cache_.Release(table_handle);
@@ -664,25 +679,27 @@ uint64_t TableCache::ApproximateOffsetOf(
664
679
  }
665
680
 
666
681
  uint64_t TableCache::ApproximateSize(
667
- const Slice& start, const Slice& end, const FileMetaData& file_meta,
668
- TableReaderCaller caller, const InternalKeyComparator& internal_comparator,
682
+ const ReadOptions& read_options, const Slice& start, const Slice& end,
683
+ const FileMetaData& file_meta, TableReaderCaller caller,
684
+ const InternalKeyComparator& internal_comparator,
685
+ uint8_t block_protection_bytes_per_key,
669
686
  const std::shared_ptr<const SliceTransform>& prefix_extractor) {
670
687
  uint64_t result = 0;
671
688
  TableReader* table_reader = file_meta.fd.table_reader;
672
689
  TypedHandle* table_handle = nullptr;
673
690
  if (table_reader == nullptr) {
674
691
  const bool for_compaction = (caller == TableReaderCaller::kCompaction);
675
- Status s =
676
- FindTable(ReadOptions(), file_options_, internal_comparator, file_meta,
677
- &table_handle, prefix_extractor, false /* no_io */,
678
- !for_compaction /* record_read_stats */);
692
+ Status s = FindTable(
693
+ read_options, file_options_, internal_comparator, file_meta,
694
+ &table_handle, block_protection_bytes_per_key, prefix_extractor,
695
+ false /* no_io */, !for_compaction /* record_read_stats */);
679
696
  if (s.ok()) {
680
697
  table_reader = cache_.Value(table_handle);
681
698
  }
682
699
  }
683
700
 
684
701
  if (table_reader != nullptr) {
685
- result = table_reader->ApproximateSize(start, end, caller);
702
+ result = table_reader->ApproximateSize(read_options, start, end, caller);
686
703
  }
687
704
  if (table_handle != nullptr) {
688
705
  cache_.Release(table_handle);