@nxtedition/rocksdb 7.1.20 → 7.1.21

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 (262) hide show
  1. package/deps/rocksdb/rocksdb/CMakeLists.txt +13 -6
  2. package/deps/rocksdb/rocksdb/Makefile +1 -1
  3. package/deps/rocksdb/rocksdb/TARGETS +2 -0
  4. package/deps/rocksdb/rocksdb/cache/cache_reservation_manager_test.cc +1 -0
  5. package/deps/rocksdb/rocksdb/cache/cache_test.cc +4 -4
  6. package/deps/rocksdb/rocksdb/cache/clock_cache.cc +139 -161
  7. package/deps/rocksdb/rocksdb/cache/clock_cache.h +92 -82
  8. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +16 -3
  9. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +9 -3
  10. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +73 -30
  11. package/deps/rocksdb/rocksdb/cache/fast_lru_cache.cc +25 -67
  12. package/deps/rocksdb/rocksdb/cache/fast_lru_cache.h +41 -40
  13. package/deps/rocksdb/rocksdb/cache/lru_cache.cc +109 -155
  14. package/deps/rocksdb/rocksdb/cache/lru_cache.h +127 -149
  15. package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +75 -80
  16. package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +22 -172
  17. package/deps/rocksdb/rocksdb/cache/sharded_cache.h +272 -85
  18. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +12 -4
  19. package/deps/rocksdb/rocksdb/db/blob/blob_counting_iterator_test.cc +1 -0
  20. package/deps/rocksdb/rocksdb/db/blob/blob_file_addition_test.cc +1 -0
  21. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +1 -0
  22. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache_test.cc +1 -0
  23. package/deps/rocksdb/rocksdb/db/blob/blob_file_garbage_test.cc +1 -0
  24. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +1 -0
  25. package/deps/rocksdb/rocksdb/db/blob/blob_garbage_meter_test.cc +1 -0
  26. package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +13 -4
  27. package/deps/rocksdb/rocksdb/db/builder.cc +1 -1
  28. package/deps/rocksdb/rocksdb/db/column_family.cc +15 -1
  29. package/deps/rocksdb/rocksdb/db/compact_files_test.cc +1 -0
  30. package/deps/rocksdb/rocksdb/db/compaction/clipping_iterator_test.cc +1 -0
  31. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +25 -7
  32. package/deps/rocksdb/rocksdb/db/compaction/compaction.h +10 -0
  33. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +22 -8
  34. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +14 -5
  35. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +1 -0
  36. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +38 -12
  37. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +9 -6
  38. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +408 -6
  39. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +244 -54
  40. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +27 -6
  41. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +25 -30
  42. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +87 -26
  43. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +23 -4
  44. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +61 -0
  45. package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +294 -21
  46. package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +1 -0
  47. package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +1 -0
  48. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +28 -10
  49. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +4 -4
  50. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +272 -0
  51. package/deps/rocksdb/rocksdb/db/db_flush_test.cc +38 -0
  52. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +69 -25
  53. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +7 -3
  54. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +29 -12
  55. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +0 -12
  56. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +10 -4
  57. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +35 -22
  58. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +5 -1
  59. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +40 -5
  60. package/deps/rocksdb/rocksdb/db/db_iter.cc +1 -0
  61. package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +1 -0
  62. package/deps/rocksdb/rocksdb/db/db_iter_test.cc +1 -0
  63. package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +22 -0
  64. package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +1 -0
  65. package/deps/rocksdb/rocksdb/db/db_logical_block_size_cache_test.cc +1 -0
  66. package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +72 -5
  67. package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +60 -21
  68. package/deps/rocksdb/rocksdb/db/db_test.cc +170 -1
  69. package/deps/rocksdb/rocksdb/db/db_test2.cc +9 -3
  70. package/deps/rocksdb/rocksdb/db/db_test_util.cc +19 -0
  71. package/deps/rocksdb/rocksdb/db/db_test_util.h +32 -0
  72. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +444 -3
  73. package/deps/rocksdb/rocksdb/db/db_write_test.cc +8 -8
  74. package/deps/rocksdb/rocksdb/db/dbformat.cc +13 -0
  75. package/deps/rocksdb/rocksdb/db/dbformat.h +59 -4
  76. package/deps/rocksdb/rocksdb/db/dbformat_test.cc +1 -0
  77. package/deps/rocksdb/rocksdb/db/experimental.cc +3 -1
  78. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +24 -3
  79. package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +1 -0
  80. package/deps/rocksdb/rocksdb/db/filename_test.cc +1 -0
  81. package/deps/rocksdb/rocksdb/db/flush_job.cc +4 -3
  82. package/deps/rocksdb/rocksdb/db/flush_job_test.cc +1 -0
  83. package/deps/rocksdb/rocksdb/db/forward_iterator.cc +85 -43
  84. package/deps/rocksdb/rocksdb/db/forward_iterator.h +3 -1
  85. package/deps/rocksdb/rocksdb/db/internal_stats.cc +33 -6
  86. package/deps/rocksdb/rocksdb/db/internal_stats.h +6 -0
  87. package/deps/rocksdb/rocksdb/db/listener_test.cc +1 -0
  88. package/deps/rocksdb/rocksdb/db/log_test.cc +1 -0
  89. package/deps/rocksdb/rocksdb/db/log_writer.cc +1 -1
  90. package/deps/rocksdb/rocksdb/db/log_writer.h +1 -1
  91. package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +1 -0
  92. package/deps/rocksdb/rocksdb/db/memtable.cc +158 -56
  93. package/deps/rocksdb/rocksdb/db/memtable.h +2 -0
  94. package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +1 -0
  95. package/deps/rocksdb/rocksdb/db/merge_helper_test.cc +1 -0
  96. package/deps/rocksdb/rocksdb/db/options_file_test.cc +1 -0
  97. package/deps/rocksdb/rocksdb/db/perf_context_test.cc +1 -0
  98. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler_test.cc +1 -0
  99. package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +1 -0
  100. package/deps/rocksdb/rocksdb/db/prefix_test.cc +1 -0
  101. package/deps/rocksdb/rocksdb/db/range_del_aggregator.cc +52 -9
  102. package/deps/rocksdb/rocksdb/db/range_del_aggregator.h +31 -2
  103. package/deps/rocksdb/rocksdb/db/range_del_aggregator_test.cc +1 -0
  104. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.cc +81 -42
  105. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +78 -12
  106. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter_test.cc +1 -0
  107. package/deps/rocksdb/rocksdb/db/repair_test.cc +1 -0
  108. package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +154 -27
  109. package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.cc +21 -4
  110. package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.h +4 -1
  111. package/deps/rocksdb/rocksdb/db/table_cache.cc +18 -6
  112. package/deps/rocksdb/rocksdb/db/table_properties_collector_test.cc +1 -0
  113. package/deps/rocksdb/rocksdb/db/version_builder_test.cc +1 -0
  114. package/deps/rocksdb/rocksdb/db/version_edit_test.cc +1 -0
  115. package/deps/rocksdb/rocksdb/db/version_set.cc +15 -7
  116. package/deps/rocksdb/rocksdb/db/version_set.h +2 -1
  117. package/deps/rocksdb/rocksdb/db/version_set_test.cc +1 -0
  118. package/deps/rocksdb/rocksdb/db/version_util.h +3 -1
  119. package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +1 -0
  120. package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.cc +28 -9
  121. package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.h +21 -0
  122. package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization_test.cc +30 -0
  123. package/deps/rocksdb/rocksdb/db/wide/wide_columns.cc +4 -0
  124. package/deps/rocksdb/rocksdb/db/write_batch.cc +30 -7
  125. package/deps/rocksdb/rocksdb/db/write_batch_internal.h +24 -13
  126. package/deps/rocksdb/rocksdb/db/write_batch_test.cc +5 -4
  127. package/deps/rocksdb/rocksdb/db/write_callback_test.cc +1 -0
  128. package/deps/rocksdb/rocksdb/db/write_controller_test.cc +1 -0
  129. package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +104 -60
  130. package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +199 -108
  131. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +39 -0
  132. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +8 -0
  133. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +3 -1
  134. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +19 -0
  135. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +26 -0
  136. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +247 -118
  137. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +24 -4
  138. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +18 -0
  139. package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +129 -1
  140. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +22 -0
  141. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.h +4 -0
  142. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +312 -117
  143. package/deps/rocksdb/rocksdb/env/env_basic_test.cc +1 -0
  144. package/deps/rocksdb/rocksdb/env/fs_posix.cc +10 -2
  145. package/deps/rocksdb/rocksdb/env/io_posix_test.cc +1 -0
  146. package/deps/rocksdb/rocksdb/env/mock_env_test.cc +1 -0
  147. package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +5 -1
  148. package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +1 -0
  149. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +1 -0
  150. package/deps/rocksdb/rocksdb/file/writable_file_writer.h +1 -1
  151. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +49 -1
  152. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +44 -18
  153. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +8 -7
  154. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +6 -1
  155. package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +3 -0
  156. package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +17 -4
  157. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_reader.h +4 -0
  158. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +7 -0
  159. package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +1 -1
  160. package/deps/rocksdb/rocksdb/include/rocksdb/wide_columns.h +9 -0
  161. package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +3 -6
  162. package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +1 -0
  163. package/deps/rocksdb/rocksdb/logging/env_logger_test.cc +1 -0
  164. package/deps/rocksdb/rocksdb/logging/event_logger_test.cc +1 -0
  165. package/deps/rocksdb/rocksdb/memory/arena.cc +23 -88
  166. package/deps/rocksdb/rocksdb/memory/arena.h +25 -31
  167. package/deps/rocksdb/rocksdb/memory/arena_test.cc +61 -0
  168. package/deps/rocksdb/rocksdb/memory/memory_allocator_test.cc +1 -0
  169. package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +1 -0
  170. package/deps/rocksdb/rocksdb/memtable/skiplist_test.cc +1 -0
  171. package/deps/rocksdb/rocksdb/memtable/write_buffer_manager_test.cc +1 -0
  172. package/deps/rocksdb/rocksdb/monitoring/histogram_test.cc +1 -0
  173. package/deps/rocksdb/rocksdb/monitoring/iostats_context_test.cc +1 -0
  174. package/deps/rocksdb/rocksdb/options/cf_options.cc +19 -0
  175. package/deps/rocksdb/rocksdb/options/cf_options.h +8 -0
  176. package/deps/rocksdb/rocksdb/options/configurable_test.cc +1 -0
  177. package/deps/rocksdb/rocksdb/options/options.cc +7 -0
  178. package/deps/rocksdb/rocksdb/options/options_helper.cc +6 -0
  179. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +6 -0
  180. package/deps/rocksdb/rocksdb/options/options_test.cc +63 -40
  181. package/deps/rocksdb/rocksdb/port/mmap.cc +98 -0
  182. package/deps/rocksdb/rocksdb/port/mmap.h +70 -0
  183. package/deps/rocksdb/rocksdb/port/stack_trace.cc +7 -0
  184. package/deps/rocksdb/rocksdb/port/stack_trace.h +4 -1
  185. package/deps/rocksdb/rocksdb/port/win/port_win.h +2 -7
  186. package/deps/rocksdb/rocksdb/src.mk +1 -0
  187. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +7 -7
  188. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +3 -3
  189. package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +1 -0
  190. package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +1 -0
  191. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block_test.cc +1 -0
  192. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +1 -0
  193. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +1 -0
  194. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +1 -0
  195. package/deps/rocksdb/rocksdb/table/get_context.cc +19 -1
  196. package/deps/rocksdb/rocksdb/table/get_context.h +9 -0
  197. package/deps/rocksdb/rocksdb/table/merger_test.cc +1 -0
  198. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +10 -11
  199. package/deps/rocksdb/rocksdb/table/mock_table.cc +37 -19
  200. package/deps/rocksdb/rocksdb/table/mock_table.h +5 -1
  201. package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +6 -0
  202. package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +33 -0
  203. package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +45 -6
  204. package/deps/rocksdb/rocksdb/test_util/testharness.h +2 -0
  205. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +1 -0
  206. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +5 -0
  207. package/deps/rocksdb/rocksdb/tools/db_bench_tool_test.cc +1 -0
  208. package/deps/rocksdb/rocksdb/tools/io_tracer_parser_test.cc +1 -0
  209. package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +36 -0
  210. package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +1 -0
  211. package/deps/rocksdb/rocksdb/tools/trace_analyzer_test.cc +1 -0
  212. package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer_test.cc +1 -0
  213. package/deps/rocksdb/rocksdb/trace_replay/io_tracer_test.cc +1 -0
  214. package/deps/rocksdb/rocksdb/util/autovector_test.cc +1 -0
  215. package/deps/rocksdb/rocksdb/util/bloom_test.cc +1 -0
  216. package/deps/rocksdb/rocksdb/util/coding_test.cc +1 -0
  217. package/deps/rocksdb/rocksdb/util/crc32c_test.cc +1 -0
  218. package/deps/rocksdb/rocksdb/util/dynamic_bloom_test.cc +1 -0
  219. package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +1 -0
  220. package/deps/rocksdb/rocksdb/util/filelock_test.cc +1 -0
  221. package/deps/rocksdb/rocksdb/util/gflags_compat.h +12 -7
  222. package/deps/rocksdb/rocksdb/util/hash_test.cc +1 -0
  223. package/deps/rocksdb/rocksdb/util/heap_test.cc +4 -2
  224. package/deps/rocksdb/rocksdb/util/random_test.cc +1 -0
  225. package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +1 -0
  226. package/deps/rocksdb/rocksdb/util/repeatable_thread_test.cc +1 -0
  227. package/deps/rocksdb/rocksdb/util/ribbon_test.cc +1 -0
  228. package/deps/rocksdb/rocksdb/util/slice_transform_test.cc +1 -0
  229. package/deps/rocksdb/rocksdb/util/thread_list_test.cc +1 -0
  230. package/deps/rocksdb/rocksdb/util/thread_local_test.cc +1 -0
  231. package/deps/rocksdb/rocksdb/util/timer_test.cc +1 -0
  232. package/deps/rocksdb/rocksdb/util/work_queue_test.cc +4 -0
  233. package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge_test.cc +1 -0
  234. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +13 -0
  235. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +9 -3
  236. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +1 -0
  237. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_format_test.cc +1 -0
  238. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_functional_test.cc +1 -0
  239. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_row_merge_test.cc +1 -0
  240. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_serialize_test.cc +1 -0
  241. package/deps/rocksdb/rocksdb/utilities/env_mirror_test.cc +1 -0
  242. package/deps/rocksdb/rocksdb/utilities/env_timed_test.cc +1 -0
  243. package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.h +8 -0
  244. package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +1 -0
  245. package/deps/rocksdb/rocksdb/utilities/object_registry_test.cc +1 -0
  246. package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +1 -0
  247. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_test.cc +1 -0
  248. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.cc +1 -0
  249. package/deps/rocksdb/rocksdb/utilities/simulator_cache/cache_simulator_test.cc +1 -0
  250. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +1 -0
  251. package/deps/rocksdb/rocksdb/utilities/transactions/timestamped_snapshot_test.cc +1 -0
  252. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +1 -0
  253. package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +1 -0
  254. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +1 -0
  255. package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +1 -0
  256. package/deps/rocksdb/rocksdb/utilities/util_merge_operators_test.cc +1 -0
  257. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +7 -0
  258. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +20 -0
  259. package/index.js +12 -4
  260. package/package.json +1 -1
  261. package/prebuilds/darwin-arm64/node.napi.node +0 -0
  262. package/prebuilds/linux-x64/node.napi.node +0 -0
@@ -228,6 +228,9 @@ class CompactionJobTestBase : public testing::Test {
228
228
  test::CreateEnvFromSystem(ConfigOptions(), &base_env, &env_guard_));
229
229
  env_ = base_env;
230
230
  fs_ = env_->GetFileSystem();
231
+ // set default for the tests
232
+ mutable_cf_options_.target_file_size_base = 1024 * 1024;
233
+ mutable_cf_options_.max_compaction_bytes = 10 * 1024 * 1024;
231
234
  }
232
235
 
233
236
  void SetUp() override {
@@ -415,8 +418,9 @@ class CompactionJobTestBase : public testing::Test {
415
418
 
416
419
  auto cfd = versions_->GetColumnFamilySet()->GetDefault();
417
420
  if (table_type_ == TableTypeForTest::kMockTable) {
418
- assert(expected_results.size() == 1);
419
- mock_table_factory_->AssertLatestFile(expected_results[0]);
421
+ ASSERT_EQ(compaction_job_stats_.num_output_files,
422
+ expected_results.size());
423
+ mock_table_factory_->AssertLatestFiles(expected_results);
420
424
  } else {
421
425
  assert(table_type_ == TableTypeForTest::kBlockBasedTable);
422
426
  }
@@ -426,7 +430,8 @@ class CompactionJobTestBase : public testing::Test {
426
430
  ASSERT_EQ(expected_output_file_num, output_files.size());
427
431
 
428
432
  if (table_type_ == TableTypeForTest::kMockTable) {
429
- assert(output_files.size() == 1);
433
+ assert(output_files.size() ==
434
+ static_cast<size_t>(expected_output_file_num));
430
435
  const FileMetaData* const output_file = output_files[0];
431
436
  ASSERT_EQ(output_file->oldest_blob_file_number,
432
437
  expected_oldest_blob_file_numbers[0]);
@@ -620,12 +625,22 @@ class CompactionJobTestBase : public testing::Test {
620
625
  num_input_files += level_files.size();
621
626
  }
622
627
 
628
+ std::vector<FileMetaData*> grandparents;
629
+ // it should actually be the next non-empty level
630
+ const int kGrandparentsLevel = output_level + 1;
631
+ if (kGrandparentsLevel < cf_options_.num_levels) {
632
+ grandparents =
633
+ cfd_->current()->storage_info()->LevelFiles(kGrandparentsLevel);
634
+ }
635
+
623
636
  Compaction compaction(
624
637
  cfd->current()->storage_info(), *cfd->ioptions(),
625
638
  *cfd->GetLatestMutableCFOptions(), mutable_db_options_,
626
- compaction_input_files, output_level, 1024 * 1024, 10 * 1024 * 1024, 0,
627
- kNoCompression, cfd->GetLatestMutableCFOptions()->compression_opts,
628
- Temperature::kUnknown, max_subcompactions, {}, true);
639
+ compaction_input_files, output_level,
640
+ mutable_cf_options_.target_file_size_base,
641
+ mutable_cf_options_.max_compaction_bytes, 0, kNoCompression,
642
+ cfd->GetLatestMutableCFOptions()->compression_opts,
643
+ Temperature::kUnknown, max_subcompactions, grandparents, true);
629
644
  compaction.SetInputVersion(cfd->current());
630
645
 
631
646
  assert(db_options_.info_log);
@@ -1721,6 +1736,392 @@ TEST_F(CompactionJobTest, ResultSerialization) {
1721
1736
  }
1722
1737
  }
1723
1738
 
1739
+ class CompactionJobDynamicFileSizeTest
1740
+ : public CompactionJobTestBase,
1741
+ public ::testing::WithParamInterface<bool> {
1742
+ public:
1743
+ CompactionJobDynamicFileSizeTest()
1744
+ : CompactionJobTestBase(
1745
+ test::PerThreadDBPath("compaction_job_dynamic_file_size_test"),
1746
+ BytewiseComparator(), [](uint64_t /*ts*/) { return ""; },
1747
+ /*test_io_priority=*/false, TableTypeForTest::kMockTable) {}
1748
+ };
1749
+
1750
+ TEST_P(CompactionJobDynamicFileSizeTest, CutForMaxCompactionBytes) {
1751
+ // dynamic_file_size option should have no impact on cutting for max
1752
+ // compaction bytes.
1753
+ bool enable_dyanmic_file_size = GetParam();
1754
+ cf_options_.level_compaction_dynamic_file_size = enable_dyanmic_file_size;
1755
+
1756
+ NewDB();
1757
+ mutable_cf_options_.target_file_size_base = 80;
1758
+ mutable_cf_options_.max_compaction_bytes = 21;
1759
+
1760
+ auto file1 = mock::MakeMockFile({
1761
+ {KeyStr("c", 5U, kTypeValue), "val2"},
1762
+ {KeyStr("n", 6U, kTypeValue), "val3"},
1763
+ });
1764
+ AddMockFile(file1);
1765
+
1766
+ auto file2 = mock::MakeMockFile({{KeyStr("h", 3U, kTypeValue), "val"},
1767
+ {KeyStr("j", 4U, kTypeValue), "val"}});
1768
+ AddMockFile(file2, 1);
1769
+
1770
+ // Create three L2 files, each size 10.
1771
+ // max_compaction_bytes 21 means the compaction output in L1 will
1772
+ // be cut to at least two files.
1773
+ auto file3 = mock::MakeMockFile({{KeyStr("b", 1U, kTypeValue), "val"},
1774
+ {KeyStr("c", 1U, kTypeValue), "val"},
1775
+ {KeyStr("c1", 1U, kTypeValue), "val"},
1776
+ {KeyStr("c2", 1U, kTypeValue), "val"},
1777
+ {KeyStr("c3", 1U, kTypeValue), "val"},
1778
+ {KeyStr("c4", 1U, kTypeValue), "val"},
1779
+ {KeyStr("d", 1U, kTypeValue), "val"},
1780
+ {KeyStr("e", 2U, kTypeValue), "val"}});
1781
+ AddMockFile(file3, 2);
1782
+
1783
+ auto file4 = mock::MakeMockFile({{KeyStr("h", 1U, kTypeValue), "val"},
1784
+ {KeyStr("i", 1U, kTypeValue), "val"},
1785
+ {KeyStr("i1", 1U, kTypeValue), "val"},
1786
+ {KeyStr("i2", 1U, kTypeValue), "val"},
1787
+ {KeyStr("i3", 1U, kTypeValue), "val"},
1788
+ {KeyStr("i4", 1U, kTypeValue), "val"},
1789
+ {KeyStr("j", 1U, kTypeValue), "val"},
1790
+ {KeyStr("k", 2U, kTypeValue), "val"}});
1791
+ AddMockFile(file4, 2);
1792
+
1793
+ auto file5 = mock::MakeMockFile({{KeyStr("l", 1U, kTypeValue), "val"},
1794
+ {KeyStr("m", 1U, kTypeValue), "val"},
1795
+ {KeyStr("m1", 1U, kTypeValue), "val"},
1796
+ {KeyStr("m2", 1U, kTypeValue), "val"},
1797
+ {KeyStr("m3", 1U, kTypeValue), "val"},
1798
+ {KeyStr("m4", 1U, kTypeValue), "val"},
1799
+ {KeyStr("n", 1U, kTypeValue), "val"},
1800
+ {KeyStr("o", 2U, kTypeValue), "val"}});
1801
+ AddMockFile(file5, 2);
1802
+
1803
+ // The expected output should be:
1804
+ // L1: [c, h, j] [n]
1805
+ // L2: [b ... e] [h ... k] [l ... o]
1806
+ // It's better to have "j" in the first file, because anyway it's overlapping
1807
+ // with the second file on L2.
1808
+ // (Note: before this PR, it was cut at "h" because it's using the internal
1809
+ // comparator which think L1 "h" with seqno 3 is smaller than L2 "h" with
1810
+ // seqno 1, but actually they're overlapped with the compaction picker).
1811
+
1812
+ auto expected_file1 =
1813
+ mock::MakeMockFile({{KeyStr("c", 5U, kTypeValue), "val2"},
1814
+ {KeyStr("h", 3U, kTypeValue), "val"},
1815
+ {KeyStr("j", 4U, kTypeValue), "val"}});
1816
+ auto expected_file2 =
1817
+ mock::MakeMockFile({{KeyStr("n", 6U, kTypeValue), "val3"}});
1818
+
1819
+ SetLastSequence(6U);
1820
+
1821
+ const std::vector<int> input_levels = {0, 1};
1822
+ auto lvl0_files = cfd_->current()->storage_info()->LevelFiles(0);
1823
+ auto lvl1_files = cfd_->current()->storage_info()->LevelFiles(1);
1824
+
1825
+ RunCompaction({lvl0_files, lvl1_files}, input_levels,
1826
+ {expected_file1, expected_file2});
1827
+ }
1828
+
1829
+ TEST_P(CompactionJobDynamicFileSizeTest, CutToSkipGrandparentFile) {
1830
+ bool enable_dyanmic_file_size = GetParam();
1831
+ cf_options_.level_compaction_dynamic_file_size = enable_dyanmic_file_size;
1832
+
1833
+ NewDB();
1834
+ // Make sure the grandparent level file size (10) qualifies skipping.
1835
+ // Currently, it has to be > 1/8 of target file size.
1836
+ mutable_cf_options_.target_file_size_base = 70;
1837
+
1838
+ auto file1 = mock::MakeMockFile({
1839
+ {KeyStr("a", 5U, kTypeValue), "val2"},
1840
+ {KeyStr("z", 6U, kTypeValue), "val3"},
1841
+ });
1842
+ AddMockFile(file1);
1843
+
1844
+ auto file2 = mock::MakeMockFile({{KeyStr("c", 3U, kTypeValue), "val"},
1845
+ {KeyStr("x", 4U, kTypeValue), "val"}});
1846
+ AddMockFile(file2, 1);
1847
+
1848
+ auto file3 = mock::MakeMockFile({{KeyStr("b", 1U, kTypeValue), "val"},
1849
+ {KeyStr("d", 2U, kTypeValue), "val"}});
1850
+ AddMockFile(file3, 2);
1851
+
1852
+ auto file4 = mock::MakeMockFile({{KeyStr("h", 1U, kTypeValue), "val"},
1853
+ {KeyStr("i", 2U, kTypeValue), "val"}});
1854
+ AddMockFile(file4, 2);
1855
+
1856
+ auto file5 = mock::MakeMockFile({{KeyStr("v", 1U, kTypeValue), "val"},
1857
+ {KeyStr("y", 2U, kTypeValue), "val"}});
1858
+ AddMockFile(file5, 2);
1859
+
1860
+ auto expected_file1 =
1861
+ mock::MakeMockFile({{KeyStr("a", 5U, kTypeValue), "val2"},
1862
+ {KeyStr("c", 3U, kTypeValue), "val"}});
1863
+ auto expected_file2 =
1864
+ mock::MakeMockFile({{KeyStr("x", 4U, kTypeValue), "val"},
1865
+ {KeyStr("z", 6U, kTypeValue), "val3"}});
1866
+
1867
+ auto expected_file_disable_dynamic_file_size =
1868
+ mock::MakeMockFile({{KeyStr("a", 5U, kTypeValue), "val2"},
1869
+ {KeyStr("c", 3U, kTypeValue), "val"},
1870
+ {KeyStr("x", 4U, kTypeValue), "val"},
1871
+ {KeyStr("z", 6U, kTypeValue), "val3"}});
1872
+
1873
+ SetLastSequence(6U);
1874
+ const std::vector<int> input_levels = {0, 1};
1875
+ auto lvl0_files = cfd_->current()->storage_info()->LevelFiles(0);
1876
+ auto lvl1_files = cfd_->current()->storage_info()->LevelFiles(1);
1877
+ if (enable_dyanmic_file_size) {
1878
+ RunCompaction({lvl0_files, lvl1_files}, input_levels,
1879
+ {expected_file1, expected_file2});
1880
+ } else {
1881
+ RunCompaction({lvl0_files, lvl1_files}, input_levels,
1882
+ {expected_file_disable_dynamic_file_size});
1883
+ }
1884
+ }
1885
+
1886
+ TEST_P(CompactionJobDynamicFileSizeTest, CutToAlignGrandparentBoundary) {
1887
+ bool enable_dyanmic_file_size = GetParam();
1888
+ cf_options_.level_compaction_dynamic_file_size = enable_dyanmic_file_size;
1889
+ NewDB();
1890
+
1891
+ // MockTable has 1 byte per entry by default and each file is 10 bytes.
1892
+ // When the file size is smaller than 100, it won't cut file earlier to align
1893
+ // with its grandparent boundary.
1894
+ const size_t kKeyValueSize = 10000;
1895
+ mock_table_factory_->SetKeyValueSize(kKeyValueSize);
1896
+
1897
+ mutable_cf_options_.target_file_size_base = 10 * kKeyValueSize;
1898
+
1899
+ mock::KVVector file1;
1900
+ char ch = 'd';
1901
+ // Add value from d -> o
1902
+ for (char i = 0; i < 12; i++) {
1903
+ file1.emplace_back(KeyStr(std::string(1, ch + i), i + 10, kTypeValue),
1904
+ "val" + std::to_string(i));
1905
+ }
1906
+
1907
+ AddMockFile(file1);
1908
+
1909
+ auto file2 = mock::MakeMockFile({{KeyStr("e", 3U, kTypeValue), "val"},
1910
+ {KeyStr("s", 4U, kTypeValue), "val"}});
1911
+ AddMockFile(file2, 1);
1912
+
1913
+ // the 1st grandparent file should be skipped
1914
+ auto file3 = mock::MakeMockFile({{KeyStr("a", 1U, kTypeValue), "val"},
1915
+ {KeyStr("b", 2U, kTypeValue), "val"}});
1916
+ AddMockFile(file3, 2);
1917
+
1918
+ auto file4 = mock::MakeMockFile({{KeyStr("c", 1U, kTypeValue), "val"},
1919
+ {KeyStr("e", 2U, kTypeValue), "val"}});
1920
+ AddMockFile(file4, 2);
1921
+
1922
+ auto file5 = mock::MakeMockFile({{KeyStr("h", 1U, kTypeValue), "val"},
1923
+ {KeyStr("j", 2U, kTypeValue), "val"}});
1924
+ AddMockFile(file5, 2);
1925
+
1926
+ auto file6 = mock::MakeMockFile({{KeyStr("k", 1U, kTypeValue), "val"},
1927
+ {KeyStr("n", 2U, kTypeValue), "val"}});
1928
+ AddMockFile(file6, 2);
1929
+
1930
+ auto file7 = mock::MakeMockFile({{KeyStr("q", 1U, kTypeValue), "val"},
1931
+ {KeyStr("t", 2U, kTypeValue), "val"}});
1932
+ AddMockFile(file7, 2);
1933
+
1934
+ // The expected outputs are:
1935
+ // L1: [d,e,f,g,h,i,j] [k,l,m,n,o,s]
1936
+ // L2: [a, b] [c, e] [h, j] [k, n] [q, t]
1937
+ // The first output cut earlier at "j", so it could be aligned with L2 files.
1938
+ // If dynamic_file_size is not enabled, it will be cut based on the
1939
+ // target_file_size
1940
+ mock::KVVector expected_file1;
1941
+ for (char i = 0; i < 7; i++) {
1942
+ expected_file1.emplace_back(
1943
+ KeyStr(std::string(1, ch + i), i + 10, kTypeValue),
1944
+ "val" + std::to_string(i));
1945
+ }
1946
+
1947
+ mock::KVVector expected_file2;
1948
+ for (char i = 7; i < 12; i++) {
1949
+ expected_file2.emplace_back(
1950
+ KeyStr(std::string(1, ch + i), i + 10, kTypeValue),
1951
+ "val" + std::to_string(i));
1952
+ }
1953
+ expected_file2.emplace_back(KeyStr("s", 4U, kTypeValue), "val");
1954
+
1955
+ mock::KVVector expected_file_disable_dynamic_file_size1;
1956
+ for (char i = 0; i < 10; i++) {
1957
+ expected_file_disable_dynamic_file_size1.emplace_back(
1958
+ KeyStr(std::string(1, ch + i), i + 10, kTypeValue),
1959
+ "val" + std::to_string(i));
1960
+ }
1961
+
1962
+ mock::KVVector expected_file_disable_dynamic_file_size2;
1963
+ for (char i = 10; i < 12; i++) {
1964
+ expected_file_disable_dynamic_file_size2.emplace_back(
1965
+ KeyStr(std::string(1, ch + i), i + 10, kTypeValue),
1966
+ "val" + std::to_string(i));
1967
+ }
1968
+
1969
+ expected_file_disable_dynamic_file_size2.emplace_back(
1970
+ KeyStr("s", 4U, kTypeValue), "val");
1971
+
1972
+ SetLastSequence(22U);
1973
+ const std::vector<int> input_levels = {0, 1};
1974
+ auto lvl0_files = cfd_->current()->storage_info()->LevelFiles(0);
1975
+ auto lvl1_files = cfd_->current()->storage_info()->LevelFiles(1);
1976
+ if (enable_dyanmic_file_size) {
1977
+ RunCompaction({lvl0_files, lvl1_files}, input_levels,
1978
+ {expected_file1, expected_file2});
1979
+ } else {
1980
+ RunCompaction({lvl0_files, lvl1_files}, input_levels,
1981
+ {expected_file_disable_dynamic_file_size1,
1982
+ expected_file_disable_dynamic_file_size2});
1983
+ }
1984
+ }
1985
+
1986
+ TEST_P(CompactionJobDynamicFileSizeTest, CutToAlignGrandparentBoundarySameKey) {
1987
+ bool enable_dyanmic_file_size = GetParam();
1988
+ cf_options_.level_compaction_dynamic_file_size = enable_dyanmic_file_size;
1989
+ NewDB();
1990
+
1991
+ // MockTable has 1 byte per entry by default and each file is 10 bytes.
1992
+ // When the file size is smaller than 100, it won't cut file earlier to align
1993
+ // with its grandparent boundary.
1994
+ const size_t kKeyValueSize = 10000;
1995
+ mock_table_factory_->SetKeyValueSize(kKeyValueSize);
1996
+
1997
+ mutable_cf_options_.target_file_size_base = 10 * kKeyValueSize;
1998
+
1999
+ mock::KVVector file1;
2000
+ for (int i = 0; i < 7; i++) {
2001
+ file1.emplace_back(KeyStr("a", 100 - i, kTypeValue),
2002
+ "val" + std::to_string(100 - i));
2003
+ }
2004
+ file1.emplace_back(KeyStr("b", 90, kTypeValue), "valb");
2005
+
2006
+ AddMockFile(file1);
2007
+
2008
+ auto file2 = mock::MakeMockFile({{KeyStr("a", 93U, kTypeValue), "val93"},
2009
+ {KeyStr("b", 90U, kTypeValue), "valb"}});
2010
+ AddMockFile(file2, 1);
2011
+
2012
+ auto file3 = mock::MakeMockFile({{KeyStr("a", 89U, kTypeValue), "val"},
2013
+ {KeyStr("a", 88U, kTypeValue), "val"}});
2014
+ AddMockFile(file3, 2);
2015
+
2016
+ auto file4 = mock::MakeMockFile({{KeyStr("a", 87U, kTypeValue), "val"},
2017
+ {KeyStr("a", 86U, kTypeValue), "val"}});
2018
+ AddMockFile(file4, 2);
2019
+
2020
+ auto file5 = mock::MakeMockFile({{KeyStr("b", 85U, kTypeValue), "val"},
2021
+ {KeyStr("b", 84U, kTypeValue), "val"}});
2022
+ AddMockFile(file5, 2);
2023
+
2024
+ mock::KVVector expected_file1;
2025
+ mock::KVVector expected_file_disable_dynamic_file_size;
2026
+
2027
+ for (int i = 0; i < 8; i++) {
2028
+ expected_file1.emplace_back(KeyStr("a", 100 - i, kTypeValue),
2029
+ "val" + std::to_string(100 - i));
2030
+ expected_file_disable_dynamic_file_size.emplace_back(
2031
+ KeyStr("a", 100 - i, kTypeValue), "val" + std::to_string(100 - i));
2032
+ }
2033
+
2034
+ // make sure `b` is cut in a separated file (so internally it's not using
2035
+ // internal comparator, which will think the "b:90" (seqno 90) here is smaller
2036
+ // than "b:85" on L2.)
2037
+ auto expected_file2 =
2038
+ mock::MakeMockFile({{KeyStr("b", 90U, kTypeValue), "valb"}});
2039
+
2040
+ expected_file_disable_dynamic_file_size.emplace_back(
2041
+ KeyStr("b", 90U, kTypeValue), "valb");
2042
+
2043
+ SetLastSequence(122U);
2044
+ const std::vector<int> input_levels = {0, 1};
2045
+ auto lvl0_files = cfd_->current()->storage_info()->LevelFiles(0);
2046
+ auto lvl1_files = cfd_->current()->storage_info()->LevelFiles(1);
2047
+
2048
+ // Just keep all the history
2049
+ std::vector<SequenceNumber> snapshots;
2050
+ for (int i = 80; i <= 100; i++) {
2051
+ snapshots.emplace_back(i);
2052
+ }
2053
+ if (enable_dyanmic_file_size) {
2054
+ RunCompaction({lvl0_files, lvl1_files}, input_levels,
2055
+ {expected_file1, expected_file2}, snapshots);
2056
+ } else {
2057
+ RunCompaction({lvl0_files, lvl1_files}, input_levels,
2058
+ {expected_file_disable_dynamic_file_size}, snapshots);
2059
+ }
2060
+ }
2061
+
2062
+ TEST_P(CompactionJobDynamicFileSizeTest, CutForMaxCompactionBytesSameKey) {
2063
+ // dynamic_file_size option should have no impact on cutting for max
2064
+ // compaction bytes.
2065
+ bool enable_dyanmic_file_size = GetParam();
2066
+ cf_options_.level_compaction_dynamic_file_size = enable_dyanmic_file_size;
2067
+
2068
+ NewDB();
2069
+ mutable_cf_options_.target_file_size_base = 80;
2070
+ mutable_cf_options_.max_compaction_bytes = 20;
2071
+
2072
+ auto file1 = mock::MakeMockFile({{KeyStr("a", 104U, kTypeValue), "val1"},
2073
+ {KeyStr("b", 103U, kTypeValue), "val"}});
2074
+ AddMockFile(file1);
2075
+
2076
+ auto file2 = mock::MakeMockFile({{KeyStr("a", 102U, kTypeValue), "val2"},
2077
+ {KeyStr("c", 101U, kTypeValue), "val"}});
2078
+ AddMockFile(file2, 1);
2079
+
2080
+ for (int i = 0; i < 10; i++) {
2081
+ auto file =
2082
+ mock::MakeMockFile({{KeyStr("a", 100 - (i * 2), kTypeValue), "val"},
2083
+ {KeyStr("a", 99 - (i * 2), kTypeValue), "val"}});
2084
+ AddMockFile(file, 2);
2085
+ }
2086
+
2087
+ for (int i = 0; i < 10; i++) {
2088
+ auto file =
2089
+ mock::MakeMockFile({{KeyStr("b", 80 - (i * 2), kTypeValue), "val"},
2090
+ {KeyStr("b", 79 - (i * 2), kTypeValue), "val"}});
2091
+ AddMockFile(file, 2);
2092
+ }
2093
+
2094
+ auto file5 = mock::MakeMockFile({{KeyStr("c", 60U, kTypeValue), "valc"},
2095
+ {KeyStr("c", 59U, kTypeValue), "valc"}});
2096
+
2097
+ // "a" has 10 overlapped grandparent files (each size 10), which is far
2098
+ // exceeded the `max_compaction_bytes`, but make sure 2 "a" are not separated,
2099
+ // as splitting them won't help reducing the compaction size.
2100
+ // also make sure "b" and "c" are cut separately.
2101
+ mock::KVVector expected_file1 =
2102
+ mock::MakeMockFile({{KeyStr("a", 104U, kTypeValue), "val1"},
2103
+ {KeyStr("a", 102U, kTypeValue), "val2"}});
2104
+ mock::KVVector expected_file2 =
2105
+ mock::MakeMockFile({{KeyStr("b", 103U, kTypeValue), "val"}});
2106
+ mock::KVVector expected_file3 =
2107
+ mock::MakeMockFile({{KeyStr("c", 101U, kTypeValue), "val"}});
2108
+
2109
+ SetLastSequence(122U);
2110
+ const std::vector<int> input_levels = {0, 1};
2111
+ auto lvl0_files = cfd_->current()->storage_info()->LevelFiles(0);
2112
+ auto lvl1_files = cfd_->current()->storage_info()->LevelFiles(1);
2113
+
2114
+ // Just keep all the history
2115
+ std::vector<SequenceNumber> snapshots;
2116
+ for (int i = 80; i <= 105; i++) {
2117
+ snapshots.emplace_back(i);
2118
+ }
2119
+ RunCompaction({lvl0_files, lvl1_files}, input_levels,
2120
+ {expected_file1, expected_file2, expected_file3}, snapshots);
2121
+ }
2122
+
2123
+ INSTANTIATE_TEST_CASE_P(CompactionJobDynamicFileSizeTest,
2124
+ CompactionJobDynamicFileSizeTest, testing::Bool());
1724
2125
 
1725
2126
  class CompactionJobTimestampTest : public CompactionJobTestBase {
1726
2127
  public:
@@ -2033,6 +2434,7 @@ TEST_F(CompactionJobIOPriorityTest, GetRateLimiterPriority) {
2033
2434
  } // namespace ROCKSDB_NAMESPACE
2034
2435
 
2035
2436
  int main(int argc, char** argv) {
2437
+ ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
2036
2438
  ::testing::InitGoogleTest(&argc, argv);
2037
2439
  RegisterCustomObjects(argc, argv);
2038
2440
  return RUN_ALL_TESTS();