@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
@@ -758,8 +758,8 @@ class BackupEngineTest : public testing::Test {
758
758
  ASSERT_OK(CreateLoggerFromOptions(dbname_, logger_options, &logger_));
759
759
  }
760
760
 
761
- DB* OpenDB() {
762
- DB* db;
761
+ std::unique_ptr<DB> OpenDB() {
762
+ std::unique_ptr<DB> db;
763
763
  EXPECT_OK(DB::Open(options_, dbname_, &db));
764
764
  return db;
765
765
  }
@@ -770,13 +770,11 @@ class BackupEngineTest : public testing::Test {
770
770
 
771
771
  // Open DB
772
772
  test_db_fs_->SetLimitWrittenFiles(1000000);
773
- DB* db;
774
773
  if (read_only) {
775
- ASSERT_OK(DB::OpenForReadOnly(options_, dbname_, &db));
774
+ ASSERT_OK(DB::OpenForReadOnly(options_, dbname_, &db_));
776
775
  } else {
777
- ASSERT_OK(DB::Open(options_, dbname_, &db));
776
+ ASSERT_OK(DB::Open(options_, dbname_, &db_));
778
777
  }
779
- db_.reset(db);
780
778
  }
781
779
 
782
780
  void InitializeDBAndBackupEngine(bool dummy = false) {
@@ -784,14 +782,12 @@ class BackupEngineTest : public testing::Test {
784
782
  test_db_fs_->SetLimitWrittenFiles(1000000);
785
783
  test_db_fs_->SetDummySequentialFile(dummy);
786
784
 
787
- DB* db;
788
785
  if (dummy) {
789
786
  dummy_db_ = new DummyDB(options_, dbname_);
790
- db = dummy_db_;
787
+ db_.reset(dummy_db_);
791
788
  } else {
792
- ASSERT_OK(DB::Open(options_, dbname_, &db));
789
+ ASSERT_OK(DB::Open(options_, dbname_, &db_));
793
790
  }
794
- db_.reset(db);
795
791
  }
796
792
 
797
793
  virtual void OpenDBAndBackupEngine(
@@ -914,13 +910,13 @@ class BackupEngineTest : public testing::Test {
914
910
  ASSERT_OK(backup_engine_->RestoreDBFromLatestBackup(dbname_, dbname_,
915
911
  restore_options));
916
912
  }
917
- DB* db = OpenDB();
913
+ auto db = OpenDB();
918
914
  // Check DB contents
919
- AssertExists(db, start_exist, end_exist);
915
+ AssertExists(db.get(), start_exist, end_exist);
920
916
  if (end != 0) {
921
- AssertEmpty(db, end_exist, end);
917
+ AssertEmpty(db.get(), end_exist, end);
922
918
  }
923
- delete db;
919
+ db.reset();
924
920
  if (opened_backup_engine) {
925
921
  CloseBackupEngine();
926
922
  }
@@ -1063,6 +1059,7 @@ class BackupEngineTest : public testing::Test {
1063
1059
  // all the dbs!
1064
1060
  DummyDB* dummy_db_; // owned as db_ when present
1065
1061
  std::unique_ptr<DB> db_;
1062
+ DBImpl* dbfull() { return static_cast_with_check<DBImpl>(db_.get()); }
1066
1063
  std::unique_ptr<BackupEngine> backup_engine_;
1067
1064
 
1068
1065
  // options
@@ -1203,7 +1200,7 @@ TEST_F(BackupEngineTest, IncrementalRestore) {
1203
1200
  // Since we started with a blank db, restore copied all the files.
1204
1201
  test_db_fs_->AssertWrittenFiles(all_files);
1205
1202
 
1206
- db_.reset(OpenDB());
1203
+ db_ = OpenDB();
1207
1204
 
1208
1205
  // Check DB contents.
1209
1206
  AssertExists(db_.get(), 0, keys_iteration * 2);
@@ -1255,7 +1252,7 @@ TEST_F(BackupEngineTest, IncrementalRestore) {
1255
1252
  test_db_fs_->AssertWrittenFiles(should_have_written);
1256
1253
 
1257
1254
  // Check DB contents.
1258
- db_.reset(OpenDB());
1255
+ db_ = OpenDB();
1259
1256
  AssertExists(db_.get(), 0, keys_iteration * 2);
1260
1257
 
1261
1258
  db_.reset(); // Close DB.
@@ -1307,7 +1304,7 @@ TEST_F(BackupEngineTest, IncrementalRestore) {
1307
1304
  // 'Hole' has been patched, 'in-policy' db files were retained.
1308
1305
  test_db_fs_->AssertWrittenFiles(should_have_written);
1309
1306
 
1310
- db_.reset(OpenDB());
1307
+ db_ = OpenDB();
1311
1308
  Status s = db_->VerifyChecksum();
1312
1309
 
1313
1310
  // Check DB contents.
@@ -1424,9 +1421,9 @@ TEST_P(BackupEngineTestWithParam, OfflineIntegrationTest) {
1424
1421
  DestroyDBWithoutCheck(dbname_, options_);
1425
1422
 
1426
1423
  // ---- make sure it's empty ----
1427
- DB* db = OpenDB();
1428
- AssertEmpty(db, 0, fill_up_to);
1429
- delete db;
1424
+ auto db = OpenDB();
1425
+ AssertEmpty(db.get(), 0, fill_up_to);
1426
+ db.reset();
1430
1427
 
1431
1428
  // ---- restore the DB ----
1432
1429
  OpenBackupEngine();
@@ -1478,9 +1475,9 @@ TEST_P(BackupEngineTestWithParam, OnlineIntegrationTest) {
1478
1475
  DestroyDBWithoutCheck(dbname_, options_);
1479
1476
 
1480
1477
  // ---- make sure it's empty ----
1481
- DB* db = OpenDB();
1482
- AssertEmpty(db, 0, max_key);
1483
- delete db;
1478
+ auto db = OpenDB();
1479
+ AssertEmpty(db.get(), 0, max_key);
1480
+ db.reset();
1484
1481
 
1485
1482
  // ---- restore every backup and verify all the data is there ----
1486
1483
  OpenBackupEngine();
@@ -2091,10 +2088,9 @@ TEST_F(BackupEngineTest, FlushCompactDuringBackupCheckpoint) {
2091
2088
  "BackupEngineTest::FlushCompactDuringBackupCheckpoint:Before");
2092
2089
  FillDB(db_.get(), keys_iteration, 2 * keys_iteration);
2093
2090
  ASSERT_OK(db_->Flush(FlushOptions()));
2094
- DBImpl* dbi = static_cast<DBImpl*>(db_.get());
2095
- ASSERT_OK(dbi->TEST_WaitForFlushMemTable());
2091
+ ASSERT_OK(dbfull()->TEST_WaitForFlushMemTable());
2096
2092
  ASSERT_OK(db_->CompactRange(CompactRangeOptions(), nullptr, nullptr));
2097
- ASSERT_OK(dbi->TEST_WaitForCompact());
2093
+ ASSERT_OK(dbfull()->TEST_WaitForCompact());
2098
2094
  TEST_SYNC_POINT(
2099
2095
  "BackupEngineTest::FlushCompactDuringBackupCheckpoint:After");
2100
2096
  }};
@@ -2141,7 +2137,7 @@ TEST_F(BackupEngineTest, BackupOptions) {
2141
2137
  // Must reset() before reset(OpenDB()) again.
2142
2138
  // Calling OpenDB() while *db_ is existing will cause LOCK issue
2143
2139
  db_.reset();
2144
- db_.reset(OpenDB());
2140
+ db_ = OpenDB();
2145
2141
  ASSERT_OK(backup_engine_->CreateNewBackup(db_.get(), true));
2146
2142
  ASSERT_OK(ROCKSDB_NAMESPACE::GetLatestOptionsFileName(db_->GetName(),
2147
2143
  options_.env, &name));
@@ -2169,13 +2165,12 @@ TEST_F(BackupEngineTest, SetOptionsBackupRaceCondition) {
2169
2165
  ROCKSDB_NAMESPACE::port::Thread setoptions_thread{[this]() {
2170
2166
  TEST_SYNC_POINT(
2171
2167
  "BackupEngineTest::SetOptionsBackupRaceCondition:BeforeSetOptions");
2172
- DBImpl* dbi = static_cast<DBImpl*>(db_.get());
2173
2168
  // Change arbitrary option to trigger OPTIONS file deletion
2174
- ASSERT_OK(dbi->SetOptions(dbi->DefaultColumnFamily(),
2169
+ ASSERT_OK(db_->SetOptions(db_->DefaultColumnFamily(),
2175
2170
  {{"paranoid_file_checks", "false"}}));
2176
- ASSERT_OK(dbi->SetOptions(dbi->DefaultColumnFamily(),
2171
+ ASSERT_OK(db_->SetOptions(db_->DefaultColumnFamily(),
2177
2172
  {{"paranoid_file_checks", "true"}}));
2178
- ASSERT_OK(dbi->SetOptions(dbi->DefaultColumnFamily(),
2173
+ ASSERT_OK(db_->SetOptions(db_->DefaultColumnFamily(),
2179
2174
  {{"paranoid_file_checks", "false"}}));
2180
2175
  TEST_SYNC_POINT(
2181
2176
  "BackupEngineTest::SetOptionsBackupRaceCondition:AfterSetOptions");
@@ -2433,14 +2428,13 @@ TEST_F(BackupEngineTest, TableFileCorruptionBeforeIncremental) {
2433
2428
  engine_options_->share_files_with_checksum_naming = option;
2434
2429
  }
2435
2430
  OpenDBAndBackupEngine(true, false, share);
2436
- DBImpl* dbi = static_cast<DBImpl*>(db_.get());
2437
2431
  // A small SST file
2438
- ASSERT_OK(dbi->Put(WriteOptions(), "x", "y"));
2439
- ASSERT_OK(dbi->Flush(FlushOptions()));
2432
+ ASSERT_OK(db_->Put(WriteOptions(), "x", "y"));
2433
+ ASSERT_OK(db_->Flush(FlushOptions()));
2440
2434
  // And a bigger one
2441
- ASSERT_OK(dbi->Put(WriteOptions(), "y", Random(42).RandomString(500)));
2442
- ASSERT_OK(dbi->Flush(FlushOptions()));
2443
- ASSERT_OK(dbi->TEST_WaitForFlushMemTable());
2435
+ ASSERT_OK(db_->Put(WriteOptions(), "y", Random(42).RandomString(500)));
2436
+ ASSERT_OK(db_->Flush(FlushOptions()));
2437
+ ASSERT_OK(dbfull()->TEST_WaitForFlushMemTable());
2444
2438
  CloseAndReopenDB(/*read_only*/ true);
2445
2439
 
2446
2440
  std::vector<FileAttributes> table_files;
@@ -2485,9 +2479,8 @@ TEST_F(BackupEngineTest, TableFileCorruptionBeforeIncremental) {
2485
2479
  db_.reset();
2486
2480
  ASSERT_OK(backup_engine_->RestoreDBFromBackup(2, dbname_, dbname_));
2487
2481
  {
2488
- DB* db = OpenDB();
2482
+ auto db = OpenDB();
2489
2483
  s = db->VerifyChecksum();
2490
- delete db;
2491
2484
  }
2492
2485
  if (option != kLegacyCrc32cAndFileSize && !corrupt_before_first_backup) {
2493
2486
  // Second backup is OK because it used (uncorrupt) file from first
@@ -2529,11 +2522,10 @@ TEST_F(BackupEngineTest, TableFileCorruptionBeforeIncremental) {
2529
2522
 
2530
2523
  TEST_F(BackupEngineTest, PropertiesBlockCorruptionIncremental) {
2531
2524
  OpenDBAndBackupEngine(true, false, kShareWithChecksum);
2532
- DBImpl* dbi = static_cast<DBImpl*>(db_.get());
2533
2525
  // A small SST file
2534
- ASSERT_OK(dbi->Put(WriteOptions(), "x", "y"));
2535
- ASSERT_OK(dbi->Flush(FlushOptions()));
2536
- ASSERT_OK(dbi->TEST_WaitForFlushMemTable());
2526
+ ASSERT_OK(db_->Put(WriteOptions(), "x", "y"));
2527
+ ASSERT_OK(db_->Flush(FlushOptions()));
2528
+ ASSERT_OK(dbfull()->TEST_WaitForFlushMemTable());
2537
2529
 
2538
2530
  ASSERT_OK(backup_engine_->CreateNewBackup(db_.get()));
2539
2531
 
@@ -3350,9 +3342,9 @@ TEST_F(BackupEngineTest, ReadOnlyBackupEngine) {
3350
3342
  std::vector<std::string> should_have_written;
3351
3343
  test_backup_fs_->AssertWrittenFiles(should_have_written);
3352
3344
 
3353
- DB* db = OpenDB();
3354
- AssertExists(db, 0, 200);
3355
- delete db;
3345
+ auto db = OpenDB();
3346
+ AssertExists(db.get(), 0, 200);
3347
+ db.reset();
3356
3348
  }
3357
3349
 
3358
3350
  TEST_F(BackupEngineTest, OpenBackupAsReadOnlyDB) {
@@ -3385,7 +3377,7 @@ TEST_F(BackupEngineTest, OpenBackupAsReadOnlyDB) {
3385
3377
  // Caution: DBOptions only holds a raw pointer to Env, so something else
3386
3378
  // must keep it alive.
3387
3379
  // Case 1: Keeping BackupEngine open suffices to keep Env alive
3388
- DB* db = nullptr;
3380
+ std::unique_ptr<DB> db;
3389
3381
  Options opts = options_;
3390
3382
  // Ensure some key defaults are set
3391
3383
  opts.wal_dir = "";
@@ -3397,11 +3389,10 @@ TEST_F(BackupEngineTest, OpenBackupAsReadOnlyDB) {
3397
3389
  backup_info = BackupInfo();
3398
3390
  ASSERT_OK(DB::OpenForReadOnly(opts, name, &db));
3399
3391
 
3400
- AssertExists(db, 0, 100);
3401
- AssertEmpty(db, 100, 200);
3392
+ AssertExists(db.get(), 0, 100);
3393
+ AssertEmpty(db.get(), 100, 200);
3402
3394
 
3403
- delete db;
3404
- db = nullptr;
3395
+ db.reset();
3405
3396
 
3406
3397
  // Case 2: Keeping BackupInfo alive rather than BackupEngine also suffices
3407
3398
  ASSERT_OK(backup_engine_->GetBackupInfo(/*id*/ 2U, &backup_info,
@@ -3413,12 +3404,71 @@ TEST_F(BackupEngineTest, OpenBackupAsReadOnlyDB) {
3413
3404
  // Note: keeping backup_info alive
3414
3405
  ASSERT_OK(DB::OpenForReadOnly(opts, name, &db));
3415
3406
 
3416
- AssertExists(db, 0, 200);
3417
- delete db;
3418
- db = nullptr;
3407
+ AssertExists(db.get(), 0, 200);
3408
+ db.reset();
3419
3409
 
3420
3410
  // Now try opening read-write and make sure it fails, for safety.
3421
- ASSERT_TRUE(DB::Open(opts, name, &db).IsIOError());
3411
+ {
3412
+ std::unique_ptr<DB> dbptr;
3413
+ ASSERT_TRUE(DB::Open(opts, name, &dbptr).IsIOError());
3414
+ }
3415
+ }
3416
+
3417
+ TEST_F(BackupEngineTest, FileDetailsHaveCorrectFileType) {
3418
+ // Verify that BackupInfo::file_details correctly reports file_type
3419
+ // for all file types in the backup (SST, WAL, MANIFEST, CURRENT, OPTIONS).
3420
+ DestroyDBWithoutCheck(dbname_, options_);
3421
+ OpenDBAndBackupEngine(true);
3422
+
3423
+ // Use kFlushMost so there's both SST data and WAL data in the backup.
3424
+ FillDB(db_.get(), 0, 100);
3425
+ ASSERT_OK(backup_engine_->CreateNewBackup(db_.get(), /*flush*/ false));
3426
+
3427
+ BackupInfo backup_info;
3428
+ ASSERT_OK(backup_engine_->GetBackupInfo(/*id*/ 1U, &backup_info,
3429
+ /*include_file_details*/ true));
3430
+ ASSERT_GT(backup_info.file_details.size(), 0);
3431
+
3432
+ bool found_wal = false;
3433
+ bool found_sst = false;
3434
+ bool found_manifest = false;
3435
+ bool found_current = false;
3436
+ bool found_options = false;
3437
+
3438
+ for (const auto& file_info : backup_info.file_details) {
3439
+ // No file should have the default kTempFile type — ParseFileName should
3440
+ // have successfully identified all backup files.
3441
+ EXPECT_NE(file_info.file_type, kTempFile)
3442
+ << "Unexpected kTempFile for: " << file_info.relative_filename;
3443
+
3444
+ switch (file_info.file_type) {
3445
+ case kWalFile:
3446
+ found_wal = true;
3447
+ break;
3448
+ case kTableFile:
3449
+ found_sst = true;
3450
+ break;
3451
+ case kDescriptorFile:
3452
+ found_manifest = true;
3453
+ break;
3454
+ case kCurrentFile:
3455
+ found_current = true;
3456
+ break;
3457
+ case kOptionsFile:
3458
+ found_options = true;
3459
+ break;
3460
+ default:
3461
+ break;
3462
+ }
3463
+ }
3464
+
3465
+ EXPECT_TRUE(found_sst) << "Expected at least one SST file in backup";
3466
+ EXPECT_TRUE(found_wal) << "Expected at least one WAL file in backup";
3467
+ EXPECT_TRUE(found_manifest) << "Expected MANIFEST file in backup";
3468
+ EXPECT_TRUE(found_current) << "Expected CURRENT file in backup";
3469
+ EXPECT_TRUE(found_options) << "Expected OPTIONS file in backup";
3470
+
3471
+ CloseDBAndBackupEngine();
3422
3472
  }
3423
3473
 
3424
3474
  TEST_F(BackupEngineTest, ProgressCallbackDuringBackup) {
@@ -3565,16 +3615,15 @@ TEST_F(BackupEngineTest, ChangeManifestDuringBackupCreation) {
3565
3615
  // The last manifest roll would've already been cleaned up by the full scan
3566
3616
  // that happens when CreateNewBackup invokes EnableFileDeletions. We need to
3567
3617
  // trigger another roll to verify non-full scan purges stale manifests.
3568
- DBImpl* db_impl = static_cast_with_check<DBImpl>(db_.get());
3569
3618
  std::string prev_manifest_path =
3570
- DescriptorFileName(dbname_, db_impl->TEST_Current_Manifest_FileNo());
3619
+ DescriptorFileName(dbname_, dbfull()->TEST_Current_Manifest_FileNo());
3571
3620
  FillDB(db_.get(), 0, 100, kAutoFlushOnly);
3572
3621
  ASSERT_OK(db_chroot_env_->FileExists(prev_manifest_path));
3573
3622
  ASSERT_OK(db_->Flush(FlushOptions()));
3574
3623
  // Even though manual flush completed above, the background thread may not
3575
3624
  // have finished its cleanup work. `TEST_WaitForBackgroundWork()` will wait
3576
3625
  // until all the background thread's work has completed, including cleanup.
3577
- ASSERT_OK(db_impl->TEST_WaitForBackgroundWork());
3626
+ ASSERT_OK(dbfull()->TEST_WaitForBackgroundWork());
3578
3627
  ASSERT_TRUE(db_chroot_env_->FileExists(prev_manifest_path).IsNotFound());
3579
3628
 
3580
3629
  CloseDBAndBackupEngine();
@@ -3940,7 +3989,7 @@ TEST_F(BackupEngineTest, Concurrency) {
3940
3989
  // by doing it async and ensuring we either get OK or InvalidArgument
3941
3990
  restore_verify_threads[i] =
3942
3991
  std::thread([this, &db_opts, restore_db_dir, to_restore] {
3943
- DB* restored;
3992
+ std::unique_ptr<DB> restored;
3944
3993
  Status s;
3945
3994
  for (;;) {
3946
3995
  s = DB::Open(db_opts, restore_db_dir, &restored);
@@ -3956,10 +4005,9 @@ TEST_F(BackupEngineTest, Concurrency) {
3956
4005
  }
3957
4006
  }
3958
4007
  int factor = std::min(static_cast<int>(to_restore), max_factor);
3959
- AssertExists(restored, 0, factor * keys_iteration);
3960
- AssertEmpty(restored, factor * keys_iteration,
4008
+ AssertExists(restored.get(), 0, factor * keys_iteration);
4009
+ AssertEmpty(restored.get(), factor * keys_iteration,
3961
4010
  (factor + 1) * keys_iteration);
3962
- delete restored;
3963
4011
  });
3964
4012
 
3965
4013
  // (Ok now) Restore one of the backups, or "latest"
@@ -4418,14 +4466,13 @@ TEST_F(BackupEngineTest, FileTemperatures) {
4418
4466
  kShareWithChecksum);
4419
4467
 
4420
4468
  // generate a bottommost file (combined from 2) and a non-bottommost file
4421
- DBImpl* dbi = static_cast_with_check<DBImpl>(db_.get());
4422
4469
  ASSERT_OK(db_->Put(WriteOptions(), "a", "val"));
4423
4470
  ASSERT_OK(db_->Put(WriteOptions(), "c", "val"));
4424
4471
  ASSERT_OK(db_->Flush(FlushOptions()));
4425
4472
  ASSERT_OK(db_->Put(WriteOptions(), "b", "val"));
4426
4473
  ASSERT_OK(db_->Put(WriteOptions(), "d", "val"));
4427
4474
  ASSERT_OK(db_->Flush(FlushOptions()));
4428
- ASSERT_OK(dbi->TEST_WaitForCompact());
4475
+ ASSERT_OK(dbfull()->TEST_WaitForCompact());
4429
4476
  ASSERT_OK(db_->Put(WriteOptions(), "e", "val"));
4430
4477
  ASSERT_OK(db_->Flush(FlushOptions()));
4431
4478
 
@@ -4524,9 +4571,8 @@ TEST_F(BackupEngineTest, FileTemperatures) {
4524
4571
  ASSERT_OK(backup_engine_->GetLatestBackupInfo(
4525
4572
  &info, /*include_file_details*/ true));
4526
4573
  ASSERT_GT(info.file_details.size(), 2);
4527
- for (auto& e : info.file_details) {
4528
- EXPECT_EQ(expected_temps[e.file_number], e.temperature);
4529
- }
4574
+ // TODO: Restore temperature check once finfo.temperature is populated
4575
+ // in SetBackupInfoFromBackupMeta (currently commented out).
4530
4576
 
4531
4577
  // Restore backup to another virtual (tiered) dir
4532
4578
  const std::string restore_dir = "/restore" + std::to_string(i);
@@ -4583,7 +4629,7 @@ TEST_F(BackupEngineTest, ExcludeFiles) {
4583
4629
 
4584
4630
  // Ensure each backup is same set of files
4585
4631
  db_.reset();
4586
- DB* db = nullptr;
4632
+ std::unique_ptr<DB> db;
4587
4633
  ASSERT_OK(DB::OpenForReadOnly(options_, dbname_, &db));
4588
4634
 
4589
4635
  // A callback that throws should cleanly fail the backup creation.
@@ -4593,12 +4639,12 @@ TEST_F(BackupEngineTest, ExcludeFiles) {
4593
4639
  MaybeExcludeBackupFile* /*files_end*/) {
4594
4640
  throw 42;
4595
4641
  };
4596
- ASSERT_TRUE(backup_engine_->CreateNewBackup(cbo, db).IsAborted());
4642
+ ASSERT_TRUE(backup_engine_->CreateNewBackup(cbo, db.get()).IsAborted());
4597
4643
  cbo.exclude_files_callback = [](MaybeExcludeBackupFile* /*files_begin*/,
4598
4644
  MaybeExcludeBackupFile* /*files_end*/) {
4599
4645
  throw std::out_of_range("blah");
4600
4646
  };
4601
- ASSERT_TRUE(backup_engine_->CreateNewBackup(cbo, db).IsAborted());
4647
+ ASSERT_TRUE(backup_engine_->CreateNewBackup(cbo, db.get()).IsAborted());
4602
4648
 
4603
4649
  // Include files only in given bucket, based on modulus and remainder
4604
4650
  constexpr int modulus = 4;
@@ -4619,22 +4665,21 @@ TEST_F(BackupEngineTest, ExcludeFiles) {
4619
4665
  BackupID first_id{};
4620
4666
  BackupID last_alt_id{};
4621
4667
  remainder = 0;
4622
- ASSERT_OK(backup_engine_->CreateNewBackup(cbo, db, &first_id));
4668
+ ASSERT_OK(backup_engine_->CreateNewBackup(cbo, db.get(), &first_id));
4623
4669
  AssertBackupInfoConsistency(/*allow excluded*/ true);
4624
4670
  remainder = 1;
4625
- ASSERT_OK(alt_backup_engine->CreateNewBackup(cbo, db));
4671
+ ASSERT_OK(alt_backup_engine->CreateNewBackup(cbo, db.get()));
4626
4672
  AssertBackupInfoConsistency(/*allow excluded*/ true);
4627
4673
  remainder = 2;
4628
- ASSERT_OK(backup_engine_->CreateNewBackup(cbo, db));
4674
+ ASSERT_OK(backup_engine_->CreateNewBackup(cbo, db.get()));
4629
4675
  AssertBackupInfoConsistency(/*allow excluded*/ true);
4630
4676
  remainder = 3;
4631
- ASSERT_OK(alt_backup_engine->CreateNewBackup(cbo, db, &last_alt_id));
4677
+ ASSERT_OK(alt_backup_engine->CreateNewBackup(cbo, db.get(), &last_alt_id));
4632
4678
  AssertBackupInfoConsistency(/*allow excluded*/ true);
4633
4679
 
4634
4680
  // Close DB
4635
4681
  ASSERT_OK(db->Close());
4636
- delete db;
4637
- db = nullptr;
4682
+ db.reset();
4638
4683
 
4639
4684
  auto backup_engine = backup_engine_.get();
4640
4685
  for (auto be_pair : {std::make_pair(backup_engine, alt_backup_engine),
@@ -4652,8 +4697,8 @@ TEST_F(BackupEngineTest, ExcludeFiles) {
4652
4697
 
4653
4698
  // Check DB contents
4654
4699
  db = OpenDB();
4655
- AssertExists(db, 0, keys_iteration);
4656
- delete db;
4700
+ AssertExists(db.get(), 0, keys_iteration);
4701
+ db.reset();
4657
4702
  }
4658
4703
 
4659
4704
  // Should still work after close and re-open
@@ -32,7 +32,7 @@ CompactionFilter::Decision BlobIndexCompactionFilterBase::FilterV2(
32
32
  if (ucf == nullptr) {
33
33
  return Decision::kKeep;
34
34
  }
35
- // Apply user compaction filter for inlined data.
35
+ // Apply user compaction filter for non-blob data.
36
36
  CompactionFilter::Decision decision =
37
37
  ucf->FilterV2(level, key, value_type, value, new_value, skip_until);
38
38
  if (decision == Decision::kChangeValue) {
@@ -52,34 +52,12 @@ CompactionFilter::Decision BlobIndexCompactionFilterBase::FilterV2(
52
52
  expired_size_ += key.size() + value.size();
53
53
  return Decision::kRemove;
54
54
  }
55
- if (!blob_index.IsInlined() &&
56
- blob_index.file_number() < context_.next_file_number &&
55
+ if (blob_index.file_number() < context_.next_file_number &&
57
56
  context_.current_blob_files.count(blob_index.file_number()) == 0) {
58
- // Corresponding blob file gone (most likely, evicted by FIFO eviction).
59
57
  evicted_count_++;
60
58
  evicted_size_ += key.size() + value.size();
61
59
  return Decision::kRemove;
62
60
  }
63
- if (context_.fifo_eviction_seq > 0 && blob_index.HasTTL() &&
64
- blob_index.expiration() < context_.evict_expiration_up_to) {
65
- // Hack: Internal key is passed to BlobIndexCompactionFilter for it to
66
- // get sequence number.
67
- ParsedInternalKey ikey;
68
- if (!ParseInternalKey(
69
- key, &ikey,
70
- context_.blob_db_impl->db_options_.allow_data_in_errors)
71
- .ok()) {
72
- assert(false);
73
- return Decision::kKeep;
74
- }
75
- // Remove keys that could have been remove by last FIFO eviction.
76
- // If get error while parsing key, ignore and continue.
77
- if (ikey.sequence < context_.fifo_eviction_seq) {
78
- evicted_count_++;
79
- evicted_size_ += key.size() + value.size();
80
- return Decision::kRemove;
81
- }
82
- }
83
61
  // Apply user compaction filter for all non-TTL blob data.
84
62
  if (ucf != nullptr && !blob_index.HasTTL()) {
85
63
  // Hack: Internal key is passed to BlobIndexCompactionFilter for it to
@@ -94,10 +72,7 @@ CompactionFilter::Decision BlobIndexCompactionFilterBase::FilterV2(
94
72
  }
95
73
  // Read value from blob file.
96
74
  PinnableSlice blob;
97
- CompressionType compression_type = kNoCompression;
98
- constexpr bool need_decompress = true;
99
- if (!ReadBlobFromOldFile(ikey.user_key, blob_index, &blob, need_decompress,
100
- &compression_type)) {
75
+ if (!ReadBlobFromOldFile(ikey.user_key, blob_index, &blob)) {
101
76
  return Decision::kIOError;
102
77
  }
103
78
  CompactionFilter::Decision decision = ucf->FilterV2(
@@ -112,22 +87,10 @@ CompactionFilter::Decision BlobIndexCompactionFilterBase::FilterV2(
112
87
 
113
88
  CompactionFilter::Decision BlobIndexCompactionFilterBase::HandleValueChange(
114
89
  const Slice& key, std::string* new_value) const {
115
- BlobDBImpl* const blob_db_impl = context_.blob_db_impl;
116
- assert(blob_db_impl);
117
-
118
- if (new_value->size() < blob_db_impl->bdb_options_.min_blob_size) {
119
- // Keep new_value inlined.
120
- return Decision::kChangeValue;
121
- }
122
90
  if (!OpenNewBlobFileIfNeeded()) {
123
91
  return Decision::kIOError;
124
92
  }
125
93
  Slice new_blob_value(*new_value);
126
- std::string compression_output;
127
- if (blob_db_impl->bdb_options_.compression != kNoCompression) {
128
- new_blob_value =
129
- blob_db_impl->GetCompressedSlice(new_blob_value, &compression_output);
130
- }
131
94
  uint64_t new_blob_file_number = 0;
132
95
  uint64_t new_blob_offset = 0;
133
96
  if (!WriteBlobToNewFile(key, new_blob_value, &new_blob_file_number,
@@ -138,8 +101,7 @@ CompactionFilter::Decision BlobIndexCompactionFilterBase::HandleValueChange(
138
101
  return Decision::kIOError;
139
102
  }
140
103
  BlobIndex::EncodeBlob(new_value, new_blob_file_number, new_blob_offset,
141
- new_blob_value.size(),
142
- blob_db_impl->bdb_options_.compression);
104
+ new_blob_value.size(), kNoCompression);
143
105
  return Decision::kChangeBlobIndex;
144
106
  }
145
107
 
@@ -201,14 +163,13 @@ bool BlobIndexCompactionFilterBase::OpenNewBlobFileIfNeeded() const {
201
163
  }
202
164
 
203
165
  bool BlobIndexCompactionFilterBase::ReadBlobFromOldFile(
204
- const Slice& key, const BlobIndex& blob_index, PinnableSlice* blob,
205
- bool need_decompress, CompressionType* compression_type) const {
166
+ const Slice& key, const BlobIndex& blob_index, PinnableSlice* blob) const {
206
167
  BlobDBImpl* const blob_db_impl = context_.blob_db_impl;
207
168
  assert(blob_db_impl);
208
169
 
209
- Status s = blob_db_impl->GetRawBlobFromFile(
210
- key, blob_index.file_number(), blob_index.offset(), blob_index.size(),
211
- blob, compression_type);
170
+ Status s = blob_db_impl->GetRawBlobFromFile(key, blob_index.file_number(),
171
+ blob_index.offset(),
172
+ blob_index.size(), blob);
212
173
 
213
174
  if (!s.ok()) {
214
175
  ROCKS_LOG_ERROR(
@@ -221,21 +182,6 @@ bool BlobIndexCompactionFilterBase::ReadBlobFromOldFile(
221
182
  return false;
222
183
  }
223
184
 
224
- if (need_decompress && *compression_type != kNoCompression) {
225
- s = blob_db_impl->DecompressSlice(*blob, *compression_type, blob);
226
- if (!s.ok()) {
227
- ROCKS_LOG_ERROR(
228
- blob_db_impl->db_options_.info_log,
229
- "Uncompression error during blob read from file: %" PRIu64
230
- " blob_offset: %" PRIu64 " blob_size: %" PRIu64
231
- " key: %s status: '%s'",
232
- blob_index.file_number(), blob_index.offset(), blob_index.size(),
233
- key.ToString(/* output_hex */ true).c_str(), s.ToString().c_str());
234
-
235
- return false;
236
- }
237
- }
238
-
239
185
  return true;
240
186
  }
241
187
 
@@ -306,8 +252,7 @@ bool BlobIndexCompactionFilterBase::CloseAndRegisterNewBlobFile() const {
306
252
  // TODO: plumb Env::IOActivity, Env::IOPriority
307
253
  s = blob_db_impl->CloseBlobFile(WriteOptions(), blob_file_);
308
254
 
309
- // Note: we delay registering the new blob file until it's closed to
310
- // prevent FIFO eviction from processing it during compaction/GC.
255
+ // Note: we delay registering the new blob file until it's closed.
311
256
  blob_db_impl->RegisterBlobFile(blob_file_);
312
257
  }
313
258
 
@@ -336,18 +281,12 @@ CompactionFilter::BlobDecision BlobIndexCompactionFilterGC::PrepareBlobOutput(
336
281
  assert(blob_db_impl->bdb_options_.enable_garbage_collection);
337
282
 
338
283
  BlobIndex blob_index;
339
- const Status s = blob_index.DecodeFrom(existing_value);
284
+ Status s = blob_index.DecodeFrom(existing_value);
340
285
  if (!s.ok()) {
341
286
  gc_stats_.SetError();
342
287
  return BlobDecision::kCorruption;
343
288
  }
344
289
 
345
- if (blob_index.IsInlined()) {
346
- gc_stats_.AddBlob(blob_index.value().size());
347
-
348
- return BlobDecision::kKeep;
349
- }
350
-
351
290
  gc_stats_.AddBlob(blob_index.size());
352
291
 
353
292
  if (blob_index.HasTTL()) {
@@ -368,31 +307,11 @@ CompactionFilter::BlobDecision BlobIndexCompactionFilterGC::PrepareBlobOutput(
368
307
  }
369
308
 
370
309
  PinnableSlice blob;
371
- CompressionType compression_type = kNoCompression;
372
- std::string compression_output;
373
- if (!ReadBlobFromOldFile(key, blob_index, &blob, false, &compression_type)) {
310
+ if (!ReadBlobFromOldFile(key, blob_index, &blob)) {
374
311
  gc_stats_.SetError();
375
312
  return BlobDecision::kIOError;
376
313
  }
377
314
 
378
- // If the compression_type is changed, re-compress it with the new compression
379
- // type.
380
- if (compression_type != blob_db_impl->bdb_options_.compression) {
381
- if (compression_type != kNoCompression) {
382
- const Status status =
383
- blob_db_impl->DecompressSlice(blob, compression_type, &blob);
384
- if (!status.ok()) {
385
- gc_stats_.SetError();
386
- return BlobDecision::kCorruption;
387
- }
388
- }
389
- if (blob_db_impl->bdb_options_.compression != kNoCompression) {
390
- blob_db_impl->GetCompressedSlice(blob, &compression_output);
391
- blob = PinnableSlice(&compression_output);
392
- blob.PinSelf();
393
- }
394
- }
395
-
396
315
  uint64_t new_blob_file_number = 0;
397
316
  uint64_t new_blob_offset = 0;
398
317
  if (!WriteBlobToNewFile(key, blob, &new_blob_file_number, &new_blob_offset)) {
@@ -406,7 +325,7 @@ CompactionFilter::BlobDecision BlobIndexCompactionFilterGC::PrepareBlobOutput(
406
325
  }
407
326
 
408
327
  BlobIndex::EncodeBlob(new_value, new_blob_file_number, new_blob_offset,
409
- blob.size(), compression_type);
328
+ blob.size(), kNoCompression);
410
329
 
411
330
  gc_stats_.AddRelocatedBlob(blob_index.size());
412
331
 
@@ -21,8 +21,6 @@ struct BlobCompactionContext {
21
21
  BlobDBImpl* blob_db_impl = nullptr;
22
22
  uint64_t next_file_number = 0;
23
23
  std::unordered_set<uint64_t> current_blob_files;
24
- SequenceNumber fifo_eviction_seq = 0;
25
- uint64_t evict_expiration_up_to = 0;
26
24
  };
27
25
 
28
26
  struct BlobCompactionContextGC {
@@ -59,8 +57,7 @@ class BlobIndexCompactionFilterBase : public LayeredCompactionFilterBase {
59
57
  bool IsBlobFileOpened() const;
60
58
  virtual bool OpenNewBlobFileIfNeeded() const;
61
59
  bool ReadBlobFromOldFile(const Slice& key, const BlobIndex& blob_index,
62
- PinnableSlice* blob, bool need_decompress,
63
- CompressionType* compression_type) const;
60
+ PinnableSlice* blob) const;
64
61
  bool WriteBlobToNewFile(const Slice& key, const Slice& blob,
65
62
  uint64_t* new_blob_file_number,
66
63
  uint64_t* new_blob_offset) const;