@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
@@ -148,7 +148,7 @@ class CompactionPickerTestBase : public testing::Test {
148
148
  smallest_seq, largest_seq, marked_for_compact, temperature,
149
149
  kInvalidBlobFileNumber, kUnknownOldestAncesterTime,
150
150
  kUnknownFileCreationTime, epoch_number, kUnknownFileChecksum,
151
- kUnknownFileChecksumFuncName, kNullUniqueId64x2, 0);
151
+ kUnknownFileChecksumFuncName, kNullUniqueId64x2, 0, 0);
152
152
  f->compensated_file_size =
153
153
  (compensated_file_size != 0) ? compensated_file_size : file_size;
154
154
  f->oldest_ancester_time = oldest_ancestor_time;
@@ -1005,29 +1005,28 @@ TEST_F(CompactionPickerTest, NeedsCompactionFIFO) {
1005
1005
  }
1006
1006
  }
1007
1007
 
1008
- TEST_F(CompactionPickerTest, FIFOToWarm1) {
1008
+ TEST_F(CompactionPickerTest, FIFOToCold1) {
1009
1009
  NewVersionStorage(1, kCompactionStyleFIFO);
1010
1010
  const uint64_t kFileSize = 100000;
1011
1011
  const uint64_t kMaxSize = kFileSize * 100000;
1012
- uint64_t kWarmThreshold = 2000;
1012
+ uint64_t kColdThreshold = 2000;
1013
1013
 
1014
1014
  fifo_options_.max_table_files_size = kMaxSize;
1015
- fifo_options_.age_for_warm = kWarmThreshold;
1015
+ fifo_options_.file_temperature_age_thresholds = {
1016
+ {Temperature::kCold, kColdThreshold}};
1016
1017
  mutable_cf_options_.compaction_options_fifo = fifo_options_;
1017
- mutable_cf_options_.level0_file_num_compaction_trigger = 2;
1018
+ mutable_cf_options_.level0_file_num_compaction_trigger = 100;
1018
1019
  mutable_cf_options_.max_compaction_bytes = kFileSize * 100;
1019
1020
  FIFOCompactionPicker fifo_compaction_picker(ioptions_, &icmp_);
1020
1021
 
1021
1022
  int64_t current_time = 0;
1022
1023
  ASSERT_OK(Env::Default()->GetCurrentTime(&current_time));
1023
1024
  uint64_t threshold_time =
1024
- static_cast<uint64_t>(current_time) - kWarmThreshold;
1025
- Add(0, 6U, "240", "290", 2 * kFileSize, 0, 2900, 3000, 0, true,
1026
- Temperature::kUnknown, static_cast<uint64_t>(current_time) - 100);
1027
- Add(0, 5U, "240", "290", 2 * kFileSize, 0, 2700, 2800, 0, true,
1028
- Temperature::kUnknown, threshold_time + 100);
1029
- Add(0, 4U, "260", "300", 1 * kFileSize, 0, 2500, 2600, 0, true,
1030
- Temperature::kUnknown, threshold_time - 2000);
1025
+ static_cast<uint64_t>(current_time) - kColdThreshold;
1026
+ Add(0 /* level */, 4U /* file_number */, "260", "300", 1 * kFileSize, 0, 2500,
1027
+ 2600, 0, true, Temperature::kUnknown,
1028
+ threshold_time - 2000 /* oldest_ancestor_time */);
1029
+ // Qualifies for compaction to kCold.
1031
1030
  Add(0, 3U, "200", "300", 4 * kFileSize, 0, 2300, 2400, 0, true,
1032
1031
  Temperature::kUnknown, threshold_time - 3000);
1033
1032
  UpdateVersionStorageInfo();
@@ -1037,33 +1036,36 @@ TEST_F(CompactionPickerTest, FIFOToWarm1) {
1037
1036
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
1038
1037
  &log_buffer_));
1039
1038
  ASSERT_TRUE(compaction.get() != nullptr);
1039
+ ASSERT_EQ(compaction->compaction_reason(),
1040
+ CompactionReason::kChangeTemperature);
1041
+ ASSERT_EQ(compaction->output_temperature(), Temperature::kCold);
1040
1042
  ASSERT_EQ(1U, compaction->num_input_files(0));
1041
1043
  ASSERT_EQ(3U, compaction->input(0, 0)->fd.GetNumber());
1042
1044
  }
1043
1045
 
1044
- TEST_F(CompactionPickerTest, FIFOToWarm2) {
1046
+ TEST_F(CompactionPickerTest, FIFOToCold2) {
1045
1047
  NewVersionStorage(1, kCompactionStyleFIFO);
1046
1048
  const uint64_t kFileSize = 100000;
1047
1049
  const uint64_t kMaxSize = kFileSize * 100000;
1048
- uint64_t kWarmThreshold = 2000;
1050
+ uint64_t kColdThreshold = 2000;
1049
1051
 
1050
1052
  fifo_options_.max_table_files_size = kMaxSize;
1051
- fifo_options_.age_for_warm = kWarmThreshold;
1053
+ fifo_options_.file_temperature_age_thresholds = {
1054
+ {Temperature::kCold, kColdThreshold}};
1052
1055
  mutable_cf_options_.compaction_options_fifo = fifo_options_;
1053
- mutable_cf_options_.level0_file_num_compaction_trigger = 2;
1056
+ mutable_cf_options_.level0_file_num_compaction_trigger = 100;
1054
1057
  mutable_cf_options_.max_compaction_bytes = kFileSize * 100;
1055
1058
  FIFOCompactionPicker fifo_compaction_picker(ioptions_, &icmp_);
1056
1059
 
1057
1060
  int64_t current_time = 0;
1058
1061
  ASSERT_OK(Env::Default()->GetCurrentTime(&current_time));
1059
1062
  uint64_t threshold_time =
1060
- static_cast<uint64_t>(current_time) - kWarmThreshold;
1063
+ static_cast<uint64_t>(current_time) - kColdThreshold;
1061
1064
  Add(0, 6U, "240", "290", 2 * kFileSize, 0, 2900, 3000, 0, true,
1062
1065
  Temperature::kUnknown, static_cast<uint64_t>(current_time) - 100);
1063
- Add(0, 5U, "240", "290", 2 * kFileSize, 0, 2700, 2800, 0, true,
1064
- Temperature::kUnknown, threshold_time + 100);
1065
1066
  Add(0, 4U, "260", "300", 1 * kFileSize, 0, 2500, 2600, 0, true,
1066
- Temperature::kUnknown, threshold_time - 2000);
1067
+ Temperature::kUnknown, threshold_time);
1068
+ // The following two files qualify for compaction to kCold.
1067
1069
  Add(0, 3U, "200", "300", 4 * kFileSize, 0, 2300, 2400, 0, true,
1068
1070
  Temperature::kUnknown, threshold_time - 3000);
1069
1071
  Add(0, 2U, "200", "300", 4 * kFileSize, 0, 2100, 2200, 0, true,
@@ -1075,34 +1077,40 @@ TEST_F(CompactionPickerTest, FIFOToWarm2) {
1075
1077
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
1076
1078
  &log_buffer_));
1077
1079
  ASSERT_TRUE(compaction.get() != nullptr);
1080
+ ASSERT_EQ(compaction->compaction_reason(),
1081
+ CompactionReason::kChangeTemperature);
1082
+ ASSERT_EQ(compaction->output_temperature(), Temperature::kCold);
1078
1083
  ASSERT_EQ(2U, compaction->num_input_files(0));
1079
1084
  ASSERT_EQ(2U, compaction->input(0, 0)->fd.GetNumber());
1080
1085
  ASSERT_EQ(3U, compaction->input(0, 1)->fd.GetNumber());
1081
1086
  }
1082
1087
 
1083
- TEST_F(CompactionPickerTest, FIFOToWarmMaxSize) {
1088
+ TEST_F(CompactionPickerTest, FIFOToColdMaxCompactionSize) {
1084
1089
  NewVersionStorage(1, kCompactionStyleFIFO);
1085
1090
  const uint64_t kFileSize = 100000;
1086
1091
  const uint64_t kMaxSize = kFileSize * 100000;
1087
- uint64_t kWarmThreshold = 2000;
1092
+ uint64_t kColdThreshold = 2000;
1088
1093
 
1089
1094
  fifo_options_.max_table_files_size = kMaxSize;
1090
- fifo_options_.age_for_warm = kWarmThreshold;
1095
+ fifo_options_.file_temperature_age_thresholds = {
1096
+ {Temperature::kCold, kColdThreshold}};
1091
1097
  mutable_cf_options_.compaction_options_fifo = fifo_options_;
1092
- mutable_cf_options_.level0_file_num_compaction_trigger = 2;
1098
+ mutable_cf_options_.level0_file_num_compaction_trigger = 100;
1093
1099
  mutable_cf_options_.max_compaction_bytes = kFileSize * 9;
1094
1100
  FIFOCompactionPicker fifo_compaction_picker(ioptions_, &icmp_);
1095
1101
 
1096
1102
  int64_t current_time = 0;
1097
1103
  ASSERT_OK(Env::Default()->GetCurrentTime(&current_time));
1098
1104
  uint64_t threshold_time =
1099
- static_cast<uint64_t>(current_time) - kWarmThreshold;
1105
+ static_cast<uint64_t>(current_time) - kColdThreshold;
1100
1106
  Add(0, 6U, "240", "290", 2 * kFileSize, 0, 2900, 3000, 0, true,
1101
1107
  Temperature::kUnknown, static_cast<uint64_t>(current_time) - 100);
1102
1108
  Add(0, 5U, "240", "290", 2 * kFileSize, 0, 2700, 2800, 0, true,
1103
1109
  Temperature::kUnknown, threshold_time + 100);
1104
1110
  Add(0, 4U, "260", "300", 1 * kFileSize, 0, 2500, 2600, 0, true,
1105
1111
  Temperature::kUnknown, threshold_time - 2000);
1112
+ // The following two files qualify for compaction to kCold.
1113
+ // But only the last two should be included to respect `max_compaction_bytes`.
1106
1114
  Add(0, 3U, "200", "300", 4 * kFileSize, 0, 2300, 2400, 0, true,
1107
1115
  Temperature::kUnknown, threshold_time - 3000);
1108
1116
  Add(0, 2U, "200", "300", 4 * kFileSize, 0, 2100, 2200, 0, true,
@@ -1116,40 +1124,45 @@ TEST_F(CompactionPickerTest, FIFOToWarmMaxSize) {
1116
1124
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
1117
1125
  &log_buffer_));
1118
1126
  ASSERT_TRUE(compaction.get() != nullptr);
1127
+ ASSERT_EQ(compaction->compaction_reason(),
1128
+ CompactionReason::kChangeTemperature);
1129
+ ASSERT_EQ(compaction->output_temperature(), Temperature::kCold);
1119
1130
  ASSERT_EQ(2U, compaction->num_input_files(0));
1120
1131
  ASSERT_EQ(1U, compaction->input(0, 0)->fd.GetNumber());
1121
1132
  ASSERT_EQ(2U, compaction->input(0, 1)->fd.GetNumber());
1122
1133
  }
1123
1134
 
1124
- TEST_F(CompactionPickerTest, FIFOToWarmWithExistingWarm) {
1135
+ TEST_F(CompactionPickerTest, FIFOToColdWithExistingCold) {
1125
1136
  NewVersionStorage(1, kCompactionStyleFIFO);
1126
1137
  const uint64_t kFileSize = 100000;
1127
1138
  const uint64_t kMaxSize = kFileSize * 100000;
1128
- uint64_t kWarmThreshold = 2000;
1139
+ uint64_t kColdThreshold = 2000;
1129
1140
 
1130
1141
  fifo_options_.max_table_files_size = kMaxSize;
1131
- fifo_options_.age_for_warm = kWarmThreshold;
1142
+ fifo_options_.file_temperature_age_thresholds = {
1143
+ {Temperature::kCold, kColdThreshold}};
1132
1144
  mutable_cf_options_.compaction_options_fifo = fifo_options_;
1133
- mutable_cf_options_.level0_file_num_compaction_trigger = 2;
1145
+ mutable_cf_options_.level0_file_num_compaction_trigger = 100;
1134
1146
  mutable_cf_options_.max_compaction_bytes = kFileSize * 100;
1135
1147
  FIFOCompactionPicker fifo_compaction_picker(ioptions_, &icmp_);
1136
1148
 
1137
1149
  int64_t current_time = 0;
1138
1150
  ASSERT_OK(Env::Default()->GetCurrentTime(&current_time));
1139
1151
  uint64_t threshold_time =
1140
- static_cast<uint64_t>(current_time) - kWarmThreshold;
1152
+ static_cast<uint64_t>(current_time) - kColdThreshold;
1141
1153
  Add(0, 6U, "240", "290", 2 * kFileSize, 0, 2900, 3000, 0, true,
1142
1154
  Temperature::kUnknown, static_cast<uint64_t>(current_time) - 100);
1143
1155
  Add(0, 5U, "240", "290", 2 * kFileSize, 0, 2700, 2800, 0, true,
1144
1156
  Temperature::kUnknown, threshold_time + 100);
1145
1157
  Add(0, 4U, "260", "300", 1 * kFileSize, 0, 2500, 2600, 0, true,
1146
1158
  Temperature::kUnknown, threshold_time - 2000);
1159
+ // The following two files qualify for compaction to kCold.
1147
1160
  Add(0, 3U, "200", "300", 4 * kFileSize, 0, 2300, 2400, 0, true,
1148
1161
  Temperature::kUnknown, threshold_time - 3000);
1149
1162
  Add(0, 2U, "200", "300", 4 * kFileSize, 0, 2100, 2200, 0, true,
1150
1163
  Temperature::kUnknown, threshold_time - 4000);
1151
1164
  Add(0, 1U, "200", "300", 4 * kFileSize, 0, 2000, 2100, 0, true,
1152
- Temperature::kWarm, threshold_time - 5000);
1165
+ Temperature::kCold, threshold_time - 5000);
1153
1166
  UpdateVersionStorageInfo();
1154
1167
 
1155
1168
  ASSERT_EQ(fifo_compaction_picker.NeedsCompaction(vstorage_.get()), true);
@@ -1157,28 +1170,32 @@ TEST_F(CompactionPickerTest, FIFOToWarmWithExistingWarm) {
1157
1170
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
1158
1171
  &log_buffer_));
1159
1172
  ASSERT_TRUE(compaction.get() != nullptr);
1160
- ASSERT_EQ(2U, compaction->num_input_files(0));
1173
+ ASSERT_EQ(compaction->compaction_reason(),
1174
+ CompactionReason::kChangeTemperature);
1175
+ ASSERT_EQ(compaction->output_temperature(), Temperature::kCold);
1161
1176
  ASSERT_EQ(2U, compaction->input(0, 0)->fd.GetNumber());
1177
+ ASSERT_EQ(2U, compaction->num_input_files(0));
1162
1178
  ASSERT_EQ(3U, compaction->input(0, 1)->fd.GetNumber());
1163
1179
  }
1164
1180
 
1165
- TEST_F(CompactionPickerTest, FIFOToWarmWithOngoing) {
1181
+ TEST_F(CompactionPickerTest, FIFOToColdWithHotBetweenCold) {
1166
1182
  NewVersionStorage(1, kCompactionStyleFIFO);
1167
1183
  const uint64_t kFileSize = 100000;
1168
1184
  const uint64_t kMaxSize = kFileSize * 100000;
1169
- uint64_t kWarmThreshold = 2000;
1185
+ uint64_t kColdThreshold = 2000;
1170
1186
 
1171
1187
  fifo_options_.max_table_files_size = kMaxSize;
1172
- fifo_options_.age_for_warm = kWarmThreshold;
1188
+ fifo_options_.file_temperature_age_thresholds = {
1189
+ {Temperature::kCold, kColdThreshold}};
1173
1190
  mutable_cf_options_.compaction_options_fifo = fifo_options_;
1174
- mutable_cf_options_.level0_file_num_compaction_trigger = 2;
1191
+ mutable_cf_options_.level0_file_num_compaction_trigger = 100;
1175
1192
  mutable_cf_options_.max_compaction_bytes = kFileSize * 100;
1176
1193
  FIFOCompactionPicker fifo_compaction_picker(ioptions_, &icmp_);
1177
1194
 
1178
1195
  int64_t current_time = 0;
1179
1196
  ASSERT_OK(Env::Default()->GetCurrentTime(&current_time));
1180
1197
  uint64_t threshold_time =
1181
- static_cast<uint64_t>(current_time) - kWarmThreshold;
1198
+ static_cast<uint64_t>(current_time) - kColdThreshold;
1182
1199
  Add(0, 6U, "240", "290", 2 * kFileSize, 0, 2900, 3000, 0, true,
1183
1200
  Temperature::kUnknown, static_cast<uint64_t>(current_time) - 100);
1184
1201
  Add(0, 5U, "240", "290", 2 * kFileSize, 0, 2700, 2800, 0, true,
@@ -1186,64 +1203,78 @@ TEST_F(CompactionPickerTest, FIFOToWarmWithOngoing) {
1186
1203
  Add(0, 4U, "260", "300", 1 * kFileSize, 0, 2500, 2600, 0, true,
1187
1204
  Temperature::kUnknown, threshold_time - 2000);
1188
1205
  Add(0, 3U, "200", "300", 4 * kFileSize, 0, 2300, 2400, 0, true,
1189
- Temperature::kUnknown, threshold_time - 3000);
1206
+ Temperature::kCold, threshold_time - 3000);
1207
+ // Qualifies for compaction to kCold.
1190
1208
  Add(0, 2U, "200", "300", 4 * kFileSize, 0, 2100, 2200, 0, true,
1191
1209
  Temperature::kUnknown, threshold_time - 4000);
1192
1210
  Add(0, 1U, "200", "300", 4 * kFileSize, 0, 2000, 2100, 0, true,
1193
- Temperature::kWarm, threshold_time - 5000);
1194
- file_map_[2].first->being_compacted = true;
1211
+ Temperature::kCold, threshold_time - 5000);
1195
1212
  UpdateVersionStorageInfo();
1196
1213
 
1197
1214
  ASSERT_EQ(fifo_compaction_picker.NeedsCompaction(vstorage_.get()), true);
1198
1215
  std::unique_ptr<Compaction> compaction(fifo_compaction_picker.PickCompaction(
1199
1216
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
1200
1217
  &log_buffer_));
1201
- // Stop if a file is being compacted
1202
- ASSERT_TRUE(compaction.get() == nullptr);
1218
+ ASSERT_TRUE(compaction.get() != nullptr);
1219
+ ASSERT_EQ(compaction->compaction_reason(),
1220
+ CompactionReason::kChangeTemperature);
1221
+ ASSERT_EQ(compaction->output_temperature(), Temperature::kCold);
1222
+ ASSERT_EQ(1U, compaction->num_input_files(0));
1223
+ ASSERT_EQ(2U, compaction->input(0, 0)->fd.GetNumber());
1203
1224
  }
1204
1225
 
1205
- TEST_F(CompactionPickerTest, FIFOToWarmWithHotBetweenWarms) {
1226
+ TEST_F(CompactionPickerTest, FIFOToColdAndWarm) {
1206
1227
  NewVersionStorage(1, kCompactionStyleFIFO);
1207
1228
  const uint64_t kFileSize = 100000;
1208
1229
  const uint64_t kMaxSize = kFileSize * 100000;
1209
- uint64_t kWarmThreshold = 2000;
1230
+ uint64_t kWarmThreshold = 10000;
1231
+ uint64_t kHotThreshold = 2000;
1210
1232
 
1211
1233
  fifo_options_.max_table_files_size = kMaxSize;
1212
- fifo_options_.age_for_warm = kWarmThreshold;
1234
+ // Test that multiple threshold works.
1235
+ fifo_options_.file_temperature_age_thresholds = {
1236
+ {Temperature::kHot, kHotThreshold}, {Temperature::kWarm, kWarmThreshold}};
1213
1237
  mutable_cf_options_.compaction_options_fifo = fifo_options_;
1214
- mutable_cf_options_.level0_file_num_compaction_trigger = 2;
1238
+ mutable_cf_options_.level0_file_num_compaction_trigger = 100;
1215
1239
  mutable_cf_options_.max_compaction_bytes = kFileSize * 100;
1216
1240
  FIFOCompactionPicker fifo_compaction_picker(ioptions_, &icmp_);
1217
1241
 
1218
1242
  int64_t current_time = 0;
1219
1243
  ASSERT_OK(Env::Default()->GetCurrentTime(&current_time));
1220
- uint64_t threshold_time =
1244
+ uint64_t hot_threshold_time =
1245
+ static_cast<uint64_t>(current_time) - kHotThreshold;
1246
+ uint64_t warm_threshold_time =
1221
1247
  static_cast<uint64_t>(current_time) - kWarmThreshold;
1222
1248
  Add(0, 6U, "240", "290", 2 * kFileSize, 0, 2900, 3000, 0, true,
1223
1249
  Temperature::kUnknown, static_cast<uint64_t>(current_time) - 100);
1224
1250
  Add(0, 5U, "240", "290", 2 * kFileSize, 0, 2700, 2800, 0, true,
1225
- Temperature::kUnknown, threshold_time + 100);
1251
+ Temperature::kUnknown, hot_threshold_time + 100);
1226
1252
  Add(0, 4U, "260", "300", 1 * kFileSize, 0, 2500, 2600, 0, true,
1227
- Temperature::kUnknown, threshold_time - 2000);
1253
+ Temperature::kUnknown, hot_threshold_time - 200);
1254
+ // Qualifies for Hot
1228
1255
  Add(0, 3U, "200", "300", 4 * kFileSize, 0, 2300, 2400, 0, true,
1229
- Temperature::kWarm, threshold_time - 3000);
1256
+ Temperature::kUnknown, warm_threshold_time - 100);
1257
+ // Qualifies for Warm
1230
1258
  Add(0, 2U, "200", "300", 4 * kFileSize, 0, 2100, 2200, 0, true,
1231
- Temperature::kUnknown, threshold_time - 4000);
1259
+ Temperature::kUnknown, warm_threshold_time - 4000);
1232
1260
  Add(0, 1U, "200", "300", 4 * kFileSize, 0, 2000, 2100, 0, true,
1233
- Temperature::kWarm, threshold_time - 5000);
1261
+ Temperature::kUnknown, warm_threshold_time - 5000);
1234
1262
  UpdateVersionStorageInfo();
1235
1263
 
1236
1264
  ASSERT_EQ(fifo_compaction_picker.NeedsCompaction(vstorage_.get()), true);
1237
1265
  std::unique_ptr<Compaction> compaction(fifo_compaction_picker.PickCompaction(
1238
1266
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
1239
1267
  &log_buffer_));
1240
- // Stop if a file is being compacted
1241
1268
  ASSERT_TRUE(compaction.get() != nullptr);
1242
- ASSERT_EQ(1U, compaction->num_input_files(0));
1243
- ASSERT_EQ(2U, compaction->input(0, 0)->fd.GetNumber());
1269
+ ASSERT_EQ(compaction->compaction_reason(),
1270
+ CompactionReason::kChangeTemperature);
1271
+ // Assumes compaction picker picks older files first.
1272
+ ASSERT_EQ(compaction->output_temperature(), Temperature::kWarm);
1273
+ ASSERT_EQ(2U, compaction->num_input_files(0));
1274
+ ASSERT_EQ(1U, compaction->input(0, 0)->fd.GetNumber());
1275
+ ASSERT_EQ(2U, compaction->input(0, 1)->fd.GetNumber());
1244
1276
  }
1245
1277
 
1246
-
1247
1278
  TEST_F(CompactionPickerTest, CompactionPriMinOverlapping1) {
1248
1279
  NewVersionStorage(6, kCompactionStyleLevel);
1249
1280
  ioptions_.compaction_pri = kMinOverlappingRatio;
@@ -2520,6 +2551,61 @@ TEST_F(CompactionPickerTest, L0TrivialMoveWholeL0) {
2520
2551
  ASSERT_TRUE(compaction->IsTrivialMove());
2521
2552
  }
2522
2553
 
2554
+ TEST_F(CompactionPickerTest, NonL0TrivialMoveExtendBothDirection) {
2555
+ mutable_cf_options_.max_bytes_for_level_base = 5000;
2556
+ mutable_cf_options_.level0_file_num_compaction_trigger = 4;
2557
+ mutable_cf_options_.max_compaction_bytes = 10000000u;
2558
+ ioptions_.level_compaction_dynamic_level_bytes = false;
2559
+ NewVersionStorage(6, kCompactionStyleLevel);
2560
+
2561
+ Add(1, 1U, "300", "350", 3000U, 0, 710, 800, 3000U);
2562
+ Add(1, 2U, "600", "651", 3001U, 0, 610, 700, 3001U);
2563
+ Add(1, 3U, "700", "750", 3000U, 0, 500, 550, 3000U);
2564
+ Add(2, 4U, "800", "850", 4000U, 0, 150, 200, 4000U);
2565
+
2566
+ UpdateVersionStorageInfo();
2567
+ // File #2 should be picked first, and expand both directions to include
2568
+ // files #1 and #3.
2569
+ std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
2570
+ cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
2571
+ &log_buffer_));
2572
+ ASSERT_TRUE(compaction.get() != nullptr);
2573
+ ASSERT_EQ(1, compaction->num_input_levels());
2574
+ ASSERT_EQ(3, compaction->num_input_files(0));
2575
+ ASSERT_EQ(1, compaction->input(0, 0)->fd.GetNumber());
2576
+ ASSERT_EQ(2, compaction->input(0, 1)->fd.GetNumber());
2577
+ ASSERT_EQ(3, compaction->input(0, 2)->fd.GetNumber());
2578
+ ASSERT_TRUE(compaction->IsTrivialMove());
2579
+ }
2580
+
2581
+ TEST_F(CompactionPickerTest, L0TrivialMoveToEmptyLevel) {
2582
+ mutable_cf_options_.max_bytes_for_level_base = 5000;
2583
+ mutable_cf_options_.level0_file_num_compaction_trigger = 4;
2584
+ mutable_cf_options_.max_compaction_bytes = 10000000u;
2585
+ ioptions_.level_compaction_dynamic_level_bytes = false;
2586
+ NewVersionStorage(6, kCompactionStyleLevel);
2587
+
2588
+ // File 2 will be picked first, which by itself is trivial movable.
2589
+ // There was a bug before where compaction also picks file 3 and 4,
2590
+ // (and then file 1 since it overlaps with the key range),
2591
+ // which makes the compaction not trivial movable.
2592
+ Add(0, 1U, "450", "599", 3000U, 0, 710, 800, 3000U);
2593
+ Add(0, 2U, "600", "651", 3001U, 0, 610, 700, 3001U);
2594
+ Add(0, 3U, "300", "350", 3000U, 0, 500, 550, 3000U);
2595
+ Add(0, 4U, "500", "550", 2999U, 0, 300, 350, 2999U);
2596
+
2597
+ UpdateVersionStorageInfo();
2598
+
2599
+ std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
2600
+ cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
2601
+ &log_buffer_));
2602
+ ASSERT_TRUE(compaction.get() != nullptr);
2603
+ ASSERT_EQ(1, compaction->num_input_levels());
2604
+ ASSERT_EQ(1, compaction->num_input_files(0));
2605
+ ASSERT_EQ(2, compaction->input(0, 0)->fd.GetNumber());
2606
+ ASSERT_TRUE(compaction->IsTrivialMove());
2607
+ }
2608
+
2523
2609
  TEST_F(CompactionPickerTest, IsTrivialMoveOffSstPartitioned) {
2524
2610
  mutable_cf_options_.max_bytes_for_level_base = 10000u;
2525
2611
  mutable_cf_options_.max_compaction_bytes = 10001u;
@@ -19,7 +19,7 @@
19
19
  #include "file/filename.h"
20
20
  #include "logging/log_buffer.h"
21
21
  #include "logging/logging.h"
22
- #include "monitoring/statistics.h"
22
+ #include "monitoring/statistics_impl.h"
23
23
  #include "test_util/sync_point.h"
24
24
  #include "util/random.h"
25
25
  #include "util/string_util.h"
@@ -928,7 +928,7 @@ TEST_F(CompactionServiceTest, TablePropertiesCollector) {
928
928
  }
929
929
  ASSERT_OK(Flush());
930
930
  }
931
- ASSERT_OK(dbfull()->TEST_WaitForCompact(true));
931
+ ASSERT_OK(dbfull()->TEST_WaitForCompact());
932
932
 
933
933
  ASSERT_OK(db_->GetPropertiesOfAllTables(&fname_to_props));
934
934
 
@@ -952,4 +952,3 @@ int main(int argc, char** argv) {
952
952
  RegisterCustomObjects(argc, argv);
953
953
  return RUN_ALL_TESTS();
954
954
  }
955
-
@@ -209,7 +209,7 @@ TEST_P(TieredCompactionTest, SequenceBasedTieredStorageUniversal) {
209
209
  seq_history.emplace_back(dbfull()->GetLatestSequenceNumber());
210
210
  expect_stats[0].Add(kBasicFlushStats);
211
211
  }
212
- ASSERT_OK(dbfull()->WaitForCompact(true));
212
+ ASSERT_OK(dbfull()->WaitForCompact());
213
213
 
214
214
  // the penultimate level file temperature is not cold, all data are output to
215
215
  // the penultimate level.
@@ -374,7 +374,7 @@ TEST_P(TieredCompactionTest, RangeBasedTieredStorageUniversal) {
374
374
  ASSERT_OK(Flush());
375
375
  expect_stats[0].Add(kBasicFlushStats);
376
376
  }
377
- ASSERT_OK(dbfull()->WaitForCompact(true));
377
+ ASSERT_OK(dbfull()->WaitForCompact());
378
378
  ASSERT_EQ("0,0,0,0,0,1,1", FilesPerLevel());
379
379
  ASSERT_GT(GetSstSizeHelper(Temperature::kUnknown), 0);
380
380
  ASSERT_GT(GetSstSizeHelper(Temperature::kCold), 0);
@@ -445,8 +445,8 @@ TEST_P(TieredCompactionTest, RangeBasedTieredStorageUniversal) {
445
445
  }
446
446
  ASSERT_OK(Flush());
447
447
  }
448
- ASSERT_OK(dbfull()->WaitForCompact(
449
- true)); // make sure the compaction is able to finish
448
+ // make sure the compaction is able to finish
449
+ ASSERT_OK(dbfull()->WaitForCompact());
450
450
  ASSERT_EQ("0,0,0,0,0,1,1", FilesPerLevel());
451
451
  ASSERT_GT(GetSstSizeHelper(Temperature::kUnknown), 0);
452
452
  ASSERT_GT(GetSstSizeHelper(Temperature::kCold), 0);
@@ -911,7 +911,7 @@ TEST_P(TieredCompactionTest, SequenceBasedTieredStorageLevel) {
911
911
  ASSERT_OK(Flush());
912
912
  expect_stats[0].Add(kBasicFlushStats);
913
913
  }
914
- ASSERT_OK(dbfull()->WaitForCompact(true));
914
+ ASSERT_OK(dbfull()->WaitForCompact());
915
915
 
916
916
  // non last level is hot
917
917
  ASSERT_EQ("0,1", FilesPerLevel());
@@ -954,7 +954,7 @@ TEST_P(TieredCompactionTest, SequenceBasedTieredStorageLevel) {
954
954
  ASSERT_OK(Flush());
955
955
  seq_history.emplace_back(dbfull()->GetLatestSequenceNumber());
956
956
  }
957
- ASSERT_OK(dbfull()->WaitForCompact(true));
957
+ ASSERT_OK(dbfull()->WaitForCompact());
958
958
  ASSERT_EQ("0,1,0,0,0,0,1", FilesPerLevel());
959
959
  ASSERT_GT(GetSstSizeHelper(Temperature::kUnknown), 0);
960
960
  ASSERT_GT(GetSstSizeHelper(Temperature::kCold), 0);
@@ -1005,7 +1005,7 @@ TEST_P(TieredCompactionTest, SequenceBasedTieredStorageLevel) {
1005
1005
  ASSERT_OK(Flush());
1006
1006
  seq_history.emplace_back(dbfull()->GetLatestSequenceNumber());
1007
1007
  }
1008
- ASSERT_OK(dbfull()->WaitForCompact(true));
1008
+ ASSERT_OK(dbfull()->WaitForCompact());
1009
1009
 
1010
1010
  latest_cold_seq = seq_history[0];
1011
1011
  ASSERT_OK(db_->CompactRange(cro, nullptr, nullptr));
@@ -1111,6 +1111,7 @@ TEST_P(TieredCompactionTest, RangeBasedTieredStorageLevel) {
1111
1111
  options.num_levels = kNumLevels;
1112
1112
  options.statistics = CreateDBStatistics();
1113
1113
  options.max_subcompactions = 10;
1114
+ options.preclude_last_level_data_seconds = 10000;
1114
1115
  DestroyAndReopen(options);
1115
1116
  auto cmp = options.comparator;
1116
1117
 
@@ -1134,7 +1135,7 @@ TEST_P(TieredCompactionTest, RangeBasedTieredStorageLevel) {
1134
1135
  }
1135
1136
  ASSERT_OK(Flush());
1136
1137
  }
1137
- ASSERT_OK(dbfull()->WaitForCompact(true));
1138
+ ASSERT_OK(dbfull()->WaitForCompact());
1138
1139
  ASSERT_EQ("0,0,0,0,0,1,1", FilesPerLevel());
1139
1140
  ASSERT_GT(GetSstSizeHelper(Temperature::kUnknown), 0);
1140
1141
  ASSERT_GT(GetSstSizeHelper(Temperature::kCold), 0);
@@ -1264,7 +1265,7 @@ TEST_F(PrecludeLastLevelTest, MigrationFromPreserveTimeManualCompaction) {
1264
1265
  }
1265
1266
  ASSERT_OK(Flush());
1266
1267
  }
1267
- ASSERT_OK(dbfull()->WaitForCompact(true));
1268
+ ASSERT_OK(dbfull()->WaitForCompact());
1268
1269
 
1269
1270
  // all data is pushed to the last level
1270
1271
  ASSERT_EQ("0,0,0,0,0,0,1", FilesPerLevel());
@@ -1326,7 +1327,7 @@ TEST_F(PrecludeLastLevelTest, MigrationFromPreserveTimeAutoCompaction) {
1326
1327
  }
1327
1328
  ASSERT_OK(Flush());
1328
1329
  }
1329
- ASSERT_OK(dbfull()->WaitForCompact(true));
1330
+ ASSERT_OK(dbfull()->WaitForCompact());
1330
1331
 
1331
1332
  // all data is pushed to the last level
1332
1333
  ASSERT_EQ("0,0,0,0,0,0,1", FilesPerLevel());
@@ -1359,7 +1360,7 @@ TEST_F(PrecludeLastLevelTest, MigrationFromPreserveTimeAutoCompaction) {
1359
1360
  });
1360
1361
  }
1361
1362
  ASSERT_OK(Flush());
1362
- ASSERT_OK(dbfull()->WaitForCompact(true));
1363
+ ASSERT_OK(dbfull()->WaitForCompact());
1363
1364
  }
1364
1365
 
1365
1366
  // all data is moved up to the penultimate level
@@ -1402,7 +1403,7 @@ TEST_F(PrecludeLastLevelTest, MigrationFromPreserveTimePartial) {
1402
1403
  }
1403
1404
  ASSERT_OK(Flush());
1404
1405
  }
1405
- ASSERT_OK(dbfull()->WaitForCompact(true));
1406
+ ASSERT_OK(dbfull()->WaitForCompact());
1406
1407
 
1407
1408
  // all data is pushed to the last level
1408
1409
  ASSERT_EQ("0,0,0,0,0,0,1", FilesPerLevel());
@@ -1529,7 +1530,7 @@ TEST_F(PrecludeLastLevelTest, LastLevelOnlyCompactionPartial) {
1529
1530
  }
1530
1531
  ASSERT_OK(Flush());
1531
1532
  }
1532
- ASSERT_OK(dbfull()->WaitForCompact(true));
1533
+ ASSERT_OK(dbfull()->WaitForCompact());
1533
1534
 
1534
1535
  // all data is pushed to the last level
1535
1536
  ASSERT_EQ("0,0,0,0,0,0,1", FilesPerLevel());
@@ -1608,7 +1609,7 @@ TEST_P(PrecludeLastLevelTestWithParms, LastLevelOnlyCompactionNoPreclude) {
1608
1609
  }
1609
1610
  ASSERT_OK(Flush());
1610
1611
  }
1611
- ASSERT_OK(dbfull()->WaitForCompact(true));
1612
+ ASSERT_OK(dbfull()->WaitForCompact());
1612
1613
 
1613
1614
  // all data is pushed to the last level
1614
1615
  ASSERT_EQ("0,0,0,0,0,0,1", FilesPerLevel());
@@ -1704,7 +1705,7 @@ TEST_P(PrecludeLastLevelTestWithParms, LastLevelOnlyCompactionNoPreclude) {
1704
1705
 
1705
1706
  manual_compaction_thread.join();
1706
1707
 
1707
- ASSERT_OK(dbfull()->WaitForCompact(true));
1708
+ ASSERT_OK(dbfull()->WaitForCompact());
1708
1709
 
1709
1710
  if (enable_preclude_last_level) {
1710
1711
  ASSERT_NE("0,0,0,0,0,1,1", FilesPerLevel());
@@ -1840,7 +1841,7 @@ TEST_P(PrecludeLastLevelTestWithParms, PeriodicCompactionToPenultimateLevel) {
1840
1841
  }
1841
1842
  ASSERT_OK(Flush());
1842
1843
 
1843
- ASSERT_OK(dbfull()->WaitForCompact(true));
1844
+ ASSERT_OK(dbfull()->WaitForCompact());
1844
1845
 
1845
1846
  stop_token.reset();
1846
1847
 
@@ -1939,7 +1940,7 @@ TEST_F(PrecludeLastLevelTest, PartialPenultimateLevelCompaction) {
1939
1940
  ASSERT_OK(Flush());
1940
1941
  }
1941
1942
 
1942
- ASSERT_OK(dbfull()->WaitForCompact(true));
1943
+ ASSERT_OK(dbfull()->WaitForCompact());
1943
1944
 
1944
1945
  // L5: [0,19] [20,39] [40,299]
1945
1946
  // L6: [0, 299]
@@ -2105,7 +2106,7 @@ TEST_F(PrecludeLastLevelTest, RangeDelsCauseFileEndpointsToOverlap) {
2105
2106
  Slice begin_key(begin_key_buf), end_key(end_key_buf);
2106
2107
  ASSERT_OK(db_->SuggestCompactRange(db_->DefaultColumnFamily(), &begin_key,
2107
2108
  &end_key));
2108
- ASSERT_OK(dbfull()->WaitForCompact(true));
2109
+ ASSERT_OK(dbfull()->WaitForCompact());
2109
2110
  ASSERT_EQ("0,0,0,0,0,3,3", FilesPerLevel());
2110
2111
  ASSERT_EQ(1, per_key_comp_num);
2111
2112
  verify_db();
@@ -2115,7 +2116,7 @@ TEST_F(PrecludeLastLevelTest, RangeDelsCauseFileEndpointsToOverlap) {
2115
2116
  db_->ReleaseSnapshot(snap2);
2116
2117
  ASSERT_OK(db_->SuggestCompactRange(db_->DefaultColumnFamily(), &begin_key,
2117
2118
  &end_key));
2118
- ASSERT_OK(dbfull()->WaitForCompact(true));
2119
+ ASSERT_OK(dbfull()->WaitForCompact());
2119
2120
  ASSERT_EQ("0,0,0,0,0,3,3", FilesPerLevel());
2120
2121
  ASSERT_EQ(2, per_key_comp_num);
2121
2122
  verify_db();
@@ -2125,7 +2126,7 @@ TEST_F(PrecludeLastLevelTest, RangeDelsCauseFileEndpointsToOverlap) {
2125
2126
  db_->ReleaseSnapshot(snap1);
2126
2127
  ASSERT_OK(db_->SuggestCompactRange(db_->DefaultColumnFamily(), &begin_key,
2127
2128
  &end_key));
2128
- ASSERT_OK(dbfull()->WaitForCompact(true));
2129
+ ASSERT_OK(dbfull()->WaitForCompact());
2129
2130
  ASSERT_EQ("0,0,0,0,0,2,3", FilesPerLevel());
2130
2131
  ASSERT_EQ(3, per_key_comp_num);
2131
2132
  verify_db();
@@ -33,7 +33,9 @@ Status DeleteFilesInRanges(DB* db, ColumnFamilyHandle* column_family,
33
33
  Status VerifySstFileChecksum(const Options& options,
34
34
  const EnvOptions& env_options,
35
35
  const std::string& file_path) {
36
- return VerifySstFileChecksum(options, env_options, ReadOptions(), file_path);
36
+ // TODO: plumb Env::IOActivity
37
+ const ReadOptions read_options;
38
+ return VerifySstFileChecksum(options, env_options, read_options, file_path);
37
39
  }
38
40
  Status VerifySstFileChecksum(const Options& options,
39
41
  const EnvOptions& env_options,
@@ -56,13 +58,14 @@ Status VerifySstFileChecksum(const Options& options,
56
58
  std::unique_ptr<RandomAccessFileReader> file_reader(
57
59
  new RandomAccessFileReader(
58
60
  std::move(file), file_path, ioptions.clock, nullptr /* io_tracer */,
59
- nullptr /* stats */, 0 /* hist_type */, nullptr /* file_read_hist */,
60
- ioptions.rate_limiter.get()));
61
+ ioptions.stats /* stats */,
62
+ Histograms::SST_READ_MICROS /* hist_type */,
63
+ nullptr /* file_read_hist */, ioptions.rate_limiter.get()));
61
64
  const bool kImmortal = true;
62
65
  auto reader_options = TableReaderOptions(
63
66
  ioptions, options.prefix_extractor, env_options, internal_comparator,
64
- false /* skip_filters */, !kImmortal, false /* force_direct_prefetch */,
65
- -1 /* level */);
67
+ options.block_protection_bytes_per_key, false /* skip_filters */,
68
+ !kImmortal, false /* force_direct_prefetch */, -1 /* level */);
66
69
  reader_options.largest_seqno = largest_seqno;
67
70
  s = ioptions.table_factory->NewTableReader(
68
71
  reader_options, std::move(file_reader), file_size, &table_reader,
@@ -76,4 +79,3 @@ Status VerifySstFileChecksum(const Options& options,
76
79
  }
77
80
 
78
81
  } // namespace ROCKSDB_NAMESPACE
79
-
@@ -762,9 +762,11 @@ TEST_F(CorruptionTest, RangeDeletionCorrupted) {
762
762
  fs->GetFileSize(filename, file_opts.io_options, &file_size, nullptr));
763
763
 
764
764
  BlockHandle range_del_handle;
765
- ASSERT_OK(FindMetaBlockInFile(
766
- file_reader.get(), file_size, kBlockBasedTableMagicNumber,
767
- ImmutableOptions(options_), kRangeDelBlockName, &range_del_handle));
765
+ const ReadOptions read_options;
766
+ ASSERT_OK(FindMetaBlockInFile(file_reader.get(), file_size,
767
+ kBlockBasedTableMagicNumber,
768
+ ImmutableOptions(options_), read_options,
769
+ kRangeDelBlockName, &range_del_handle));
768
770
 
769
771
  ASSERT_OK(TryReopen());
770
772
  ASSERT_OK(test::CorruptFile(env_.get(), filename,
@@ -1666,4 +1668,3 @@ int main(int argc, char** argv) {
1666
1668
  RegisterCustomObjects(argc, argv);
1667
1669
  return RUN_ALL_TESTS();
1668
1670
  }
1669
-