@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
@@ -1689,6 +1689,46 @@ TEST_F(DBOptionsTest, SetOptionsNoManifestWrite) {
1689
1689
  ASSERT_EQ(Get("x"), "x");
1690
1690
  }
1691
1691
 
1692
+ TEST_F(DBOptionsTest, SetOptionsMultipleColumnFamilies) {
1693
+ Options options;
1694
+ options.create_if_missing = true;
1695
+ options.env = CurrentOptions().env;
1696
+ options.disable_auto_compactions = true;
1697
+ Reopen(options);
1698
+
1699
+ // Create two additional column families
1700
+ CreateColumnFamilies({"cf1", "cf2"}, options);
1701
+ ReopenWithColumnFamilies({"default", "cf1", "cf2"}, options);
1702
+
1703
+ // Verify initial state - auto compaction should be disabled
1704
+ ASSERT_TRUE(dbfull()->GetOptions(handles_[0]).disable_auto_compactions);
1705
+ ASSERT_TRUE(dbfull()->GetOptions(handles_[1]).disable_auto_compactions);
1706
+ ASSERT_TRUE(dbfull()->GetOptions(handles_[2]).disable_auto_compactions);
1707
+
1708
+ // Set options on multiple column families at once
1709
+ ASSERT_OK(dbfull()->SetOptions({handles_[1], handles_[2]},
1710
+ {{"disable_auto_compactions", "false"}}));
1711
+
1712
+ ASSERT_TRUE(
1713
+ dbfull()->GetOptions(handles_[0]).disable_auto_compactions); // unchanged
1714
+ ASSERT_FALSE(
1715
+ dbfull()->GetOptions(handles_[1]).disable_auto_compactions); // changed
1716
+ ASSERT_FALSE(
1717
+ dbfull()->GetOptions(handles_[2]).disable_auto_compactions); // changed
1718
+
1719
+ std::unordered_map<ColumnFamilyHandle*,
1720
+ std::unordered_map<std::string, std::string>>
1721
+ options_map;
1722
+ options_map[handles_[0]] = {{"disable_auto_compactions", "false"}};
1723
+ options_map[handles_[1]] = {{"disable_auto_compactions", "true"}};
1724
+ options_map[handles_[2]] = {{"disable_auto_compactions", "true"}};
1725
+ ASSERT_OK(dbfull()->SetOptions(options_map));
1726
+
1727
+ ASSERT_FALSE(dbfull()->GetOptions(handles_[0]).disable_auto_compactions);
1728
+ ASSERT_TRUE(dbfull()->GetOptions(handles_[1]).disable_auto_compactions);
1729
+ ASSERT_TRUE(dbfull()->GetOptions(handles_[2]).disable_auto_compactions);
1730
+ }
1731
+
1692
1732
  } // namespace ROCKSDB_NAMESPACE
1693
1733
 
1694
1734
  int main(int argc, char** argv) {
@@ -384,7 +384,7 @@ TEST_F(DBPropertiesTest, AggregatedTableProperties) {
384
384
 
385
385
  // Hold open a snapshot to prevent range tombstones from being compacted
386
386
  // away.
387
- ManagedSnapshot snapshot(db_);
387
+ ManagedSnapshot snapshot(db_.get());
388
388
 
389
389
  Random rnd(5632);
390
390
  for (int table = 1; table <= kTableCount; ++table) {
@@ -582,7 +582,7 @@ TEST_F(DBPropertiesTest, AggregatedTablePropertiesAtLevel) {
582
582
  DestroyAndReopen(options);
583
583
 
584
584
  // Hold open a snapshot to prevent range tombstones from being compacted away.
585
- ManagedSnapshot snapshot(db_);
585
+ ManagedSnapshot snapshot(db_.get());
586
586
 
587
587
  std::string level_tp_strings[kMaxLevel];
588
588
  std::string tp_string;
@@ -1519,16 +1519,14 @@ TEST_F(DBPropertiesTest, NeedCompactHintPersistentTest) {
1519
1519
 
1520
1520
  // Excluded from RocksDB lite tests due to `GetPropertiesOfAllTables()` usage.
1521
1521
  TEST_F(DBPropertiesTest, BlockAddForCompressionSampling) {
1522
- // Sampled compression requires at least one of the following four types.
1523
- if (!Snappy_Supported() && !Zlib_Supported() && !LZ4_Supported() &&
1524
- !ZSTD_Supported()) {
1525
- return;
1526
- }
1527
-
1528
1522
  Options options = CurrentOptions();
1529
1523
  options.disable_auto_compactions = true;
1530
1524
  options.table_properties_collector_factories.emplace_back(
1531
1525
  std::make_shared<BlockCountingTablePropertiesCollectorFactory>());
1526
+ options.compression = kNoCompression;
1527
+
1528
+ bool fast_sampling_supported = Snappy_Supported() || LZ4_Supported();
1529
+ bool slow_sampling_supported = ZSTD_Supported() || Zlib_Supported();
1532
1530
 
1533
1531
  for (bool sample_for_compression : {false, true}) {
1534
1532
  // For simplicity/determinism, sample 100% when enabled, or 0% when disabled
@@ -1542,10 +1540,11 @@ TEST_F(DBPropertiesTest, BlockAddForCompressionSampling) {
1542
1540
  // L1_0 ["a", "b"]
1543
1541
  //
1544
1542
  // L0_0 was created by flush. L1_0 was created by compaction. Each file
1545
- // contains one data block.
1543
+ // contains one data block with enough data to be compressible.
1546
1544
  for (int i = 0; i < 3; ++i) {
1547
- ASSERT_OK(Put("a", "val"));
1548
- ASSERT_OK(Put("b", "val"));
1545
+ for (int j = 0; j < 50; ++j) {
1546
+ ASSERT_OK(Put(std::to_string(j), "thisismyvalue"));
1547
+ }
1549
1548
  ASSERT_OK(Flush());
1550
1549
  if (i == 1) {
1551
1550
  ASSERT_OK(db_->CompactRange(CompactRangeOptions(), nullptr, nullptr));
@@ -1558,13 +1557,33 @@ TEST_F(DBPropertiesTest, BlockAddForCompressionSampling) {
1558
1557
  ASSERT_OK(db_->GetPropertiesOfAllTables(&file_to_props));
1559
1558
  ASSERT_EQ(2, file_to_props.size());
1560
1559
  for (const auto& file_and_props : file_to_props) {
1561
- auto& user_props = file_and_props.second->user_collected_properties;
1560
+ auto& props = *file_and_props.second;
1561
+ auto& user_props = props.user_collected_properties;
1562
1562
  ASSERT_TRUE(user_props.find(BlockCountingTablePropertiesCollector::
1563
1563
  kNumSampledBlocksPropertyName) !=
1564
1564
  user_props.end());
1565
1565
  ASSERT_EQ(user_props.at(BlockCountingTablePropertiesCollector::
1566
1566
  kNumSampledBlocksPropertyName),
1567
1567
  std::to_string(sample_for_compression ? 1 : 0));
1568
+ if (sample_for_compression) {
1569
+ EXPECT_GT(props.fast_compression_estimated_data_size, 0);
1570
+ EXPECT_GT(props.slow_compression_estimated_data_size, 0);
1571
+ if (fast_sampling_supported) {
1572
+ EXPECT_LT(props.fast_compression_estimated_data_size,
1573
+ props.data_size);
1574
+ if (slow_sampling_supported) {
1575
+ EXPECT_LT(props.slow_compression_estimated_data_size,
1576
+ props.fast_compression_estimated_data_size);
1577
+ }
1578
+ }
1579
+ if (slow_sampling_supported) {
1580
+ EXPECT_LT(props.slow_compression_estimated_data_size,
1581
+ props.data_size);
1582
+ }
1583
+ } else {
1584
+ EXPECT_EQ(props.fast_compression_estimated_data_size, 0);
1585
+ EXPECT_EQ(props.slow_compression_estimated_data_size, 0);
1586
+ }
1568
1587
  }
1569
1588
  }
1570
1589
  }
@@ -1845,7 +1864,7 @@ TEST_F(DBPropertiesTest, MinObsoleteSstNumberToKeep) {
1845
1864
  options.listeners.push_back(listener);
1846
1865
  options.level0_file_num_compaction_trigger = kNumL0Files;
1847
1866
  DestroyAndReopen(options);
1848
- listener->SetDB(db_);
1867
+ listener->SetDB(db_.get());
1849
1868
 
1850
1869
  for (int i = 0; i < kNumL0Files; ++i) {
1851
1870
  // Make sure they overlap in keyspace to prevent trivial move
@@ -2047,7 +2047,7 @@ TEST_F(DBRangeDelTest, IteratorReseek) {
2047
2047
  // Immutable memtable
2048
2048
  ASSERT_OK(db_->DeleteRange(WriteOptions(), db_->DefaultColumnFamily(), Key(1),
2049
2049
  Key(2)));
2050
- ASSERT_OK(static_cast_with_check<DBImpl>(db_)->TEST_SwitchMemtable());
2050
+ ASSERT_OK(dbfull()->TEST_SwitchMemtable());
2051
2051
  std::string value;
2052
2052
  ASSERT_TRUE(dbfull()->GetProperty(db_->DefaultColumnFamily(),
2053
2053
  "rocksdb.num-immutable-mem-table", &value));
@@ -237,7 +237,7 @@ TEST_F(DBReadOnlyTestWithTimestamp, IteratorAndGet) {
237
237
  it->Next(), ++count, ++key) {
238
238
  CheckIterUserEntry(it.get(), Key1(key), kTypeValue,
239
239
  "value" + std::to_string(i), write_timestamps[i]);
240
- get_value_and_check(db_, read_opts, it->key(), it->value(),
240
+ get_value_and_check(db_.get(), read_opts, it->key(), it->value(),
241
241
  write_timestamps[i]);
242
242
  }
243
243
  ASSERT_OK(it->status());
@@ -250,7 +250,7 @@ TEST_F(DBReadOnlyTestWithTimestamp, IteratorAndGet) {
250
250
  it->Prev(), ++count, --key) {
251
251
  CheckIterUserEntry(it.get(), Key1(key), kTypeValue,
252
252
  "value" + std::to_string(i), write_timestamps[i]);
253
- get_value_and_check(db_, read_opts, it->key(), it->value(),
253
+ get_value_and_check(db_.get(), read_opts, it->key(), it->value(),
254
254
  write_timestamps[i]);
255
255
  }
256
256
  ASSERT_OK(it->status());
@@ -272,7 +272,7 @@ TEST_F(DBReadOnlyTestWithTimestamp, IteratorAndGet) {
272
272
  it->Valid(); it->Next(), ++key, ++count) {
273
273
  CheckIterUserEntry(it.get(), Key1(key), kTypeValue,
274
274
  "value" + std::to_string(i), write_timestamps[i]);
275
- get_value_and_check(db_, read_opts, it->key(), it->value(),
275
+ get_value_and_check(db_.get(), read_opts, it->key(), it->value(),
276
276
  write_timestamps[i]);
277
277
  }
278
278
  ASSERT_OK(it->status());
@@ -282,7 +282,7 @@ TEST_F(DBReadOnlyTestWithTimestamp, IteratorAndGet) {
282
282
  it->Valid(); it->Prev(), --key, ++count) {
283
283
  CheckIterUserEntry(it.get(), Key1(key - 1), kTypeValue,
284
284
  "value" + std::to_string(i), write_timestamps[i]);
285
- get_value_and_check(db_, read_opts, it->key(), it->value(),
285
+ get_value_and_check(db_.get(), read_opts, it->key(), it->value(),
286
286
  write_timestamps[i]);
287
287
  }
288
288
  ASSERT_OK(it->status());
@@ -56,12 +56,11 @@ class DBSecondaryTestBase : public DBBasicTestWithTimestampBase {
56
56
  ASSERT_OK(db_secondary_->DestroyColumnFamilyHandle(h));
57
57
  }
58
58
  handles_secondary_.clear();
59
- delete db_secondary_;
60
- db_secondary_ = nullptr;
59
+ db_secondary_.reset();
61
60
  }
62
61
 
63
62
  DBImplSecondary* db_secondary_full() {
64
- return static_cast<DBImplSecondary*>(db_secondary_);
63
+ return static_cast<DBImplSecondary*>(db_secondary_.get());
65
64
  }
66
65
 
67
66
  void CheckFileTypeCounts(const std::string& dir, int expected_log,
@@ -69,7 +68,7 @@ class DBSecondaryTestBase : public DBBasicTestWithTimestampBase {
69
68
 
70
69
  std::string secondary_path_;
71
70
  std::vector<ColumnFamilyHandle*> handles_secondary_;
72
- DB* db_secondary_;
71
+ std::unique_ptr<DB> db_secondary_;
73
72
  };
74
73
 
75
74
  void DBSecondaryTestBase::OpenSecondary(const Options& options) {
@@ -152,8 +151,8 @@ TEST_F(DBSecondaryTest, NonExistingDb) {
152
151
  options.env = env_;
153
152
  options.max_open_files = -1;
154
153
  const std::string dbname = "/doesnt/exist";
155
- Status s =
156
- DB::OpenAsSecondary(options, dbname, secondary_path_, &db_secondary_);
154
+ std::unique_ptr<DB> dbptr;
155
+ Status s = DB::OpenAsSecondary(options, dbname, secondary_path_, &dbptr);
157
156
  ASSERT_TRUE(s.IsIOError());
158
157
  }
159
158
 
@@ -182,7 +181,7 @@ TEST_F(DBSecondaryTest, ReopenAsSecondary) {
182
181
 
183
182
  ReadOptions ropts;
184
183
  ropts.verify_checksums = true;
185
- auto db1 = static_cast<DBImplSecondary*>(db_);
184
+ auto db1 = static_cast<DBImplSecondary*>(db_.get());
186
185
  ASSERT_NE(nullptr, db1);
187
186
  Iterator* iter = db1->NewIterator(ropts);
188
187
  ASSERT_NE(nullptr, iter);
@@ -834,7 +833,7 @@ TEST_F(DBSecondaryTest, OpenWithSubsetOfColumnFamilies) {
834
833
  options1.max_open_files = -1;
835
834
  OpenSecondary(options1);
836
835
  ASSERT_EQ(0, handles_secondary_.size());
837
- ASSERT_NE(nullptr, db_secondary_);
836
+ ASSERT_NE(nullptr, db_secondary_.get());
838
837
 
839
838
  ASSERT_OK(Put(0 /*cf*/, "foo", "foo_value"));
840
839
  ASSERT_OK(Put(1 /*cf*/, "foo", "foo_value"));
@@ -1152,7 +1151,7 @@ TEST_F(DBSecondaryTest, DISABLED_SwitchWAL) {
1152
1151
  for (int k = 0; k != 16; ++k) {
1153
1152
  ASSERT_OK(Put("key" + std::to_string(k), "value" + std::to_string(k)));
1154
1153
  ASSERT_OK(db_secondary_->TryCatchUpWithPrimary());
1155
- verify_db(dbfull(), db_secondary_);
1154
+ verify_db(dbfull(), db_secondary_.get());
1156
1155
  }
1157
1156
  }
1158
1157
 
@@ -1221,7 +1220,7 @@ TEST_F(DBSecondaryTest, DISABLED_SwitchWALMultiColumnFamilies) {
1221
1220
  TEST_SYNC_POINT(
1222
1221
  "DBSecondaryTest::SwitchWALMultipleColumnFamilies:BeforeCatchUp");
1223
1222
  ASSERT_OK(db_secondary_->TryCatchUpWithPrimary());
1224
- verify_db(dbfull(), handles_, db_secondary_, handles_secondary_);
1223
+ verify_db(dbfull(), handles_, db_secondary_.get(), handles_secondary_);
1225
1224
  SyncPoint::GetInstance()->ClearTrace();
1226
1225
  }
1227
1226
  }
@@ -1357,7 +1356,7 @@ TEST_F(DBSecondaryTest, OpenWithTransactionDB) {
1357
1356
  TransactionDBOptions txn_db_opts;
1358
1357
  ASSERT_OK(TransactionDB::Open(options, txn_db_opts, dbname_, &txn_db));
1359
1358
  ASSERT_NE(txn_db, nullptr);
1360
- db_ = txn_db;
1359
+ db_.reset(txn_db);
1361
1360
 
1362
1361
  std::vector<std::string> cfs = {"new_CF"};
1363
1362
  CreateColumnFamilies(cfs, options);
@@ -1561,7 +1560,7 @@ TEST_F(DBSecondaryTestWithTimestamp, IteratorAndGet) {
1561
1560
  it->Next(), ++count, ++key) {
1562
1561
  CheckIterUserEntry(it.get(), Key1(key), kTypeValue,
1563
1562
  "value" + std::to_string(i), write_timestamps[i]);
1564
- get_value_and_check(db_, read_opts, it->key(), it->value(),
1563
+ get_value_and_check(db_.get(), read_opts, it->key(), it->value(),
1565
1564
  write_timestamps[i]);
1566
1565
  }
1567
1566
  ASSERT_OK(it->status());
@@ -1574,7 +1573,7 @@ TEST_F(DBSecondaryTestWithTimestamp, IteratorAndGet) {
1574
1573
  it->Prev(), ++count, --key) {
1575
1574
  CheckIterUserEntry(it.get(), Key1(key), kTypeValue,
1576
1575
  "value" + std::to_string(i), write_timestamps[i]);
1577
- get_value_and_check(db_, read_opts, it->key(), it->value(),
1576
+ get_value_and_check(db_.get(), read_opts, it->key(), it->value(),
1578
1577
  write_timestamps[i]);
1579
1578
  }
1580
1579
  ASSERT_OK(it->status());
@@ -1596,7 +1595,7 @@ TEST_F(DBSecondaryTestWithTimestamp, IteratorAndGet) {
1596
1595
  it->Valid(); it->Next(), ++key, ++count) {
1597
1596
  CheckIterUserEntry(it.get(), Key1(key), kTypeValue,
1598
1597
  "value" + std::to_string(i), write_timestamps[i]);
1599
- get_value_and_check(db_, read_opts, it->key(), it->value(),
1598
+ get_value_and_check(db_.get(), read_opts, it->key(), it->value(),
1600
1599
  write_timestamps[i]);
1601
1600
  }
1602
1601
  ASSERT_OK(it->status());
@@ -1606,7 +1605,7 @@ TEST_F(DBSecondaryTestWithTimestamp, IteratorAndGet) {
1606
1605
  it->Valid(); it->Prev(), --key, ++count) {
1607
1606
  CheckIterUserEntry(it.get(), Key1(key - 1), kTypeValue,
1608
1607
  "value" + std::to_string(i), write_timestamps[i]);
1609
- get_value_and_check(db_, read_opts, it->key(), it->value(),
1608
+ get_value_and_check(db_.get(), read_opts, it->key(), it->value(),
1610
1609
  write_timestamps[i]);
1611
1610
  }
1612
1611
  ASSERT_OK(it->status());
@@ -1828,6 +1827,60 @@ TEST_F(DBSecondaryTestWithTimestamp, Iterators) {
1828
1827
  Close();
1829
1828
  }
1830
1829
 
1830
+ TEST_F(DBSecondaryTest, GetLiveFilesOnSecondary) {
1831
+ Options options;
1832
+ options.env = env_;
1833
+ options.level0_file_num_compaction_trigger = 4;
1834
+ Reopen(options);
1835
+
1836
+ // Write some data and flush to create SST files on the primary.
1837
+ for (int i = 0; i < 3; ++i) {
1838
+ ASSERT_OK(Put("key" + std::to_string(i), "value" + std::to_string(i)));
1839
+ ASSERT_OK(Flush());
1840
+ }
1841
+
1842
+ // Open secondary and verify GetLiveFiles works.
1843
+ Options options1;
1844
+ options1.env = env_;
1845
+ options1.max_open_files = -1;
1846
+ OpenSecondary(options1);
1847
+
1848
+ std::vector<std::string> live_files;
1849
+ uint64_t manifest_size = 0;
1850
+ ASSERT_OK(db_secondary_->GetLiveFiles(live_files, &manifest_size));
1851
+ ASSERT_GT(live_files.size(), 0);
1852
+ ASSERT_GT(manifest_size, 0);
1853
+
1854
+ // Should contain SST files, CURRENT, MANIFEST, and OPTIONS.
1855
+ bool has_sst = false;
1856
+ bool has_current = false;
1857
+ bool has_manifest = false;
1858
+ for (const auto& f : live_files) {
1859
+ if (f.find(".sst") != std::string::npos) {
1860
+ has_sst = true;
1861
+ } else if (f.find("CURRENT") != std::string::npos) {
1862
+ has_current = true;
1863
+ } else if (f.find("MANIFEST") != std::string::npos) {
1864
+ has_manifest = true;
1865
+ }
1866
+ }
1867
+ ASSERT_TRUE(has_sst);
1868
+ ASSERT_TRUE(has_current);
1869
+ ASSERT_TRUE(has_manifest);
1870
+
1871
+ // Write more data on primary, catch up, and verify the file list updates.
1872
+ ASSERT_OK(Put("key3", "value3"));
1873
+ ASSERT_OK(Flush());
1874
+
1875
+ ASSERT_OK(db_secondary_->TryCatchUpWithPrimary());
1876
+
1877
+ std::vector<std::string> live_files_after;
1878
+ uint64_t manifest_size_after = 0;
1879
+ ASSERT_OK(
1880
+ db_secondary_->GetLiveFiles(live_files_after, &manifest_size_after));
1881
+ ASSERT_GT(live_files_after.size(), live_files.size());
1882
+ }
1883
+
1831
1884
  } // namespace ROCKSDB_NAMESPACE
1832
1885
 
1833
1886
  int main(int argc, char** argv) {
@@ -1535,7 +1535,7 @@ TEST_F(DBSSTTest, OpenDBWithInfiniteMaxOpenFiles) {
1535
1535
 
1536
1536
  for (const auto& level : files) {
1537
1537
  for (const auto& file : level) {
1538
- ASSERT_TRUE(file.table_reader_handle != nullptr);
1538
+ ASSERT_TRUE(file.fd.pinned_reader.Get() != nullptr);
1539
1539
  }
1540
1540
  }
1541
1541
 
@@ -321,7 +321,7 @@ TEST_F(DBStatisticsTest, BytesWrittenStats) {
321
321
  options.enable_pipelined_write = enable_pipelined_write;
322
322
  ASSERT_OK(TransactionDB::Open(options, txn_db_opts, dbname_, &txn_db));
323
323
  ASSERT_NE(txn_db, nullptr);
324
- db_ = txn_db->GetBaseDB();
324
+ db_.reset(txn_db);
325
325
 
326
326
  WriteOptions wopts;
327
327
  TransactionOptions txn_opts;
@@ -351,8 +351,7 @@ TEST_F(DBStatisticsTest, BytesWrittenStats) {
351
351
  WriteBatchInternal::kHeader);
352
352
 
353
353
  // Cleanup
354
- db_ = nullptr;
355
- delete txn_db;
354
+ db_.reset();
356
355
  }
357
356
  }
358
357
 
@@ -69,14 +69,6 @@ TEST_F(DBTablePropertiesTest, GetPropertiesOfAllTablesTest) {
69
69
 
70
70
  // Create 4 tables
71
71
  for (int table = 0; table < 4; ++table) {
72
- // Use old meta name for table properties for one file
73
- if (table == 3) {
74
- SyncPoint::GetInstance()->SetCallBack(
75
- "BlockBasedTableBuilder::WritePropertiesBlock:Meta", [&](void* meta) {
76
- *static_cast<const std::string**>(meta) = &kPropertiesBlockOldName;
77
- });
78
- SyncPoint::GetInstance()->EnableProcessing();
79
- }
80
72
  // Build file
81
73
  for (int i = 0; i < 10 + table; ++i) {
82
74
  ASSERT_OK(
@@ -84,7 +76,6 @@ TEST_F(DBTablePropertiesTest, GetPropertiesOfAllTablesTest) {
84
76
  }
85
77
  ASSERT_OK(db_->Flush(FlushOptions()));
86
78
  }
87
- SyncPoint::GetInstance()->DisableProcessing();
88
79
  std::string original_session_id;
89
80
  ASSERT_OK(db_->GetDbSessionId(original_session_id));
90
81
 
@@ -99,7 +90,7 @@ TEST_F(DBTablePropertiesTest, GetPropertiesOfAllTablesTest) {
99
90
  // Clear out auto-opened files
100
91
  dbfull()->TEST_table_cache()->EraseUnRefEntries();
101
92
  ASSERT_EQ(dbfull()->TEST_table_cache()->GetUsage(), 0U);
102
- VerifyTableProperties(db_, 10 + 11 + 12 + 13);
93
+ VerifyTableProperties(db_.get(), 10 + 11 + 12 + 13);
103
94
 
104
95
  // 2. Put two tables to table cache and
105
96
  Reopen(options);
@@ -112,7 +103,7 @@ TEST_F(DBTablePropertiesTest, GetPropertiesOfAllTablesTest) {
112
103
  Get(std::to_string(i * 100 + 0));
113
104
  }
114
105
 
115
- VerifyTableProperties(db_, 10 + 11 + 12 + 13);
106
+ VerifyTableProperties(db_.get(), 10 + 11 + 12 + 13);
116
107
 
117
108
  // 3. Put all tables to table cache
118
109
  Reopen(options);
@@ -120,7 +111,7 @@ TEST_F(DBTablePropertiesTest, GetPropertiesOfAllTablesTest) {
120
111
  for (int i = 0; i < 4; ++i) {
121
112
  Get(std::to_string(i * 100 + 0));
122
113
  }
123
- VerifyTableProperties(db_, 10 + 11 + 12 + 13);
114
+ VerifyTableProperties(db_.get(), 10 + 11 + 12 + 13);
124
115
 
125
116
  // 4. Try to read CORRUPT properties (a) directly from file, and (b)
126
117
  // through reader on Get
@@ -169,10 +160,7 @@ TEST_F(DBTablePropertiesTest, GetPropertiesOfAllTablesTest) {
169
160
  SyncPoint::GetInstance()->DisableProcessing();
170
161
  }
171
162
 
172
- TEST_F(DBTablePropertiesTest, InvalidIgnored) {
173
- // RocksDB versions 2.5 - 2.7 generate some properties that Block considers
174
- // invalid in some way. This approximates that.
175
-
163
+ TEST_F(DBTablePropertiesTest, InvalidReportedAsCorruption) {
176
164
  // Inject properties block data that Block considers invalid
177
165
  SyncPoint::GetInstance()->SetCallBack(
178
166
  "BlockBasedTableBuilder::WritePropertiesBlock:BlockData",
@@ -189,13 +177,10 @@ TEST_F(DBTablePropertiesTest, InvalidIgnored) {
189
177
  for (int i = 0; i < 10; ++i) {
190
178
  ASSERT_OK(db_->Put(WriteOptions(), std::to_string(i), "val"));
191
179
  }
192
- ASSERT_OK(db_->Flush(FlushOptions()));
180
+ // Corrupted properties block should be detected and reported as corruption
181
+ ASSERT_TRUE(db_->Flush(FlushOptions()).IsCorruption());
193
182
 
194
183
  SyncPoint::GetInstance()->DisableProcessing();
195
-
196
- // Not crashing is good enough
197
- TablePropertiesCollection props;
198
- ASSERT_OK(db_->GetPropertiesOfAllTables(&props));
199
184
  }
200
185
 
201
186
  TEST_F(DBTablePropertiesTest, CreateOnDeletionCollectorFactory) {