@nxtedition/rocksdb 7.1.30 → 7.1.31

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 (380) hide show
  1. package/deps/rocksdb/rocksdb/CMakeLists.txt +2 -2
  2. package/deps/rocksdb/rocksdb/cache/cache_test.cc +15 -23
  3. package/deps/rocksdb/rocksdb/cache/fast_lru_cache.h +0 -1
  4. package/deps/rocksdb/rocksdb/cache/lru_cache.cc +4 -5
  5. package/deps/rocksdb/rocksdb/cache/lru_cache.h +3 -1
  6. package/deps/rocksdb/rocksdb/crash_test.mk +1 -1
  7. package/deps/rocksdb/rocksdb/db/blob/blob_log_format.h +15 -0
  8. package/deps/rocksdb/rocksdb/db/blob/db_blob_basic_test.cc +1 -1
  9. package/deps/rocksdb/rocksdb/db/column_family.cc +4 -1
  10. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +78 -6
  11. package/deps/rocksdb/rocksdb/db/compaction/compaction.h +32 -6
  12. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +8 -8
  13. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +3 -2
  14. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +47 -8
  15. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +3 -3
  16. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +105 -166
  17. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +3 -4
  18. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +46 -15
  19. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +47 -26
  20. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +17 -10
  21. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +11 -5
  22. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +12 -6
  23. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +1 -2
  24. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +337 -103
  25. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +43 -5
  26. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +1 -2
  27. package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +524 -1
  28. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +164 -0
  29. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +6 -6
  30. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +1 -0
  31. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +5 -7
  32. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +11 -1
  33. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +4 -4
  34. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +1 -0
  35. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +2 -3
  36. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +1 -1
  37. package/deps/rocksdb/rocksdb/db/db_test2.cc +1 -1
  38. package/deps/rocksdb/rocksdb/db/memtable.cc +16 -23
  39. package/deps/rocksdb/rocksdb/db/merge_helper.cc +30 -0
  40. package/deps/rocksdb/rocksdb/db/merge_helper.h +9 -0
  41. package/deps/rocksdb/rocksdb/db/range_del_aggregator_bench.cc +29 -9
  42. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.cc +10 -7
  43. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +12 -8
  44. package/deps/rocksdb/rocksdb/db/version_set.cc +11 -6
  45. package/deps/rocksdb/rocksdb/db/wide/db_wide_basic_test.cc +142 -0
  46. package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +59 -53
  47. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +3 -2
  48. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +4 -0
  49. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +1 -3
  50. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +7 -4
  51. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +0 -2
  52. package/deps/rocksdb/rocksdb/env/env.cc +16 -19
  53. package/deps/rocksdb/rocksdb/env/env_basic_test.cc +1 -1
  54. package/deps/rocksdb/rocksdb/env/env_chroot.cc +20 -20
  55. package/deps/rocksdb/rocksdb/env/env_encryption.cc +62 -60
  56. package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +1 -1
  57. package/deps/rocksdb/rocksdb/env/env_test.cc +179 -176
  58. package/deps/rocksdb/rocksdb/env/file_system.cc +3 -4
  59. package/deps/rocksdb/rocksdb/env/io_posix.cc +3 -2
  60. package/deps/rocksdb/rocksdb/env/io_posix.h +1 -2
  61. package/deps/rocksdb/rocksdb/env/mock_env.h +1 -0
  62. package/deps/rocksdb/rocksdb/env/mock_env_test.cc +4 -4
  63. package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +6 -5
  64. package/deps/rocksdb/rocksdb/file/delete_scheduler.h +2 -5
  65. package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +6 -7
  66. package/deps/rocksdb/rocksdb/file/file_util.cc +1 -1
  67. package/deps/rocksdb/rocksdb/file/filename.cc +16 -17
  68. package/deps/rocksdb/rocksdb/file/filename.h +4 -5
  69. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +492 -496
  70. package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +1 -1
  71. package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +1 -3
  72. package/deps/rocksdb/rocksdb/file/read_write_util.cc +1 -0
  73. package/deps/rocksdb/rocksdb/file/read_write_util.h +1 -0
  74. package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.cc +6 -8
  75. package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.h +1 -2
  76. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +4 -4
  77. package/deps/rocksdb/rocksdb/include/rocksdb/block_cache_trace_writer.h +4 -4
  78. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +166 -167
  79. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +1 -0
  80. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +0 -1
  81. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +12 -12
  82. package/deps/rocksdb/rocksdb/include/rocksdb/io_status.h +2 -0
  83. package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +1 -0
  84. package/deps/rocksdb/rocksdb/include/rocksdb/ldb_tool.h +1 -0
  85. package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +2 -1
  86. package/deps/rocksdb/rocksdb/include/rocksdb/perf_level.h +1 -0
  87. package/deps/rocksdb/rocksdb/include/rocksdb/persistent_cache.h +1 -0
  88. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_reader.h +0 -4
  89. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +3 -3
  90. package/deps/rocksdb/rocksdb/include/rocksdb/system_clock.h +1 -1
  91. package/deps/rocksdb/rocksdb/include/rocksdb/transaction_log.h +1 -0
  92. package/deps/rocksdb/rocksdb/include/rocksdb/types.h +1 -0
  93. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/checkpoint.h +1 -0
  94. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/env_mirror.h +1 -0
  95. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/option_change_migration.h +1 -0
  96. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +4 -4
  97. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/sim_cache.h +2 -0
  98. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +4 -4
  99. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +1 -1
  100. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +2 -2
  101. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +1 -1
  102. package/deps/rocksdb/rocksdb/logging/auto_roll_logger.cc +3 -3
  103. package/deps/rocksdb/rocksdb/logging/auto_roll_logger.h +3 -7
  104. package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +20 -23
  105. package/deps/rocksdb/rocksdb/logging/env_logger_test.cc +1 -0
  106. package/deps/rocksdb/rocksdb/logging/event_logger.cc +1 -3
  107. package/deps/rocksdb/rocksdb/logging/event_logger.h +4 -5
  108. package/deps/rocksdb/rocksdb/logging/event_logger_test.cc +2 -1
  109. package/deps/rocksdb/rocksdb/logging/log_buffer.cc +2 -3
  110. package/deps/rocksdb/rocksdb/logging/log_buffer.h +3 -2
  111. package/deps/rocksdb/rocksdb/logging/logging.h +3 -3
  112. package/deps/rocksdb/rocksdb/memory/allocator.h +1 -0
  113. package/deps/rocksdb/rocksdb/memory/arena_test.cc +1 -1
  114. package/deps/rocksdb/rocksdb/memory/concurrent_arena.cc +2 -0
  115. package/deps/rocksdb/rocksdb/memory/concurrent_arena.h +1 -0
  116. package/deps/rocksdb/rocksdb/memtable/alloc_tracker.cc +1 -0
  117. package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.cc +17 -20
  118. package/deps/rocksdb/rocksdb/memtable/hash_skiplist_rep.cc +13 -15
  119. package/deps/rocksdb/rocksdb/memtable/inlineskiplist.h +11 -10
  120. package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +3 -3
  121. package/deps/rocksdb/rocksdb/memtable/memtablerep_bench.cc +2 -2
  122. package/deps/rocksdb/rocksdb/memtable/skiplist.h +30 -28
  123. package/deps/rocksdb/rocksdb/memtable/skiplist_test.cc +4 -6
  124. package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +73 -70
  125. package/deps/rocksdb/rocksdb/memtable/stl_wrappers.h +1 -1
  126. package/deps/rocksdb/rocksdb/memtable/vectorrep.cc +21 -23
  127. package/deps/rocksdb/rocksdb/memtable/write_buffer_manager_test.cc +1 -0
  128. package/deps/rocksdb/rocksdb/monitoring/histogram.cc +24 -38
  129. package/deps/rocksdb/rocksdb/monitoring/histogram.h +10 -17
  130. package/deps/rocksdb/rocksdb/monitoring/histogram_test.cc +19 -19
  131. package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.cc +22 -30
  132. package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.h +4 -6
  133. package/deps/rocksdb/rocksdb/monitoring/in_memory_stats_history.cc +1 -0
  134. package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.h +4 -12
  135. package/deps/rocksdb/rocksdb/monitoring/iostats_context.cc +2 -3
  136. package/deps/rocksdb/rocksdb/monitoring/iostats_context_test.cc +1 -0
  137. package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +12 -14
  138. package/deps/rocksdb/rocksdb/monitoring/perf_level.cc +2 -3
  139. package/deps/rocksdb/rocksdb/monitoring/perf_level_imp.h +1 -1
  140. package/deps/rocksdb/rocksdb/monitoring/perf_step_timer.h +1 -3
  141. package/deps/rocksdb/rocksdb/monitoring/persistent_stats_history.cc +1 -0
  142. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +1 -1
  143. package/deps/rocksdb/rocksdb/monitoring/statistics.h +7 -7
  144. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.h +12 -22
  145. package/deps/rocksdb/rocksdb/monitoring/thread_status_util.h +7 -10
  146. package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +2 -2
  147. package/deps/rocksdb/rocksdb/port/lang.h +3 -1
  148. package/deps/rocksdb/rocksdb/port/likely.h +2 -2
  149. package/deps/rocksdb/rocksdb/port/mmap.h +2 -2
  150. package/deps/rocksdb/rocksdb/port/port_dirent.h +2 -2
  151. package/deps/rocksdb/rocksdb/port/port_posix.cc +32 -27
  152. package/deps/rocksdb/rocksdb/port/port_posix.h +31 -30
  153. package/deps/rocksdb/rocksdb/port/stack_trace.cc +1 -1
  154. package/deps/rocksdb/rocksdb/port/sys_time.h +1 -1
  155. package/deps/rocksdb/rocksdb/port/win/io_win.h +6 -7
  156. package/deps/rocksdb/rocksdb/port/win/port_win.h +12 -20
  157. package/deps/rocksdb/rocksdb/port/win/win_jemalloc.cc +5 -4
  158. package/deps/rocksdb/rocksdb/port/win/win_logger.cc +3 -5
  159. package/deps/rocksdb/rocksdb/port/win/win_logger.h +3 -4
  160. package/deps/rocksdb/rocksdb/port/win/win_thread.cc +30 -49
  161. package/deps/rocksdb/rocksdb/port/win/win_thread.h +5 -5
  162. package/deps/rocksdb/rocksdb/port/win/xpress_win.cc +51 -62
  163. package/deps/rocksdb/rocksdb/port/win/xpress_win.h +2 -2
  164. package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.cc +4 -3
  165. package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.h +1 -0
  166. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +2 -2
  167. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +2 -1
  168. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +0 -1
  169. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +3 -4
  170. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +1 -1
  171. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +0 -1
  172. package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +2 -0
  173. package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +2 -1
  174. package/deps/rocksdb/rocksdb/table/block_based/cachable_entry.h +28 -30
  175. package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index.cc +2 -1
  176. package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +3 -3
  177. package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +3 -3
  178. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +1 -0
  179. package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +4 -5
  180. package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.cc +1 -3
  181. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +1 -2
  182. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +1 -0
  183. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block_test.cc +0 -1
  184. package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +1 -1
  185. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +0 -1
  186. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +7 -6
  187. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.h +0 -1
  188. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +1 -0
  189. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +5 -6
  190. package/deps/rocksdb/rocksdb/table/block_fetcher.h +2 -2
  191. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +90 -80
  192. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.h +5 -4
  193. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +63 -69
  194. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_factory.h +2 -1
  195. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.cc +58 -57
  196. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.h +3 -3
  197. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +35 -30
  198. package/deps/rocksdb/rocksdb/table/get_context.cc +16 -10
  199. package/deps/rocksdb/rocksdb/table/iter_heap.h +2 -0
  200. package/deps/rocksdb/rocksdb/table/iterator.cc +1 -1
  201. package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +1 -3
  202. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +31 -16
  203. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +6 -6
  204. package/deps/rocksdb/rocksdb/table/multiget_context.h +5 -6
  205. package/deps/rocksdb/rocksdb/table/persistent_cache_helper.cc +1 -0
  206. package/deps/rocksdb/rocksdb/table/plain/plain_table_bloom.cc +1 -1
  207. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +7 -10
  208. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.h +3 -1
  209. package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.h +2 -2
  210. package/deps/rocksdb/rocksdb/table/plain/plain_table_index.cc +4 -3
  211. package/deps/rocksdb/rocksdb/table/plain/plain_table_index.h +2 -2
  212. package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.cc +1 -0
  213. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +10 -21
  214. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.h +14 -12
  215. package/deps/rocksdb/rocksdb/table/scoped_arena_iterator.h +2 -5
  216. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +2 -3
  217. package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +0 -6
  218. package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +0 -33
  219. package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +3 -6
  220. package/deps/rocksdb/rocksdb/table/table_properties.cc +24 -37
  221. package/deps/rocksdb/rocksdb/table/table_reader.h +3 -2
  222. package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +9 -8
  223. package/deps/rocksdb/rocksdb/table/table_test.cc +77 -82
  224. package/deps/rocksdb/rocksdb/table/two_level_iterator.cc +1 -0
  225. package/deps/rocksdb/rocksdb/table/two_level_iterator.h +1 -1
  226. package/deps/rocksdb/rocksdb/test_util/sync_point.cc +8 -18
  227. package/deps/rocksdb/rocksdb/test_util/sync_point.h +2 -2
  228. package/deps/rocksdb/rocksdb/test_util/sync_point_impl.cc +4 -3
  229. package/deps/rocksdb/rocksdb/test_util/sync_point_impl.h +13 -18
  230. package/deps/rocksdb/rocksdb/test_util/testharness.cc +1 -2
  231. package/deps/rocksdb/rocksdb/test_util/testutil.h +6 -7
  232. package/deps/rocksdb/rocksdb/test_util/transaction_test_util.cc +3 -4
  233. package/deps/rocksdb/rocksdb/test_util/transaction_test_util.h +1 -1
  234. package/deps/rocksdb/rocksdb/tools/blob_dump.cc +1 -0
  235. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.cc +11 -7
  236. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.h +3 -2
  237. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +296 -314
  238. package/deps/rocksdb/rocksdb/tools/db_sanity_test.cc +6 -6
  239. package/deps/rocksdb/rocksdb/tools/dump/db_dump_tool.cc +2 -1
  240. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +57 -64
  241. package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +6 -5
  242. package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +2 -2
  243. package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +1 -0
  244. package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +2 -2
  245. package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.cc +1 -2
  246. package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +10 -10
  247. package/deps/rocksdb/rocksdb/tools/trace_analyzer_test.cc +1 -1
  248. package/deps/rocksdb/rocksdb/tools/write_stress.cc +6 -3
  249. package/deps/rocksdb/rocksdb/util/aligned_buffer.h +12 -31
  250. package/deps/rocksdb/rocksdb/util/autovector.h +3 -6
  251. package/deps/rocksdb/rocksdb/util/autovector_test.cc +12 -12
  252. package/deps/rocksdb/rocksdb/util/bloom_test.cc +8 -12
  253. package/deps/rocksdb/rocksdb/util/coding.cc +1 -0
  254. package/deps/rocksdb/rocksdb/util/coding.h +17 -15
  255. package/deps/rocksdb/rocksdb/util/coding_test.cc +14 -15
  256. package/deps/rocksdb/rocksdb/util/comparator.cc +4 -4
  257. package/deps/rocksdb/rocksdb/util/compression.h +6 -3
  258. package/deps/rocksdb/rocksdb/util/compression_context_cache.cc +2 -2
  259. package/deps/rocksdb/rocksdb/util/concurrent_task_limiter_impl.cc +5 -8
  260. package/deps/rocksdb/rocksdb/util/concurrent_task_limiter_impl.h +1 -1
  261. package/deps/rocksdb/rocksdb/util/crc32c.cc +202 -297
  262. package/deps/rocksdb/rocksdb/util/crc32c.h +2 -3
  263. package/deps/rocksdb/rocksdb/util/crc32c_arm64.h +2 -0
  264. package/deps/rocksdb/rocksdb/util/crc32c_test.cc +39 -54
  265. package/deps/rocksdb/rocksdb/util/defer.h +2 -1
  266. package/deps/rocksdb/rocksdb/util/defer_test.cc +2 -1
  267. package/deps/rocksdb/rocksdb/util/duplicate_detector.h +2 -1
  268. package/deps/rocksdb/rocksdb/util/dynamic_bloom.cc +1 -1
  269. package/deps/rocksdb/rocksdb/util/dynamic_bloom.h +3 -3
  270. package/deps/rocksdb/rocksdb/util/dynamic_bloom_test.cc +1 -1
  271. package/deps/rocksdb/rocksdb/util/filelock_test.cc +24 -29
  272. package/deps/rocksdb/rocksdb/util/filter_bench.cc +4 -4
  273. package/deps/rocksdb/rocksdb/util/hash_test.cc +2 -2
  274. package/deps/rocksdb/rocksdb/util/heap.h +5 -4
  275. package/deps/rocksdb/rocksdb/util/heap_test.cc +15 -25
  276. package/deps/rocksdb/rocksdb/util/kv_map.h +1 -1
  277. package/deps/rocksdb/rocksdb/util/murmurhash.cc +7 -2
  278. package/deps/rocksdb/rocksdb/util/murmurhash.h +4 -3
  279. package/deps/rocksdb/rocksdb/util/mutexlock.h +5 -11
  280. package/deps/rocksdb/rocksdb/util/random.cc +1 -0
  281. package/deps/rocksdb/rocksdb/util/random.h +2 -4
  282. package/deps/rocksdb/rocksdb/util/random_test.cc +2 -1
  283. package/deps/rocksdb/rocksdb/util/ribbon_test.cc +4 -3
  284. package/deps/rocksdb/rocksdb/util/slice.cc +1 -1
  285. package/deps/rocksdb/rocksdb/util/slice_test.cc +1 -2
  286. package/deps/rocksdb/rocksdb/util/status.cc +2 -0
  287. package/deps/rocksdb/rocksdb/util/string_util.cc +2 -0
  288. package/deps/rocksdb/rocksdb/util/thread_list_test.cc +64 -76
  289. package/deps/rocksdb/rocksdb/util/thread_local.cc +18 -32
  290. package/deps/rocksdb/rocksdb/util/thread_local.h +2 -3
  291. package/deps/rocksdb/rocksdb/util/thread_operation.h +34 -43
  292. package/deps/rocksdb/rocksdb/util/threadpool_imp.cc +54 -73
  293. package/deps/rocksdb/rocksdb/util/threadpool_imp.h +18 -18
  294. package/deps/rocksdb/rocksdb/util/timer.h +4 -9
  295. package/deps/rocksdb/rocksdb/util/timer_queue.h +1 -0
  296. package/deps/rocksdb/rocksdb/util/timer_queue_test.cc +1 -0
  297. package/deps/rocksdb/rocksdb/util/xxhash.cc +1 -2
  298. package/deps/rocksdb/rocksdb/util/xxhash.h +7 -4
  299. package/deps/rocksdb/rocksdb/util/xxph3.h +3 -1
  300. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +16 -24
  301. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_impl.h +1 -1
  302. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +106 -104
  303. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.h +3 -4
  304. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +6 -6
  305. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +1 -2
  306. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +3 -4
  307. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +3 -1
  308. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +11 -15
  309. package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +1 -2
  310. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.cc +3 -3
  311. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.h +12 -12
  312. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_format_test.cc +56 -55
  313. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_functional_test.cc +91 -74
  314. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_row_merge_test.cc +17 -34
  315. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_serialize_test.cc +21 -45
  316. package/deps/rocksdb/rocksdb/utilities/cassandra/format.cc +74 -97
  317. package/deps/rocksdb/rocksdb/utilities/cassandra/format.h +17 -18
  318. package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.cc +3 -4
  319. package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.h +19 -19
  320. package/deps/rocksdb/rocksdb/utilities/cassandra/serialize.h +19 -18
  321. package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.cc +7 -10
  322. package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.h +3 -4
  323. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.h +2 -2
  324. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +10 -15
  325. package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc +2 -1
  326. package/deps/rocksdb/rocksdb/utilities/convenience/info_log_finder.cc +1 -0
  327. package/deps/rocksdb/rocksdb/utilities/env_mirror_test.cc +5 -3
  328. package/deps/rocksdb/rocksdb/utilities/env_timed_test.cc +1 -2
  329. package/deps/rocksdb/rocksdb/utilities/fault_injection_env.h +4 -5
  330. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +5 -7
  331. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +9 -13
  332. package/deps/rocksdb/rocksdb/utilities/leveldb_options/leveldb_options.cc +1 -0
  333. package/deps/rocksdb/rocksdb/utilities/merge_operators/bytesxor.cc +7 -9
  334. package/deps/rocksdb/rocksdb/utilities/merge_operators/bytesxor.h +4 -5
  335. package/deps/rocksdb/rocksdb/utilities/merge_operators/put.cc +4 -3
  336. package/deps/rocksdb/rocksdb/utilities/merge_operators/sortlist.cc +1 -1
  337. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.cc +3 -3
  338. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.h +2 -4
  339. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend2.h +2 -2
  340. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend_test.cc +39 -50
  341. package/deps/rocksdb/rocksdb/utilities/merge_operators/uint64add.cc +2 -2
  342. package/deps/rocksdb/rocksdb/utilities/merge_operators.h +4 -3
  343. package/deps/rocksdb/rocksdb/utilities/options/options_util.cc +2 -2
  344. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.cc +5 -7
  345. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.h +5 -4
  346. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +1 -2
  347. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.h +3 -6
  348. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file_buffer.h +1 -1
  349. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.cc +2 -2
  350. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.h +0 -1
  351. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table.h +1 -0
  352. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_test.cc +3 -1
  353. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_bench.cc +1 -1
  354. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.cc +18 -13
  355. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.h +1 -3
  356. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector_test.cc +15 -14
  357. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.cc +14 -12
  358. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.h +2 -2
  359. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +4 -7
  360. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.cc +1 -2
  361. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +1 -1
  362. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.h +1 -1
  363. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +1 -1
  364. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +3 -2
  365. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +1 -2
  366. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +3 -2
  367. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +5 -5
  368. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +3 -4
  369. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +2 -2
  370. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +5 -4
  371. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +1 -1
  372. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +1 -0
  373. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +3 -4
  374. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +2 -6
  375. package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +80 -79
  376. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +3 -3
  377. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +9 -17
  378. package/package.json +1 -1
  379. package/prebuilds/darwin-arm64/node.napi.node +0 -0
  380. package/prebuilds/linux-x64/node.napi.node +0 -0
@@ -218,7 +218,7 @@ TEST_F(CompactionPickerTest, Empty) {
218
218
  UpdateVersionStorageInfo();
219
219
  std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
220
220
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
221
- &log_buffer_));
221
+ &log_buffer_, kMaxSequenceNumber));
222
222
  ASSERT_TRUE(compaction.get() == nullptr);
223
223
  }
224
224
 
@@ -230,7 +230,7 @@ TEST_F(CompactionPickerTest, Single) {
230
230
 
231
231
  std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
232
232
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
233
- &log_buffer_));
233
+ &log_buffer_, kMaxSequenceNumber));
234
234
  ASSERT_TRUE(compaction.get() == nullptr);
235
235
  }
236
236
 
@@ -244,7 +244,7 @@ TEST_F(CompactionPickerTest, Level0Trigger) {
244
244
 
245
245
  std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
246
246
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
247
- &log_buffer_));
247
+ &log_buffer_, kMaxSequenceNumber));
248
248
  ASSERT_TRUE(compaction.get() != nullptr);
249
249
  ASSERT_EQ(2U, compaction->num_input_files(0));
250
250
  ASSERT_EQ(1U, compaction->input(0, 0)->fd.GetNumber());
@@ -258,7 +258,7 @@ TEST_F(CompactionPickerTest, Level1Trigger) {
258
258
 
259
259
  std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
260
260
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
261
- &log_buffer_));
261
+ &log_buffer_, kMaxSequenceNumber));
262
262
  ASSERT_TRUE(compaction.get() != nullptr);
263
263
  ASSERT_EQ(1U, compaction->num_input_files(0));
264
264
  ASSERT_EQ(66U, compaction->input(0, 0)->fd.GetNumber());
@@ -277,7 +277,7 @@ TEST_F(CompactionPickerTest, Level1Trigger2) {
277
277
 
278
278
  std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
279
279
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
280
- &log_buffer_));
280
+ &log_buffer_, kMaxSequenceNumber));
281
281
  ASSERT_TRUE(compaction.get() != nullptr);
282
282
  ASSERT_EQ(1U, compaction->num_input_files(0));
283
283
  ASSERT_EQ(2U, compaction->num_input_files(1));
@@ -309,7 +309,7 @@ TEST_F(CompactionPickerTest, LevelMaxScore) {
309
309
 
310
310
  std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
311
311
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
312
- &log_buffer_));
312
+ &log_buffer_, kMaxSequenceNumber));
313
313
  ASSERT_TRUE(compaction.get() != nullptr);
314
314
  ASSERT_EQ(1U, compaction->num_input_files(0));
315
315
  ASSERT_EQ(7U, compaction->input(0, 0)->fd.GetNumber());
@@ -357,7 +357,7 @@ TEST_F(CompactionPickerTest, Level0TriggerDynamic) {
357
357
 
358
358
  std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
359
359
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
360
- &log_buffer_));
360
+ &log_buffer_, kMaxSequenceNumber));
361
361
  ASSERT_TRUE(compaction.get() != nullptr);
362
362
  ASSERT_EQ(2U, compaction->num_input_files(0));
363
363
  ASSERT_EQ(1U, compaction->input(0, 0)->fd.GetNumber());
@@ -382,7 +382,7 @@ TEST_F(CompactionPickerTest, Level0TriggerDynamic2) {
382
382
 
383
383
  std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
384
384
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
385
- &log_buffer_));
385
+ &log_buffer_, kMaxSequenceNumber));
386
386
  ASSERT_TRUE(compaction.get() != nullptr);
387
387
  ASSERT_EQ(2U, compaction->num_input_files(0));
388
388
  ASSERT_EQ(1U, compaction->input(0, 0)->fd.GetNumber());
@@ -408,7 +408,7 @@ TEST_F(CompactionPickerTest, Level0TriggerDynamic3) {
408
408
 
409
409
  std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
410
410
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
411
- &log_buffer_));
411
+ &log_buffer_, kMaxSequenceNumber));
412
412
  ASSERT_TRUE(compaction.get() != nullptr);
413
413
  ASSERT_EQ(2U, compaction->num_input_files(0));
414
414
  ASSERT_EQ(1U, compaction->input(0, 0)->fd.GetNumber());
@@ -438,7 +438,7 @@ TEST_F(CompactionPickerTest, Level0TriggerDynamic4) {
438
438
 
439
439
  std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
440
440
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
441
- &log_buffer_));
441
+ &log_buffer_, kMaxSequenceNumber));
442
442
  ASSERT_TRUE(compaction.get() != nullptr);
443
443
  ASSERT_EQ(2U, compaction->num_input_files(0));
444
444
  ASSERT_EQ(1U, compaction->input(0, 0)->fd.GetNumber());
@@ -471,7 +471,7 @@ TEST_F(CompactionPickerTest, LevelTriggerDynamic4) {
471
471
 
472
472
  std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
473
473
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
474
- &log_buffer_));
474
+ &log_buffer_, kMaxSequenceNumber));
475
475
  ASSERT_TRUE(compaction.get() != nullptr);
476
476
  ASSERT_EQ(1U, compaction->num_input_files(0));
477
477
  ASSERT_EQ(5U, compaction->input(0, 0)->fd.GetNumber());
@@ -528,7 +528,7 @@ TEST_F(CompactionPickerTest, CompactionUniversalIngestBehindReservedLevel) {
528
528
  std::unique_ptr<Compaction> compaction(
529
529
  universal_compaction_picker.PickCompaction(
530
530
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
531
- &log_buffer_));
531
+ &log_buffer_, kMaxSequenceNumber));
532
532
 
533
533
  // output level should be the one above the bottom-most
534
534
  ASSERT_EQ(1, compaction->output_level());
@@ -563,7 +563,7 @@ TEST_F(CompactionPickerTest, CannotTrivialMoveUniversal) {
563
563
  std::unique_ptr<Compaction> compaction(
564
564
  universal_compaction_picker.PickCompaction(
565
565
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
566
- &log_buffer_));
566
+ &log_buffer_, kMaxSequenceNumber));
567
567
 
568
568
  ASSERT_TRUE(!compaction->is_trivial_move());
569
569
  }
@@ -590,7 +590,7 @@ TEST_F(CompactionPickerTest, AllowsTrivialMoveUniversal) {
590
590
  std::unique_ptr<Compaction> compaction(
591
591
  universal_compaction_picker.PickCompaction(
592
592
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
593
- &log_buffer_));
593
+ &log_buffer_, kMaxSequenceNumber));
594
594
 
595
595
  ASSERT_TRUE(compaction->is_trivial_move());
596
596
  }
@@ -619,7 +619,7 @@ TEST_F(CompactionPickerTest, UniversalPeriodicCompaction1) {
619
619
  std::unique_ptr<Compaction> compaction(
620
620
  universal_compaction_picker.PickCompaction(
621
621
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
622
- &log_buffer_));
622
+ &log_buffer_, kMaxSequenceNumber));
623
623
 
624
624
  ASSERT_TRUE(compaction);
625
625
  ASSERT_EQ(4, compaction->output_level());
@@ -650,7 +650,7 @@ TEST_F(CompactionPickerTest, UniversalPeriodicCompaction2) {
650
650
  std::unique_ptr<Compaction> compaction(
651
651
  universal_compaction_picker.PickCompaction(
652
652
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
653
- &log_buffer_));
653
+ &log_buffer_, kMaxSequenceNumber));
654
654
 
655
655
  ASSERT_FALSE(compaction);
656
656
  }
@@ -677,7 +677,7 @@ TEST_F(CompactionPickerTest, UniversalPeriodicCompaction3) {
677
677
  std::unique_ptr<Compaction> compaction(
678
678
  universal_compaction_picker.PickCompaction(
679
679
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
680
- &log_buffer_));
680
+ &log_buffer_, kMaxSequenceNumber));
681
681
 
682
682
  ASSERT_FALSE(compaction);
683
683
  }
@@ -708,7 +708,7 @@ TEST_F(CompactionPickerTest, UniversalPeriodicCompaction4) {
708
708
  std::unique_ptr<Compaction> compaction(
709
709
  universal_compaction_picker.PickCompaction(
710
710
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
711
- &log_buffer_));
711
+ &log_buffer_, kMaxSequenceNumber));
712
712
  ASSERT_TRUE(!compaction ||
713
713
  compaction->start_level() != compaction->output_level());
714
714
  }
@@ -729,7 +729,7 @@ TEST_F(CompactionPickerTest, UniversalPeriodicCompaction5) {
729
729
  std::unique_ptr<Compaction> compaction(
730
730
  universal_compaction_picker.PickCompaction(
731
731
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
732
- &log_buffer_));
732
+ &log_buffer_, kMaxSequenceNumber));
733
733
  ASSERT_TRUE(compaction);
734
734
  ASSERT_EQ(0, compaction->start_level());
735
735
  ASSERT_EQ(1U, compaction->num_input_files(0));
@@ -754,7 +754,7 @@ TEST_F(CompactionPickerTest, UniversalPeriodicCompaction6) {
754
754
  std::unique_ptr<Compaction> compaction(
755
755
  universal_compaction_picker.PickCompaction(
756
756
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
757
- &log_buffer_));
757
+ &log_buffer_, kMaxSequenceNumber));
758
758
  ASSERT_TRUE(compaction);
759
759
  ASSERT_EQ(4, compaction->start_level());
760
760
  ASSERT_EQ(2U, compaction->num_input_files(0));
@@ -792,7 +792,7 @@ TEST_F(CompactionPickerTest, UniversalIncrementalSpace1) {
792
792
  std::unique_ptr<Compaction> compaction(
793
793
  universal_compaction_picker.PickCompaction(
794
794
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
795
- &log_buffer_));
795
+ &log_buffer_, kMaxSequenceNumber));
796
796
  ASSERT_TRUE(compaction);
797
797
  ASSERT_EQ(4, compaction->output_level());
798
798
  ASSERT_EQ(3, compaction->start_level());
@@ -834,7 +834,7 @@ TEST_F(CompactionPickerTest, UniversalIncrementalSpace2) {
834
834
  std::unique_ptr<Compaction> compaction(
835
835
  universal_compaction_picker.PickCompaction(
836
836
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
837
- &log_buffer_));
837
+ &log_buffer_, kMaxSequenceNumber));
838
838
  ASSERT_TRUE(compaction);
839
839
  ASSERT_EQ(4, compaction->output_level());
840
840
  ASSERT_EQ(2, compaction->start_level());
@@ -876,7 +876,7 @@ TEST_F(CompactionPickerTest, UniversalIncrementalSpace3) {
876
876
  std::unique_ptr<Compaction> compaction(
877
877
  universal_compaction_picker.PickCompaction(
878
878
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
879
- &log_buffer_));
879
+ &log_buffer_, kMaxSequenceNumber));
880
880
  ASSERT_TRUE(compaction);
881
881
  ASSERT_EQ(4, compaction->output_level());
882
882
  ASSERT_EQ(2, compaction->start_level());
@@ -924,7 +924,7 @@ TEST_F(CompactionPickerTest, UniversalIncrementalSpace4) {
924
924
  std::unique_ptr<Compaction> compaction(
925
925
  universal_compaction_picker.PickCompaction(
926
926
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
927
- &log_buffer_));
927
+ &log_buffer_, kMaxSequenceNumber));
928
928
  ASSERT_TRUE(compaction);
929
929
  ASSERT_EQ(4, compaction->output_level());
930
930
  ASSERT_EQ(3, compaction->start_level());
@@ -968,7 +968,7 @@ TEST_F(CompactionPickerTest, UniversalIncrementalSpace5) {
968
968
  std::unique_ptr<Compaction> compaction(
969
969
  universal_compaction_picker.PickCompaction(
970
970
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
971
- &log_buffer_));
971
+ &log_buffer_, kMaxSequenceNumber));
972
972
  ASSERT_TRUE(compaction);
973
973
  ASSERT_EQ(4, compaction->output_level());
974
974
  ASSERT_EQ(3, compaction->start_level());
@@ -1035,7 +1035,7 @@ TEST_F(CompactionPickerTest, FIFOToWarm1) {
1035
1035
  ASSERT_EQ(fifo_compaction_picker.NeedsCompaction(vstorage_.get()), true);
1036
1036
  std::unique_ptr<Compaction> compaction(fifo_compaction_picker.PickCompaction(
1037
1037
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
1038
- &log_buffer_));
1038
+ &log_buffer_, kMaxSequenceNumber));
1039
1039
  ASSERT_TRUE(compaction.get() != nullptr);
1040
1040
  ASSERT_EQ(1U, compaction->num_input_files(0));
1041
1041
  ASSERT_EQ(3U, compaction->input(0, 0)->fd.GetNumber());
@@ -1073,7 +1073,7 @@ TEST_F(CompactionPickerTest, FIFOToWarm2) {
1073
1073
  ASSERT_EQ(fifo_compaction_picker.NeedsCompaction(vstorage_.get()), true);
1074
1074
  std::unique_ptr<Compaction> compaction(fifo_compaction_picker.PickCompaction(
1075
1075
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
1076
- &log_buffer_));
1076
+ &log_buffer_, kMaxSequenceNumber));
1077
1077
  ASSERT_TRUE(compaction.get() != nullptr);
1078
1078
  ASSERT_EQ(2U, compaction->num_input_files(0));
1079
1079
  ASSERT_EQ(2U, compaction->input(0, 0)->fd.GetNumber());
@@ -1114,7 +1114,7 @@ TEST_F(CompactionPickerTest, FIFOToWarmMaxSize) {
1114
1114
  ASSERT_EQ(fifo_compaction_picker.NeedsCompaction(vstorage_.get()), true);
1115
1115
  std::unique_ptr<Compaction> compaction(fifo_compaction_picker.PickCompaction(
1116
1116
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
1117
- &log_buffer_));
1117
+ &log_buffer_, kMaxSequenceNumber));
1118
1118
  ASSERT_TRUE(compaction.get() != nullptr);
1119
1119
  ASSERT_EQ(2U, compaction->num_input_files(0));
1120
1120
  ASSERT_EQ(1U, compaction->input(0, 0)->fd.GetNumber());
@@ -1155,7 +1155,7 @@ TEST_F(CompactionPickerTest, FIFOToWarmWithExistingWarm) {
1155
1155
  ASSERT_EQ(fifo_compaction_picker.NeedsCompaction(vstorage_.get()), true);
1156
1156
  std::unique_ptr<Compaction> compaction(fifo_compaction_picker.PickCompaction(
1157
1157
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
1158
- &log_buffer_));
1158
+ &log_buffer_, kMaxSequenceNumber));
1159
1159
  ASSERT_TRUE(compaction.get() != nullptr);
1160
1160
  ASSERT_EQ(2U, compaction->num_input_files(0));
1161
1161
  ASSERT_EQ(2U, compaction->input(0, 0)->fd.GetNumber());
@@ -1197,7 +1197,7 @@ TEST_F(CompactionPickerTest, FIFOToWarmWithOngoing) {
1197
1197
  ASSERT_EQ(fifo_compaction_picker.NeedsCompaction(vstorage_.get()), true);
1198
1198
  std::unique_ptr<Compaction> compaction(fifo_compaction_picker.PickCompaction(
1199
1199
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
1200
- &log_buffer_));
1200
+ &log_buffer_, kMaxSequenceNumber));
1201
1201
  // Stop if a file is being compacted
1202
1202
  ASSERT_TRUE(compaction.get() == nullptr);
1203
1203
  }
@@ -1236,7 +1236,7 @@ TEST_F(CompactionPickerTest, FIFOToWarmWithHotBetweenWarms) {
1236
1236
  ASSERT_EQ(fifo_compaction_picker.NeedsCompaction(vstorage_.get()), true);
1237
1237
  std::unique_ptr<Compaction> compaction(fifo_compaction_picker.PickCompaction(
1238
1238
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
1239
- &log_buffer_));
1239
+ &log_buffer_, kMaxSequenceNumber));
1240
1240
  // Stop if a file is being compacted
1241
1241
  ASSERT_TRUE(compaction.get() != nullptr);
1242
1242
  ASSERT_EQ(1U, compaction->num_input_files(0));
@@ -1267,7 +1267,7 @@ TEST_F(CompactionPickerTest, CompactionPriMinOverlapping1) {
1267
1267
 
1268
1268
  std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
1269
1269
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
1270
- &log_buffer_));
1270
+ &log_buffer_, kMaxSequenceNumber));
1271
1271
  ASSERT_TRUE(compaction.get() != nullptr);
1272
1272
  ASSERT_EQ(1U, compaction->num_input_files(0));
1273
1273
  // Pick file 8 because it overlaps with 0 files on level 3.
@@ -1300,7 +1300,7 @@ TEST_F(CompactionPickerTest, CompactionPriMinOverlapping2) {
1300
1300
 
1301
1301
  std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
1302
1302
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
1303
- &log_buffer_));
1303
+ &log_buffer_, kMaxSequenceNumber));
1304
1304
  ASSERT_TRUE(compaction.get() != nullptr);
1305
1305
  ASSERT_EQ(1U, compaction->num_input_files(0));
1306
1306
  // Picking file 7 because overlapping ratio is the biggest.
@@ -1328,7 +1328,7 @@ TEST_F(CompactionPickerTest, CompactionPriMinOverlapping3) {
1328
1328
 
1329
1329
  std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
1330
1330
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
1331
- &log_buffer_));
1331
+ &log_buffer_, kMaxSequenceNumber));
1332
1332
  ASSERT_TRUE(compaction.get() != nullptr);
1333
1333
  ASSERT_EQ(1U, compaction->num_input_files(0));
1334
1334
  // Picking file 8 because overlapping ratio is the biggest.
@@ -1359,7 +1359,7 @@ TEST_F(CompactionPickerTest, CompactionPriMinOverlapping4) {
1359
1359
 
1360
1360
  std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
1361
1361
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
1362
- &log_buffer_));
1362
+ &log_buffer_, kMaxSequenceNumber));
1363
1363
  ASSERT_TRUE(compaction.get() != nullptr);
1364
1364
  ASSERT_EQ(1U, compaction->num_input_files(0));
1365
1365
  // Picking file 8 because overlapping ratio is the biggest.
@@ -1395,7 +1395,7 @@ TEST_F(CompactionPickerTest, CompactionPriRoundRobin) {
1395
1395
  std::unique_ptr<Compaction> compaction(
1396
1396
  local_level_compaction_picker.PickCompaction(
1397
1397
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
1398
- &log_buffer_));
1398
+ &log_buffer_, kMaxSequenceNumber));
1399
1399
  ASSERT_TRUE(compaction.get() != nullptr);
1400
1400
  // Since the max bytes for level 2 is 120M, picking one file to compact
1401
1401
  // makes the post-compaction level size less than 120M, there is exactly one
@@ -1435,7 +1435,7 @@ TEST_F(CompactionPickerTest, CompactionPriMultipleFilesRoundRobin1) {
1435
1435
  std::unique_ptr<Compaction> compaction(
1436
1436
  local_level_compaction_picker.PickCompaction(
1437
1437
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
1438
- &log_buffer_));
1438
+ &log_buffer_, kMaxSequenceNumber));
1439
1439
  ASSERT_TRUE(compaction.get() != nullptr);
1440
1440
 
1441
1441
  // The maximum compaction bytes is very large in this case so we can igore its
@@ -1478,7 +1478,7 @@ TEST_F(CompactionPickerTest, CompactionPriMultipleFilesRoundRobin2) {
1478
1478
  std::unique_ptr<Compaction> compaction(
1479
1479
  local_level_compaction_picker.PickCompaction(
1480
1480
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
1481
- &log_buffer_));
1481
+ &log_buffer_, kMaxSequenceNumber));
1482
1482
  ASSERT_TRUE(compaction.get() != nullptr);
1483
1483
 
1484
1484
  // The maximum compaction bytes is only 2500 bytes now. Even though we are
@@ -1522,7 +1522,7 @@ TEST_F(CompactionPickerTest, CompactionPriMultipleFilesRoundRobin3) {
1522
1522
  std::unique_ptr<Compaction> compaction(
1523
1523
  local_level_compaction_picker.PickCompaction(
1524
1524
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
1525
- &log_buffer_));
1525
+ &log_buffer_, kMaxSequenceNumber));
1526
1526
  ASSERT_TRUE(compaction.get() != nullptr);
1527
1527
 
1528
1528
  // Cannot pick more files since we reach the last file in level 2
@@ -1581,7 +1581,7 @@ TEST_F(CompactionPickerTest, CompactionPriMinOverlappingManyFiles) {
1581
1581
 
1582
1582
  std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
1583
1583
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
1584
- &log_buffer_));
1584
+ &log_buffer_, kMaxSequenceNumber));
1585
1585
  ASSERT_TRUE(compaction.get() != nullptr);
1586
1586
  ASSERT_EQ(1U, compaction->num_input_files(0));
1587
1587
  // Picking file 8 because overlapping ratio is the biggest.
@@ -1609,7 +1609,7 @@ TEST_F(CompactionPickerTest, ParentIndexResetBug) {
1609
1609
 
1610
1610
  std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
1611
1611
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
1612
- &log_buffer_));
1612
+ &log_buffer_, kMaxSequenceNumber));
1613
1613
  }
1614
1614
 
1615
1615
  // This test checks ExpandWhileOverlapping() by having overlapping user keys
@@ -1627,7 +1627,7 @@ TEST_F(CompactionPickerTest, OverlappingUserKeys) {
1627
1627
 
1628
1628
  std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
1629
1629
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
1630
- &log_buffer_));
1630
+ &log_buffer_, kMaxSequenceNumber));
1631
1631
  ASSERT_TRUE(compaction.get() != nullptr);
1632
1632
  ASSERT_EQ(1U, compaction->num_input_levels());
1633
1633
  ASSERT_EQ(2U, compaction->num_input_files(0));
@@ -1647,7 +1647,7 @@ TEST_F(CompactionPickerTest, OverlappingUserKeys2) {
1647
1647
 
1648
1648
  std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
1649
1649
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
1650
- &log_buffer_));
1650
+ &log_buffer_, kMaxSequenceNumber));
1651
1651
  ASSERT_TRUE(compaction.get() != nullptr);
1652
1652
  ASSERT_EQ(2U, compaction->num_input_levels());
1653
1653
  ASSERT_EQ(2U, compaction->num_input_files(0));
@@ -1675,7 +1675,7 @@ TEST_F(CompactionPickerTest, OverlappingUserKeys3) {
1675
1675
 
1676
1676
  std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
1677
1677
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
1678
- &log_buffer_));
1678
+ &log_buffer_, kMaxSequenceNumber));
1679
1679
  ASSERT_TRUE(compaction.get() != nullptr);
1680
1680
  ASSERT_EQ(2U, compaction->num_input_levels());
1681
1681
  ASSERT_EQ(5U, compaction->num_input_files(0));
@@ -1706,7 +1706,7 @@ TEST_F(CompactionPickerTest, OverlappingUserKeys4) {
1706
1706
 
1707
1707
  std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
1708
1708
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
1709
- &log_buffer_));
1709
+ &log_buffer_, kMaxSequenceNumber));
1710
1710
  ASSERT_TRUE(compaction.get() != nullptr);
1711
1711
  ASSERT_EQ(2U, compaction->num_input_levels());
1712
1712
  ASSERT_EQ(1U, compaction->num_input_files(0));
@@ -1730,7 +1730,7 @@ TEST_F(CompactionPickerTest, OverlappingUserKeys5) {
1730
1730
 
1731
1731
  std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
1732
1732
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
1733
- &log_buffer_));
1733
+ &log_buffer_, kMaxSequenceNumber));
1734
1734
  ASSERT_TRUE(compaction.get() == nullptr);
1735
1735
  }
1736
1736
 
@@ -1752,7 +1752,7 @@ TEST_F(CompactionPickerTest, OverlappingUserKeys6) {
1752
1752
 
1753
1753
  std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
1754
1754
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
1755
- &log_buffer_));
1755
+ &log_buffer_, kMaxSequenceNumber));
1756
1756
  ASSERT_TRUE(compaction.get() != nullptr);
1757
1757
  ASSERT_EQ(2U, compaction->num_input_levels());
1758
1758
  ASSERT_EQ(1U, compaction->num_input_files(0));
@@ -1773,7 +1773,7 @@ TEST_F(CompactionPickerTest, OverlappingUserKeys7) {
1773
1773
 
1774
1774
  std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
1775
1775
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
1776
- &log_buffer_));
1776
+ &log_buffer_, kMaxSequenceNumber));
1777
1777
  ASSERT_TRUE(compaction.get() != nullptr);
1778
1778
  ASSERT_EQ(2U, compaction->num_input_levels());
1779
1779
  ASSERT_GE(1U, compaction->num_input_files(0));
@@ -1802,7 +1802,7 @@ TEST_F(CompactionPickerTest, OverlappingUserKeys8) {
1802
1802
 
1803
1803
  std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
1804
1804
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
1805
- &log_buffer_));
1805
+ &log_buffer_, kMaxSequenceNumber));
1806
1806
  ASSERT_TRUE(compaction.get() != nullptr);
1807
1807
  ASSERT_EQ(2U, compaction->num_input_levels());
1808
1808
  ASSERT_EQ(3U, compaction->num_input_files(0));
@@ -1835,7 +1835,7 @@ TEST_F(CompactionPickerTest, OverlappingUserKeys9) {
1835
1835
 
1836
1836
  std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
1837
1837
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
1838
- &log_buffer_));
1838
+ &log_buffer_, kMaxSequenceNumber));
1839
1839
  ASSERT_TRUE(compaction.get() != nullptr);
1840
1840
  ASSERT_EQ(2U, compaction->num_input_levels());
1841
1841
  ASSERT_EQ(5U, compaction->num_input_files(0));
@@ -1876,7 +1876,7 @@ TEST_F(CompactionPickerTest, OverlappingUserKeys10) {
1876
1876
 
1877
1877
  std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
1878
1878
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
1879
- &log_buffer_));
1879
+ &log_buffer_, kMaxSequenceNumber));
1880
1880
  ASSERT_TRUE(compaction.get() != nullptr);
1881
1881
  ASSERT_EQ(2U, compaction->num_input_levels());
1882
1882
  ASSERT_EQ(1U, compaction->num_input_files(0));
@@ -1915,7 +1915,7 @@ TEST_F(CompactionPickerTest, OverlappingUserKeys11) {
1915
1915
 
1916
1916
  std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
1917
1917
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
1918
- &log_buffer_));
1918
+ &log_buffer_, kMaxSequenceNumber));
1919
1919
  ASSERT_TRUE(compaction.get() != nullptr);
1920
1920
  ASSERT_EQ(2U, compaction->num_input_levels());
1921
1921
  ASSERT_EQ(1U, compaction->num_input_files(0));
@@ -2013,7 +2013,7 @@ TEST_F(CompactionPickerTest, NotScheduleL1IfL0WithHigherPri1) {
2013
2013
  ASSERT_EQ(1, vstorage_->CompactionScoreLevel(1));
2014
2014
  std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
2015
2015
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
2016
- &log_buffer_));
2016
+ &log_buffer_, kMaxSequenceNumber));
2017
2017
  ASSERT_TRUE(compaction.get() == nullptr);
2018
2018
  }
2019
2019
 
@@ -2044,7 +2044,7 @@ TEST_F(CompactionPickerTest, NotScheduleL1IfL0WithHigherPri2) {
2044
2044
  ASSERT_EQ(1, vstorage_->CompactionScoreLevel(1));
2045
2045
  std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
2046
2046
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
2047
- &log_buffer_));
2047
+ &log_buffer_, kMaxSequenceNumber));
2048
2048
  ASSERT_TRUE(compaction.get() != nullptr);
2049
2049
  }
2050
2050
 
@@ -2078,7 +2078,7 @@ TEST_F(CompactionPickerTest, NotScheduleL1IfL0WithHigherPri3) {
2078
2078
  ASSERT_EQ(0, vstorage_->CompactionScoreLevel(1));
2079
2079
  std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
2080
2080
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
2081
- &log_buffer_));
2081
+ &log_buffer_, kMaxSequenceNumber));
2082
2082
  ASSERT_TRUE(compaction.get() != nullptr);
2083
2083
  }
2084
2084
 
@@ -2374,7 +2374,7 @@ TEST_F(CompactionPickerTest, MaxCompactionBytesHit) {
2374
2374
 
2375
2375
  std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
2376
2376
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
2377
- &log_buffer_));
2377
+ &log_buffer_, kMaxSequenceNumber));
2378
2378
  ASSERT_TRUE(compaction.get() != nullptr);
2379
2379
  ASSERT_EQ(2U, compaction->num_input_levels());
2380
2380
  ASSERT_EQ(1U, compaction->num_input_files(0));
@@ -2400,7 +2400,7 @@ TEST_F(CompactionPickerTest, MaxCompactionBytesNotHit) {
2400
2400
 
2401
2401
  std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
2402
2402
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
2403
- &log_buffer_));
2403
+ &log_buffer_, kMaxSequenceNumber));
2404
2404
  ASSERT_TRUE(compaction.get() != nullptr);
2405
2405
  ASSERT_EQ(2U, compaction->num_input_levels());
2406
2406
  ASSERT_EQ(3U, compaction->num_input_files(0));
@@ -2430,7 +2430,7 @@ TEST_F(CompactionPickerTest, IsTrivialMoveOn) {
2430
2430
 
2431
2431
  std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
2432
2432
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
2433
- &log_buffer_));
2433
+ &log_buffer_, kMaxSequenceNumber));
2434
2434
  ASSERT_TRUE(compaction.get() != nullptr);
2435
2435
  ASSERT_TRUE(compaction->IsTrivialMove());
2436
2436
  }
@@ -2455,7 +2455,7 @@ TEST_F(CompactionPickerTest, L0TrivialMove1) {
2455
2455
 
2456
2456
  std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
2457
2457
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
2458
- &log_buffer_));
2458
+ &log_buffer_, kMaxSequenceNumber));
2459
2459
  ASSERT_TRUE(compaction.get() != nullptr);
2460
2460
  ASSERT_EQ(1, compaction->num_input_levels());
2461
2461
  ASSERT_EQ(2, compaction->num_input_files(0));
@@ -2484,7 +2484,7 @@ TEST_F(CompactionPickerTest, L0TrivialMoveOneFile) {
2484
2484
 
2485
2485
  std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
2486
2486
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
2487
- &log_buffer_));
2487
+ &log_buffer_, kMaxSequenceNumber));
2488
2488
  ASSERT_TRUE(compaction.get() != nullptr);
2489
2489
  ASSERT_EQ(1, compaction->num_input_levels());
2490
2490
  ASSERT_EQ(1, compaction->num_input_files(0));
@@ -2510,7 +2510,7 @@ TEST_F(CompactionPickerTest, L0TrivialMoveWholeL0) {
2510
2510
 
2511
2511
  std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
2512
2512
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
2513
- &log_buffer_));
2513
+ &log_buffer_, kMaxSequenceNumber));
2514
2514
  ASSERT_TRUE(compaction.get() != nullptr);
2515
2515
  ASSERT_EQ(1, compaction->num_input_levels());
2516
2516
  ASSERT_EQ(4, compaction->num_input_files(0));
@@ -2541,7 +2541,7 @@ TEST_F(CompactionPickerTest, IsTrivialMoveOffSstPartitioned) {
2541
2541
 
2542
2542
  std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
2543
2543
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
2544
- &log_buffer_));
2544
+ &log_buffer_, kMaxSequenceNumber));
2545
2545
  ASSERT_TRUE(compaction.get() != nullptr);
2546
2546
  // No trivial move, because partitioning is applied
2547
2547
  ASSERT_TRUE(!compaction->IsTrivialMove());
@@ -2564,7 +2564,7 @@ TEST_F(CompactionPickerTest, IsTrivialMoveOff) {
2564
2564
 
2565
2565
  std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
2566
2566
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
2567
- &log_buffer_));
2567
+ &log_buffer_, kMaxSequenceNumber));
2568
2568
  ASSERT_TRUE(compaction.get() != nullptr);
2569
2569
  ASSERT_FALSE(compaction->IsTrivialMove());
2570
2570
  }
@@ -2593,7 +2593,7 @@ TEST_F(CompactionPickerTest, TrivialMoveMultipleFiles1) {
2593
2593
 
2594
2594
  std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
2595
2595
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
2596
- &log_buffer_));
2596
+ &log_buffer_, kMaxSequenceNumber));
2597
2597
  ASSERT_TRUE(compaction.get() != nullptr);
2598
2598
  ASSERT_TRUE(compaction->IsTrivialMove());
2599
2599
  ASSERT_EQ(1, compaction->num_input_levels());
@@ -2627,7 +2627,7 @@ TEST_F(CompactionPickerTest, TrivialMoveMultipleFiles2) {
2627
2627
 
2628
2628
  std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
2629
2629
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
2630
- &log_buffer_));
2630
+ &log_buffer_, kMaxSequenceNumber));
2631
2631
  ASSERT_TRUE(compaction.get() != nullptr);
2632
2632
  ASSERT_TRUE(compaction->IsTrivialMove());
2633
2633
  ASSERT_EQ(1, compaction->num_input_levels());
@@ -2660,7 +2660,7 @@ TEST_F(CompactionPickerTest, TrivialMoveMultipleFiles3) {
2660
2660
 
2661
2661
  std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
2662
2662
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
2663
- &log_buffer_));
2663
+ &log_buffer_, kMaxSequenceNumber));
2664
2664
  ASSERT_TRUE(compaction.get() != nullptr);
2665
2665
  ASSERT_TRUE(compaction->IsTrivialMove());
2666
2666
  ASSERT_EQ(1, compaction->num_input_levels());
@@ -2686,7 +2686,7 @@ TEST_F(CompactionPickerTest, TrivialMoveMultipleFiles4) {
2686
2686
 
2687
2687
  std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
2688
2688
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
2689
- &log_buffer_));
2689
+ &log_buffer_, kMaxSequenceNumber));
2690
2690
  ASSERT_TRUE(compaction.get() != nullptr);
2691
2691
  ASSERT_TRUE(compaction->IsTrivialMove());
2692
2692
  ASSERT_EQ(1, compaction->num_input_levels());
@@ -2716,7 +2716,7 @@ TEST_F(CompactionPickerTest, TrivialMoveMultipleFiles5) {
2716
2716
 
2717
2717
  std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
2718
2718
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
2719
- &log_buffer_));
2719
+ &log_buffer_, kMaxSequenceNumber));
2720
2720
  ASSERT_TRUE(compaction.get() != nullptr);
2721
2721
  ASSERT_TRUE(compaction->IsTrivialMove());
2722
2722
  ASSERT_EQ(1, compaction->num_input_levels());
@@ -2750,7 +2750,7 @@ TEST_F(CompactionPickerTest, TrivialMoveMultipleFiles6) {
2750
2750
 
2751
2751
  std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
2752
2752
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
2753
- &log_buffer_));
2753
+ &log_buffer_, kMaxSequenceNumber));
2754
2754
  ASSERT_TRUE(compaction.get() != nullptr);
2755
2755
  ASSERT_TRUE(compaction->IsTrivialMove());
2756
2756
  ASSERT_EQ(1, compaction->num_input_levels());
@@ -2785,7 +2785,7 @@ TEST_F(CompactionPickerTest, CacheNextCompactionIndex) {
2785
2785
 
2786
2786
  std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
2787
2787
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
2788
- &log_buffer_));
2788
+ &log_buffer_, kMaxSequenceNumber));
2789
2789
  ASSERT_TRUE(compaction.get() != nullptr);
2790
2790
  ASSERT_EQ(2U, compaction->num_input_levels());
2791
2791
  ASSERT_EQ(1U, compaction->num_input_files(0));
@@ -2795,7 +2795,7 @@ TEST_F(CompactionPickerTest, CacheNextCompactionIndex) {
2795
2795
 
2796
2796
  compaction.reset(level_compaction_picker.PickCompaction(
2797
2797
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
2798
- &log_buffer_));
2798
+ &log_buffer_, kMaxSequenceNumber));
2799
2799
  ASSERT_TRUE(compaction.get() != nullptr);
2800
2800
  ASSERT_EQ(2U, compaction->num_input_levels());
2801
2801
  ASSERT_EQ(1U, compaction->num_input_files(0));
@@ -2805,7 +2805,7 @@ TEST_F(CompactionPickerTest, CacheNextCompactionIndex) {
2805
2805
 
2806
2806
  compaction.reset(level_compaction_picker.PickCompaction(
2807
2807
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
2808
- &log_buffer_));
2808
+ &log_buffer_, kMaxSequenceNumber));
2809
2809
  ASSERT_TRUE(compaction.get() == nullptr);
2810
2810
  ASSERT_EQ(4, vstorage_->NextCompactionIndex(1 /* level */));
2811
2811
  }
@@ -2831,7 +2831,7 @@ TEST_F(CompactionPickerTest, IntraL0MaxCompactionBytesNotHit) {
2831
2831
 
2832
2832
  std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
2833
2833
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
2834
- &log_buffer_));
2834
+ &log_buffer_, kMaxSequenceNumber));
2835
2835
  ASSERT_TRUE(compaction.get() != nullptr);
2836
2836
  ASSERT_EQ(1U, compaction->num_input_levels());
2837
2837
  ASSERT_EQ(5U, compaction->num_input_files(0));
@@ -2862,7 +2862,7 @@ TEST_F(CompactionPickerTest, IntraL0MaxCompactionBytesHit) {
2862
2862
 
2863
2863
  std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
2864
2864
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
2865
- &log_buffer_));
2865
+ &log_buffer_, kMaxSequenceNumber));
2866
2866
  ASSERT_TRUE(compaction.get() != nullptr);
2867
2867
  ASSERT_EQ(1U, compaction->num_input_levels());
2868
2868
  ASSERT_EQ(4U, compaction->num_input_files(0));
@@ -2928,7 +2928,7 @@ TEST_F(CompactionPickerTest, UniversalMarkedCompactionFullOverlap) {
2928
2928
  std::unique_ptr<Compaction> compaction(
2929
2929
  universal_compaction_picker.PickCompaction(
2930
2930
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
2931
- &log_buffer_));
2931
+ &log_buffer_, kMaxSequenceNumber));
2932
2932
 
2933
2933
  ASSERT_TRUE(compaction);
2934
2934
  // Validate that its a compaction to reduce sorted runs
@@ -2946,7 +2946,7 @@ TEST_F(CompactionPickerTest, UniversalMarkedCompactionFullOverlap) {
2946
2946
  std::unique_ptr<Compaction> compaction2(
2947
2947
  universal_compaction_picker.PickCompaction(
2948
2948
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
2949
- &log_buffer_));
2949
+ &log_buffer_, kMaxSequenceNumber));
2950
2950
  ASSERT_FALSE(compaction2);
2951
2951
  }
2952
2952
 
@@ -2971,7 +2971,7 @@ TEST_F(CompactionPickerTest, UniversalMarkedCompactionFullOverlap2) {
2971
2971
  std::unique_ptr<Compaction> compaction(
2972
2972
  universal_compaction_picker.PickCompaction(
2973
2973
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
2974
- &log_buffer_));
2974
+ &log_buffer_, kMaxSequenceNumber));
2975
2975
 
2976
2976
  ASSERT_TRUE(compaction);
2977
2977
  // Validate that its a delete triggered compaction
@@ -2990,7 +2990,7 @@ TEST_F(CompactionPickerTest, UniversalMarkedCompactionFullOverlap2) {
2990
2990
  std::unique_ptr<Compaction> compaction2(
2991
2991
  universal_compaction_picker.PickCompaction(
2992
2992
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
2993
- &log_buffer_));
2993
+ &log_buffer_, kMaxSequenceNumber));
2994
2994
  ASSERT_FALSE(compaction2);
2995
2995
  }
2996
2996
 
@@ -3031,7 +3031,7 @@ TEST_F(CompactionPickerTest, UniversalMarkedCompactionStartOutputOverlap) {
3031
3031
  std::unique_ptr<Compaction> compaction(
3032
3032
  universal_compaction_picker.PickCompaction(
3033
3033
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
3034
- &log_buffer_));
3034
+ &log_buffer_, kMaxSequenceNumber));
3035
3035
 
3036
3036
  ASSERT_TRUE(compaction);
3037
3037
  // Validate that its a delete triggered compaction
@@ -3062,7 +3062,7 @@ TEST_F(CompactionPickerTest, UniversalMarkedCompactionStartOutputOverlap) {
3062
3062
  std::unique_ptr<Compaction> compaction2(
3063
3063
  universal_compaction_picker.PickCompaction(
3064
3064
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
3065
- &log_buffer_));
3065
+ &log_buffer_, kMaxSequenceNumber));
3066
3066
  ASSERT_FALSE(compaction2);
3067
3067
  DeleteVersionStorage();
3068
3068
  }
@@ -3088,7 +3088,7 @@ TEST_F(CompactionPickerTest, UniversalMarkedL0NoOverlap) {
3088
3088
  std::unique_ptr<Compaction> compaction(
3089
3089
  universal_compaction_picker.PickCompaction(
3090
3090
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
3091
- &log_buffer_));
3091
+ &log_buffer_, kMaxSequenceNumber));
3092
3092
 
3093
3093
  ASSERT_TRUE(compaction);
3094
3094
  // Validate that its a delete triggered compaction
@@ -3125,7 +3125,7 @@ TEST_F(CompactionPickerTest, UniversalMarkedL0WithOverlap) {
3125
3125
  std::unique_ptr<Compaction> compaction(
3126
3126
  universal_compaction_picker.PickCompaction(
3127
3127
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
3128
- &log_buffer_));
3128
+ &log_buffer_, kMaxSequenceNumber));
3129
3129
 
3130
3130
  ASSERT_TRUE(compaction);
3131
3131
  // Validate that its a delete triggered compaction
@@ -3149,7 +3149,7 @@ TEST_F(CompactionPickerTest, UniversalMarkedL0Overlap2) {
3149
3149
  // should fail
3150
3150
  NewVersionStorage(1, kCompactionStyleUniversal);
3151
3151
 
3152
- // Mark file number 4 for compaction
3152
+ // Mark file number 5 for compaction
3153
3153
  Add(0, 4U, "260", "300", 1 * kFileSize, 0, 260, 300);
3154
3154
  Add(0, 5U, "240", "290", 2 * kFileSize, 0, 201, 250, 0, true);
3155
3155
  Add(0, 3U, "301", "350", 4 * kFileSize, 0, 101, 150);
@@ -3159,7 +3159,7 @@ TEST_F(CompactionPickerTest, UniversalMarkedL0Overlap2) {
3159
3159
  std::unique_ptr<Compaction> compaction(
3160
3160
  universal_compaction_picker.PickCompaction(
3161
3161
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
3162
- &log_buffer_));
3162
+ &log_buffer_, kMaxSequenceNumber));
3163
3163
 
3164
3164
  ASSERT_TRUE(compaction);
3165
3165
  // Validate that its a delete triggered compaction
@@ -3180,7 +3180,7 @@ TEST_F(CompactionPickerTest, UniversalMarkedL0Overlap2) {
3180
3180
  std::unique_ptr<Compaction> compaction2(
3181
3181
  universal_compaction_picker.PickCompaction(
3182
3182
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
3183
- &log_buffer_));
3183
+ &log_buffer_, kMaxSequenceNumber));
3184
3184
  ASSERT_TRUE(compaction2);
3185
3185
  ASSERT_EQ(3U, compaction->num_input_files(0));
3186
3186
  ASSERT_TRUE(file_map_[1].first->being_compacted);
@@ -3215,7 +3215,7 @@ TEST_F(CompactionPickerTest, UniversalMarkedManualCompaction) {
3215
3215
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
3216
3216
  ColumnFamilyData::kCompactAllLevels, 6, CompactRangeOptions(),
3217
3217
  nullptr, nullptr, &manual_end, &manual_conflict,
3218
- std::numeric_limits<uint64_t>::max(), ""));
3218
+ std::numeric_limits<uint64_t>::max(), "", kMaxSequenceNumber));
3219
3219
 
3220
3220
  ASSERT_TRUE(compaction);
3221
3221
 
@@ -3256,7 +3256,7 @@ TEST_F(CompactionPickerTest, UniversalSizeAmpTierCompactionNonLastLevel) {
3256
3256
  std::unique_ptr<Compaction> compaction(
3257
3257
  universal_compaction_picker.PickCompaction(
3258
3258
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
3259
- &log_buffer_));
3259
+ &log_buffer_, kMaxSequenceNumber));
3260
3260
 
3261
3261
  // Make sure it's a size amp compaction and includes all files
3262
3262
  ASSERT_EQ(compaction->compaction_reason(),
@@ -3292,7 +3292,7 @@ TEST_F(CompactionPickerTest, UniversalSizeRatioTierCompactionLastLevel) {
3292
3292
  std::unique_ptr<Compaction> compaction(
3293
3293
  universal_compaction_picker.PickCompaction(
3294
3294
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
3295
- &log_buffer_));
3295
+ &log_buffer_, kMaxSequenceNumber));
3296
3296
 
3297
3297
  // Internally, size amp compaction is evaluated before size ratio compaction.
3298
3298
  // Here to make sure it's size ratio compaction instead of size amp
@@ -3329,7 +3329,7 @@ TEST_F(CompactionPickerTest, UniversalSizeAmpTierCompactionNotSuport) {
3329
3329
  std::unique_ptr<Compaction> compaction(
3330
3330
  universal_compaction_picker.PickCompaction(
3331
3331
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
3332
- &log_buffer_));
3332
+ &log_buffer_, kMaxSequenceNumber));
3333
3333
 
3334
3334
  // size amp compaction is still triggered even preclude_last_level is set
3335
3335
  ASSERT_EQ(compaction->compaction_reason(),
@@ -3363,7 +3363,7 @@ TEST_F(CompactionPickerTest, UniversalSizeAmpTierCompactionLastLevel) {
3363
3363
  std::unique_ptr<Compaction> compaction(
3364
3364
  universal_compaction_picker.PickCompaction(
3365
3365
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
3366
- &log_buffer_));
3366
+ &log_buffer_, kMaxSequenceNumber));
3367
3367
 
3368
3368
  // It's a Size Amp compaction, but doesn't include the last level file and
3369
3369
  // output to the penultimate level.
@@ -3471,7 +3471,7 @@ TEST_F(CompactionPickerU64TsTest, CannotTrivialMoveUniversal) {
3471
3471
  std::unique_ptr<Compaction> compaction(
3472
3472
  universal_compaction_picker.PickCompaction(
3473
3473
  cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
3474
- &log_buffer_));
3474
+ &log_buffer_, kMaxSequenceNumber));
3475
3475
  assert(compaction);
3476
3476
  ASSERT_TRUE(!compaction->is_trivial_move());
3477
3477
  }
@@ -3524,9 +3524,11 @@ TEST_P(PerKeyPlacementCompactionPickerTest, OverlapWithNormalCompaction) {
3524
3524
  ASSERT_OK(level_compaction_picker.GetCompactionInputsFromFileNumbers(
3525
3525
  &input_files, &input_set, vstorage_.get(), comp_options));
3526
3526
 
3527
- ASSERT_EQ(
3528
- enable_per_key_placement_,
3529
- level_compaction_picker.FilesRangeOverlapWithCompaction(input_files, 6));
3527
+ ASSERT_EQ(enable_per_key_placement_,
3528
+ level_compaction_picker.FilesRangeOverlapWithCompaction(
3529
+ input_files, 6,
3530
+ Compaction::EvaluatePenultimateLevel(vstorage_.get(), ioptions_,
3531
+ 0, 6)));
3530
3532
  }
3531
3533
 
3532
3534
  TEST_P(PerKeyPlacementCompactionPickerTest, NormalCompactionOverlap) {
@@ -3567,9 +3569,9 @@ TEST_P(PerKeyPlacementCompactionPickerTest, NormalCompactionOverlap) {
3567
3569
  ASSERT_OK(level_compaction_picker.GetCompactionInputsFromFileNumbers(
3568
3570
  &input_files, &input_set, vstorage_.get(), comp_options));
3569
3571
 
3570
- ASSERT_EQ(
3571
- enable_per_key_placement_,
3572
- level_compaction_picker.FilesRangeOverlapWithCompaction(input_files, 5));
3572
+ ASSERT_EQ(enable_per_key_placement_,
3573
+ level_compaction_picker.FilesRangeOverlapWithCompaction(
3574
+ input_files, 5, Compaction::kInvalidLevel));
3573
3575
  }
3574
3576
 
3575
3577
  TEST_P(PerKeyPlacementCompactionPickerTest,
@@ -3612,7 +3614,9 @@ TEST_P(PerKeyPlacementCompactionPickerTest,
3612
3614
 
3613
3615
  ASSERT_EQ(enable_per_key_placement_,
3614
3616
  universal_compaction_picker.FilesRangeOverlapWithCompaction(
3615
- input_files, 6));
3617
+ input_files, 6,
3618
+ Compaction::EvaluatePenultimateLevel(vstorage_.get(), ioptions_,
3619
+ 0, 6)));
3616
3620
  }
3617
3621
 
3618
3622
  TEST_P(PerKeyPlacementCompactionPickerTest, NormalCompactionOverlapUniversal) {
@@ -3656,7 +3660,7 @@ TEST_P(PerKeyPlacementCompactionPickerTest, NormalCompactionOverlapUniversal) {
3656
3660
 
3657
3661
  ASSERT_EQ(enable_per_key_placement_,
3658
3662
  universal_compaction_picker.FilesRangeOverlapWithCompaction(
3659
- input_files, 5));
3663
+ input_files, 5, Compaction::kInvalidLevel));
3660
3664
  }
3661
3665
 
3662
3666
  TEST_P(PerKeyPlacementCompactionPickerTest, PenultimateOverlapUniversal) {
@@ -3677,7 +3681,7 @@ TEST_P(PerKeyPlacementCompactionPickerTest, PenultimateOverlapUniversal) {
3677
3681
  Add(4, 40U, "200", "220", 60000000U);
3678
3682
  Add(4, 41U, "230", "250", 60000000U);
3679
3683
  Add(4, 42U, "360", "380", 60000000U);
3680
- Add(6, 50U, "101", "351", 60000000U);
3684
+ Add(6, 60U, "101", "351", 60000000U);
3681
3685
  UpdateVersionStorageInfo();
3682
3686
 
3683
3687
  // the existing compaction is the 1st L4 file + L6 file
@@ -3686,7 +3690,58 @@ TEST_P(PerKeyPlacementCompactionPickerTest, PenultimateOverlapUniversal) {
3686
3690
  CompactionOptions comp_options;
3687
3691
  std::unordered_set<uint64_t> input_set;
3688
3692
  input_set.insert(40);
3689
- input_set.insert(50);
3693
+ input_set.insert(60);
3694
+ std::vector<CompactionInputFiles> input_files;
3695
+ ASSERT_OK(universal_compaction_picker.GetCompactionInputsFromFileNumbers(
3696
+ &input_files, &input_set, vstorage_.get(), comp_options));
3697
+
3698
+ std::unique_ptr<Compaction> comp1(universal_compaction_picker.CompactFiles(
3699
+ comp_options, input_files, 6, vstorage_.get(), mutable_cf_options_,
3700
+ mutable_db_options_, 0));
3701
+
3702
+ input_set.clear();
3703
+ input_files.clear();
3704
+ input_set.insert(41);
3705
+ ASSERT_OK(universal_compaction_picker.GetCompactionInputsFromFileNumbers(
3706
+ &input_files, &input_set, vstorage_.get(), comp_options));
3707
+
3708
+ ASSERT_EQ(enable_per_key_placement_,
3709
+ universal_compaction_picker.FilesRangeOverlapWithCompaction(
3710
+ input_files, 5, Compaction::kInvalidLevel));
3711
+
3712
+ // compacting the 3rd L4 file is always safe:
3713
+ input_set.clear();
3714
+ input_files.clear();
3715
+ input_set.insert(42);
3716
+ ASSERT_OK(universal_compaction_picker.GetCompactionInputsFromFileNumbers(
3717
+ &input_files, &input_set, vstorage_.get(), comp_options));
3718
+
3719
+ ASSERT_FALSE(universal_compaction_picker.FilesRangeOverlapWithCompaction(
3720
+ input_files, 5, Compaction::kInvalidLevel));
3721
+ }
3722
+
3723
+ TEST_P(PerKeyPlacementCompactionPickerTest, LastLevelOnlyOverlapUniversal) {
3724
+ if (enable_per_key_placement_) {
3725
+ ioptions_.preclude_last_level_data_seconds = 10000;
3726
+ }
3727
+
3728
+ int num_levels = ioptions_.num_levels;
3729
+ ioptions_.compaction_style = kCompactionStyleUniversal;
3730
+ UniversalCompactionPicker universal_compaction_picker(ioptions_, &icmp_);
3731
+ NewVersionStorage(num_levels, kCompactionStyleUniversal);
3732
+
3733
+ // L4: [200, 220] [230, 250] [360, 380]
3734
+ // L5:
3735
+ // L6: [101, 351]
3736
+ Add(4, 40U, "200", "220", 60000000U);
3737
+ Add(4, 41U, "230", "250", 60000000U);
3738
+ Add(4, 42U, "360", "380", 60000000U);
3739
+ Add(6, 60U, "101", "351", 60000000U);
3740
+ UpdateVersionStorageInfo();
3741
+
3742
+ CompactionOptions comp_options;
3743
+ std::unordered_set<uint64_t> input_set;
3744
+ input_set.insert(60);
3690
3745
  std::vector<CompactionInputFiles> input_files;
3691
3746
  ASSERT_OK(universal_compaction_picker.GetCompactionInputsFromFileNumbers(
3692
3747
  &input_files, &input_set, vstorage_.get(), comp_options));
@@ -3695,6 +3750,8 @@ TEST_P(PerKeyPlacementCompactionPickerTest, PenultimateOverlapUniversal) {
3695
3750
  comp_options, input_files, 6, vstorage_.get(), mutable_cf_options_,
3696
3751
  mutable_db_options_, 0));
3697
3752
 
3753
+ // cannot compact file 41 if the preclude_last_level feature is on, otherwise
3754
+ // compact file 41 is okay.
3698
3755
  input_set.clear();
3699
3756
  input_files.clear();
3700
3757
  input_set.insert(41);
@@ -3703,7 +3760,7 @@ TEST_P(PerKeyPlacementCompactionPickerTest, PenultimateOverlapUniversal) {
3703
3760
 
3704
3761
  ASSERT_EQ(enable_per_key_placement_,
3705
3762
  universal_compaction_picker.FilesRangeOverlapWithCompaction(
3706
- input_files, 5));
3763
+ input_files, 5, Compaction::kInvalidLevel));
3707
3764
 
3708
3765
  // compacting the 3rd L4 file is always safe:
3709
3766
  input_set.clear();
@@ -3713,7 +3770,184 @@ TEST_P(PerKeyPlacementCompactionPickerTest, PenultimateOverlapUniversal) {
3713
3770
  &input_files, &input_set, vstorage_.get(), comp_options));
3714
3771
 
3715
3772
  ASSERT_FALSE(universal_compaction_picker.FilesRangeOverlapWithCompaction(
3716
- input_files, 5));
3773
+ input_files, 5, Compaction::kInvalidLevel));
3774
+ }
3775
+
3776
+ TEST_P(PerKeyPlacementCompactionPickerTest,
3777
+ LastLevelOnlyFailPenultimateUniversal) {
3778
+ // This is to test last_level only compaction still unable to do the
3779
+ // penultimate level compaction if there's already a file in the penultimate
3780
+ // level.
3781
+ // This should rarely happen in universal compaction, as the non-empty L5
3782
+ // should be included in the compaction.
3783
+ if (enable_per_key_placement_) {
3784
+ ioptions_.preclude_last_level_data_seconds = 10000;
3785
+ }
3786
+
3787
+ int num_levels = ioptions_.num_levels;
3788
+ ioptions_.compaction_style = kCompactionStyleUniversal;
3789
+ UniversalCompactionPicker universal_compaction_picker(ioptions_, &icmp_);
3790
+ NewVersionStorage(num_levels, kCompactionStyleUniversal);
3791
+
3792
+ // L4: [200, 220]
3793
+ // L5: [230, 250]
3794
+ // L6: [101, 351]
3795
+ Add(4, 40U, "200", "220", 60000000U);
3796
+ Add(5, 50U, "230", "250", 60000000U);
3797
+ Add(6, 60U, "101", "351", 60000000U);
3798
+ UpdateVersionStorageInfo();
3799
+
3800
+ CompactionOptions comp_options;
3801
+ std::unordered_set<uint64_t> input_set;
3802
+ input_set.insert(60);
3803
+ std::vector<CompactionInputFiles> input_files;
3804
+ ASSERT_OK(universal_compaction_picker.GetCompactionInputsFromFileNumbers(
3805
+ &input_files, &input_set, vstorage_.get(), comp_options));
3806
+
3807
+ std::unique_ptr<Compaction> comp1(universal_compaction_picker.CompactFiles(
3808
+ comp_options, input_files, 6, vstorage_.get(), mutable_cf_options_,
3809
+ mutable_db_options_, 0));
3810
+
3811
+ ASSERT_TRUE(comp1);
3812
+ ASSERT_EQ(comp1->GetPenultimateLevel(), Compaction::kInvalidLevel);
3813
+
3814
+ // As comp1 cannot be output to the penultimate level, compacting file 40 to
3815
+ // L5 is always safe.
3816
+ input_set.clear();
3817
+ input_files.clear();
3818
+ input_set.insert(40);
3819
+ ASSERT_OK(universal_compaction_picker.GetCompactionInputsFromFileNumbers(
3820
+ &input_files, &input_set, vstorage_.get(), comp_options));
3821
+
3822
+ ASSERT_FALSE(universal_compaction_picker.FilesRangeOverlapWithCompaction(
3823
+ input_files, 5, Compaction::kInvalidLevel));
3824
+
3825
+ std::unique_ptr<Compaction> comp2(universal_compaction_picker.CompactFiles(
3826
+ comp_options, input_files, 5, vstorage_.get(), mutable_cf_options_,
3827
+ mutable_db_options_, 0));
3828
+ ASSERT_TRUE(comp2);
3829
+ ASSERT_EQ(Compaction::kInvalidLevel, comp2->GetPenultimateLevel());
3830
+ }
3831
+
3832
+ TEST_P(PerKeyPlacementCompactionPickerTest,
3833
+ LastLevelOnlyConflictWithOngoingUniversal) {
3834
+ // This is to test last_level only compaction still unable to do the
3835
+ // penultimate level compaction if there's already an ongoing compaction to
3836
+ // the penultimate level
3837
+ if (enable_per_key_placement_) {
3838
+ ioptions_.preclude_last_level_data_seconds = 10000;
3839
+ }
3840
+
3841
+ int num_levels = ioptions_.num_levels;
3842
+ ioptions_.compaction_style = kCompactionStyleUniversal;
3843
+ UniversalCompactionPicker universal_compaction_picker(ioptions_, &icmp_);
3844
+ NewVersionStorage(num_levels, kCompactionStyleUniversal);
3845
+
3846
+ // L4: [200, 220] [230, 250] [360, 380]
3847
+ // L5:
3848
+ // L6: [101, 351]
3849
+ Add(4, 40U, "200", "220", 60000000U);
3850
+ Add(4, 41U, "230", "250", 60000000U);
3851
+ Add(4, 42U, "360", "380", 60000000U);
3852
+ Add(6, 60U, "101", "351", 60000000U);
3853
+ UpdateVersionStorageInfo();
3854
+
3855
+ // create an ongoing compaction to L5 (penultimate level)
3856
+ CompactionOptions comp_options;
3857
+ std::unordered_set<uint64_t> input_set;
3858
+ input_set.insert(40);
3859
+ std::vector<CompactionInputFiles> input_files;
3860
+ ASSERT_OK(universal_compaction_picker.GetCompactionInputsFromFileNumbers(
3861
+ &input_files, &input_set, vstorage_.get(), comp_options));
3862
+
3863
+ std::unique_ptr<Compaction> comp1(universal_compaction_picker.CompactFiles(
3864
+ comp_options, input_files, 5, vstorage_.get(), mutable_cf_options_,
3865
+ mutable_db_options_, 0));
3866
+
3867
+ ASSERT_TRUE(comp1);
3868
+ ASSERT_EQ(comp1->GetPenultimateLevel(), Compaction::kInvalidLevel);
3869
+
3870
+ input_set.clear();
3871
+ input_files.clear();
3872
+ input_set.insert(60);
3873
+ ASSERT_OK(universal_compaction_picker.GetCompactionInputsFromFileNumbers(
3874
+ &input_files, &input_set, vstorage_.get(), comp_options));
3875
+
3876
+ ASSERT_EQ(enable_per_key_placement_,
3877
+ universal_compaction_picker.FilesRangeOverlapWithCompaction(
3878
+ input_files, 6,
3879
+ Compaction::EvaluatePenultimateLevel(vstorage_.get(), ioptions_,
3880
+ 6, 6)));
3881
+
3882
+ if (!enable_per_key_placement_) {
3883
+ std::unique_ptr<Compaction> comp2(universal_compaction_picker.CompactFiles(
3884
+ comp_options, input_files, 6, vstorage_.get(), mutable_cf_options_,
3885
+ mutable_db_options_, 0));
3886
+ ASSERT_TRUE(comp2);
3887
+ ASSERT_EQ(Compaction::kInvalidLevel, comp2->GetPenultimateLevel());
3888
+ }
3889
+ }
3890
+
3891
+ TEST_P(PerKeyPlacementCompactionPickerTest,
3892
+ LastLevelOnlyNoConflictWithOngoingUniversal) {
3893
+ // This is similar to `LastLevelOnlyConflictWithOngoingUniversal`, the only
3894
+ // change is the ongoing compaction to L5 has no overlap with the last level
3895
+ // compaction, so it's safe to move data from the last level to the
3896
+ // penultimate level.
3897
+ if (enable_per_key_placement_) {
3898
+ ioptions_.preclude_last_level_data_seconds = 10000;
3899
+ }
3900
+
3901
+ int num_levels = ioptions_.num_levels;
3902
+ ioptions_.compaction_style = kCompactionStyleUniversal;
3903
+ UniversalCompactionPicker universal_compaction_picker(ioptions_, &icmp_);
3904
+ NewVersionStorage(num_levels, kCompactionStyleUniversal);
3905
+
3906
+ // L4: [200, 220] [230, 250] [360, 380]
3907
+ // L5:
3908
+ // L6: [101, 351]
3909
+ Add(4, 40U, "200", "220", 60000000U);
3910
+ Add(4, 41U, "230", "250", 60000000U);
3911
+ Add(4, 42U, "360", "380", 60000000U);
3912
+ Add(6, 60U, "101", "351", 60000000U);
3913
+ UpdateVersionStorageInfo();
3914
+
3915
+ // create an ongoing compaction to L5 (penultimate level)
3916
+ CompactionOptions comp_options;
3917
+ std::unordered_set<uint64_t> input_set;
3918
+ input_set.insert(42);
3919
+ std::vector<CompactionInputFiles> input_files;
3920
+ ASSERT_OK(universal_compaction_picker.GetCompactionInputsFromFileNumbers(
3921
+ &input_files, &input_set, vstorage_.get(), comp_options));
3922
+
3923
+ std::unique_ptr<Compaction> comp1(universal_compaction_picker.CompactFiles(
3924
+ comp_options, input_files, 5, vstorage_.get(), mutable_cf_options_,
3925
+ mutable_db_options_, 0));
3926
+
3927
+ ASSERT_TRUE(comp1);
3928
+ ASSERT_EQ(comp1->GetPenultimateLevel(), Compaction::kInvalidLevel);
3929
+
3930
+ input_set.clear();
3931
+ input_files.clear();
3932
+ input_set.insert(60);
3933
+ ASSERT_OK(universal_compaction_picker.GetCompactionInputsFromFileNumbers(
3934
+ &input_files, &input_set, vstorage_.get(), comp_options));
3935
+
3936
+ // always safe to move data up
3937
+ ASSERT_FALSE(universal_compaction_picker.FilesRangeOverlapWithCompaction(
3938
+ input_files, 6,
3939
+ Compaction::EvaluatePenultimateLevel(vstorage_.get(), ioptions_, 6, 6)));
3940
+
3941
+ // 2 compactions can be run in parallel
3942
+ std::unique_ptr<Compaction> comp2(universal_compaction_picker.CompactFiles(
3943
+ comp_options, input_files, 6, vstorage_.get(), mutable_cf_options_,
3944
+ mutable_db_options_, 0));
3945
+ ASSERT_TRUE(comp2);
3946
+ if (enable_per_key_placement_) {
3947
+ ASSERT_NE(Compaction::kInvalidLevel, comp2->GetPenultimateLevel());
3948
+ } else {
3949
+ ASSERT_EQ(Compaction::kInvalidLevel, comp2->GetPenultimateLevel());
3950
+ }
3717
3951
  }
3718
3952
 
3719
3953
  INSTANTIATE_TEST_CASE_P(PerKeyPlacementCompactionPickerTest,