@nxtedition/rocksdb 15.4.1 → 16.0.0

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 (401) hide show
  1. package/binding.cc +70 -23
  2. package/deps/rocksdb/rocksdb/.clang-tidy +86 -0
  3. package/deps/rocksdb/rocksdb/BUCK +42 -0
  4. package/deps/rocksdb/rocksdb/CMakeLists.txt +11 -0
  5. package/deps/rocksdb/rocksdb/Makefile +59 -32
  6. package/deps/rocksdb/rocksdb/cache/cache.cc +0 -5
  7. package/deps/rocksdb/rocksdb/cache/cache_entry_stats.h +9 -9
  8. package/deps/rocksdb/rocksdb/cache/cache_key.cc +3 -3
  9. package/deps/rocksdb/rocksdb/cache/cache_key.h +5 -5
  10. package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.h +16 -16
  11. package/deps/rocksdb/rocksdb/cache/cache_test.cc +1 -1
  12. package/deps/rocksdb/rocksdb/cache/clock_cache.cc +258 -294
  13. package/deps/rocksdb/rocksdb/cache/clock_cache.h +98 -49
  14. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +1 -5
  15. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +2 -3
  16. package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +18 -18
  17. package/deps/rocksdb/rocksdb/crash_test.mk +5 -1
  18. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +23 -22
  19. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.h +6 -1
  20. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +14 -16
  21. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +38 -26
  22. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +5 -1
  23. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +101 -18
  24. package/deps/rocksdb/rocksdb/db/blob/blob_index.h +12 -0
  25. package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +6 -9
  26. package/deps/rocksdb/rocksdb/db/builder.cc +23 -0
  27. package/deps/rocksdb/rocksdb/db/builder.h +7 -0
  28. package/deps/rocksdb/rocksdb/db/c.cc +373 -57
  29. package/deps/rocksdb/rocksdb/db/c_test.c +101 -1
  30. package/deps/rocksdb/rocksdb/db/column_family.cc +31 -3
  31. package/deps/rocksdb/rocksdb/db/column_family_test.cc +10 -13
  32. package/deps/rocksdb/rocksdb/db/compact_files_test.cc +35 -48
  33. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +13 -5
  34. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +201 -39
  35. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +15 -10
  36. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +7 -7
  37. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +2 -455
  38. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +4 -2
  39. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +19 -0
  40. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +72 -9
  41. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +12 -10
  42. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +405 -83
  43. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +25 -1
  44. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +23 -10
  45. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +1 -0
  46. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +1410 -106
  47. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +12 -5
  48. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +2 -1
  49. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +19 -10
  50. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +505 -45
  51. package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.cc +2 -2
  52. package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +9 -1
  53. package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +4 -4
  54. package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +7 -9
  55. package/deps/rocksdb/rocksdb/db/convenience.cc +4 -4
  56. package/deps/rocksdb/rocksdb/db/convenience_impl.h +2 -1
  57. package/deps/rocksdb/rocksdb/db/corruption_test.cc +60 -88
  58. package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +10 -12
  59. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +471 -40
  60. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +116 -2
  61. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +5 -15
  62. package/deps/rocksdb/rocksdb/db/db_compaction_abort_test.cc +993 -0
  63. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +329 -29
  64. package/deps/rocksdb/rocksdb/db/db_flush_test.cc +155 -13
  65. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +54 -31
  66. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +1 -0
  67. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +232 -70
  68. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +57 -9
  69. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +224 -31
  70. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +5 -0
  71. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +4 -2
  72. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +1 -1
  73. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_follower.cc +1 -0
  74. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +164 -8
  75. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +6 -0
  76. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +5 -0
  77. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +47 -35
  78. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +22 -9
  79. package/deps/rocksdb/rocksdb/db/db_iter.cc +9 -0
  80. package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +371 -6
  81. package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +7 -5
  82. package/deps/rocksdb/rocksdb/db/db_logical_block_size_cache_test.cc +22 -23
  83. package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +0 -2
  84. package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +4 -4
  85. package/deps/rocksdb/rocksdb/db/db_options_test.cc +40 -0
  86. package/deps/rocksdb/rocksdb/db/db_properties_test.cc +32 -13
  87. package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +1 -1
  88. package/deps/rocksdb/rocksdb/db/db_readonly_with_timestamp_test.cc +4 -4
  89. package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +68 -15
  90. package/deps/rocksdb/rocksdb/db/db_sst_test.cc +1 -1
  91. package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +2 -3
  92. package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +6 -21
  93. package/deps/rocksdb/rocksdb/db/db_test.cc +644 -128
  94. package/deps/rocksdb/rocksdb/db/db_test2.cc +198 -81
  95. package/deps/rocksdb/rocksdb/db/db_test_util.cc +35 -10
  96. package/deps/rocksdb/rocksdb/db/db_test_util.h +8 -2
  97. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +36 -32
  98. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +11 -7
  99. package/deps/rocksdb/rocksdb/db/db_with_timestamp_compaction_test.cc +499 -0
  100. package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +284 -20
  101. package/deps/rocksdb/rocksdb/db/db_write_test.cc +3 -3
  102. package/deps/rocksdb/rocksdb/db/dbformat.h +0 -5
  103. package/deps/rocksdb/rocksdb/db/error_handler.cc +24 -0
  104. package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +12 -14
  105. package/deps/rocksdb/rocksdb/db/experimental.cc +13 -10
  106. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +1 -1
  107. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +22 -3
  108. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +21 -15
  109. package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +4 -6
  110. package/deps/rocksdb/rocksdb/db/flush_job.cc +11 -3
  111. package/deps/rocksdb/rocksdb/db/forward_iterator_bench.cc +5 -6
  112. package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +4 -2
  113. package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +17 -17
  114. package/deps/rocksdb/rocksdb/db/internal_stats.cc +13 -0
  115. package/deps/rocksdb/rocksdb/db/internal_stats.h +2 -0
  116. package/deps/rocksdb/rocksdb/db/listener_test.cc +154 -27
  117. package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +6 -6
  118. package/deps/rocksdb/rocksdb/db/memtable.cc +197 -51
  119. package/deps/rocksdb/rocksdb/db/memtable.h +6 -0
  120. package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +3 -4
  121. package/deps/rocksdb/rocksdb/db/merge_test.cc +37 -35
  122. package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +2 -1
  123. package/deps/rocksdb/rocksdb/db/options_file_test.cc +4 -4
  124. package/deps/rocksdb/rocksdb/db/perf_context_test.cc +9 -11
  125. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.cc +10 -1
  126. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler_test.cc +292 -15
  127. package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +10 -17
  128. package/deps/rocksdb/rocksdb/db/prefix_test.cc +6 -8
  129. package/deps/rocksdb/rocksdb/db/repair.cc +10 -10
  130. package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +5 -5
  131. package/deps/rocksdb/rocksdb/db/table_cache.cc +142 -135
  132. package/deps/rocksdb/rocksdb/db/table_cache.h +30 -6
  133. package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +7 -7
  134. package/deps/rocksdb/rocksdb/db/version_builder.cc +11 -50
  135. package/deps/rocksdb/rocksdb/db/version_builder.h +2 -1
  136. package/deps/rocksdb/rocksdb/db/version_builder_test.cc +2 -1
  137. package/deps/rocksdb/rocksdb/db/version_edit.cc +51 -2
  138. package/deps/rocksdb/rocksdb/db/version_edit.h +91 -29
  139. package/deps/rocksdb/rocksdb/db/version_edit_handler.h +7 -7
  140. package/deps/rocksdb/rocksdb/db/version_set.cc +211 -50
  141. package/deps/rocksdb/rocksdb/db/version_set.h +40 -3
  142. package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +5 -0
  143. package/deps/rocksdb/rocksdb/db/version_set_test.cc +294 -21
  144. package/deps/rocksdb/rocksdb/db/version_util.cc +96 -0
  145. package/deps/rocksdb/rocksdb/db/version_util.h +24 -0
  146. package/deps/rocksdb/rocksdb/db/wide/db_wide_basic_test.cc +5 -5
  147. package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.cc +647 -31
  148. package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.h +219 -1
  149. package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization_test.cc +549 -12
  150. package/deps/rocksdb/rocksdb/db/write_callback_test.cc +3 -3
  151. package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +1 -1
  152. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +19 -0
  153. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +21 -4
  154. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +32 -0
  155. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +74 -22
  156. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +9 -0
  157. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +143 -61
  158. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +15 -2
  159. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +76 -2
  160. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +92 -72
  161. package/deps/rocksdb/rocksdb/env/env.cc +1 -0
  162. package/deps/rocksdb/rocksdb/env/env_test.cc +365 -2
  163. package/deps/rocksdb/rocksdb/env/fs_posix.cc +31 -30
  164. package/deps/rocksdb/rocksdb/env/io_posix.cc +8 -11
  165. package/deps/rocksdb/rocksdb/env/io_posix.h +30 -1
  166. package/deps/rocksdb/rocksdb/env/io_posix_test.cc +43 -0
  167. package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +1 -1
  168. package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +108 -0
  169. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +32 -4
  170. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +4 -4
  171. package/deps/rocksdb/rocksdb/file/file_util.cc +8 -2
  172. package/deps/rocksdb/rocksdb/file/file_util.h +2 -1
  173. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +331 -12
  174. package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +52 -35
  175. package/deps/rocksdb/rocksdb/folly.mk +22 -5
  176. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_cache.h +1 -1
  177. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_compression.h +100 -54
  178. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +67 -2
  179. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +149 -13
  180. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +1 -12
  181. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +78 -97
  182. package/deps/rocksdb/rocksdb/include/rocksdb/experimental.h +3 -3
  183. package/deps/rocksdb/rocksdb/include/rocksdb/external_table.h +2 -2
  184. package/deps/rocksdb/rocksdb/include/rocksdb/file_checksum.h +5 -0
  185. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +17 -2
  186. package/deps/rocksdb/rocksdb/include/rocksdb/functor_wrapper.h +1 -1
  187. package/deps/rocksdb/rocksdb/include/rocksdb/io_dispatcher.h +358 -0
  188. package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +13 -0
  189. package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +43 -0
  190. package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +20 -0
  191. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +63 -21
  192. package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +10 -1
  193. package/deps/rocksdb/rocksdb/include/rocksdb/rate_limiter.h +1 -1
  194. package/deps/rocksdb/rocksdb/include/rocksdb/slice_transform.h +2 -7
  195. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_reader.h +13 -0
  196. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +3 -14
  197. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +49 -9
  198. package/deps/rocksdb/rocksdb/include/rocksdb/status.h +8 -0
  199. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +77 -6
  200. package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +15 -0
  201. package/deps/rocksdb/rocksdb/include/rocksdb/tool_hooks.h +16 -10
  202. package/deps/rocksdb/rocksdb/include/rocksdb/unique_id.h +5 -5
  203. package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +2 -4
  204. package/deps/rocksdb/rocksdb/include/rocksdb/user_defined_index.h +106 -46
  205. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/db_ttl.h +1 -1
  206. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +14 -1
  207. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/memory_util.h +5 -1
  208. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/optimistic_transaction_db.h +2 -1
  209. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +7 -9
  210. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
  211. package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +1 -2
  212. package/deps/rocksdb/rocksdb/memory/memory_allocator_test.cc +2 -2
  213. package/deps/rocksdb/rocksdb/memtable/inlineskiplist.h +226 -8
  214. package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +490 -0
  215. package/deps/rocksdb/rocksdb/memtable/skiplist.h +3 -3
  216. package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +11 -0
  217. package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +4 -12
  218. package/deps/rocksdb/rocksdb/microbench/ribbon_bench.cc +5 -5
  219. package/deps/rocksdb/rocksdb/monitoring/file_read_sample.h +21 -4
  220. package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +9 -3
  221. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +21 -2
  222. package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +2 -2
  223. package/deps/rocksdb/rocksdb/options/cf_options.cc +21 -1
  224. package/deps/rocksdb/rocksdb/options/cf_options.h +2 -0
  225. package/deps/rocksdb/rocksdb/options/customizable_test.cc +0 -2
  226. package/deps/rocksdb/rocksdb/options/db_options.cc +26 -5
  227. package/deps/rocksdb/rocksdb/options/db_options.h +3 -1
  228. package/deps/rocksdb/rocksdb/options/options.cc +5 -1
  229. package/deps/rocksdb/rocksdb/options/options_helper.cc +7 -2
  230. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +109 -103
  231. package/deps/rocksdb/rocksdb/options/options_test.cc +14 -0
  232. package/deps/rocksdb/rocksdb/port/jemalloc_helper.h +15 -17
  233. package/deps/rocksdb/rocksdb/port/lang.h +4 -0
  234. package/deps/rocksdb/rocksdb/port/port_example.h +0 -23
  235. package/deps/rocksdb/rocksdb/port/stack_trace.cc +36 -0
  236. package/deps/rocksdb/rocksdb/port/stack_trace.h +9 -0
  237. package/deps/rocksdb/rocksdb/src.mk +12 -0
  238. package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.cc +1 -2
  239. package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +2 -1
  240. package/deps/rocksdb/rocksdb/table/block_based/block.cc +571 -292
  241. package/deps/rocksdb/rocksdb/table/block_based/block.h +143 -53
  242. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +154 -90
  243. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +5 -1
  244. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +51 -14
  245. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +0 -2
  246. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +147 -734
  247. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +30 -233
  248. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +178 -108
  249. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +13 -0
  250. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +17 -4
  251. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +5 -2
  252. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +70 -0
  253. package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +168 -24
  254. package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +25 -9
  255. package/deps/rocksdb/rocksdb/table/block_based/block_cache.cc +7 -4
  256. package/deps/rocksdb/rocksdb/table/block_based/block_cache.h +9 -2
  257. package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +548 -169
  258. package/deps/rocksdb/rocksdb/table/block_based/block_type.h +30 -0
  259. package/deps/rocksdb/rocksdb/table/block_based/block_util.h +156 -0
  260. package/deps/rocksdb/rocksdb/table/block_based/data_block_footer.cc +73 -30
  261. package/deps/rocksdb/rocksdb/table/block_based/data_block_footer.h +74 -7
  262. package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index.h +1 -1
  263. package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +20 -14
  264. package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +22 -12
  265. package/deps/rocksdb/rocksdb/table/block_based/mock_block_based_table.h +1 -1
  266. package/deps/rocksdb/rocksdb/table/block_based/multi_scan_index_iterator.cc +332 -0
  267. package/deps/rocksdb/rocksdb/table/block_based/multi_scan_index_iterator.h +133 -0
  268. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +4 -2
  269. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +1 -1
  270. package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +3 -2
  271. package/deps/rocksdb/rocksdb/table/block_based/reader_common.h +4 -1
  272. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +0 -1
  273. package/deps/rocksdb/rocksdb/table/block_based/user_defined_index_wrapper.h +126 -46
  274. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +31 -3
  275. package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +1 -2
  276. package/deps/rocksdb/rocksdb/table/cleanable_test.cc +3 -1
  277. package/deps/rocksdb/rocksdb/table/external_table.cc +25 -4
  278. package/deps/rocksdb/rocksdb/table/format.cc +27 -15
  279. package/deps/rocksdb/rocksdb/table/format.h +41 -15
  280. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +1 -0
  281. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +22 -12
  282. package/deps/rocksdb/rocksdb/table/meta_blocks.h +0 -1
  283. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +7 -21
  284. package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +0 -1
  285. package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +88 -13
  286. package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +53 -42
  287. package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +3 -12
  288. package/deps/rocksdb/rocksdb/table/table_builder.h +0 -4
  289. package/deps/rocksdb/rocksdb/table/table_properties.cc +18 -0
  290. package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +2 -3
  291. package/deps/rocksdb/rocksdb/table/table_test.cc +848 -172
  292. package/deps/rocksdb/rocksdb/table/unique_id.cc +24 -20
  293. package/deps/rocksdb/rocksdb/table/unique_id_impl.h +8 -8
  294. package/deps/rocksdb/rocksdb/test_util/sync_point.h +5 -4
  295. package/deps/rocksdb/rocksdb/test_util/testutil.cc +2 -1
  296. package/deps/rocksdb/rocksdb/test_util/testutil.h +2 -2
  297. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +2 -1
  298. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +238 -120
  299. package/deps/rocksdb/rocksdb/tools/db_repl_stress.cc +2 -2
  300. package/deps/rocksdb/rocksdb/tools/db_sanity_test.cc +2 -4
  301. package/deps/rocksdb/rocksdb/tools/dump/db_dump_tool.cc +4 -8
  302. package/deps/rocksdb/rocksdb/tools/dump/rocksdb_undump.cc +1 -1
  303. package/deps/rocksdb/rocksdb/tools/io_tracer_parser_test.cc +2 -3
  304. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +82 -20
  305. package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +41 -47
  306. package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +9 -0
  307. package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +5 -6
  308. package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +1 -1
  309. package/deps/rocksdb/rocksdb/tools/tool_hooks.cc +6 -5
  310. package/deps/rocksdb/rocksdb/tools/trace_analyzer_test.cc +4 -4
  311. package/deps/rocksdb/rocksdb/tools/write_stress.cc +1 -3
  312. package/deps/rocksdb/rocksdb/util/atomic.h +30 -23
  313. package/deps/rocksdb/rocksdb/util/auto_tune_compressor.cc +6 -7
  314. package/deps/rocksdb/rocksdb/util/auto_tune_compressor.h +3 -3
  315. package/deps/rocksdb/rocksdb/util/bit_fields.h +68 -46
  316. package/deps/rocksdb/rocksdb/util/bloom_impl.h +16 -16
  317. package/deps/rocksdb/rocksdb/util/coding.h +14 -27
  318. package/deps/rocksdb/rocksdb/util/compression.cc +365 -207
  319. package/deps/rocksdb/rocksdb/util/compression.h +16 -1298
  320. package/deps/rocksdb/rocksdb/util/compression_test.cc +347 -61
  321. package/deps/rocksdb/rocksdb/util/crc32c_arm64.cc +8 -9
  322. package/deps/rocksdb/rocksdb/util/crc32c_arm64.h +1 -1
  323. package/deps/rocksdb/rocksdb/util/crc32c_ppc.h +1 -1
  324. package/deps/rocksdb/rocksdb/util/dynamic_bloom_test.cc +3 -3
  325. package/deps/rocksdb/rocksdb/util/filter_bench.cc +18 -18
  326. package/deps/rocksdb/rocksdb/util/gflags_compat.h +3 -3
  327. package/deps/rocksdb/rocksdb/util/hash_test.cc +19 -7
  328. package/deps/rocksdb/rocksdb/util/io_dispatcher_imp.cc +1099 -0
  329. package/deps/rocksdb/rocksdb/util/io_dispatcher_imp.h +36 -0
  330. package/deps/rocksdb/rocksdb/util/io_dispatcher_test.cc +1919 -0
  331. package/deps/rocksdb/rocksdb/util/math.h +3 -1
  332. package/deps/rocksdb/rocksdb/util/mutexlock.h +19 -19
  333. package/deps/rocksdb/rocksdb/util/ribbon_alg.h +25 -25
  334. package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.cc +5 -7
  335. package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.h +4 -5
  336. package/deps/rocksdb/rocksdb/util/slice.cc +0 -10
  337. package/deps/rocksdb/rocksdb/util/slice_test.cc +35 -1
  338. package/deps/rocksdb/rocksdb/util/slice_transform_test.cc +5 -7
  339. package/deps/rocksdb/rocksdb/util/status.cc +3 -1
  340. package/deps/rocksdb/rocksdb/util/stop_watch.h +2 -0
  341. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +4 -1
  342. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +123 -78
  343. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.cc +12 -93
  344. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.h +1 -4
  345. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.cc +0 -21
  346. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.h +6 -48
  347. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +94 -307
  348. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +12 -58
  349. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl_filesnapshot.cc +2 -8
  350. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +2 -3
  351. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +205 -811
  352. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +18 -9
  353. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +2 -7
  354. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.h +1 -9
  355. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_functional_test.cc +17 -11
  356. package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.cc +1 -1
  357. package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.h +1 -1
  358. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +1 -1
  359. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +68 -61
  360. package/deps/rocksdb/rocksdb/utilities/debug.cc +2 -1
  361. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +105 -59
  362. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +274 -7
  363. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs_test.cc +94 -0
  364. package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +13 -17
  365. package/deps/rocksdb/rocksdb/utilities/memory/memory_util.cc +16 -3
  366. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend_test.cc +25 -25
  367. package/deps/rocksdb/rocksdb/utilities/object_registry.cc +40 -40
  368. package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration.cc +2 -5
  369. package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +17 -19
  370. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +2 -2
  371. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.h +2 -2
  372. package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.cc +1 -1
  373. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +2 -2
  374. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +4 -13
  375. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +3 -3
  376. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +6 -0
  377. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_seqno_test.cc +431 -0
  378. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +1 -2
  379. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.h +91 -0
  380. package/deps/rocksdb/rocksdb/utilities/trie_index/bitvector.cc +562 -0
  381. package/deps/rocksdb/rocksdb/utilities/trie_index/bitvector.h +615 -0
  382. package/deps/rocksdb/rocksdb/utilities/trie_index/louds_trie.cc +2575 -0
  383. package/deps/rocksdb/rocksdb/utilities/trie_index/louds_trie.h +685 -0
  384. package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_db_test.cc +2843 -0
  385. package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_factory.cc +567 -0
  386. package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_factory.h +275 -0
  387. package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_test.cc +5183 -0
  388. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +4 -3
  389. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +1 -1
  390. package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +2 -2
  391. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +3 -3
  392. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +93 -88
  393. package/deps/rocksdb/rocksdb.gyp +7 -0
  394. package/index.js +70 -10
  395. package/iterator.js +25 -3
  396. package/max_rev_operator.h +9 -5
  397. package/package.json +1 -1
  398. package/prebuilds/darwin-arm64/@nxtedition+rocksdb.node +0 -0
  399. package/prebuilds/linux-x64/@nxtedition+rocksdb.node +0 -0
  400. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/lua/rocks_lua_custom_library.h +0 -43
  401. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/lua/rocks_lua_util.h +0 -55
@@ -6,6 +6,9 @@
6
6
 
7
7
  #include "db/periodic_task_scheduler.h"
8
8
 
9
+ #include <set>
10
+
11
+ #include "db/column_family.h"
9
12
  #include "db/db_test_util.h"
10
13
  #include "env/composite_env_wrapper.h"
11
14
  #include "test_util/mock_time_env.h"
@@ -124,15 +127,289 @@ TEST_F(PeriodicTaskSchedulerTest, Basic) {
124
127
  ASSERT_EQ(3, pst_st_counter);
125
128
  ASSERT_EQ(5, flush_info_log_counter);
126
129
 
127
- ASSERT_EQ(0, trigger_compaction_counter);
128
- dbfull()->TEST_WaitForPeriodicTaskRun([&] {
129
- mock_clock_->MockSleepForSeconds(static_cast<int>(12 * 60 * 60));
130
- });
131
- ASSERT_EQ(1, trigger_compaction_counter);
132
- dbfull()->TEST_WaitForPeriodicTaskRun([&] {
133
- mock_clock_->MockSleepForSeconds(static_cast<int>(12 * 60 * 60));
134
- });
135
- ASSERT_EQ(2, trigger_compaction_counter);
130
+ // With the new ComputeTriggerCompactionPeriod() logic, since
131
+ // stats_dump_period_sec = stats_persist_period_sec = kPeriodSec, the trigger
132
+ // compaction period is also kPeriodSec. Unlike other periodic tasks,
133
+ // kTriggerCompaction uses run_immediately=false, so it doesn't fire on
134
+ // initial registration. It fires after each period elapses.
135
+ // By now we've had: initial 9s + 10s + 10s + 10s + 10s = 49s elapsed.
136
+ // kTriggerCompaction fires at t=10, 20, 30, 40 = 4 times.
137
+ ASSERT_EQ(4, trigger_compaction_counter);
138
+
139
+ // Sleep one more period and verify it increments
140
+ dbfull()->TEST_WaitForPeriodicTaskRun(
141
+ [&] { mock_clock_->MockSleepForSeconds(static_cast<int>(kPeriodSec)); });
142
+ ASSERT_EQ(5, trigger_compaction_counter);
143
+
144
+ Close();
145
+ }
146
+
147
+ TEST_F(PeriodicTaskSchedulerTest, TriggerCompactionPeriodComputation) {
148
+ // Test that ComputeTriggerCompactionPeriod() returns the expected values
149
+ // for different configurations.
150
+ Close();
151
+
152
+ // Helper to capture the trigger compaction period on Reopen
153
+ uint64_t trigger_compaction_period = 0;
154
+ SyncPoint::GetInstance()->SetCallBack(
155
+ "PeriodicTaskScheduler::Register:TaskRegistered", [&](void* arg) {
156
+ auto* task_info =
157
+ static_cast<std::pair<PeriodicTaskType, uint64_t>*>(arg);
158
+ if (task_info->first == PeriodicTaskType::kTriggerCompaction) {
159
+ trigger_compaction_period = task_info->second;
160
+ }
161
+ });
162
+ SyncPoint::GetInstance()->EnableProcessing();
163
+
164
+ // Helper to test the trigger compaction period with optional second CF
165
+ auto test_period = [&](Options& options, uint64_t expected_period,
166
+ const ColumnFamilyOptions* cf2_options = nullptr) {
167
+ options.create_if_missing = true;
168
+ options.env = mock_env_.get();
169
+ trigger_compaction_period = 0;
170
+
171
+ if (cf2_options == nullptr) {
172
+ Reopen(options);
173
+ } else {
174
+ // Open with two column families
175
+ // First destroy DB to start fresh
176
+ ASSERT_OK(DestroyDB(dbname_, options));
177
+ // Open and create cf2
178
+ ASSERT_OK(TryReopen(options));
179
+ CreateColumnFamilies({"cf2"}, options);
180
+ Close();
181
+ // Now reopen with both CFs
182
+ std::vector<ColumnFamilyDescriptor> cf_descs;
183
+ cf_descs.emplace_back(kDefaultColumnFamilyName, options);
184
+ cf_descs.emplace_back("cf2", *cf2_options);
185
+ std::vector<ColumnFamilyHandle*> handles;
186
+ ASSERT_OK(DB::Open(options, dbname_, cf_descs, &handles, &db_));
187
+ for (auto* h : handles) {
188
+ delete h;
189
+ }
190
+ }
191
+ ASSERT_EQ(expected_period, trigger_compaction_period);
192
+ Close();
193
+ // Destroy DB to clean up for next test case
194
+ ASSERT_OK(DestroyDB(dbname_, options));
195
+ };
196
+
197
+ // Case 1: 12-hour cap when stats_dump_period is longer
198
+ {
199
+ Options options;
200
+ options.stats_dump_period_sec = 24 * 60 * 60; // 24 hours
201
+ options.stats_persist_period_sec = 0;
202
+ test_period(options, 12 * 60 * 60); // Expect 12 hours (cap)
203
+ }
204
+
205
+ // Case 2: stats_dump_period_sec sets the period (when smaller than 12 hours)
206
+ {
207
+ Options options;
208
+ options.stats_dump_period_sec = 3600; // 1 hour
209
+ options.stats_persist_period_sec = 0;
210
+ test_period(options, 3600);
211
+ }
212
+
213
+ // Case 3: stats_persist_period_sec sets the period
214
+ {
215
+ Options options;
216
+ options.stats_dump_period_sec = 0;
217
+ options.stats_persist_period_sec = 1800; // 30 minutes
218
+ test_period(options, 1800);
219
+ }
220
+
221
+ // Case 4: periodic_compaction_seconds / kTriggerDivisor
222
+ {
223
+ Options options;
224
+ options.stats_dump_period_sec = 24 * 60 * 60;
225
+ options.stats_persist_period_sec = 0;
226
+ options.periodic_compaction_seconds = 500; // 500 / 5 = 100
227
+ test_period(options, 100);
228
+ }
229
+
230
+ // Case 5: ttl / kTriggerDivisor
231
+ {
232
+ Options options;
233
+ options.stats_dump_period_sec = 24 * 60 * 60;
234
+ options.stats_persist_period_sec = 0;
235
+ options.ttl = 600; // 600 / 5 = 120
236
+ test_period(options, 120);
237
+ }
238
+
239
+ // Case 6: bottommost_file_compaction_delay / kTriggerDivisor
240
+ {
241
+ Options options;
242
+ options.stats_dump_period_sec = 24 * 60 * 60;
243
+ options.stats_persist_period_sec = 0;
244
+ options.bottommost_file_compaction_delay = 250; // 250 / 5 = 50
245
+ test_period(options, 50);
246
+ }
247
+
248
+ // Case 7: file_temperature_age_thresholds / kTriggerDivisor (FIFO)
249
+ {
250
+ Options options;
251
+ options.stats_dump_period_sec = 24 * 60 * 60;
252
+ options.stats_persist_period_sec = 0;
253
+ options.compaction_style = kCompactionStyleFIFO;
254
+ options.num_levels = 1; // Required for file_temperature_age_thresholds
255
+ options.compaction_options_fifo.file_temperature_age_thresholds = {
256
+ {Temperature::kWarm, 1000}}; // 1000 / 5 = 200
257
+ // FIFO requires max_table_files_size to be set
258
+ options.compaction_options_fifo.max_table_files_size = 1024 * 1024 * 1024;
259
+ test_period(options, 200);
260
+ }
261
+
262
+ // Case 8: Minimum of multiple CF options is used
263
+ {
264
+ Options options;
265
+ options.stats_dump_period_sec = 24 * 60 * 60;
266
+ options.stats_persist_period_sec = 0;
267
+ options.periodic_compaction_seconds = 1000; // 1000 / 5 = 200
268
+
269
+ ColumnFamilyOptions cf2_opts;
270
+ cf2_opts.ttl = 500; // 500 / 5 = 100 (smaller, should be used)
271
+
272
+ test_period(options, 100, &cf2_opts);
273
+ }
274
+
275
+ // Case 9: Second CF has larger value, first CF's value is used
276
+ {
277
+ Options options;
278
+ options.stats_dump_period_sec = 24 * 60 * 60;
279
+ options.stats_persist_period_sec = 0;
280
+ options.ttl = 300; // 300 / 5 = 60
281
+
282
+ ColumnFamilyOptions cf2_opts;
283
+ cf2_opts.periodic_compaction_seconds = 1000; // 1000 / 5 = 200 (larger)
284
+
285
+ test_period(options, 60, &cf2_opts);
286
+ }
287
+
288
+ // Case 10: Minimum is 1 second (never 0)
289
+ {
290
+ Options options;
291
+ options.stats_dump_period_sec = 0;
292
+ options.stats_persist_period_sec = 0;
293
+ options.ttl = 3; // 3 / 5 = 0, but clamped to 1
294
+ test_period(options, 1);
295
+ }
296
+ }
297
+
298
+ // Test that TriggerPeriodicCompaction() properly considers CFs for compaction
299
+ // based on all time-based compaction options (not just
300
+ // periodic_compaction_seconds). This is a regression test for the bug where
301
+ // only periodic_compaction_seconds was checked, causing CFs with ttl,
302
+ // bottommost_file_compaction_delay, or file_temperature_age_thresholds to not
303
+ // be considered.
304
+ //
305
+ // NOTE: This test uses a separate test class without mock time because the
306
+ // PeriodicTaskSchedulerTest fixture's mock clock setup does not integrate
307
+ // properly with opening the DB via DB::Open() with multiple column families
308
+ // having different options.
309
+ class TriggerCompactionTest : public DBTestBase {
310
+ public:
311
+ TriggerCompactionTest()
312
+ : DBTestBase("trigger_compaction_test", /*env_do_fsync=*/true) {}
313
+ };
314
+
315
+ TEST_F(TriggerCompactionTest, QueuesAllTimeBasedOptions) {
316
+ Close();
317
+
318
+ // Track which CFs get their compaction score computed during
319
+ // TriggerPeriodicCompaction
320
+ std::set<std::string> cfs_with_score_computed;
321
+ SyncPoint::GetInstance()->SetCallBack(
322
+ "DBImpl::TriggerPeriodicCompaction:BeforeComputeCompactionScore",
323
+ [&](void* arg) {
324
+ auto* cfd = static_cast<ColumnFamilyData*>(arg);
325
+ cfs_with_score_computed.insert(cfd->GetName());
326
+ });
327
+ SyncPoint::GetInstance()->EnableProcessing();
328
+
329
+ // Use small period so the test completes quickly with real time
330
+ constexpr unsigned int kPeriodSec = 1;
331
+
332
+ // Default CF: no time-based compaction options
333
+ Options options;
334
+ options.create_if_missing = true;
335
+ options.stats_dump_period_sec = kPeriodSec;
336
+ options.stats_persist_period_sec = 0;
337
+ options.periodic_compaction_seconds = 0;
338
+ options.ttl = 0;
339
+ options.bottommost_file_compaction_delay = 0;
340
+
341
+ // Create the DB with default CF first
342
+ DestroyAndReopen(options);
343
+
344
+ // Create the additional CFs (using same options, will set specific options
345
+ // on reopen)
346
+ CreateColumnFamilies(
347
+ {"cf_periodic", "cf_ttl", "cf_bottommost", "cf_fifo", "cf_none"},
348
+ options);
349
+ Close();
350
+
351
+ // Now reopen with specific options for each CF
352
+ std::vector<std::string> cf_names = {
353
+ kDefaultColumnFamilyName, "cf_periodic", "cf_ttl",
354
+ "cf_bottommost", "cf_fifo", "cf_none"};
355
+ std::vector<Options> cf_options;
356
+
357
+ // default: no time-based options
358
+ cf_options.push_back(options);
359
+
360
+ // cf_periodic: periodic_compaction_seconds
361
+ Options opt_periodic = options;
362
+ opt_periodic.periodic_compaction_seconds = 100;
363
+ cf_options.push_back(opt_periodic);
364
+
365
+ // cf_ttl: ttl
366
+ Options opt_ttl = options;
367
+ opt_ttl.ttl = 100;
368
+ cf_options.push_back(opt_ttl);
369
+
370
+ // cf_bottommost: bottommost_file_compaction_delay
371
+ Options opt_bottommost = options;
372
+ opt_bottommost.bottommost_file_compaction_delay = 100;
373
+ cf_options.push_back(opt_bottommost);
374
+
375
+ // cf_fifo: file_temperature_age_thresholds (requires FIFO compaction)
376
+ Options opt_fifo = options;
377
+ opt_fifo.compaction_style = kCompactionStyleFIFO;
378
+ opt_fifo.num_levels = 1;
379
+ opt_fifo.compaction_options_fifo.max_table_files_size = 1024 * 1024 * 1024;
380
+ opt_fifo.compaction_options_fifo.file_temperature_age_thresholds = {
381
+ {Temperature::kWarm, 100}};
382
+ cf_options.push_back(opt_fifo);
383
+
384
+ // cf_none: explicitly no time-based options
385
+ Options opt_none = options;
386
+ opt_none.periodic_compaction_seconds = 0;
387
+ opt_none.ttl = 0;
388
+ opt_none.bottommost_file_compaction_delay = 0;
389
+ cf_options.push_back(opt_none);
390
+
391
+ ReopenWithColumnFamilies(cf_names, cf_options);
392
+
393
+ // Wait for TriggerPeriodicCompaction to run using TEST_WaitForPeriodicTaskRun
394
+ // with a real sleep callback to advance real time
395
+ dbfull()->TEST_WaitForPeriodicTaskRun(
396
+ [&] { Env::Default()->SleepForMicroseconds(kPeriodSec * 1000000); });
397
+
398
+ // Verify CFs with time-based options had their compaction score computed
399
+ EXPECT_GT(cfs_with_score_computed.count("cf_periodic"), 0u)
400
+ << "Expected cf_periodic to have compaction score computed";
401
+ EXPECT_GT(cfs_with_score_computed.count("cf_ttl"), 0u)
402
+ << "Expected cf_ttl to have compaction score computed";
403
+ EXPECT_GT(cfs_with_score_computed.count("cf_bottommost"), 0u)
404
+ << "Expected cf_bottommost to have compaction score computed";
405
+ EXPECT_GT(cfs_with_score_computed.count("cf_fifo"), 0u)
406
+ << "Expected cf_fifo to have compaction score computed";
407
+
408
+ // CFs without time-based options should NOT have score computed
409
+ EXPECT_EQ(cfs_with_score_computed.count("default"), 0u)
410
+ << "Expected default CF to NOT have compaction score computed";
411
+ EXPECT_EQ(cfs_with_score_computed.count("cf_none"), 0u)
412
+ << "Expected cf_none to NOT have compaction score computed";
136
413
 
137
414
  Close();
138
415
  }
@@ -157,13 +434,13 @@ TEST_F(PeriodicTaskSchedulerTest, MultiInstances) {
157
434
  [&](void*) { pst_st_counter++; });
158
435
  SyncPoint::GetInstance()->EnableProcessing();
159
436
 
160
- auto dbs = std::vector<DB*>(kInstanceNum);
437
+ auto dbs = std::vector<std::unique_ptr<DB>>(kInstanceNum);
161
438
  for (int i = 0; i < kInstanceNum; i++) {
162
439
  ASSERT_OK(
163
440
  DB::Open(options, test::PerThreadDBPath(std::to_string(i)), &(dbs[i])));
164
441
  }
165
442
 
166
- auto dbi = static_cast_with_check<DBImpl>(dbs[kInstanceNum - 1]);
443
+ auto dbi = static_cast_with_check<DBImpl>(dbs[kInstanceNum - 1].get());
167
444
 
168
445
  const PeriodicTaskScheduler& scheduler = dbi->TEST_GetPeriodicTaskScheduler();
169
446
  // kRecordSeqnoTime is not registered since the feature is not enabled
@@ -190,7 +467,7 @@ TEST_F(PeriodicTaskSchedulerTest, MultiInstances) {
190
467
 
191
468
  int half = kInstanceNum / 2;
192
469
  for (int i = 0; i < half; i++) {
193
- delete dbs[i];
470
+ dbs[i].reset();
194
471
  }
195
472
 
196
473
  expected_run += (kInstanceNum - half) * 2;
@@ -204,7 +481,7 @@ TEST_F(PeriodicTaskSchedulerTest, MultiInstances) {
204
481
 
205
482
  for (int i = half; i < kInstanceNum; i++) {
206
483
  ASSERT_OK(dbs[i]->Close());
207
- delete dbs[i];
484
+ dbs[i].reset();
208
485
  }
209
486
  }
210
487
 
@@ -229,11 +506,11 @@ TEST_F(PeriodicTaskSchedulerTest, MultiEnv) {
229
506
  options1.env = mock_env2.get();
230
507
 
231
508
  std::string dbname = test::PerThreadDBPath("multi_env_test");
232
- DB* db;
509
+ std::unique_ptr<DB> db;
233
510
  ASSERT_OK(DB::Open(options2, dbname, &db));
234
511
 
235
512
  ASSERT_OK(db->Close());
236
- delete db;
513
+ db.reset();
237
514
  Close();
238
515
  }
239
516
 
@@ -98,7 +98,7 @@ class PlainTableDBTest : public testing::Test,
98
98
  private:
99
99
  std::string dbname_;
100
100
  Env* env_;
101
- DB* db_;
101
+ std::unique_ptr<DB> db_;
102
102
 
103
103
  bool mmap_mode_;
104
104
  Options last_options_;
@@ -107,7 +107,7 @@ class PlainTableDBTest : public testing::Test,
107
107
  PlainTableDBTest() : env_(Env::Default()) {}
108
108
 
109
109
  ~PlainTableDBTest() override {
110
- delete db_;
110
+ db_.reset();
111
111
  EXPECT_OK(DestroyDB(dbname_, Options()));
112
112
  }
113
113
 
@@ -115,7 +115,7 @@ class PlainTableDBTest : public testing::Test,
115
115
  mmap_mode_ = GetParam();
116
116
  dbname_ = test::PerThreadDBPath("plain_table_db_test");
117
117
  EXPECT_OK(DestroyDB(dbname_, Options()));
118
- db_ = nullptr;
118
+ db_.reset();
119
119
  Reopen();
120
120
  }
121
121
 
@@ -144,14 +144,11 @@ class PlainTableDBTest : public testing::Test,
144
144
  return options;
145
145
  }
146
146
 
147
- DBImpl* dbfull() { return static_cast_with_check<DBImpl>(db_); }
147
+ DBImpl* dbfull() { return static_cast_with_check<DBImpl>(db_.get()); }
148
148
 
149
149
  void Reopen(Options* options = nullptr) { ASSERT_OK(TryReopen(options)); }
150
150
 
151
- void Close() {
152
- delete db_;
153
- db_ = nullptr;
154
- }
151
+ void Close() { db_.reset(); }
155
152
 
156
153
  bool mmap_mode() const { return mmap_mode_; }
157
154
 
@@ -162,24 +159,21 @@ class PlainTableDBTest : public testing::Test,
162
159
  }
163
160
 
164
161
  void Destroy(Options* options) {
165
- delete db_;
166
- db_ = nullptr;
162
+ db_.reset();
167
163
  ASSERT_OK(DestroyDB(dbname_, *options));
168
164
  }
169
165
 
170
- Status PureReopen(Options* options, DB** db) {
166
+ Status PureReopen(Options* options, std::unique_ptr<DB>* db) {
171
167
  return DB::Open(*options, dbname_, db);
172
168
  }
173
169
 
174
170
  Status ReopenForReadOnly(Options* options) {
175
- delete db_;
176
- db_ = nullptr;
171
+ db_.reset();
177
172
  return DB::OpenForReadOnly(*options, dbname_, &db_);
178
173
  }
179
174
 
180
175
  Status TryReopen(Options* options = nullptr) {
181
- delete db_;
182
- db_ = nullptr;
176
+ db_.reset();
183
177
  Options opts;
184
178
  if (options != nullptr) {
185
179
  opts = *options;
@@ -495,8 +489,7 @@ TEST_P(PlainTableDBTest, Flush) {
495
489
  ASSERT_GT(int_num, 0U);
496
490
 
497
491
  TablePropertiesCollection ptc;
498
- ASSERT_OK(
499
- static_cast<DB*>(dbfull())->GetPropertiesOfAllTables(&ptc));
492
+ ASSERT_OK(dbfull()->GetPropertiesOfAllTables(&ptc));
500
493
  ASSERT_EQ(1U, ptc.size());
501
494
  auto row = ptc.begin();
502
495
  auto tp = row->second;
@@ -220,8 +220,6 @@ class SamePrefixTransform : public SliceTransform {
220
220
  return false;
221
221
  }
222
222
 
223
- bool InRange(const Slice& dst) const override { return dst == prefix_; }
224
-
225
223
  bool FullLengthEnabled(size_t* /*len*/) const override { return false; }
226
224
  };
227
225
 
@@ -229,8 +227,8 @@ class SamePrefixTransform : public SliceTransform {
229
227
 
230
228
  class PrefixTest : public testing::Test {
231
229
  public:
232
- std::shared_ptr<DB> OpenDb() {
233
- DB* db;
230
+ std::unique_ptr<DB> OpenDb() {
231
+ std::unique_ptr<DB> db;
234
232
 
235
233
  options.create_if_missing = true;
236
234
  options.write_buffer_size = FLAGS_write_buffer_size;
@@ -251,7 +249,7 @@ class PrefixTest : public testing::Test {
251
249
 
252
250
  Status s = DB::Open(options, kDbName, &db);
253
251
  EXPECT_OK(s);
254
- return std::shared_ptr<DB>(db);
252
+ return db;
255
253
  }
256
254
 
257
255
  void FirstOption() { option_config_ = kBegin; }
@@ -304,7 +302,7 @@ class PrefixTest : public testing::Test {
304
302
  };
305
303
 
306
304
  TEST(SamePrefixTest, InDomainTest) {
307
- DB* db;
305
+ std::unique_ptr<DB> db;
308
306
  Options options;
309
307
  options.create_if_missing = true;
310
308
  options.prefix_extractor.reset(new SamePrefixTransform("HHKB"));
@@ -331,7 +329,7 @@ TEST(SamePrefixTest, InDomainTest) {
331
329
  ASSERT_EQ(db_iter->value(), "idk");
332
330
 
333
331
  delete db_iter;
334
- delete db;
332
+ db.reset();
335
333
  ASSERT_OK(DestroyDB(kDbName, Options()));
336
334
  }
337
335
 
@@ -348,7 +346,7 @@ TEST(SamePrefixTest, InDomainTest) {
348
346
  ASSERT_TRUE(db_iter->Valid());
349
347
  ASSERT_OK(db_iter->status());
350
348
  delete db_iter;
351
- delete db;
349
+ db.reset();
352
350
  ASSERT_OK(DestroyDB(kDbName, Options()));
353
351
  }
354
352
  }
@@ -704,17 +704,17 @@ class Repairer {
704
704
  VersionEdit dummy_edit;
705
705
  for (const auto* table : cf_id_and_tables.second) {
706
706
  // TODO(opt): separate out into multiple levels
707
+ const auto& meta = table->meta;
707
708
  dummy_edit.AddFile(
708
- 0, table->meta.fd.GetNumber(), table->meta.fd.GetPathId(),
709
- table->meta.fd.GetFileSize(), table->meta.smallest,
710
- table->meta.largest, table->meta.fd.smallest_seqno,
711
- table->meta.fd.largest_seqno, table->meta.marked_for_compaction,
712
- table->meta.temperature, table->meta.oldest_blob_file_number,
713
- table->meta.oldest_ancester_time, table->meta.file_creation_time,
714
- table->meta.epoch_number, table->meta.file_checksum,
715
- table->meta.file_checksum_func_name, table->meta.unique_id,
716
- table->meta.compensated_range_deletion_size, table->meta.tail_size,
717
- table->meta.user_defined_timestamps_persisted);
709
+ 0, meta.fd.GetNumber(), meta.fd.GetPathId(), meta.fd.GetFileSize(),
710
+ meta.smallest, meta.largest, meta.fd.smallest_seqno,
711
+ meta.fd.largest_seqno, meta.marked_for_compaction, meta.temperature,
712
+ meta.oldest_blob_file_number, meta.oldest_ancester_time,
713
+ meta.file_creation_time, meta.epoch_number, meta.file_checksum,
714
+ meta.file_checksum_func_name, meta.unique_id,
715
+ meta.compensated_range_deletion_size, meta.tail_size,
716
+ meta.user_defined_timestamps_persisted, meta.min_timestamp,
717
+ meta.max_timestamp);
718
718
  }
719
719
  s = dummy_version_builder.Apply(&dummy_edit);
720
720
  if (s.ok()) {
@@ -661,14 +661,14 @@ TEST_P(SeqnoTimeTablePropTest, MultiInstancesBasic) {
661
661
  options.stats_dump_period_sec = 0;
662
662
  options.stats_persist_period_sec = 0;
663
663
 
664
- auto dbs = std::vector<DB*>(kInstanceNum);
664
+ auto dbs = std::vector<std::unique_ptr<DB>>(kInstanceNum);
665
665
  for (int i = 0; i < kInstanceNum; i++) {
666
666
  ASSERT_OK(
667
667
  DB::Open(options, test::PerThreadDBPath(std::to_string(i)), &(dbs[i])));
668
668
  }
669
669
 
670
670
  // Make sure the second instance has the worker enabled
671
- auto dbi = static_cast_with_check<DBImpl>(dbs[1]);
671
+ auto dbi = static_cast_with_check<DBImpl>(dbs[1].get());
672
672
  WriteOptions wo;
673
673
  for (int i = 0; i < 200; i++) {
674
674
  ASSERT_OK(dbi->Put(wo, Key(i), "value"));
@@ -680,7 +680,7 @@ TEST_P(SeqnoTimeTablePropTest, MultiInstancesBasic) {
680
680
 
681
681
  for (int i = 0; i < kInstanceNum; i++) {
682
682
  ASSERT_OK(dbs[i]->Close());
683
- delete dbs[i];
683
+ dbs[i].reset();
684
684
  }
685
685
  }
686
686
 
@@ -792,8 +792,8 @@ TEST_P(SeqnoTimeTablePropTest, SeqnoToTimeMappingUniversal) {
792
792
  }
793
793
  ASSERT_GT(num_seqno_zeroing, 0);
794
794
  std::vector<KeyVersion> key_versions;
795
- ASSERT_OK(GetAllKeyVersions(db_, {}, {}, std::numeric_limits<size_t>::max(),
796
- &key_versions));
795
+ ASSERT_OK(GetAllKeyVersions(
796
+ db_.get(), {}, {}, std::numeric_limits<size_t>::max(), &key_versions));
797
797
  // make sure there're more than 300 keys and first 100 keys are having seqno
798
798
  // zeroed out, the last 100 key seqno not zeroed out
799
799
  ASSERT_GT(key_versions.size(), 300);