@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
@@ -650,6 +650,12 @@ class VersionStorageInfo {
650
650
  // be empty. -1 if it is not level-compaction so it's not applicable.
651
651
  int base_level_;
652
652
 
653
+ // Applies to level compaction when
654
+ // `level_compaction_dynamic_level_bytes=true`. All non-empty levels <=
655
+ // lowest_unnecessary_level_ are not needed and will be drained automatically.
656
+ // -1 if there is no unnecessary level,
657
+ int lowest_unnecessary_level_;
658
+
653
659
  double level_multiplier_;
654
660
 
655
661
  // A list for the same set of files that are stored in files_,
@@ -907,7 +913,7 @@ class Version {
907
913
  // populates derived data structures. Call without mutex held. It needs to be
908
914
  // called before appending the version to the version set.
909
915
  void PrepareAppend(const MutableCFOptions& mutable_cf_options,
910
- bool update_stats);
916
+ const ReadOptions& read_options, bool update_stats);
911
917
 
912
918
  // Reference count management (so Versions do not disappear out from
913
919
  // under live iterators)
@@ -937,7 +943,8 @@ class Version {
937
943
  // specified in "file_meta". If the file name of "file_meta" is
938
944
  // known ahead, passing it by a non-null "fname" can save a
939
945
  // file-name conversion.
940
- Status GetTableProperties(std::shared_ptr<const TableProperties>* tp,
946
+ Status GetTableProperties(const ReadOptions& read_options,
947
+ std::shared_ptr<const TableProperties>* tp,
941
948
  const FileMetaData* file_meta,
942
949
  const std::string* fname = nullptr) const;
943
950
 
@@ -945,9 +952,12 @@ class Version {
945
952
  // On success, *props will be populated with all SSTables' table properties.
946
953
  // The keys of `props` are the sst file name, the values of `props` are the
947
954
  // tables' properties, represented as std::shared_ptr.
948
- Status GetPropertiesOfAllTables(TablePropertiesCollection* props);
949
- Status GetPropertiesOfAllTables(TablePropertiesCollection* props, int level);
950
- Status GetPropertiesOfTablesInRange(const Range* range, std::size_t n,
955
+ Status GetPropertiesOfAllTables(const ReadOptions& read_options,
956
+ TablePropertiesCollection* props);
957
+ Status GetPropertiesOfAllTables(const ReadOptions& read_options,
958
+ TablePropertiesCollection* props, int level);
959
+ Status GetPropertiesOfTablesInRange(const ReadOptions& read_options,
960
+ const Range* range, std::size_t n,
951
961
  TablePropertiesCollection* props) const;
952
962
 
953
963
  // Print summary of range delete tombstones in SST files into out_str,
@@ -959,13 +969,14 @@ class Version {
959
969
  // On success, "tp" will contains the aggregated table property among
960
970
  // the table properties of all sst files in this version.
961
971
  Status GetAggregatedTableProperties(
972
+ const ReadOptions& read_options,
962
973
  std::shared_ptr<const TableProperties>* tp, int level = -1);
963
974
 
964
975
  uint64_t GetEstimatedActiveKeys() {
965
976
  return storage_info_.GetEstimatedActiveKeys();
966
977
  }
967
978
 
968
- size_t GetMemoryUsageByTableReaders();
979
+ size_t GetMemoryUsageByTableReaders(const ReadOptions& read_options);
969
980
 
970
981
  ColumnFamilyData* cfd() const { return cfd_; }
971
982
 
@@ -981,6 +992,9 @@ class Version {
981
992
 
982
993
  void GetColumnFamilyMetaData(ColumnFamilyMetaData* cf_meta);
983
994
 
995
+ void GetSstFilesBoundaryKeys(Slice* smallest_user_key,
996
+ Slice* largest_user_key);
997
+
984
998
  uint64_t GetSstFilesSize();
985
999
 
986
1000
  // Retrieves the file_creation_time of the oldest file in the DB.
@@ -1018,11 +1032,12 @@ class Version {
1018
1032
  // The helper function of UpdateAccumulatedStats, which may fill the missing
1019
1033
  // fields of file_meta from its associated TableProperties.
1020
1034
  // Returns true if it does initialize FileMetaData.
1021
- bool MaybeInitializeFileMetaData(FileMetaData* file_meta);
1035
+ bool MaybeInitializeFileMetaData(const ReadOptions& read_options,
1036
+ FileMetaData* file_meta);
1022
1037
 
1023
1038
  // Update the accumulated stats associated with the current version.
1024
1039
  // This accumulated stats will be used in compaction.
1025
- void UpdateAccumulatedStats();
1040
+ void UpdateAccumulatedStats(const ReadOptions& read_options);
1026
1041
 
1027
1042
  DECLARE_SYNC_AND_ASYNC(
1028
1043
  /* ret_type */ Status, /* func_name */ MultiGetFromSST,
@@ -1130,13 +1145,13 @@ class VersionSet {
1130
1145
  virtual ~VersionSet();
1131
1146
 
1132
1147
  Status LogAndApplyToDefaultColumnFamily(
1133
- VersionEdit* edit, InstrumentedMutex* mu,
1148
+ const ReadOptions& read_options, VersionEdit* edit, InstrumentedMutex* mu,
1134
1149
  FSDirectory* dir_contains_current_file, bool new_descriptor_log = false,
1135
1150
  const ColumnFamilyOptions* column_family_options = nullptr) {
1136
1151
  ColumnFamilyData* default_cf = GetColumnFamilySet()->GetDefault();
1137
1152
  const MutableCFOptions* cf_options =
1138
1153
  default_cf->GetLatestMutableCFOptions();
1139
- return LogAndApply(default_cf, *cf_options, edit, mu,
1154
+ return LogAndApply(default_cf, *cf_options, read_options, edit, mu,
1140
1155
  dir_contains_current_file, new_descriptor_log,
1141
1156
  column_family_options);
1142
1157
  }
@@ -1149,9 +1164,9 @@ class VersionSet {
1149
1164
  // REQUIRES: no other thread concurrently calls LogAndApply()
1150
1165
  Status LogAndApply(
1151
1166
  ColumnFamilyData* column_family_data,
1152
- const MutableCFOptions& mutable_cf_options, VersionEdit* edit,
1153
- InstrumentedMutex* mu, FSDirectory* dir_contains_current_file,
1154
- bool new_descriptor_log = false,
1167
+ const MutableCFOptions& mutable_cf_options,
1168
+ const ReadOptions& read_options, VersionEdit* edit, InstrumentedMutex* mu,
1169
+ FSDirectory* dir_contains_current_file, bool new_descriptor_log = false,
1155
1170
  const ColumnFamilyOptions* column_family_options = nullptr) {
1156
1171
  autovector<ColumnFamilyData*> cfds;
1157
1172
  cfds.emplace_back(column_family_data);
@@ -1161,8 +1176,8 @@ class VersionSet {
1161
1176
  autovector<VersionEdit*> edit_list;
1162
1177
  edit_list.emplace_back(edit);
1163
1178
  edit_lists.emplace_back(edit_list);
1164
- return LogAndApply(cfds, mutable_cf_options_list, edit_lists, mu,
1165
- dir_contains_current_file, new_descriptor_log,
1179
+ return LogAndApply(cfds, mutable_cf_options_list, read_options, edit_lists,
1180
+ mu, dir_contains_current_file, new_descriptor_log,
1166
1181
  column_family_options);
1167
1182
  }
1168
1183
  // The batch version. If edit_list.size() > 1, caller must ensure that
@@ -1170,6 +1185,7 @@ class VersionSet {
1170
1185
  Status LogAndApply(
1171
1186
  ColumnFamilyData* column_family_data,
1172
1187
  const MutableCFOptions& mutable_cf_options,
1188
+ const ReadOptions& read_options,
1173
1189
  const autovector<VersionEdit*>& edit_list, InstrumentedMutex* mu,
1174
1190
  FSDirectory* dir_contains_current_file, bool new_descriptor_log = false,
1175
1191
  const ColumnFamilyOptions* column_family_options = nullptr,
@@ -1180,8 +1196,8 @@ class VersionSet {
1180
1196
  mutable_cf_options_list.emplace_back(&mutable_cf_options);
1181
1197
  autovector<autovector<VersionEdit*>> edit_lists;
1182
1198
  edit_lists.emplace_back(edit_list);
1183
- return LogAndApply(cfds, mutable_cf_options_list, edit_lists, mu,
1184
- dir_contains_current_file, new_descriptor_log,
1199
+ return LogAndApply(cfds, mutable_cf_options_list, read_options, edit_lists,
1200
+ mu, dir_contains_current_file, new_descriptor_log,
1185
1201
  column_family_options, {manifest_wcb});
1186
1202
  }
1187
1203
 
@@ -1191,6 +1207,7 @@ class VersionSet {
1191
1207
  virtual Status LogAndApply(
1192
1208
  const autovector<ColumnFamilyData*>& cfds,
1193
1209
  const autovector<const MutableCFOptions*>& mutable_cf_options_list,
1210
+ const ReadOptions& read_options,
1194
1211
  const autovector<autovector<VersionEdit*>>& edit_lists,
1195
1212
  InstrumentedMutex* mu, FSDirectory* dir_contains_current_file,
1196
1213
  bool new_descriptor_log = false,
@@ -1204,7 +1221,7 @@ class VersionSet {
1204
1221
  uint64_t* manifest_file_number);
1205
1222
  void WakeUpWaitingManifestWriters();
1206
1223
 
1207
- // Recover the last saved descriptor from persistent storage.
1224
+ // Recover the last saved descriptor (MANIFEST) from persistent storage.
1208
1225
  // If read_only == true, Recover() will not complain if some column families
1209
1226
  // are not opened
1210
1227
  Status Recover(const std::vector<ColumnFamilyDescriptor>& column_families,
@@ -1421,7 +1438,8 @@ class VersionSet {
1421
1438
  // Return the approximate size of data to be scanned for range [start, end)
1422
1439
  // in levels [start_level, end_level). If end_level == -1 it will search
1423
1440
  // through all non-empty levels
1424
- uint64_t ApproximateSize(const SizeApproximationOptions& options, Version* v,
1441
+ uint64_t ApproximateSize(const SizeApproximationOptions& options,
1442
+ const ReadOptions& read_options, Version* v,
1425
1443
  const Slice& start, const Slice& end,
1426
1444
  int start_level, int end_level,
1427
1445
  TableReaderCaller caller);
@@ -1481,7 +1499,8 @@ class VersionSet {
1481
1499
  new Version(cfd, this, file_options_, mutable_cf_options, io_tracer_);
1482
1500
 
1483
1501
  constexpr bool update_stats = false;
1484
- version->PrepareAppend(mutable_cf_options, update_stats);
1502
+ const ReadOptions read_options;
1503
+ version->PrepareAppend(mutable_cf_options, read_options, update_stats);
1485
1504
  AppendVersion(cfd, version);
1486
1505
  }
1487
1506
 
@@ -1510,14 +1529,15 @@ class VersionSet {
1510
1529
  void Reset();
1511
1530
 
1512
1531
  // Returns approximated offset of a key in a file for a given version.
1513
- uint64_t ApproximateOffsetOf(Version* v, const FdWithKeyRange& f,
1514
- const Slice& key, TableReaderCaller caller);
1532
+ uint64_t ApproximateOffsetOf(const ReadOptions& read_options, Version* v,
1533
+ const FdWithKeyRange& f, const Slice& key,
1534
+ TableReaderCaller caller);
1515
1535
 
1516
1536
  // Returns approximated data size between start and end keys in a file
1517
1537
  // for a given version.
1518
- uint64_t ApproximateSize(Version* v, const FdWithKeyRange& f,
1519
- const Slice& start, const Slice& end,
1520
- TableReaderCaller caller);
1538
+ uint64_t ApproximateSize(const ReadOptions& read_options, Version* v,
1539
+ const FdWithKeyRange& f, const Slice& start,
1540
+ const Slice& end, TableReaderCaller caller);
1521
1541
 
1522
1542
  struct MutableCFState {
1523
1543
  uint64_t log_number;
@@ -1536,9 +1556,11 @@ class VersionSet {
1536
1556
  void AppendVersion(ColumnFamilyData* column_family_data, Version* v);
1537
1557
 
1538
1558
  ColumnFamilyData* CreateColumnFamily(const ColumnFamilyOptions& cf_options,
1559
+ const ReadOptions& read_options,
1539
1560
  const VersionEdit* edit);
1540
1561
 
1541
- Status VerifyFileMetadata(ColumnFamilyData* cfd, const std::string& fpath,
1562
+ Status VerifyFileMetadata(const ReadOptions& read_options,
1563
+ ColumnFamilyData* cfd, const std::string& fpath,
1542
1564
  int level, const FileMetaData& meta);
1543
1565
 
1544
1566
  // Protected by DB mutex.
@@ -1614,7 +1636,8 @@ class VersionSet {
1614
1636
  InstrumentedMutex* mu,
1615
1637
  FSDirectory* dir_contains_current_file,
1616
1638
  bool new_descriptor_log,
1617
- const ColumnFamilyOptions* new_cf_options);
1639
+ const ColumnFamilyOptions* new_cf_options,
1640
+ const ReadOptions& read_options);
1618
1641
 
1619
1642
  void LogAndApplyCFHelper(VersionEdit* edit,
1620
1643
  SequenceNumber* max_last_sequence);
@@ -1666,13 +1689,15 @@ class ReactiveVersionSet : public VersionSet {
1666
1689
 
1667
1690
  private:
1668
1691
  std::unique_ptr<ManifestTailer> manifest_tailer_;
1669
-
1692
+ // TODO: plumb Env::IOActivity
1693
+ const ReadOptions read_options_;
1670
1694
  using VersionSet::LogAndApply;
1671
1695
  using VersionSet::Recover;
1672
1696
 
1673
1697
  Status LogAndApply(
1674
1698
  const autovector<ColumnFamilyData*>& /*cfds*/,
1675
1699
  const autovector<const MutableCFOptions*>& /*mutable_cf_options_list*/,
1700
+ const ReadOptions& /* read_options */,
1676
1701
  const autovector<autovector<VersionEdit*>>& /*edit_lists*/,
1677
1702
  InstrumentedMutex* /*mu*/, FSDirectory* /*dir_contains_current_file*/,
1678
1703
  bool /*new_descriptor_log*/, const ColumnFamilyOptions* /*new_cf_option*/,
@@ -25,6 +25,7 @@ DEFINE_SYNC_AND_ASYNC(Status, Version::MultiGetFromSST)
25
25
  StopWatchNano timer(clock_, timer_enabled /* auto_start */);
26
26
  s = CO_AWAIT(table_cache_->MultiGet)(
27
27
  read_options, *internal_comparator(), *f->file_metadata, &file_range,
28
+ mutable_cf_options_.block_protection_bytes_per_key,
28
29
  mutable_cf_options_.prefix_extractor,
29
30
  cfd_->internal_stats()->GetFileReadHist(hit_file_level), skip_filters,
30
31
  skip_range_deletions, hit_file_level, table_handle);
@@ -51,7 +51,7 @@ class GenerateLevelFilesBriefTest : public testing::Test {
51
51
  largest_seq, /* marked_for_compact */ false, Temperature::kUnknown,
52
52
  kInvalidBlobFileNumber, kUnknownOldestAncesterTime,
53
53
  kUnknownFileCreationTime, kUnknownEpochNumber, kUnknownFileChecksum,
54
- kUnknownFileChecksumFuncName, kNullUniqueId64x2, 0);
54
+ kUnknownFileChecksumFuncName, kNullUniqueId64x2, 0, 0);
55
55
  files_.push_back(f);
56
56
  }
57
57
 
@@ -163,7 +163,7 @@ class VersionStorageInfoTestBase : public testing::Test {
163
163
  Temperature::kUnknown, oldest_blob_file_number,
164
164
  kUnknownOldestAncesterTime, kUnknownFileCreationTime,
165
165
  kUnknownEpochNumber, kUnknownFileChecksum, kUnknownFileChecksumFuncName,
166
- kNullUniqueId64x2, compensated_range_deletion_size);
166
+ kNullUniqueId64x2, compensated_range_deletion_size, 0);
167
167
  vstorage_.AddFile(level, f);
168
168
  }
169
169
 
@@ -454,6 +454,37 @@ TEST_F(VersionStorageInfoTest, MaxBytesForLevelDynamicWithLargeL0_3) {
454
454
  ASSERT_EQ(4, vstorage_.CompactionScoreLevel(2));
455
455
  }
456
456
 
457
+ TEST_F(VersionStorageInfoTest, DrainUnnecessaryLevel) {
458
+ ioptions_.level_compaction_dynamic_level_bytes = true;
459
+ mutable_cf_options_.max_bytes_for_level_base = 1000;
460
+ mutable_cf_options_.max_bytes_for_level_multiplier = 10;
461
+
462
+ // Create a few unnecessary levels.
463
+ // See if score is calculated correctly.
464
+ Add(5, 1U, "1", "2", 2000U); // target size 1010000
465
+ Add(4, 2U, "1", "2", 200U); // target size 101000
466
+ // Unnecessary levels
467
+ Add(3, 3U, "1", "2", 100U); // target size 10100
468
+ // Level 2: target size 1010
469
+ Add(1, 4U, "1", "2",
470
+ 10U); // target size 1000 = max(base_bytes_min + 1, base_bytes_max)
471
+
472
+ UpdateVersionStorageInfo();
473
+
474
+ ASSERT_EQ(1, vstorage_.base_level());
475
+ ASSERT_EQ(1000, vstorage_.MaxBytesForLevel(1));
476
+ ASSERT_EQ(10100, vstorage_.MaxBytesForLevel(3));
477
+ vstorage_.ComputeCompactionScore(ioptions_, mutable_cf_options_);
478
+
479
+ // Tests that levels 1 and 3 are eligible for compaction.
480
+ // Levels 1 and 3 are much smaller than target size,
481
+ // so size does not contribute to a high compaction score.
482
+ ASSERT_EQ(1, vstorage_.CompactionScoreLevel(0));
483
+ ASSERT_GT(vstorage_.CompactionScore(0), 10);
484
+ ASSERT_EQ(3, vstorage_.CompactionScoreLevel(1));
485
+ ASSERT_GT(vstorage_.CompactionScore(1), 10);
486
+ }
487
+
457
488
  TEST_F(VersionStorageInfoTest, EstimateLiveDataSize) {
458
489
  // Test whether the overlaps are detected as expected
459
490
  Add(1, 1U, "4", "7", 1U); // Perfect overlap with last level
@@ -1276,9 +1307,9 @@ class VersionSetTestBase {
1276
1307
 
1277
1308
  Status LogAndApplyToDefaultCF(VersionEdit& edit) {
1278
1309
  mutex_.Lock();
1279
- Status s =
1280
- versions_->LogAndApply(versions_->GetColumnFamilySet()->GetDefault(),
1281
- mutable_cf_options_, &edit, &mutex_, nullptr);
1310
+ Status s = versions_->LogAndApply(
1311
+ versions_->GetColumnFamilySet()->GetDefault(), mutable_cf_options_,
1312
+ read_options_, &edit, &mutex_, nullptr);
1282
1313
  mutex_.Unlock();
1283
1314
  return s;
1284
1315
  }
@@ -1290,9 +1321,9 @@ class VersionSetTestBase {
1290
1321
  vedits.push_back(e.get());
1291
1322
  }
1292
1323
  mutex_.Lock();
1293
- Status s =
1294
- versions_->LogAndApply(versions_->GetColumnFamilySet()->GetDefault(),
1295
- mutable_cf_options_, vedits, &mutex_, nullptr);
1324
+ Status s = versions_->LogAndApply(
1325
+ versions_->GetColumnFamilySet()->GetDefault(), mutable_cf_options_,
1326
+ read_options_, vedits, &mutex_, nullptr);
1296
1327
  mutex_.Unlock();
1297
1328
  return s;
1298
1329
  }
@@ -1304,7 +1335,7 @@ class VersionSetTestBase {
1304
1335
  VersionEdit dummy;
1305
1336
  ASSERT_OK(versions_->LogAndApply(
1306
1337
  versions_->GetColumnFamilySet()->GetDefault(), mutable_cf_options_,
1307
- &dummy, &mutex_, db_directory, new_descriptor_log));
1338
+ read_options_, &dummy, &mutex_, db_directory, new_descriptor_log));
1308
1339
  mutex_.Unlock();
1309
1340
  }
1310
1341
 
@@ -1319,7 +1350,8 @@ class VersionSetTestBase {
1319
1350
  Status s;
1320
1351
  mutex_.Lock();
1321
1352
  s = versions_->LogAndApply(/*column_family_data=*/nullptr,
1322
- MutableCFOptions(cf_options), &new_cf, &mutex_,
1353
+ MutableCFOptions(cf_options), read_options_,
1354
+ &new_cf, &mutex_,
1323
1355
  /*db_directory=*/nullptr,
1324
1356
  /*new_descriptor_log=*/false, &cf_options);
1325
1357
  mutex_.Unlock();
@@ -1341,6 +1373,7 @@ class VersionSetTestBase {
1341
1373
  ColumnFamilyOptions cf_options_;
1342
1374
  ImmutableOptions immutable_options_;
1343
1375
  MutableCFOptions mutable_cf_options_;
1376
+ const ReadOptions read_options_;
1344
1377
  std::shared_ptr<Cache> table_cache_;
1345
1378
  WriteController write_controller_;
1346
1379
  WriteBufferManager write_buffer_manager_;
@@ -1364,6 +1397,8 @@ class VersionSetTest : public VersionSetTestBase, public testing::Test {
1364
1397
  TEST_F(VersionSetTest, SameColumnFamilyGroupCommit) {
1365
1398
  NewDB();
1366
1399
  const int kGroupSize = 5;
1400
+ const ReadOptions read_options;
1401
+
1367
1402
  autovector<VersionEdit> edits;
1368
1403
  for (int i = 0; i != kGroupSize; ++i) {
1369
1404
  edits.emplace_back(VersionEdit());
@@ -1390,8 +1425,8 @@ TEST_F(VersionSetTest, SameColumnFamilyGroupCommit) {
1390
1425
  });
1391
1426
  SyncPoint::GetInstance()->EnableProcessing();
1392
1427
  mutex_.Lock();
1393
- Status s = versions_->LogAndApply(cfds, all_mutable_cf_options, edit_lists,
1394
- &mutex_, nullptr);
1428
+ Status s = versions_->LogAndApply(cfds, all_mutable_cf_options, read_options,
1429
+ edit_lists, &mutex_, nullptr);
1395
1430
  mutex_.Unlock();
1396
1431
  EXPECT_OK(s);
1397
1432
  EXPECT_EQ(kGroupSize - 1, count);
@@ -1591,9 +1626,9 @@ TEST_F(VersionSetTest, ObsoleteBlobFile) {
1591
1626
  edit.AddBlobFileGarbage(blob_file_number, total_blob_count, total_blob_bytes);
1592
1627
 
1593
1628
  mutex_.Lock();
1594
- Status s =
1595
- versions_->LogAndApply(versions_->GetColumnFamilySet()->GetDefault(),
1596
- mutable_cf_options_, &edit, &mutex_, nullptr);
1629
+ Status s = versions_->LogAndApply(
1630
+ versions_->GetColumnFamilySet()->GetDefault(), mutable_cf_options_,
1631
+ read_options_, &edit, &mutex_, nullptr);
1597
1632
  mutex_.Unlock();
1598
1633
 
1599
1634
  ASSERT_OK(s);
@@ -2211,7 +2246,7 @@ class VersionSetWithTimestampTest : public VersionSetTest {
2211
2246
  Status s;
2212
2247
  mutex_.Lock();
2213
2248
  s = versions_->LogAndApply(cfd_, *(cfd_->GetLatestMutableCFOptions()),
2214
- edits_, &mutex_, nullptr);
2249
+ read_options_, edits_, &mutex_, nullptr);
2215
2250
  mutex_.Unlock();
2216
2251
  ASSERT_OK(s);
2217
2252
  VerifyFullHistoryTsLow(*std::max_element(ts_lbs.begin(), ts_lbs.end()));
@@ -2221,6 +2256,9 @@ class VersionSetWithTimestampTest : public VersionSetTest {
2221
2256
  ColumnFamilyData* cfd_{nullptr};
2222
2257
  // edits_ must contain and own pointers to heap-alloc VersionEdit objects.
2223
2258
  autovector<VersionEdit*> edits_;
2259
+
2260
+ private:
2261
+ const ReadOptions read_options_;
2224
2262
  };
2225
2263
 
2226
2264
  const std::string VersionSetWithTimestampTest::kNewCfName("new_cf");
@@ -2649,6 +2687,8 @@ class VersionSetTestDropOneCF : public VersionSetTestBase,
2649
2687
  // Repeat the test for i = 1, 2, 3 to simulate dropping the first, middle and
2650
2688
  // last column family in an atomic group.
2651
2689
  TEST_P(VersionSetTestDropOneCF, HandleDroppedColumnFamilyInAtomicGroup) {
2690
+ const ReadOptions read_options;
2691
+
2652
2692
  std::vector<ColumnFamilyDescriptor> column_families;
2653
2693
  SequenceNumber last_seqno;
2654
2694
  std::unique_ptr<log::Writer> log_writer;
@@ -2678,7 +2718,7 @@ TEST_P(VersionSetTestDropOneCF, HandleDroppedColumnFamilyInAtomicGroup) {
2678
2718
  mutex_.Lock();
2679
2719
  s = versions_->LogAndApply(cfd_to_drop,
2680
2720
  *cfd_to_drop->GetLatestMutableCFOptions(),
2681
- &drop_cf_edit, &mutex_, nullptr);
2721
+ read_options, &drop_cf_edit, &mutex_, nullptr);
2682
2722
  mutex_.Unlock();
2683
2723
  ASSERT_OK(s);
2684
2724
 
@@ -2727,8 +2767,8 @@ TEST_P(VersionSetTestDropOneCF, HandleDroppedColumnFamilyInAtomicGroup) {
2727
2767
  });
2728
2768
  SyncPoint::GetInstance()->EnableProcessing();
2729
2769
  mutex_.Lock();
2730
- s = versions_->LogAndApply(cfds, mutable_cf_options_list, edit_lists, &mutex_,
2731
- nullptr);
2770
+ s = versions_->LogAndApply(cfds, mutable_cf_options_list, read_options,
2771
+ edit_lists, &mutex_, nullptr);
2732
2772
  mutex_.Unlock();
2733
2773
  ASSERT_OK(s);
2734
2774
  ASSERT_EQ(1, called);
@@ -3256,7 +3296,7 @@ class VersionSetTestMissingFiles : public VersionSetTestBase,
3256
3296
  ikey, 0, 0, false, Temperature::kUnknown, 0, 0,
3257
3297
  0, info.epoch_number, kUnknownFileChecksum,
3258
3298
  kUnknownFileChecksumFuncName, kNullUniqueId64x2,
3259
- 0);
3299
+ 0, 0);
3260
3300
  }
3261
3301
  }
3262
3302
 
@@ -3313,7 +3353,7 @@ TEST_F(VersionSetTestMissingFiles, ManifestFarBehindSst) {
3313
3353
  file_num, /*file_path_id=*/0, /*file_size=*/12, smallest_ikey,
3314
3354
  largest_ikey, 0, 0, false, Temperature::kUnknown, 0, 0, 0,
3315
3355
  file_num /* epoch_number */, kUnknownFileChecksum,
3316
- kUnknownFileChecksumFuncName, kNullUniqueId64x2, 0);
3356
+ kUnknownFileChecksumFuncName, kNullUniqueId64x2, 0, 0);
3317
3357
  added_files.emplace_back(0, meta);
3318
3358
  }
3319
3359
  WriteFileAdditionAndDeletionToManifest(
@@ -3374,7 +3414,7 @@ TEST_F(VersionSetTestMissingFiles, ManifestAheadofSst) {
3374
3414
  file_num, /*file_path_id=*/0, /*file_size=*/12, smallest_ikey,
3375
3415
  largest_ikey, 0, 0, false, Temperature::kUnknown, 0, 0, 0,
3376
3416
  file_num /* epoch_number */, kUnknownFileChecksum,
3377
- kUnknownFileChecksumFuncName, kNullUniqueId64x2, 0);
3417
+ kUnknownFileChecksumFuncName, kNullUniqueId64x2, 0, 0);
3378
3418
  added_files.emplace_back(0, meta);
3379
3419
  }
3380
3420
  WriteFileAdditionAndDeletionToManifest(
@@ -33,14 +33,15 @@ class OfflineManifestWriter {
33
33
  /*no_error_if_files_missing*/ true);
34
34
  }
35
35
 
36
- Status LogAndApply(ColumnFamilyData* cfd, VersionEdit* edit,
36
+ Status LogAndApply(const ReadOptions& read_options, ColumnFamilyData* cfd,
37
+ VersionEdit* edit,
37
38
  FSDirectory* dir_contains_current_file) {
38
39
  // Use `mutex` to imitate a locked DB mutex when calling `LogAndApply()`.
39
40
  InstrumentedMutex mutex;
40
41
  mutex.Lock();
41
- Status s = versions_.LogAndApply(cfd, *cfd->GetLatestMutableCFOptions(),
42
- edit, &mutex, dir_contains_current_file,
43
- false /* new_descriptor_log */);
42
+ Status s = versions_.LogAndApply(
43
+ cfd, *cfd->GetLatestMutableCFOptions(), read_options, edit, &mutex,
44
+ dir_contains_current_file, false /* new_descriptor_log */);
44
45
  mutex.Unlock();
45
46
  return s;
46
47
  }
@@ -59,7 +59,7 @@
59
59
  #include "db/wide/wide_column_serialization.h"
60
60
  #include "db/write_batch_internal.h"
61
61
  #include "monitoring/perf_context_imp.h"
62
- #include "monitoring/statistics.h"
62
+ #include "monitoring/statistics_impl.h"
63
63
  #include "port/lang.h"
64
64
  #include "rocksdb/merge_operator.h"
65
65
  #include "rocksdb/system_clock.h"
@@ -2036,6 +2036,7 @@ class MemTableInserter : public WriteBatch::Handler {
2036
2036
  // key not found in memtable. Do sst get, update, add
2037
2037
  SnapshotImpl read_from_snapshot;
2038
2038
  read_from_snapshot.number_ = sequence_;
2039
+ // TODO: plumb Env::IOActivity
2039
2040
  ReadOptions ropts;
2040
2041
  // it's going to be overwritten for sure, so no point caching data block
2041
2042
  // containing the old version
@@ -2480,6 +2481,7 @@ class MemTableInserter : public WriteBatch::Handler {
2480
2481
  // operations in the same batch.
2481
2482
  SnapshotImpl read_from_snapshot;
2482
2483
  read_from_snapshot.number_ = sequence_;
2484
+ // TODO: plumb Env::IOActivity
2483
2485
  ReadOptions read_options;
2484
2486
  read_options.snapshot = &read_from_snapshot;
2485
2487
 
@@ -11,6 +11,7 @@ add_executable(db_stress${ARTIFACT_SUFFIX}
11
11
  db_stress_test_base.cc
12
12
  db_stress_tool.cc
13
13
  expected_state.cc
14
+ expected_value.cc
14
15
  multi_ops_txns_stress.cc
15
16
  no_batched_ops_stress.cc)
16
17
  target_link_libraries(db_stress${ARTIFACT_SUFFIX} ${ROCKSDB_LIB} ${THIRDPARTY_LIBS})