@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
@@ -7,7 +7,7 @@
7
7
 
8
8
  #include <memory>
9
9
 
10
- #include "memory/memory_allocator.h"
10
+ #include "memory/memory_allocator_impl.h"
11
11
  #include "rocksdb/advanced_cache.h"
12
12
  #include "rocksdb/rocksdb_namespace.h"
13
13
  #include "rocksdb/slice.h"
@@ -259,6 +259,7 @@ Status BlobFileBuilder::CompressBlobIfNeeded(
259
259
  return Status::OK();
260
260
  }
261
261
 
262
+ // TODO: allow user CompressionOptions, including max_compressed_bytes_per_kb
262
263
  CompressionOptions opts;
263
264
  CompressionContext context(blob_compression_type_);
264
265
  constexpr uint64_t sample_for_compression = 0;
@@ -37,7 +37,7 @@ BlobFileCache::BlobFileCache(Cache* cache,
37
37
  }
38
38
 
39
39
  Status BlobFileCache::GetBlobFileReader(
40
- uint64_t blob_file_number,
40
+ const ReadOptions& read_options, uint64_t blob_file_number,
41
41
  CacheHandleGuard<BlobFileReader>* blob_file_reader) {
42
42
  assert(blob_file_reader);
43
43
  assert(blob_file_reader->IsEmpty());
@@ -73,7 +73,7 @@ Status BlobFileCache::GetBlobFileReader(
73
73
  {
74
74
  assert(file_options_);
75
75
  const Status s = BlobFileReader::Create(
76
- *immutable_options_, *file_options_, column_family_id_,
76
+ *immutable_options_, read_options, *file_options_, column_family_id_,
77
77
  blob_file_read_hist_, blob_file_number, io_tracer_, &reader);
78
78
  if (!s.ok()) {
79
79
  RecordTick(statistics, NO_FILE_ERRORS);
@@ -32,7 +32,8 @@ class BlobFileCache {
32
32
  BlobFileCache(const BlobFileCache&) = delete;
33
33
  BlobFileCache& operator=(const BlobFileCache&) = delete;
34
34
 
35
- Status GetBlobFileReader(uint64_t blob_file_number,
35
+ Status GetBlobFileReader(const ReadOptions& read_options,
36
+ uint64_t blob_file_number,
36
37
  CacheHandleGuard<BlobFileReader>* blob_file_reader);
37
38
 
38
39
  private:
@@ -118,7 +118,9 @@ TEST_F(BlobFileCacheTest, GetBlobFileReader) {
118
118
  // First try: reader should be opened and put in cache
119
119
  CacheHandleGuard<BlobFileReader> first;
120
120
 
121
- ASSERT_OK(blob_file_cache.GetBlobFileReader(blob_file_number, &first));
121
+ const ReadOptions read_options;
122
+ ASSERT_OK(blob_file_cache.GetBlobFileReader(read_options, blob_file_number,
123
+ &first));
122
124
  ASSERT_NE(first.GetValue(), nullptr);
123
125
  ASSERT_EQ(options.statistics->getTickerCount(NO_FILE_OPENS), 1);
124
126
  ASSERT_EQ(options.statistics->getTickerCount(NO_FILE_ERRORS), 0);
@@ -126,7 +128,8 @@ TEST_F(BlobFileCacheTest, GetBlobFileReader) {
126
128
  // Second try: reader should be served from cache
127
129
  CacheHandleGuard<BlobFileReader> second;
128
130
 
129
- ASSERT_OK(blob_file_cache.GetBlobFileReader(blob_file_number, &second));
131
+ ASSERT_OK(blob_file_cache.GetBlobFileReader(read_options, blob_file_number,
132
+ &second));
130
133
  ASSERT_NE(second.GetValue(), nullptr);
131
134
  ASSERT_EQ(options.statistics->getTickerCount(NO_FILE_OPENS), 1);
132
135
  ASSERT_EQ(options.statistics->getTickerCount(NO_FILE_ERRORS), 0);
@@ -163,19 +166,21 @@ TEST_F(BlobFileCacheTest, GetBlobFileReader_Race) {
163
166
  CacheHandleGuard<BlobFileReader> first;
164
167
  CacheHandleGuard<BlobFileReader> second;
165
168
 
169
+ const ReadOptions read_options;
166
170
  SyncPoint::GetInstance()->SetCallBack(
167
171
  "BlobFileCache::GetBlobFileReader:DoubleCheck", [&](void* /* arg */) {
168
172
  // Disabling sync points to prevent infinite recursion
169
173
  SyncPoint::GetInstance()->DisableProcessing();
170
-
171
- ASSERT_OK(blob_file_cache.GetBlobFileReader(blob_file_number, &second));
174
+ ASSERT_OK(blob_file_cache.GetBlobFileReader(read_options,
175
+ blob_file_number, &second));
172
176
  ASSERT_NE(second.GetValue(), nullptr);
173
177
  ASSERT_EQ(options.statistics->getTickerCount(NO_FILE_OPENS), 1);
174
178
  ASSERT_EQ(options.statistics->getTickerCount(NO_FILE_ERRORS), 0);
175
179
  });
176
180
  SyncPoint::GetInstance()->EnableProcessing();
177
181
 
178
- ASSERT_OK(blob_file_cache.GetBlobFileReader(blob_file_number, &first));
182
+ ASSERT_OK(blob_file_cache.GetBlobFileReader(read_options, blob_file_number,
183
+ &first));
179
184
  ASSERT_NE(first.GetValue(), nullptr);
180
185
  ASSERT_EQ(options.statistics->getTickerCount(NO_FILE_OPENS), 1);
181
186
  ASSERT_EQ(options.statistics->getTickerCount(NO_FILE_ERRORS), 0);
@@ -213,8 +218,10 @@ TEST_F(BlobFileCacheTest, GetBlobFileReader_IOError) {
213
218
 
214
219
  CacheHandleGuard<BlobFileReader> reader;
215
220
 
221
+ const ReadOptions read_options;
216
222
  ASSERT_TRUE(
217
- blob_file_cache.GetBlobFileReader(blob_file_number, &reader).IsIOError());
223
+ blob_file_cache.GetBlobFileReader(read_options, blob_file_number, &reader)
224
+ .IsIOError());
218
225
  ASSERT_EQ(reader.GetValue(), nullptr);
219
226
  ASSERT_EQ(options.statistics->getTickerCount(NO_FILE_OPENS), 1);
220
227
  ASSERT_EQ(options.statistics->getTickerCount(NO_FILE_ERRORS), 1);
@@ -253,8 +260,10 @@ TEST_F(BlobFileCacheTest, GetBlobFileReader_CacheFull) {
253
260
  // strict_capacity_limit is set
254
261
  CacheHandleGuard<BlobFileReader> reader;
255
262
 
256
- ASSERT_TRUE(blob_file_cache.GetBlobFileReader(blob_file_number, &reader)
257
- .IsMemoryLimit());
263
+ const ReadOptions read_options;
264
+ ASSERT_TRUE(
265
+ blob_file_cache.GetBlobFileReader(read_options, blob_file_number, &reader)
266
+ .IsMemoryLimit());
258
267
  ASSERT_EQ(reader.GetValue(), nullptr);
259
268
  ASSERT_EQ(options.statistics->getTickerCount(NO_FILE_OPENS), 1);
260
269
  ASSERT_EQ(options.statistics->getTickerCount(NO_FILE_ERRORS), 1);
@@ -12,7 +12,7 @@
12
12
  #include "db/blob/blob_log_format.h"
13
13
  #include "file/file_prefetch_buffer.h"
14
14
  #include "file/filename.h"
15
- #include "monitoring/statistics.h"
15
+ #include "monitoring/statistics_impl.h"
16
16
  #include "options/cf_options.h"
17
17
  #include "rocksdb/file_system.h"
18
18
  #include "rocksdb/slice.h"
@@ -26,9 +26,10 @@
26
26
  namespace ROCKSDB_NAMESPACE {
27
27
 
28
28
  Status BlobFileReader::Create(
29
- const ImmutableOptions& immutable_options, const FileOptions& file_options,
30
- uint32_t column_family_id, HistogramImpl* blob_file_read_hist,
31
- uint64_t blob_file_number, const std::shared_ptr<IOTracer>& io_tracer,
29
+ const ImmutableOptions& immutable_options, const ReadOptions& read_options,
30
+ const FileOptions& file_options, uint32_t column_family_id,
31
+ HistogramImpl* blob_file_read_hist, uint64_t blob_file_number,
32
+ const std::shared_ptr<IOTracer>& io_tracer,
32
33
  std::unique_ptr<BlobFileReader>* blob_file_reader) {
33
34
  assert(blob_file_reader);
34
35
  assert(!*blob_file_reader);
@@ -52,15 +53,17 @@ Status BlobFileReader::Create(
52
53
  CompressionType compression_type = kNoCompression;
53
54
 
54
55
  {
55
- const Status s = ReadHeader(file_reader.get(), column_family_id, statistics,
56
- &compression_type);
56
+ const Status s =
57
+ ReadHeader(file_reader.get(), read_options, column_family_id,
58
+ statistics, &compression_type);
57
59
  if (!s.ok()) {
58
60
  return s;
59
61
  }
60
62
  }
61
63
 
62
64
  {
63
- const Status s = ReadFooter(file_reader.get(), file_size, statistics);
65
+ const Status s =
66
+ ReadFooter(file_reader.get(), read_options, file_size, statistics);
64
67
  if (!s.ok()) {
65
68
  return s;
66
69
  }
@@ -134,6 +137,7 @@ Status BlobFileReader::OpenFile(
134
137
  }
135
138
 
136
139
  Status BlobFileReader::ReadHeader(const RandomAccessFileReader* file_reader,
140
+ const ReadOptions& read_options,
137
141
  uint32_t column_family_id,
138
142
  Statistics* statistics,
139
143
  CompressionType* compression_type) {
@@ -151,9 +155,10 @@ Status BlobFileReader::ReadHeader(const RandomAccessFileReader* file_reader,
151
155
  constexpr size_t read_size = BlobLogHeader::kSize;
152
156
 
153
157
  // TODO: rate limit reading headers from blob files.
154
- const Status s = ReadFromFile(file_reader, read_offset, read_size,
155
- statistics, &header_slice, &buf, &aligned_buf,
156
- Env::IO_TOTAL /* rate_limiter_priority */);
158
+ const Status s =
159
+ ReadFromFile(file_reader, read_options, read_offset, read_size,
160
+ statistics, &header_slice, &buf, &aligned_buf,
161
+ Env::IO_TOTAL /* rate_limiter_priority */);
157
162
  if (!s.ok()) {
158
163
  return s;
159
164
  }
@@ -187,6 +192,7 @@ Status BlobFileReader::ReadHeader(const RandomAccessFileReader* file_reader,
187
192
  }
188
193
 
189
194
  Status BlobFileReader::ReadFooter(const RandomAccessFileReader* file_reader,
195
+ const ReadOptions& read_options,
190
196
  uint64_t file_size, Statistics* statistics) {
191
197
  assert(file_size >= BlobLogHeader::kSize + BlobLogFooter::kSize);
192
198
  assert(file_reader);
@@ -202,9 +208,10 @@ Status BlobFileReader::ReadFooter(const RandomAccessFileReader* file_reader,
202
208
  constexpr size_t read_size = BlobLogFooter::kSize;
203
209
 
204
210
  // TODO: rate limit reading footers from blob files.
205
- const Status s = ReadFromFile(file_reader, read_offset, read_size,
206
- statistics, &footer_slice, &buf, &aligned_buf,
207
- Env::IO_TOTAL /* rate_limiter_priority */);
211
+ const Status s =
212
+ ReadFromFile(file_reader, read_options, read_offset, read_size,
213
+ statistics, &footer_slice, &buf, &aligned_buf,
214
+ Env::IO_TOTAL /* rate_limiter_priority */);
208
215
  if (!s.ok()) {
209
216
  return s;
210
217
  }
@@ -232,6 +239,7 @@ Status BlobFileReader::ReadFooter(const RandomAccessFileReader* file_reader,
232
239
  }
233
240
 
234
241
  Status BlobFileReader::ReadFromFile(const RandomAccessFileReader* file_reader,
242
+ const ReadOptions& read_options,
235
243
  uint64_t read_offset, size_t read_size,
236
244
  Statistics* statistics, Slice* slice,
237
245
  Buffer* buf, AlignedBuf* aligned_buf,
@@ -246,17 +254,23 @@ Status BlobFileReader::ReadFromFile(const RandomAccessFileReader* file_reader,
246
254
 
247
255
  Status s;
248
256
 
257
+ IOOptions io_options;
258
+ s = file_reader->PrepareIOOptions(read_options, io_options);
259
+ if (!s.ok()) {
260
+ return s;
261
+ }
262
+
249
263
  if (file_reader->use_direct_io()) {
250
264
  constexpr char* scratch = nullptr;
251
265
 
252
- s = file_reader->Read(IOOptions(), read_offset, read_size, slice, scratch,
266
+ s = file_reader->Read(io_options, read_offset, read_size, slice, scratch,
253
267
  aligned_buf, rate_limiter_priority);
254
268
  } else {
255
269
  buf->reset(new char[read_size]);
256
270
  constexpr AlignedBuf* aligned_scratch = nullptr;
257
271
 
258
- s = file_reader->Read(IOOptions(), read_offset, read_size, slice,
259
- buf->get(), aligned_scratch, rate_limiter_priority);
272
+ s = file_reader->Read(io_options, read_offset, read_size, slice, buf->get(),
273
+ aligned_scratch, rate_limiter_priority);
260
274
  }
261
275
 
262
276
  if (!s.ok()) {
@@ -324,8 +338,13 @@ Status BlobFileReader::GetBlob(
324
338
  Status s;
325
339
  constexpr bool for_compaction = true;
326
340
 
341
+ IOOptions io_options;
342
+ s = file_reader_->PrepareIOOptions(read_options, io_options);
343
+ if (!s.ok()) {
344
+ return s;
345
+ }
327
346
  prefetched = prefetch_buffer->TryReadFromCache(
328
- IOOptions(), file_reader_.get(), record_offset,
347
+ io_options, file_reader_.get(), record_offset,
329
348
  static_cast<size_t>(record_size), &record_slice, &s,
330
349
  read_options.rate_limiter_priority, for_compaction);
331
350
  if (!s.ok()) {
@@ -338,10 +357,10 @@ Status BlobFileReader::GetBlob(
338
357
  PERF_COUNTER_ADD(blob_read_count, 1);
339
358
  PERF_COUNTER_ADD(blob_read_byte, record_size);
340
359
  PERF_TIMER_GUARD(blob_read_time);
341
- const Status s = ReadFromFile(file_reader_.get(), record_offset,
342
- static_cast<size_t>(record_size), statistics_,
343
- &record_slice, &buf, &aligned_buf,
344
- read_options.rate_limiter_priority);
360
+ const Status s = ReadFromFile(
361
+ file_reader_.get(), read_options, record_offset,
362
+ static_cast<size_t>(record_size), statistics_, &record_slice, &buf,
363
+ &aligned_buf, read_options.rate_limiter_priority);
345
364
  if (!s.ok()) {
346
365
  return s;
347
366
  }
@@ -29,6 +29,7 @@ class Statistics;
29
29
  class BlobFileReader {
30
30
  public:
31
31
  static Status Create(const ImmutableOptions& immutable_options,
32
+ const ReadOptions& read_options,
32
33
  const FileOptions& file_options,
33
34
  uint32_t column_family_id,
34
35
  HistogramImpl* blob_file_read_hist,
@@ -74,15 +75,18 @@ class BlobFileReader {
74
75
  std::unique_ptr<RandomAccessFileReader>* file_reader);
75
76
 
76
77
  static Status ReadHeader(const RandomAccessFileReader* file_reader,
78
+ const ReadOptions& read_options,
77
79
  uint32_t column_family_id, Statistics* statistics,
78
80
  CompressionType* compression_type);
79
81
 
80
82
  static Status ReadFooter(const RandomAccessFileReader* file_reader,
81
- uint64_t file_size, Statistics* statistics);
83
+ const ReadOptions& read_options, uint64_t file_size,
84
+ Statistics* statistics);
82
85
 
83
86
  using Buffer = std::unique_ptr<char[]>;
84
87
 
85
88
  static Status ReadFromFile(const RandomAccessFileReader* file_reader,
89
+ const ReadOptions& read_options,
86
90
  uint64_t read_offset, size_t read_size,
87
91
  Statistics* statistics, Slice* slice, Buffer* buf,
88
92
  AlignedBuf* aligned_buf,
@@ -172,12 +172,12 @@ TEST_F(BlobFileReaderTest, CreateReaderAndGetBlob) {
172
172
 
173
173
  std::unique_ptr<BlobFileReader> reader;
174
174
 
175
+ ReadOptions read_options;
175
176
  ASSERT_OK(BlobFileReader::Create(
176
- immutable_options, FileOptions(), column_family_id, blob_file_read_hist,
177
- blob_file_number, nullptr /*IOTracer*/, &reader));
177
+ immutable_options, read_options, FileOptions(), column_family_id,
178
+ blob_file_read_hist, blob_file_number, nullptr /*IOTracer*/, &reader));
178
179
 
179
180
  // Make sure the blob can be retrieved with and without checksum verification
180
- ReadOptions read_options;
181
181
  read_options.verify_checksums = false;
182
182
 
183
183
  constexpr FilePrefetchBuffer* prefetch_buffer = nullptr;
@@ -479,11 +479,11 @@ TEST_F(BlobFileReaderTest, Malformed) {
479
479
  constexpr HistogramImpl* blob_file_read_hist = nullptr;
480
480
 
481
481
  std::unique_ptr<BlobFileReader> reader;
482
-
483
- ASSERT_TRUE(BlobFileReader::Create(immutable_options, FileOptions(),
484
- column_family_id, blob_file_read_hist,
485
- blob_file_number, nullptr /*IOTracer*/,
486
- &reader)
482
+ const ReadOptions read_options;
483
+ ASSERT_TRUE(BlobFileReader::Create(immutable_options, read_options,
484
+ FileOptions(), column_family_id,
485
+ blob_file_read_hist, blob_file_number,
486
+ nullptr /*IOTracer*/, &reader)
487
487
  .IsCorruption());
488
488
  }
489
489
 
@@ -513,11 +513,11 @@ TEST_F(BlobFileReaderTest, TTL) {
513
513
  constexpr HistogramImpl* blob_file_read_hist = nullptr;
514
514
 
515
515
  std::unique_ptr<BlobFileReader> reader;
516
-
517
- ASSERT_TRUE(BlobFileReader::Create(immutable_options, FileOptions(),
518
- column_family_id, blob_file_read_hist,
519
- blob_file_number, nullptr /*IOTracer*/,
520
- &reader)
516
+ const ReadOptions read_options;
517
+ ASSERT_TRUE(BlobFileReader::Create(immutable_options, read_options,
518
+ FileOptions(), column_family_id,
519
+ blob_file_read_hist, blob_file_number,
520
+ nullptr /*IOTracer*/, &reader)
521
521
  .IsCorruption());
522
522
  }
523
523
 
@@ -552,11 +552,11 @@ TEST_F(BlobFileReaderTest, ExpirationRangeInHeader) {
552
552
  constexpr HistogramImpl* blob_file_read_hist = nullptr;
553
553
 
554
554
  std::unique_ptr<BlobFileReader> reader;
555
-
556
- ASSERT_TRUE(BlobFileReader::Create(immutable_options, FileOptions(),
557
- column_family_id, blob_file_read_hist,
558
- blob_file_number, nullptr /*IOTracer*/,
559
- &reader)
555
+ const ReadOptions read_options;
556
+ ASSERT_TRUE(BlobFileReader::Create(immutable_options, read_options,
557
+ FileOptions(), column_family_id,
558
+ blob_file_read_hist, blob_file_number,
559
+ nullptr /*IOTracer*/, &reader)
560
560
  .IsCorruption());
561
561
  }
562
562
 
@@ -591,11 +591,11 @@ TEST_F(BlobFileReaderTest, ExpirationRangeInFooter) {
591
591
  constexpr HistogramImpl* blob_file_read_hist = nullptr;
592
592
 
593
593
  std::unique_ptr<BlobFileReader> reader;
594
-
595
- ASSERT_TRUE(BlobFileReader::Create(immutable_options, FileOptions(),
596
- column_family_id, blob_file_read_hist,
597
- blob_file_number, nullptr /*IOTracer*/,
598
- &reader)
594
+ const ReadOptions read_options;
595
+ ASSERT_TRUE(BlobFileReader::Create(immutable_options, read_options,
596
+ FileOptions(), column_family_id,
597
+ blob_file_read_hist, blob_file_number,
598
+ nullptr /*IOTracer*/, &reader)
599
599
  .IsCorruption());
600
600
  }
601
601
 
@@ -629,9 +629,9 @@ TEST_F(BlobFileReaderTest, IncorrectColumnFamily) {
629
629
  std::unique_ptr<BlobFileReader> reader;
630
630
 
631
631
  constexpr uint32_t incorrect_column_family_id = 2;
632
-
633
- ASSERT_TRUE(BlobFileReader::Create(immutable_options, FileOptions(),
634
- incorrect_column_family_id,
632
+ const ReadOptions read_options;
633
+ ASSERT_TRUE(BlobFileReader::Create(immutable_options, read_options,
634
+ FileOptions(), incorrect_column_family_id,
635
635
  blob_file_read_hist, blob_file_number,
636
636
  nullptr /*IOTracer*/, &reader)
637
637
  .IsCorruption());
@@ -664,10 +664,10 @@ TEST_F(BlobFileReaderTest, BlobCRCError) {
664
664
  constexpr HistogramImpl* blob_file_read_hist = nullptr;
665
665
 
666
666
  std::unique_ptr<BlobFileReader> reader;
667
-
667
+ const ReadOptions read_options;
668
668
  ASSERT_OK(BlobFileReader::Create(
669
- immutable_options, FileOptions(), column_family_id, blob_file_read_hist,
670
- blob_file_number, nullptr /*IOTracer*/, &reader));
669
+ immutable_options, read_options, FileOptions(), column_family_id,
670
+ blob_file_read_hist, blob_file_number, nullptr /*IOTracer*/, &reader));
671
671
 
672
672
  SyncPoint::GetInstance()->SetCallBack(
673
673
  "BlobFileReader::VerifyBlob:CheckBlobCRC", [](void* arg) {
@@ -728,13 +728,12 @@ TEST_F(BlobFileReaderTest, Compression) {
728
728
  constexpr HistogramImpl* blob_file_read_hist = nullptr;
729
729
 
730
730
  std::unique_ptr<BlobFileReader> reader;
731
-
731
+ ReadOptions read_options;
732
732
  ASSERT_OK(BlobFileReader::Create(
733
- immutable_options, FileOptions(), column_family_id, blob_file_read_hist,
734
- blob_file_number, nullptr /*IOTracer*/, &reader));
733
+ immutable_options, read_options, FileOptions(), column_family_id,
734
+ blob_file_read_hist, blob_file_number, nullptr /*IOTracer*/, &reader));
735
735
 
736
736
  // Make sure the blob can be retrieved with and without checksum verification
737
- ReadOptions read_options;
738
737
  read_options.verify_checksums = false;
739
738
 
740
739
  constexpr FilePrefetchBuffer* prefetch_buffer = nullptr;
@@ -803,10 +802,10 @@ TEST_F(BlobFileReaderTest, UncompressionError) {
803
802
  constexpr HistogramImpl* blob_file_read_hist = nullptr;
804
803
 
805
804
  std::unique_ptr<BlobFileReader> reader;
806
-
805
+ const ReadOptions read_options;
807
806
  ASSERT_OK(BlobFileReader::Create(
808
- immutable_options, FileOptions(), column_family_id, blob_file_read_hist,
809
- blob_file_number, nullptr /*IOTracer*/, &reader));
807
+ immutable_options, read_options, FileOptions(), column_family_id,
808
+ blob_file_read_hist, blob_file_number, nullptr /*IOTracer*/, &reader));
810
809
 
811
810
  SyncPoint::GetInstance()->SetCallBack(
812
811
  "BlobFileReader::UncompressBlobIfNeeded:TamperWithResult", [](void* arg) {
@@ -895,10 +894,10 @@ TEST_P(BlobFileReaderIOErrorTest, IOError) {
895
894
  constexpr HistogramImpl* blob_file_read_hist = nullptr;
896
895
 
897
896
  std::unique_ptr<BlobFileReader> reader;
898
-
897
+ const ReadOptions read_options;
899
898
  const Status s = BlobFileReader::Create(
900
- immutable_options, FileOptions(), column_family_id, blob_file_read_hist,
901
- blob_file_number, nullptr /*IOTracer*/, &reader);
899
+ immutable_options, read_options, FileOptions(), column_family_id,
900
+ blob_file_read_hist, blob_file_number, nullptr /*IOTracer*/, &reader);
902
901
 
903
902
  const bool fail_during_create =
904
903
  (sync_point_ != "BlobFileReader::GetBlob:ReadFromFile");
@@ -983,10 +982,10 @@ TEST_P(BlobFileReaderDecodingErrorTest, DecodingError) {
983
982
  constexpr HistogramImpl* blob_file_read_hist = nullptr;
984
983
 
985
984
  std::unique_ptr<BlobFileReader> reader;
986
-
985
+ const ReadOptions read_options;
987
986
  const Status s = BlobFileReader::Create(
988
- immutable_options, FileOptions(), column_family_id, blob_file_read_hist,
989
- blob_file_number, nullptr /*IOTracer*/, &reader);
987
+ immutable_options, read_options, FileOptions(), column_family_id,
988
+ blob_file_read_hist, blob_file_number, nullptr /*IOTracer*/, &reader);
990
989
 
991
990
  const bool fail_during_create =
992
991
  sync_point_ != "BlobFileReader::GetBlob:TamperWithResult";
@@ -7,7 +7,7 @@
7
7
  #include "db/blob/blob_log_sequential_reader.h"
8
8
 
9
9
  #include "file/random_access_file_reader.h"
10
- #include "monitoring/statistics.h"
10
+ #include "monitoring/statistics_impl.h"
11
11
  #include "util/stop_watch.h"
12
12
 
13
13
  namespace ROCKSDB_NAMESPACE {
@@ -10,7 +10,7 @@
10
10
 
11
11
  #include "db/blob/blob_log_format.h"
12
12
  #include "file/writable_file_writer.h"
13
- #include "monitoring/statistics.h"
13
+ #include "monitoring/statistics_impl.h"
14
14
  #include "rocksdb/system_clock.h"
15
15
  #include "test_util/sync_point.h"
16
16
  #include "util/coding.h"
@@ -13,7 +13,7 @@
13
13
  #include "db/blob/blob_contents.h"
14
14
  #include "db/blob/blob_file_reader.h"
15
15
  #include "db/blob/blob_log_format.h"
16
- #include "monitoring/statistics.h"
16
+ #include "monitoring/statistics_impl.h"
17
17
  #include "options/cf_options.h"
18
18
  #include "table/get_context.h"
19
19
  #include "table/multiget_context.h"
@@ -209,7 +209,8 @@ Status BlobSource::GetBlob(const ReadOptions& read_options,
209
209
 
210
210
  {
211
211
  CacheHandleGuard<BlobFileReader> blob_file_reader;
212
- s = blob_file_cache_->GetBlobFileReader(file_number, &blob_file_reader);
212
+ s = blob_file_cache_->GetBlobFileReader(read_options, file_number,
213
+ &blob_file_reader);
213
214
  if (!s.ok()) {
214
215
  return s;
215
216
  }
@@ -372,8 +373,8 @@ void BlobSource::MultiGetBlobFromOneFile(const ReadOptions& read_options,
372
373
  }
373
374
 
374
375
  CacheHandleGuard<BlobFileReader> blob_file_reader;
375
- Status s =
376
- blob_file_cache_->GetBlobFileReader(file_number, &blob_file_reader);
376
+ Status s = blob_file_cache_->GetBlobFileReader(read_options, file_number,
377
+ &blob_file_reader);
377
378
  if (!s.ok()) {
378
379
  for (size_t i = 0; i < _blob_reqs.size(); ++i) {
379
380
  BlobReadRequest* const req = _blob_reqs[i].first;
@@ -95,9 +95,9 @@ class BlobSource {
95
95
  uint64_t* bytes_read);
96
96
 
97
97
  inline Status GetBlobFileReader(
98
- uint64_t blob_file_number,
98
+ const ReadOptions& read_options, uint64_t blob_file_number,
99
99
  CacheHandleGuard<BlobFileReader>* blob_file_reader) {
100
- return blob_file_cache_->GetBlobFileReader(blob_file_number,
100
+ return blob_file_cache_->GetBlobFileReader(read_options, blob_file_number,
101
101
  blob_file_reader);
102
102
  }
103
103
 
@@ -517,7 +517,8 @@ TEST_F(BlobSourceTest, GetCompressedBlobs) {
517
517
  compression, blob_offsets, blob_sizes);
518
518
 
519
519
  CacheHandleGuard<BlobFileReader> blob_file_reader;
520
- ASSERT_OK(blob_source.GetBlobFileReader(file_number, &blob_file_reader));
520
+ ASSERT_OK(blob_source.GetBlobFileReader(read_options, file_number,
521
+ &blob_file_reader));
521
522
  ASSERT_NE(blob_file_reader.GetValue(), nullptr);
522
523
 
523
524
  const uint64_t file_size = blob_file_reader.GetValue()->GetFileSize();
@@ -1139,12 +1140,13 @@ TEST_F(BlobSecondaryCacheTest, GetBlobsFromSecondaryCache) {
1139
1140
  blob_file_cache.get());
1140
1141
 
1141
1142
  CacheHandleGuard<BlobFileReader> file_reader;
1142
- ASSERT_OK(blob_source.GetBlobFileReader(file_number, &file_reader));
1143
+ ReadOptions read_options;
1144
+ ASSERT_OK(
1145
+ blob_source.GetBlobFileReader(read_options, file_number, &file_reader));
1143
1146
  ASSERT_NE(file_reader.GetValue(), nullptr);
1144
1147
  const uint64_t file_size = file_reader.GetValue()->GetFileSize();
1145
1148
  ASSERT_EQ(file_reader.GetValue()->GetCompressionType(), kNoCompression);
1146
1149
 
1147
- ReadOptions read_options;
1148
1150
  read_options.verify_checksums = true;
1149
1151
 
1150
1152
  auto blob_cache = options_.blob_cache;
@@ -56,8 +56,8 @@ TableBuilder* NewTableBuilder(const TableBuilderOptions& tboptions,
56
56
  Status BuildTable(
57
57
  const std::string& dbname, VersionSet* versions,
58
58
  const ImmutableDBOptions& db_options, const TableBuilderOptions& tboptions,
59
- const FileOptions& file_options, TableCache* table_cache,
60
- InternalIterator* iter,
59
+ const FileOptions& file_options, const ReadOptions& read_options,
60
+ TableCache* table_cache, InternalIterator* iter,
61
61
  std::vector<std::unique_ptr<FragmentedRangeTombstoneIterator>>
62
62
  range_del_iters,
63
63
  FileMetaData* meta, std::vector<BlobFileAddition>* blob_file_additions,
@@ -255,8 +255,8 @@ Status BuildTable(
255
255
  SizeApproximationOptions approx_opts;
256
256
  approx_opts.files_size_error_margin = 0.1;
257
257
  meta->compensated_range_deletion_size += versions->ApproximateSize(
258
- approx_opts, version, kv.first.Encode(), tombstone_end.Encode(),
259
- 0 /* start_level */, -1 /* end_level */,
258
+ approx_opts, read_options, version, kv.first.Encode(),
259
+ tombstone_end.Encode(), 0 /* start_level */, -1 /* end_level */,
260
260
  TableReaderCaller::kFlush);
261
261
  }
262
262
  last_tombstone_start_user_key = range_del_it->start_key();
@@ -291,6 +291,7 @@ Status BuildTable(
291
291
  if (s.ok() && !empty) {
292
292
  uint64_t file_size = builder->FileSize();
293
293
  meta->fd.file_size = file_size;
294
+ meta->tail_size = builder->GetTailSize();
294
295
  meta->marked_for_compaction = builder->NeedCompact();
295
296
  assert(meta->fd.GetFileSize() > 0);
296
297
  tp = builder
@@ -369,7 +370,6 @@ Status BuildTable(
369
370
  // here because this is a special case after we finish the table building.
370
371
  // No matter whether use_direct_io_for_flush_and_compaction is true,
371
372
  // the goal is to cache it here for further user reads.
372
- ReadOptions read_options;
373
373
  std::unique_ptr<InternalIterator> it(table_cache->NewIterator(
374
374
  read_options, file_options, tboptions.internal_comparator, *meta,
375
375
  nullptr /* range_del_agg */, mutable_cf_options.prefix_extractor,
@@ -381,7 +381,8 @@ Status BuildTable(
381
381
  MaxFileSizeForL0MetaPin(mutable_cf_options),
382
382
  /*smallest_compaction_key=*/nullptr,
383
383
  /*largest_compaction_key*/ nullptr,
384
- /*allow_unprepared_value*/ false));
384
+ /*allow_unprepared_value*/ false,
385
+ mutable_cf_options.block_protection_bytes_per_key));
385
386
  s = it->status();
386
387
  if (s.ok() && paranoid_file_checks) {
387
388
  OutputValidator file_validator(tboptions.internal_comparator,
@@ -53,8 +53,8 @@ TableBuilder* NewTableBuilder(const TableBuilderOptions& tboptions,
53
53
  extern Status BuildTable(
54
54
  const std::string& dbname, VersionSet* versions,
55
55
  const ImmutableDBOptions& db_options, const TableBuilderOptions& tboptions,
56
- const FileOptions& file_options, TableCache* table_cache,
57
- InternalIterator* iter,
56
+ const FileOptions& file_options, const ReadOptions& read_options,
57
+ TableCache* table_cache, InternalIterator* iter,
58
58
  std::vector<std::unique_ptr<FragmentedRangeTombstoneIterator>>
59
59
  range_del_iters,
60
60
  FileMetaData* meta, std::vector<BlobFileAddition>* blob_file_additions,