@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
@@ -95,6 +95,14 @@ class SubcompactionState {
95
95
  proximal_level_outputs_.RemoveLastEmptyOutput();
96
96
  }
97
97
 
98
+ // Cleanup output builders for abandoning in-progress files.
99
+ void CleanupOutputs() {
100
+ compaction_outputs_.Cleanup();
101
+ if (compaction->SupportsPerKeyPlacement()) {
102
+ proximal_level_outputs_.Cleanup();
103
+ }
104
+ }
105
+
98
106
  void BuildSubcompactionJobInfo(
99
107
  SubcompactionJobInfo& subcompaction_job_info) const {
100
108
  const Compaction* c = compaction;
@@ -162,7 +170,7 @@ class SubcompactionState {
162
170
  }
163
171
  }
164
172
 
165
- void Cleanup(Cache* cache);
173
+ void Cleanup(Cache* cache, const Status& overall_status);
166
174
 
167
175
  void AggregateCompactionOutputStats(
168
176
  InternalStats::CompactionStatsFull& internal_stats) const;
@@ -1717,8 +1717,8 @@ TEST_P(PrecludeLastLevelTest, MigrationFromPreserveTimePartial) {
1717
1717
  ASSERT_EQ("0,0,0,0,0,0,1", FilesPerLevel());
1718
1718
 
1719
1719
  std::vector<KeyVersion> key_versions;
1720
- ASSERT_OK(GetAllKeyVersions(db_, {}, {}, std::numeric_limits<size_t>::max(),
1721
- &key_versions));
1720
+ ASSERT_OK(GetAllKeyVersions(
1721
+ db_.get(), {}, {}, std::numeric_limits<size_t>::max(), &key_versions));
1722
1722
 
1723
1723
  // make sure there're more than 300 keys and first 100 keys are having seqno
1724
1724
  // zeroed out, the last 100 key seqno not zeroed out
@@ -2319,8 +2319,8 @@ TEST_P(PrecludeLastLevelTest, LastLevelOnlyCompactionPartial) {
2319
2319
  ASSERT_GT(GetSstSizeHelper(Temperature::kUnknown), 0);
2320
2320
 
2321
2321
  std::vector<KeyVersion> key_versions;
2322
- ASSERT_OK(GetAllKeyVersions(db_, {}, {}, std::numeric_limits<size_t>::max(),
2323
- &key_versions));
2322
+ ASSERT_OK(GetAllKeyVersions(
2323
+ db_.get(), {}, {}, std::numeric_limits<size_t>::max(), &key_versions));
2324
2324
 
2325
2325
  // make sure there're more than 300 keys and first 100 keys are having seqno
2326
2326
  // zeroed out, the last 100 key seqno not zeroed out
@@ -258,12 +258,12 @@ class ComparatorDBTest
258
258
  private:
259
259
  std::string dbname_;
260
260
  Env* env_;
261
- DB* db_;
261
+ std::unique_ptr<DB> db_;
262
262
  Options last_options_;
263
263
  std::unique_ptr<const Comparator> comparator_guard;
264
264
 
265
265
  public:
266
- ComparatorDBTest() : env_(Env::Default()), db_(nullptr) {
266
+ ComparatorDBTest() : env_(Env::Default()) {
267
267
  kTestComparator = BytewiseComparator();
268
268
  dbname_ = test::PerThreadDBPath("comparator_db_test");
269
269
  BlockBasedTableOptions toptions;
@@ -274,12 +274,12 @@ class ComparatorDBTest
274
274
  }
275
275
 
276
276
  ~ComparatorDBTest() override {
277
- delete db_;
277
+ db_.reset();
278
278
  EXPECT_OK(DestroyDB(dbname_, last_options_));
279
279
  kTestComparator = BytewiseComparator();
280
280
  }
281
281
 
282
- DB* GetDB() { return db_; }
282
+ DB* GetDB() { return db_.get(); }
283
283
 
284
284
  void SetOwnedComparator(const Comparator* cmp, bool owner = true) {
285
285
  if (owner) {
@@ -301,14 +301,12 @@ class ComparatorDBTest
301
301
  }
302
302
 
303
303
  void Destroy() {
304
- delete db_;
305
- db_ = nullptr;
304
+ db_.reset();
306
305
  ASSERT_OK(DestroyDB(dbname_, last_options_));
307
306
  }
308
307
 
309
308
  Status TryReopen() {
310
- delete db_;
311
- db_ = nullptr;
309
+ db_.reset();
312
310
  last_options_.create_if_missing = true;
313
311
 
314
312
  return DB::Open(last_options_, dbname_, &db_);
@@ -318,7 +316,7 @@ class ComparatorDBTest
318
316
  INSTANTIATE_TEST_CASE_P(FormatDef, ComparatorDBTest,
319
317
  testing::Values(test::kDefaultFormatVersion));
320
318
  INSTANTIATE_TEST_CASE_P(FormatLatest, ComparatorDBTest,
321
- testing::Values(kLatestFormatVersion));
319
+ testing::Values(kLatestBbtFormatVersion));
322
320
 
323
321
  TEST_P(ComparatorDBTest, Bytewise) {
324
322
  for (int rand_seed = 301; rand_seed < 306; rand_seed++) {
@@ -65,7 +65,7 @@ Status VerifySstFileChecksum(const Options& options,
65
65
  }
66
66
 
67
67
  Status VerifySstFileChecksumInternal(const Options& options,
68
- const EnvOptions& env_options,
68
+ const FileOptions& file_options,
69
69
  const ReadOptions& read_options,
70
70
  const std::string& file_path,
71
71
  const SequenceNumber& largest_seqno) {
@@ -74,8 +74,8 @@ Status VerifySstFileChecksumInternal(const Options& options,
74
74
  InternalKeyComparator internal_comparator(options.comparator);
75
75
  ImmutableOptions ioptions(options);
76
76
 
77
- Status s = ioptions.fs->NewRandomAccessFile(
78
- file_path, FileOptions(env_options), &file, nullptr);
77
+ Status s =
78
+ ioptions.fs->NewRandomAccessFile(file_path, file_options, &file, nullptr);
79
79
  if (s.ok()) {
80
80
  s = ioptions.fs->GetFileSize(file_path, IOOptions(), &file_size, nullptr);
81
81
  } else {
@@ -94,7 +94,7 @@ Status VerifySstFileChecksumInternal(const Options& options,
94
94
  const bool kImmortal = true;
95
95
  auto reader_options = TableReaderOptions(
96
96
  ioptions, options.prefix_extractor, options.compression_manager.get(),
97
- env_options, internal_comparator, options.block_protection_bytes_per_key,
97
+ file_options, internal_comparator, options.block_protection_bytes_per_key,
98
98
  false /* skip_filters */, !kImmortal, false /* force_direct_prefetch */,
99
99
  -1 /* level */);
100
100
  reader_options.largest_seqno = largest_seqno;
@@ -5,10 +5,11 @@
5
5
 
6
6
  #pragma once
7
7
  #include "rocksdb/db.h"
8
+ #include "rocksdb/file_system.h"
8
9
 
9
10
  namespace ROCKSDB_NAMESPACE {
10
11
  Status VerifySstFileChecksumInternal(const Options& options,
11
- const EnvOptions& env_options,
12
+ const FileOptions& file_options,
12
13
  const ReadOptions& read_options,
13
14
  const std::string& file_path,
14
15
  const SequenceNumber& largest_seqno = 0);
@@ -73,7 +73,7 @@ class CorruptionTest : public testing::Test {
73
73
  std::string dbname_;
74
74
  std::shared_ptr<Cache> tiny_cache_;
75
75
  Options options_;
76
- DB* db_;
76
+ std::unique_ptr<DB> db_;
77
77
 
78
78
  CorruptionTest() {
79
79
  // If LRU cache shard bit is smaller than 2 (or -1 which will automatically
@@ -105,8 +105,7 @@ class CorruptionTest : public testing::Test {
105
105
  SyncPoint::GetInstance()->DisableProcessing();
106
106
  SyncPoint::GetInstance()->LoadDependency({});
107
107
  SyncPoint::GetInstance()->ClearAllCallBacks();
108
- delete db_;
109
- db_ = nullptr;
108
+ db_.reset();
110
109
  if (getenv("KEEP_DB")) {
111
110
  fprintf(stdout, "db is still at %s\n", dbname_.c_str());
112
111
  } else {
@@ -116,14 +115,12 @@ class CorruptionTest : public testing::Test {
116
115
  }
117
116
  }
118
117
 
119
- void CloseDb() {
120
- delete db_;
121
- db_ = nullptr;
122
- }
118
+ void CloseDb() { db_.reset(); }
119
+
120
+ DBImpl* dbfull() { return static_cast_with_check<DBImpl>(db_.get()); }
123
121
 
124
122
  Status TryReopen(Options* options = nullptr) {
125
- delete db_;
126
- db_ = nullptr;
123
+ db_.reset();
127
124
  Options opt = (options ? *options : options_);
128
125
  if (opt.env == Options().env) {
129
126
  // If env is not overridden, replace it with ErrorEnv.
@@ -141,8 +138,7 @@ class CorruptionTest : public testing::Test {
141
138
  void Reopen(Options* options = nullptr) { ASSERT_OK(TryReopen(options)); }
142
139
 
143
140
  void RepairDB() {
144
- delete db_;
145
- db_ = nullptr;
141
+ db_.reset();
146
142
  ASSERT_OK(::ROCKSDB_NAMESPACE::RepairDB(dbname_, options_));
147
143
  }
148
144
 
@@ -151,8 +147,7 @@ class CorruptionTest : public testing::Test {
151
147
  WriteBatch batch;
152
148
  for (int i = 0; i < n; i++) {
153
149
  if (flush_every != 0 && i != 0 && i % flush_every == 0) {
154
- DBImpl* dbi = static_cast_with_check<DBImpl>(db_);
155
- ASSERT_OK(dbi->TEST_FlushMemTable());
150
+ ASSERT_OK(dbfull()->TEST_FlushMemTable());
156
151
  }
157
152
  // if ((i % 100) == 0) fprintf(stderr, "@ %d of %d\n", i, n);
158
153
  Slice key = Key(i + start, &key_space);
@@ -436,14 +431,14 @@ TEST_F(CorruptionTest, NewFileErrorDuringWrite) {
436
431
 
437
432
  TEST_F(CorruptionTest, TableFile) {
438
433
  Build(100);
439
- DBImpl* dbi = static_cast_with_check<DBImpl>(db_);
434
+ DBImpl* dbi = dbfull();
440
435
  ASSERT_OK(dbi->TEST_FlushMemTable());
441
436
  ASSERT_OK(dbi->TEST_CompactRange(0, nullptr, nullptr));
442
437
  ASSERT_OK(dbi->TEST_CompactRange(1, nullptr, nullptr));
443
438
 
444
439
  Corrupt(kTableFile, 100, 1);
445
440
  Check(99, 99);
446
- ASSERT_NOK(dbi->VerifyChecksum());
441
+ ASSERT_NOK(db_->VerifyChecksum());
447
442
  }
448
443
 
449
444
  TEST_F(CorruptionTest, VerifyChecksumReadahead) {
@@ -460,14 +455,14 @@ TEST_F(CorruptionTest, VerifyChecksumReadahead) {
460
455
  Reopen(&options);
461
456
 
462
457
  Build(10000);
463
- DBImpl* dbi = static_cast_with_check<DBImpl>(db_);
458
+ DBImpl* dbi = dbfull();
464
459
  ASSERT_OK(dbi->TEST_FlushMemTable());
465
460
  ASSERT_OK(dbi->TEST_CompactRange(0, nullptr, nullptr));
466
461
  ASSERT_OK(dbi->TEST_CompactRange(1, nullptr, nullptr));
467
462
 
468
463
  senv.count_random_reads_ = true;
469
464
  senv.random_read_counter_.Reset();
470
- ASSERT_OK(dbi->VerifyChecksum());
465
+ ASSERT_OK(db_->VerifyChecksum());
471
466
 
472
467
  // Make sure the counter is enabled.
473
468
  ASSERT_GT(senv.random_read_counter_.Read(), 0);
@@ -480,7 +475,7 @@ TEST_F(CorruptionTest, VerifyChecksumReadahead) {
480
475
  senv.random_read_bytes_counter_ = 0;
481
476
  ReadOptions ro;
482
477
  ro.readahead_size = size_t{32 * 1024};
483
- ASSERT_OK(dbi->VerifyChecksum(ro));
478
+ ASSERT_OK(db_->VerifyChecksum(ro));
484
479
  // The SST file is about 10MB. We set readahead size to 32KB.
485
480
  // Give 0 to 20 reads for metadata blocks, and allow real read
486
481
  // to range from 24KB to 48KB. The lower bound would be:
@@ -494,8 +489,7 @@ TEST_F(CorruptionTest, VerifyChecksumReadahead) {
494
489
  // disabled).
495
490
  options.allow_mmap_reads = true;
496
491
  Reopen(&options);
497
- dbi = static_cast<DBImpl*>(db_);
498
- ASSERT_OK(dbi->VerifyChecksum(ro));
492
+ ASSERT_OK(db_->VerifyChecksum(ro));
499
493
 
500
494
  CloseDb();
501
495
  }
@@ -508,18 +502,16 @@ TEST_F(CorruptionTest, TableFileIndexData) {
508
502
  Reopen(&options);
509
503
  // build 2 tables, flush at 5000
510
504
  Build(10000, 5000);
511
- DBImpl* dbi = static_cast_with_check<DBImpl>(db_);
512
- ASSERT_OK(dbi->TEST_FlushMemTable());
505
+ ASSERT_OK(dbfull()->TEST_FlushMemTable());
513
506
 
514
507
  // corrupt an index block of an entire file
515
508
  Corrupt(kTableFile, -2000, 500);
516
509
  options.paranoid_checks = false;
517
510
  Reopen(&options);
518
- dbi = static_cast_with_check<DBImpl>(db_);
519
511
  // one full file may be readable, since only one was corrupted
520
512
  // the other file should be fully non-readable, since index was corrupted
521
513
  Check(0, 5000, ReadOptions(true, true));
522
- ASSERT_NOK(dbi->VerifyChecksum());
514
+ ASSERT_NOK(db_->VerifyChecksum());
523
515
 
524
516
  // In paranoid mode, the db cannot be opened due to the corrupted file.
525
517
  ASSERT_TRUE(TryReopen().IsCorruption());
@@ -527,8 +519,7 @@ TEST_F(CorruptionTest, TableFileIndexData) {
527
519
 
528
520
  TEST_F(CorruptionTest, TableFileFooterMagic) {
529
521
  Build(100);
530
- DBImpl* dbi = static_cast_with_check<DBImpl>(db_);
531
- ASSERT_OK(dbi->TEST_FlushMemTable());
522
+ ASSERT_OK(dbfull()->TEST_FlushMemTable());
532
523
  Check(100, 100);
533
524
  // Corrupt the whole footer
534
525
  Corrupt(kTableFile, -100, 100);
@@ -543,8 +534,7 @@ TEST_F(CorruptionTest, TableFileFooterMagic) {
543
534
 
544
535
  TEST_F(CorruptionTest, TableFileFooterNotMagic) {
545
536
  Build(100);
546
- DBImpl* dbi = static_cast_with_check<DBImpl>(db_);
547
- ASSERT_OK(dbi->TEST_FlushMemTable());
537
+ ASSERT_OK(dbfull()->TEST_FlushMemTable());
548
538
  Check(100, 100);
549
539
  // Corrupt footer except magic number
550
540
  Corrupt(kTableFile, -100, 92);
@@ -579,8 +569,7 @@ TEST_F(CorruptionTest, DBOpenWithWrongFileSize) {
579
569
  for (auto* cfh : cfhs) {
580
570
  delete cfh;
581
571
  }
582
- DBImpl* dbi = static_cast_with_check<DBImpl>(db_);
583
- ASSERT_OK(dbi->TEST_FlushMemTable());
572
+ ASSERT_OK(dbfull()->TEST_FlushMemTable());
584
573
 
585
574
  // ********************************************
586
575
  // Corrupt the file by making the file bigger
@@ -601,7 +590,8 @@ TEST_F(CorruptionTest, DBOpenWithWrongFileSize) {
601
590
  // true
602
591
  options_.paranoid_checks = true;
603
592
  std::vector<ColumnFamilyHandle*> cfhs;
604
- auto s = DB::Open(options_, dbname_, cf_descs, &cfhs, &db_);
593
+ Status s;
594
+ s = DB::Open(options_, dbname_, cf_descs, &cfhs, &db_);
605
595
  ASSERT_TRUE(s.IsCorruption());
606
596
  ASSERT_TRUE(s.ToString().find("file size mismatch") != std::string::npos);
607
597
 
@@ -626,8 +616,7 @@ TEST_F(CorruptionTest, DBOpenWithWrongFileSize) {
626
616
 
627
617
  TEST_F(CorruptionTest, TableFileWrongSize) {
628
618
  Build(100);
629
- DBImpl* dbi = static_cast_with_check<DBImpl>(db_);
630
- ASSERT_OK(dbi->TEST_FlushMemTable());
619
+ ASSERT_OK(dbfull()->TEST_FlushMemTable());
631
620
  Check(100, 100);
632
621
 
633
622
  // ********************************************
@@ -710,12 +699,11 @@ TEST_F(CorruptionTest, SequenceNumberRecovery) {
710
699
 
711
700
  TEST_F(CorruptionTest, CorruptedDescriptor) {
712
701
  ASSERT_OK(db_->Put(WriteOptions(), "foo", "hello"));
713
- DBImpl* dbi = static_cast_with_check<DBImpl>(db_);
714
- ASSERT_OK(dbi->TEST_FlushMemTable());
702
+ ASSERT_OK(dbfull()->TEST_FlushMemTable());
715
703
  CompactRangeOptions cro;
716
704
  cro.bottommost_level_compaction = BottommostLevelCompaction::kForce;
717
705
  ASSERT_OK(
718
- dbi->CompactRange(cro, dbi->DefaultColumnFamily(), nullptr, nullptr));
706
+ db_->CompactRange(cro, db_->DefaultColumnFamily(), nullptr, nullptr));
719
707
 
720
708
  Corrupt(kDescriptorFile, 0, 1000);
721
709
  Status s = TryReopen();
@@ -734,7 +722,7 @@ TEST_F(CorruptionTest, CompactionInputError) {
734
722
  options.env = env_.get();
735
723
  Reopen(&options);
736
724
  Build(10);
737
- DBImpl* dbi = static_cast_with_check<DBImpl>(db_);
725
+ DBImpl* dbi = dbfull();
738
726
  ASSERT_OK(dbi->TEST_FlushMemTable());
739
727
  ASSERT_OK(dbi->TEST_CompactRange(0, nullptr, nullptr));
740
728
  ASSERT_OK(dbi->TEST_CompactRange(1, nullptr, nullptr));
@@ -742,12 +730,12 @@ TEST_F(CorruptionTest, CompactionInputError) {
742
730
 
743
731
  Corrupt(kTableFile, 100, 1);
744
732
  Check(9, 9);
745
- ASSERT_NOK(dbi->VerifyChecksum());
733
+ ASSERT_NOK(db_->VerifyChecksum());
746
734
 
747
735
  // Force compactions by writing lots of values
748
736
  Build(10000);
749
737
  Check(10000, 10000);
750
- ASSERT_NOK(dbi->VerifyChecksum());
738
+ ASSERT_NOK(db_->VerifyChecksum());
751
739
  }
752
740
 
753
741
  TEST_F(CorruptionTest, CompactionInputErrorParanoid) {
@@ -758,14 +746,14 @@ TEST_F(CorruptionTest, CompactionInputErrorParanoid) {
758
746
  options.write_buffer_size = 131072;
759
747
  options.max_write_buffer_number = 2;
760
748
  Reopen(&options);
761
- DBImpl* dbi = static_cast_with_check<DBImpl>(db_);
749
+ DBImpl* dbi = dbfull();
762
750
 
763
751
  // Fill levels >= 1
764
- for (int level = 1; level < dbi->NumberLevels(); level++) {
765
- ASSERT_OK(dbi->Put(WriteOptions(), "", "begin"));
766
- ASSERT_OK(dbi->Put(WriteOptions(), "~", "end"));
752
+ for (int level = 1; level < db_->NumberLevels(); level++) {
753
+ ASSERT_OK(db_->Put(WriteOptions(), "", "begin"));
754
+ ASSERT_OK(db_->Put(WriteOptions(), "~", "end"));
767
755
  ASSERT_OK(dbi->TEST_FlushMemTable());
768
- for (int comp_level = 0; comp_level < dbi->NumberLevels() - level;
756
+ for (int comp_level = 0; comp_level < db_->NumberLevels() - level;
769
757
  ++comp_level) {
770
758
  ASSERT_OK(dbi->TEST_CompactRange(comp_level, nullptr, nullptr));
771
759
  }
@@ -773,7 +761,7 @@ TEST_F(CorruptionTest, CompactionInputErrorParanoid) {
773
761
 
774
762
  Reopen(&options);
775
763
 
776
- dbi = static_cast_with_check<DBImpl>(db_);
764
+ dbi = dbfull();
777
765
  Build(10);
778
766
  ASSERT_OK(dbi->TEST_FlushMemTable());
779
767
  ASSERT_OK(dbi->TEST_WaitForCompact());
@@ -781,7 +769,7 @@ TEST_F(CorruptionTest, CompactionInputErrorParanoid) {
781
769
 
782
770
  CorruptTableFileAtLevel(0, 100, 1);
783
771
  Check(9, 9);
784
- ASSERT_NOK(dbi->VerifyChecksum());
772
+ ASSERT_NOK(db_->VerifyChecksum());
785
773
 
786
774
  // Write must eventually fail because of corrupted table
787
775
  Status s;
@@ -800,17 +788,16 @@ TEST_F(CorruptionTest, CompactionInputErrorParanoid) {
800
788
 
801
789
  TEST_F(CorruptionTest, UnrelatedKeys) {
802
790
  Build(10);
803
- DBImpl* dbi = static_cast_with_check<DBImpl>(db_);
804
- ASSERT_OK(dbi->TEST_FlushMemTable());
791
+ ASSERT_OK(dbfull()->TEST_FlushMemTable());
805
792
  Corrupt(kTableFile, 100, 1);
806
- ASSERT_NOK(dbi->VerifyChecksum());
793
+ ASSERT_NOK(db_->VerifyChecksum());
807
794
 
808
795
  std::string tmp1, tmp2;
809
796
  ASSERT_OK(db_->Put(WriteOptions(), Key(1000, &tmp1), Value(1000, &tmp2)));
810
797
  std::string v;
811
798
  ASSERT_OK(db_->Get(ReadOptions(), Key(1000, &tmp1), &v));
812
799
  ASSERT_EQ(Value(1000, &tmp2).ToString(), v);
813
- ASSERT_OK(dbi->TEST_FlushMemTable());
800
+ ASSERT_OK(dbfull()->TEST_FlushMemTable());
814
801
  ASSERT_OK(db_->Get(ReadOptions(), Key(1000, &tmp1), &v));
815
802
  ASSERT_EQ(Value(1000, &tmp2).ToString(), v);
816
803
  }
@@ -857,14 +844,12 @@ TEST_F(CorruptionTest, FileSystemStateCorrupted) {
857
844
  Reopen(&options);
858
845
  Build(10);
859
846
  ASSERT_OK(db_->Flush(FlushOptions()));
860
- DBImpl* dbi = static_cast_with_check<DBImpl>(db_);
861
847
  std::vector<LiveFileMetaData> metadata;
862
- dbi->GetLiveFilesMetaData(&metadata);
848
+ db_->GetLiveFilesMetaData(&metadata);
863
849
  ASSERT_GT(metadata.size(), 0);
864
850
  std::string filename = dbname_ + metadata[0].name;
865
851
 
866
- delete db_;
867
- db_ = nullptr;
852
+ db_.reset();
868
853
 
869
854
  if (iter == 0) { // corrupt file size
870
855
  std::unique_ptr<WritableFile> file;
@@ -896,8 +881,7 @@ TEST_F(CorruptionTest, ParanoidFileChecksOnFlush) {
896
881
  options.create_if_missing = true;
897
882
  Status s;
898
883
  for (const auto& mode : corruption_modes) {
899
- delete db_;
900
- db_ = nullptr;
884
+ db_.reset();
901
885
  s = DestroyDB(dbname_, options);
902
886
  ASSERT_OK(s);
903
887
  std::shared_ptr<mock::MockTableFactory> mock =
@@ -924,8 +908,7 @@ TEST_F(CorruptionTest, ParanoidFileChecksOnCompact) {
924
908
  options.create_if_missing = true;
925
909
  Status s;
926
910
  for (const auto& mode : corruption_modes) {
927
- delete db_;
928
- db_ = nullptr;
911
+ db_.reset();
929
912
  s = DestroyDB(dbname_, options);
930
913
  ASSERT_OK(s);
931
914
  std::shared_ptr<mock::MockTableFactory> mock =
@@ -934,12 +917,11 @@ TEST_F(CorruptionTest, ParanoidFileChecksOnCompact) {
934
917
  ASSERT_OK(DB::Open(options, dbname_, &db_));
935
918
  assert(db_ != nullptr); // suppress false clang-analyze report
936
919
  Build(100, 2);
937
- DBImpl* dbi = static_cast_with_check<DBImpl>(db_);
938
- ASSERT_OK(dbi->TEST_FlushMemTable());
920
+ ASSERT_OK(dbfull()->TEST_FlushMemTable());
939
921
  mock->SetCorruptionMode(mode);
940
922
  CompactRangeOptions cro;
941
923
  cro.bottommost_level_compaction = BottommostLevelCompaction::kForce;
942
- s = dbi->CompactRange(cro, dbi->DefaultColumnFamily(), nullptr, nullptr);
924
+ s = db_->CompactRange(cro, db_->DefaultColumnFamily(), nullptr, nullptr);
943
925
  if (mode == mock::MockTableFactory::kCorruptNone) {
944
926
  ASSERT_OK(s);
945
927
  } else {
@@ -955,8 +937,7 @@ TEST_F(CorruptionTest, ParanoidFileChecksWithDeleteRangeFirst) {
955
937
  options.paranoid_file_checks = true;
956
938
  options.create_if_missing = true;
957
939
  for (bool do_flush : {true, false}) {
958
- delete db_;
959
- db_ = nullptr;
940
+ db_.reset();
960
941
  ASSERT_OK(DestroyDB(dbname_, options));
961
942
  ASSERT_OK(DB::Open(options, dbname_, &db_));
962
943
  std::string start, end;
@@ -973,12 +954,11 @@ TEST_F(CorruptionTest, ParanoidFileChecksWithDeleteRangeFirst) {
973
954
  if (do_flush) {
974
955
  ASSERT_OK(db_->Flush(FlushOptions()));
975
956
  } else {
976
- DBImpl* dbi = static_cast_with_check<DBImpl>(db_);
977
- ASSERT_OK(dbi->TEST_FlushMemTable());
957
+ ASSERT_OK(dbfull()->TEST_FlushMemTable());
978
958
  CompactRangeOptions cro;
979
959
  cro.bottommost_level_compaction = BottommostLevelCompaction::kForce;
980
960
  ASSERT_OK(
981
- dbi->CompactRange(cro, dbi->DefaultColumnFamily(), nullptr, nullptr));
961
+ db_->CompactRange(cro, db_->DefaultColumnFamily(), nullptr, nullptr));
982
962
  }
983
963
  db_->ReleaseSnapshot(snap);
984
964
  }
@@ -991,8 +971,7 @@ TEST_F(CorruptionTest, ParanoidFileChecksWithDeleteRange) {
991
971
  options.paranoid_file_checks = true;
992
972
  options.create_if_missing = true;
993
973
  for (bool do_flush : {true, false}) {
994
- delete db_;
995
- db_ = nullptr;
974
+ db_.reset();
996
975
  ASSERT_OK(DestroyDB(dbname_, options));
997
976
  ASSERT_OK(DB::Open(options, dbname_, &db_));
998
977
  assert(db_ != nullptr); // suppress false clang-analyze report
@@ -1012,12 +991,11 @@ TEST_F(CorruptionTest, ParanoidFileChecksWithDeleteRange) {
1012
991
  if (do_flush) {
1013
992
  ASSERT_OK(db_->Flush(FlushOptions()));
1014
993
  } else {
1015
- DBImpl* dbi = static_cast_with_check<DBImpl>(db_);
1016
- ASSERT_OK(dbi->TEST_FlushMemTable());
994
+ ASSERT_OK(dbfull()->TEST_FlushMemTable());
1017
995
  CompactRangeOptions cro;
1018
996
  cro.bottommost_level_compaction = BottommostLevelCompaction::kForce;
1019
997
  ASSERT_OK(
1020
- dbi->CompactRange(cro, dbi->DefaultColumnFamily(), nullptr, nullptr));
998
+ db_->CompactRange(cro, db_->DefaultColumnFamily(), nullptr, nullptr));
1021
999
  }
1022
1000
  db_->ReleaseSnapshot(snap);
1023
1001
  }
@@ -1030,8 +1008,7 @@ TEST_F(CorruptionTest, ParanoidFileChecksWithDeleteRangeLast) {
1030
1008
  options.paranoid_file_checks = true;
1031
1009
  options.create_if_missing = true;
1032
1010
  for (bool do_flush : {true, false}) {
1033
- delete db_;
1034
- db_ = nullptr;
1011
+ db_.reset();
1035
1012
  ASSERT_OK(DestroyDB(dbname_, options));
1036
1013
  ASSERT_OK(DB::Open(options, dbname_, &db_));
1037
1014
  assert(db_ != nullptr); // suppress false clang-analyze report
@@ -1048,12 +1025,11 @@ TEST_F(CorruptionTest, ParanoidFileChecksWithDeleteRangeLast) {
1048
1025
  if (do_flush) {
1049
1026
  ASSERT_OK(db_->Flush(FlushOptions()));
1050
1027
  } else {
1051
- DBImpl* dbi = static_cast_with_check<DBImpl>(db_);
1052
- ASSERT_OK(dbi->TEST_FlushMemTable());
1028
+ ASSERT_OK(dbfull()->TEST_FlushMemTable());
1053
1029
  CompactRangeOptions cro;
1054
1030
  cro.bottommost_level_compaction = BottommostLevelCompaction::kForce;
1055
1031
  ASSERT_OK(
1056
- dbi->CompactRange(cro, dbi->DefaultColumnFamily(), nullptr, nullptr));
1032
+ db_->CompactRange(cro, db_->DefaultColumnFamily(), nullptr, nullptr));
1057
1033
  }
1058
1034
  db_->ReleaseSnapshot(snap);
1059
1035
  }
@@ -1066,8 +1042,7 @@ TEST_F(CorruptionTest, LogCorruptionErrorsInCompactionIterator) {
1066
1042
  options.create_if_missing = true;
1067
1043
  options.allow_data_in_errors = true;
1068
1044
  auto mode = mock::MockTableFactory::kCorruptKey;
1069
- delete db_;
1070
- db_ = nullptr;
1045
+ db_.reset();
1071
1046
  ASSERT_OK(DestroyDB(dbname_, options));
1072
1047
 
1073
1048
  std::shared_ptr<mock::MockTableFactory> mock =
@@ -1079,12 +1054,11 @@ TEST_F(CorruptionTest, LogCorruptionErrorsInCompactionIterator) {
1079
1054
  assert(db_ != nullptr); // suppress false clang-analyze report
1080
1055
  Build(100, 2);
1081
1056
 
1082
- DBImpl* dbi = static_cast_with_check<DBImpl>(db_);
1083
- ASSERT_OK(dbi->TEST_FlushMemTable());
1057
+ ASSERT_OK(dbfull()->TEST_FlushMemTable());
1084
1058
  CompactRangeOptions cro;
1085
1059
  cro.bottommost_level_compaction = BottommostLevelCompaction::kForce;
1086
1060
  Status s =
1087
- dbi->CompactRange(cro, dbi->DefaultColumnFamily(), nullptr, nullptr);
1061
+ db_->CompactRange(cro, db_->DefaultColumnFamily(), nullptr, nullptr);
1088
1062
  ASSERT_NOK(s);
1089
1063
  ASSERT_TRUE(s.IsCorruption());
1090
1064
  }
@@ -1095,8 +1069,7 @@ TEST_F(CorruptionTest, CompactionKeyOrderCheck) {
1095
1069
  options.env = env_.get();
1096
1070
  options.paranoid_file_checks = false;
1097
1071
  options.create_if_missing = true;
1098
- delete db_;
1099
- db_ = nullptr;
1072
+ db_.reset();
1100
1073
  ASSERT_OK(DestroyDB(dbname_, options));
1101
1074
  std::shared_ptr<mock::MockTableFactory> mock =
1102
1075
  std::make_shared<mock::MockTableFactory>();
@@ -1105,14 +1078,13 @@ TEST_F(CorruptionTest, CompactionKeyOrderCheck) {
1105
1078
  assert(db_ != nullptr); // suppress false clang-analyze report
1106
1079
  mock->SetCorruptionMode(mock::MockTableFactory::kCorruptReorderKey);
1107
1080
  Build(100, 2);
1108
- DBImpl* dbi = static_cast_with_check<DBImpl>(db_);
1109
- ASSERT_OK(dbi->TEST_FlushMemTable());
1081
+ ASSERT_OK(dbfull()->TEST_FlushMemTable());
1110
1082
 
1111
1083
  mock->SetCorruptionMode(mock::MockTableFactory::kCorruptNone);
1112
1084
  CompactRangeOptions cro;
1113
1085
  cro.bottommost_level_compaction = BottommostLevelCompaction::kForce;
1114
1086
  ASSERT_NOK(
1115
- dbi->CompactRange(cro, dbi->DefaultColumnFamily(), nullptr, nullptr));
1087
+ db_->CompactRange(cro, db_->DefaultColumnFamily(), nullptr, nullptr));
1116
1088
  }
1117
1089
 
1118
1090
  TEST_F(CorruptionTest, FlushKeyOrderCheck) {
@@ -1139,7 +1111,7 @@ TEST_F(CorruptionTest, FlushKeyOrderCheck) {
1139
1111
  }
1140
1112
  });
1141
1113
  ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->EnableProcessing();
1142
- Status s = static_cast_with_check<DBImpl>(db_)->TEST_FlushMemTable();
1114
+ Status s = dbfull()->TEST_FlushMemTable();
1143
1115
  ASSERT_NOK(s);
1144
1116
  ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->DisableProcessing();
1145
1117
  ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->ClearAllCallBacks();
@@ -1263,7 +1235,7 @@ TEST_P(CrashDuringRecoveryWithCorruptionTest, CrashDuringRecovery) {
1263
1235
  // while other don't.
1264
1236
  {
1265
1237
  ASSERT_OK(DB::Open(options, dbname_, cf_descs, &handles, &db_));
1266
- auto* dbimpl = static_cast_with_check<DBImpl>(db_);
1238
+ auto* dbimpl = dbfull();
1267
1239
  assert(dbimpl);
1268
1240
 
1269
1241
  // Write one key to test_cf.