@nxtedition/rocksdb 6.0.0 → 6.0.3

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 (488) hide show
  1. package/BUILDING.md +18 -0
  2. package/binding.cc +16 -17
  3. package/binding.gyp +2 -2
  4. package/deps/rocksdb/build_version.cc +4 -10
  5. package/deps/rocksdb/rocksdb/CMakeLists.txt +26 -3
  6. package/deps/rocksdb/rocksdb/Makefile +73 -91
  7. package/deps/rocksdb/rocksdb/TARGETS +27 -2
  8. package/deps/rocksdb/rocksdb/cache/cache_test.cc +29 -17
  9. package/deps/rocksdb/rocksdb/cache/fast_lru_cache.cc +511 -0
  10. package/deps/rocksdb/rocksdb/cache/fast_lru_cache.h +299 -0
  11. package/deps/rocksdb/rocksdb/cache/lru_cache.cc +3 -0
  12. package/deps/rocksdb/rocksdb/cache/lru_cache.h +7 -0
  13. package/deps/rocksdb/rocksdb/cmake/modules/CxxFlags.cmake +7 -0
  14. package/deps/rocksdb/rocksdb/cmake/modules/FindJeMalloc.cmake +29 -0
  15. package/deps/rocksdb/rocksdb/cmake/modules/FindNUMA.cmake +29 -0
  16. package/deps/rocksdb/rocksdb/cmake/modules/FindSnappy.cmake +29 -0
  17. package/deps/rocksdb/rocksdb/cmake/modules/FindTBB.cmake +33 -0
  18. package/deps/rocksdb/rocksdb/cmake/modules/Findgflags.cmake +29 -0
  19. package/deps/rocksdb/rocksdb/cmake/modules/Findlz4.cmake +29 -0
  20. package/deps/rocksdb/rocksdb/cmake/modules/Finduring.cmake +26 -0
  21. package/deps/rocksdb/rocksdb/cmake/modules/Findzstd.cmake +29 -0
  22. package/deps/rocksdb/rocksdb/cmake/modules/ReadVersion.cmake +10 -0
  23. package/deps/rocksdb/rocksdb/common.mk +30 -0
  24. package/deps/rocksdb/rocksdb/crash_test.mk +3 -3
  25. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +1 -1
  26. package/deps/rocksdb/rocksdb/db/blob/blob_index.h +3 -3
  27. package/deps/rocksdb/rocksdb/db/blob/db_blob_index_test.cc +7 -7
  28. package/deps/rocksdb/rocksdb/db/builder.cc +22 -7
  29. package/deps/rocksdb/rocksdb/db/c.cc +71 -0
  30. package/deps/rocksdb/rocksdb/db/c_test.c +28 -2
  31. package/deps/rocksdb/rocksdb/db/column_family.cc +12 -5
  32. package/deps/rocksdb/rocksdb/db/column_family_test.cc +23 -22
  33. package/deps/rocksdb/rocksdb/db/compact_files_test.cc +11 -11
  34. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +2 -2
  35. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +36 -10
  36. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +4 -1
  37. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +3 -2
  38. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +54 -16
  39. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +14 -2
  40. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +3 -3
  41. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +85 -18
  42. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +7 -7
  43. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +1 -1
  44. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +23 -22
  45. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +1 -1
  46. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +151 -32
  47. package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +1 -1
  48. package/deps/rocksdb/rocksdb/db/convenience.cc +8 -6
  49. package/deps/rocksdb/rocksdb/db/corruption_test.cc +209 -38
  50. package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +2 -2
  51. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +404 -32
  52. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +28 -25
  53. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +85 -138
  54. package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +68 -3
  55. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +38 -13
  56. package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +1 -1
  57. package/deps/rocksdb/rocksdb/db/db_flush_test.cc +1 -1
  58. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +11 -20
  59. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +15 -1
  60. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +12 -9
  61. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +5 -4
  62. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +1 -1
  63. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +2 -2
  64. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +42 -10
  65. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +54 -23
  66. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +3 -0
  67. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +14 -4
  68. package/deps/rocksdb/rocksdb/db/db_info_dumper.cc +26 -18
  69. package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +8 -7
  70. package/deps/rocksdb/rocksdb/db/db_iter_test.cc +8 -8
  71. package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +6 -3
  72. package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +2 -2
  73. package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +6 -6
  74. package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +2 -2
  75. package/deps/rocksdb/rocksdb/db/db_options_test.cc +28 -12
  76. package/deps/rocksdb/rocksdb/db/db_properties_test.cc +16 -15
  77. package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +6 -4
  78. package/deps/rocksdb/rocksdb/db/db_readonly_with_timestamp_test.cc +331 -0
  79. package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +11 -6
  80. package/deps/rocksdb/rocksdb/db/db_sst_test.cc +68 -7
  81. package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +6 -5
  82. package/deps/rocksdb/rocksdb/db/db_test.cc +60 -42
  83. package/deps/rocksdb/rocksdb/db/db_test2.cc +244 -111
  84. package/deps/rocksdb/rocksdb/db/db_test_util.cc +101 -19
  85. package/deps/rocksdb/rocksdb/db/db_test_util.h +52 -2
  86. package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +1 -1
  87. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +7 -7
  88. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +5 -175
  89. package/deps/rocksdb/rocksdb/db/db_with_timestamp_test_util.cc +96 -0
  90. package/deps/rocksdb/rocksdb/db/db_with_timestamp_test_util.h +126 -0
  91. package/deps/rocksdb/rocksdb/db/db_write_test.cc +6 -6
  92. package/deps/rocksdb/rocksdb/db/dbformat.h +2 -1
  93. package/deps/rocksdb/rocksdb/db/deletefile_test.cc +1 -1
  94. package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +8 -8
  95. package/deps/rocksdb/rocksdb/db/experimental.cc +1 -1
  96. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +91 -12
  97. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +16 -2
  98. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +2 -0
  99. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +7 -7
  100. package/deps/rocksdb/rocksdb/db/file_indexer.h +1 -4
  101. package/deps/rocksdb/rocksdb/db/flush_job.cc +28 -15
  102. package/deps/rocksdb/rocksdb/db/flush_job.h +4 -0
  103. package/deps/rocksdb/rocksdb/db/flush_job_test.cc +98 -30
  104. package/deps/rocksdb/rocksdb/db/forward_iterator.cc +1 -1
  105. package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +14 -1
  106. package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +6 -0
  107. package/deps/rocksdb/rocksdb/db/internal_stats.cc +12 -12
  108. package/deps/rocksdb/rocksdb/db/listener_test.cc +4 -3
  109. package/deps/rocksdb/rocksdb/db/memtable.cc +2 -2
  110. package/deps/rocksdb/rocksdb/db/memtable_list.h +1 -1
  111. package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +37 -25
  112. package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +1 -1
  113. package/deps/rocksdb/rocksdb/db/perf_context_test.cc +18 -18
  114. package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +6 -6
  115. package/deps/rocksdb/rocksdb/db/prefix_test.cc +1 -1
  116. package/deps/rocksdb/rocksdb/db/repair.cc +13 -2
  117. package/deps/rocksdb/rocksdb/db/repair_test.cc +37 -15
  118. package/deps/rocksdb/rocksdb/db/snapshot_checker.h +1 -2
  119. package/deps/rocksdb/rocksdb/db/snapshot_impl.h +3 -1
  120. package/deps/rocksdb/rocksdb/db/table_cache.cc +20 -130
  121. package/deps/rocksdb/rocksdb/db/table_cache.h +3 -2
  122. package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +140 -0
  123. package/deps/rocksdb/rocksdb/db/version_builder.cc +1 -1
  124. package/deps/rocksdb/rocksdb/db/version_builder_test.cc +133 -133
  125. package/deps/rocksdb/rocksdb/db/version_edit.cc +22 -2
  126. package/deps/rocksdb/rocksdb/db/version_edit.h +13 -4
  127. package/deps/rocksdb/rocksdb/db/version_edit_test.cc +14 -14
  128. package/deps/rocksdb/rocksdb/db/version_set.cc +207 -214
  129. package/deps/rocksdb/rocksdb/db/version_set.h +14 -3
  130. package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +154 -0
  131. package/deps/rocksdb/rocksdb/db/version_set_test.cc +10 -9
  132. package/deps/rocksdb/rocksdb/db/wal_edit.h +2 -1
  133. package/deps/rocksdb/rocksdb/db/wal_manager.cc +2 -3
  134. package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +1 -1
  135. package/deps/rocksdb/rocksdb/db/write_batch.cc +178 -30
  136. package/deps/rocksdb/rocksdb/db/write_batch_test.cc +6 -6
  137. package/deps/rocksdb/rocksdb/db/write_controller.h +1 -1
  138. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +0 -2
  139. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +9 -6
  140. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compaction_filter.h +2 -1
  141. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +4 -3
  142. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +44 -6
  143. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.cc +4 -1
  144. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.cc +0 -10
  145. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +45 -42
  146. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +374 -275
  147. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +53 -3
  148. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +0 -12
  149. package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +13 -11
  150. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +276 -109
  151. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.h +63 -0
  152. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +45 -54
  153. package/deps/rocksdb/rocksdb/env/composite_env.cc +87 -14
  154. package/deps/rocksdb/rocksdb/env/env.cc +0 -60
  155. package/deps/rocksdb/rocksdb/env/env_encryption.cc +9 -0
  156. package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +1 -1
  157. package/deps/rocksdb/rocksdb/env/env_posix.cc +6 -5
  158. package/deps/rocksdb/rocksdb/env/env_test.cc +18 -5
  159. package/deps/rocksdb/rocksdb/env/fs_posix.cc +17 -12
  160. package/deps/rocksdb/rocksdb/env/io_posix.cc +39 -37
  161. package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +9 -9
  162. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +159 -65
  163. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +44 -22
  164. package/deps/rocksdb/rocksdb/file/file_util.h +2 -0
  165. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +142 -17
  166. package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +5 -2
  167. package/deps/rocksdb/rocksdb/file/sequence_file_reader.cc +7 -0
  168. package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +60 -40
  169. package/deps/rocksdb/rocksdb/file/writable_file_writer.h +1 -0
  170. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +23 -5
  171. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +49 -1
  172. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +5 -5
  173. package/deps/rocksdb/rocksdb/include/rocksdb/cleanable.h +59 -2
  174. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +1 -0
  175. package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +2 -1
  176. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +46 -44
  177. package/deps/rocksdb/rocksdb/include/rocksdb/env.h +1 -1
  178. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +2 -0
  179. package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +2 -4
  180. package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +3 -0
  181. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +45 -3
  182. package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +2 -0
  183. package/deps/rocksdb/rocksdb/include/rocksdb/snapshot.h +4 -1
  184. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +3 -0
  185. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +91 -40
  186. package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +1 -2
  187. package/deps/rocksdb/rocksdb/include/rocksdb/unique_id.h +22 -13
  188. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/customizable_util.h +9 -0
  189. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +4 -0
  190. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/object_registry.h +25 -0
  191. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +378 -103
  192. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +14 -0
  193. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
  194. package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +18 -4
  195. package/deps/rocksdb/rocksdb/memory/arena.h +1 -1
  196. package/deps/rocksdb/rocksdb/memory/concurrent_arena.cc +1 -5
  197. package/deps/rocksdb/rocksdb/memory/concurrent_arena.h +1 -5
  198. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +6 -8
  199. package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +1 -1
  200. package/deps/rocksdb/rocksdb/memtable/write_buffer_manager.cc +1 -1
  201. package/deps/rocksdb/rocksdb/memtable/write_buffer_manager_test.cc +5 -3
  202. package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +266 -45
  203. package/deps/rocksdb/rocksdb/monitoring/histogram.cc +2 -1
  204. package/deps/rocksdb/rocksdb/monitoring/iostats_context.cc +1 -4
  205. package/deps/rocksdb/rocksdb/monitoring/iostats_context_imp.h +4 -4
  206. package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +7 -8
  207. package/deps/rocksdb/rocksdb/monitoring/perf_context_imp.h +2 -2
  208. package/deps/rocksdb/rocksdb/monitoring/perf_level.cc +1 -5
  209. package/deps/rocksdb/rocksdb/monitoring/perf_level_imp.h +1 -5
  210. package/deps/rocksdb/rocksdb/monitoring/persistent_stats_history.cc +2 -2
  211. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +1 -1
  212. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.cc +2 -1
  213. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.h +1 -1
  214. package/deps/rocksdb/rocksdb/monitoring/thread_status_util.cc +3 -3
  215. package/deps/rocksdb/rocksdb/monitoring/thread_status_util.h +2 -2
  216. package/deps/rocksdb/rocksdb/options/cf_options.cc +47 -38
  217. package/deps/rocksdb/rocksdb/options/configurable.cc +9 -27
  218. package/deps/rocksdb/rocksdb/options/configurable_test.cc +1 -1
  219. package/deps/rocksdb/rocksdb/options/customizable.cc +3 -1
  220. package/deps/rocksdb/rocksdb/options/customizable_test.cc +379 -318
  221. package/deps/rocksdb/rocksdb/options/db_options.cc +46 -17
  222. package/deps/rocksdb/rocksdb/options/db_options.h +2 -0
  223. package/deps/rocksdb/rocksdb/options/options.cc +7 -0
  224. package/deps/rocksdb/rocksdb/options/options_helper.cc +86 -39
  225. package/deps/rocksdb/rocksdb/options/options_parser.cc +10 -10
  226. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +12 -7
  227. package/deps/rocksdb/rocksdb/options/options_test.cc +222 -68
  228. package/deps/rocksdb/rocksdb/port/port_posix.h +0 -15
  229. package/deps/rocksdb/rocksdb/port/win/env_win.cc +5 -4
  230. package/deps/rocksdb/rocksdb/port/win/env_win.h +2 -2
  231. package/deps/rocksdb/rocksdb/port/win/port_win.h +0 -31
  232. package/deps/rocksdb/rocksdb/rocksdb.pc.in +11 -0
  233. package/deps/rocksdb/rocksdb/src.mk +6 -1
  234. package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +2 -1
  235. package/deps/rocksdb/rocksdb/table/block_based/block.cc +4 -2
  236. package/deps/rocksdb/rocksdb/table/block_based/block.h +21 -25
  237. package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.cc +3 -4
  238. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +23 -8
  239. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +52 -15
  240. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +81 -7
  241. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +8 -2
  242. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +94 -726
  243. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +21 -15
  244. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +9 -3
  245. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +754 -0
  246. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +44 -73
  247. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +15 -5
  248. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +2 -1
  249. package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +2 -11
  250. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +59 -1
  251. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.h +18 -0
  252. package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +33 -17
  253. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +0 -61
  254. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +0 -13
  255. package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +2 -1
  256. package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +2 -2
  257. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +3 -2
  258. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +2 -1
  259. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +3 -2
  260. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +4 -3
  261. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +8 -4
  262. package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +4 -4
  263. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +2 -1
  264. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +65 -7
  265. package/deps/rocksdb/rocksdb/table/block_fetcher.h +2 -0
  266. package/deps/rocksdb/rocksdb/table/cleanable_test.cc +113 -0
  267. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +1 -1
  268. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.h +1 -1
  269. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +1 -1
  270. package/deps/rocksdb/rocksdb/table/format.cc +22 -20
  271. package/deps/rocksdb/rocksdb/table/iterator.cc +1 -81
  272. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +39 -0
  273. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +2 -2
  274. package/deps/rocksdb/rocksdb/table/multiget_context.h +60 -13
  275. package/deps/rocksdb/rocksdb/table/persistent_cache_options.h +0 -3
  276. package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.cc +12 -1
  277. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +4 -4
  278. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +2 -1
  279. package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +1 -1
  280. package/deps/rocksdb/rocksdb/table/sst_file_writer_collectors.h +1 -1
  281. package/deps/rocksdb/rocksdb/table/table_properties.cc +3 -5
  282. package/deps/rocksdb/rocksdb/table/table_reader.h +13 -0
  283. package/deps/rocksdb/rocksdb/table/table_test.cc +202 -78
  284. package/deps/rocksdb/rocksdb/table/unique_id.cc +84 -25
  285. package/deps/rocksdb/rocksdb/table/unique_id_impl.h +37 -4
  286. package/deps/rocksdb/rocksdb/test_util/testutil.cc +3 -1
  287. package/deps/rocksdb/rocksdb/test_util/testutil.h +11 -8
  288. package/deps/rocksdb/rocksdb/test_util/transaction_test_util.cc +8 -4
  289. package/deps/rocksdb/rocksdb/test_util/transaction_test_util.h +17 -0
  290. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.cc +11 -9
  291. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +3 -3
  292. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +277 -105
  293. package/deps/rocksdb/rocksdb/tools/db_sanity_test.cc +4 -4
  294. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +186 -42
  295. package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +75 -49
  296. package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +9 -8
  297. package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +4 -1
  298. package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +2 -2
  299. package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +26 -4
  300. package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +1 -1
  301. package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.h +1 -1
  302. package/deps/rocksdb/rocksdb/util/async_file_reader.cc +72 -0
  303. package/deps/rocksdb/rocksdb/util/async_file_reader.h +144 -0
  304. package/deps/rocksdb/rocksdb/util/autovector_test.cc +4 -4
  305. package/deps/rocksdb/rocksdb/util/bloom_test.cc +14 -8
  306. package/deps/rocksdb/rocksdb/util/build_version.cc.in +5 -6
  307. package/deps/rocksdb/rocksdb/util/cleanable.cc +180 -0
  308. package/deps/rocksdb/rocksdb/util/comparator.cc +5 -3
  309. package/deps/rocksdb/rocksdb/util/compression.h +56 -7
  310. package/deps/rocksdb/rocksdb/util/coro_utils.h +111 -0
  311. package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +148 -0
  312. package/deps/rocksdb/rocksdb/util/filelock_test.cc +2 -2
  313. package/deps/rocksdb/rocksdb/util/filter_bench.cc +12 -4
  314. package/deps/rocksdb/rocksdb/util/heap.h +5 -3
  315. package/deps/rocksdb/rocksdb/util/random.cc +1 -5
  316. package/deps/rocksdb/rocksdb/util/rate_limiter.cc +12 -9
  317. package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +1 -1
  318. package/deps/rocksdb/rocksdb/util/ribbon_alg.h +1 -1
  319. package/deps/rocksdb/rocksdb/util/ribbon_test.cc +2 -4
  320. package/deps/rocksdb/rocksdb/util/single_thread_executor.h +55 -0
  321. package/deps/rocksdb/rocksdb/util/slice.cc +8 -9
  322. package/deps/rocksdb/rocksdb/util/string_util.cc +3 -2
  323. package/deps/rocksdb/rocksdb/util/string_util.h +0 -13
  324. package/deps/rocksdb/rocksdb/util/thread_local.cc +4 -23
  325. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +99 -22
  326. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_impl.h +7 -0
  327. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +102 -59
  328. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +38 -36
  329. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +2 -2
  330. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +28 -0
  331. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +3 -0
  332. package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +1 -1
  333. package/deps/rocksdb/rocksdb/utilities/object_registry.cc +71 -0
  334. package/deps/rocksdb/rocksdb/utilities/object_registry_test.cc +71 -0
  335. package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +1 -1
  336. package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache_test.cc +5 -5
  337. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.cc +3 -3
  338. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_tracker.cc +0 -13
  339. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +40 -0
  340. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.cc +10 -8
  341. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.h +4 -2
  342. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +17 -0
  343. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc +7 -7
  344. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +8 -1
  345. package/deps/rocksdb/rocksdb/utilities/transactions/snapshot_checker.cc +5 -1
  346. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +21 -15
  347. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.cc +2 -2
  348. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +69 -11
  349. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +22 -9
  350. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +26 -5
  351. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.h +17 -4
  352. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +19 -16
  353. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +7 -3
  354. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +3 -2
  355. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +2 -2
  356. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +2 -2
  357. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +6 -6
  358. package/deps/rocksdb/rocksdb.gyp +47 -37
  359. package/package-lock.json +23687 -0
  360. package/package.json +2 -30
  361. package/prebuilds/darwin-arm64/node.napi.node +0 -0
  362. package/prebuilds/darwin-x64/node.napi.node +0 -0
  363. package/prebuilds/linux-x64/node.napi.node +0 -0
  364. package/deps/liburing/liburing/README +0 -46
  365. package/deps/liburing/liburing/test/232c93d07b74-test.c +0 -305
  366. package/deps/liburing/liburing/test/35fa71a030ca-test.c +0 -329
  367. package/deps/liburing/liburing/test/500f9fbadef8-test.c +0 -89
  368. package/deps/liburing/liburing/test/7ad0e4b2f83c-test.c +0 -93
  369. package/deps/liburing/liburing/test/8a9973408177-test.c +0 -106
  370. package/deps/liburing/liburing/test/917257daa0fe-test.c +0 -53
  371. package/deps/liburing/liburing/test/Makefile +0 -312
  372. package/deps/liburing/liburing/test/a0908ae19763-test.c +0 -58
  373. package/deps/liburing/liburing/test/a4c0b3decb33-test.c +0 -180
  374. package/deps/liburing/liburing/test/accept-link.c +0 -251
  375. package/deps/liburing/liburing/test/accept-reuse.c +0 -164
  376. package/deps/liburing/liburing/test/accept-test.c +0 -79
  377. package/deps/liburing/liburing/test/accept.c +0 -476
  378. package/deps/liburing/liburing/test/across-fork.c +0 -283
  379. package/deps/liburing/liburing/test/b19062a56726-test.c +0 -53
  380. package/deps/liburing/liburing/test/b5837bd5311d-test.c +0 -77
  381. package/deps/liburing/liburing/test/ce593a6c480a-test.c +0 -135
  382. package/deps/liburing/liburing/test/close-opath.c +0 -122
  383. package/deps/liburing/liburing/test/config +0 -10
  384. package/deps/liburing/liburing/test/connect.c +0 -398
  385. package/deps/liburing/liburing/test/cq-full.c +0 -96
  386. package/deps/liburing/liburing/test/cq-overflow.c +0 -294
  387. package/deps/liburing/liburing/test/cq-peek-batch.c +0 -102
  388. package/deps/liburing/liburing/test/cq-ready.c +0 -94
  389. package/deps/liburing/liburing/test/cq-size.c +0 -58
  390. package/deps/liburing/liburing/test/d4ae271dfaae-test.c +0 -96
  391. package/deps/liburing/liburing/test/d77a67ed5f27-test.c +0 -65
  392. package/deps/liburing/liburing/test/defer.c +0 -307
  393. package/deps/liburing/liburing/test/double-poll-crash.c +0 -186
  394. package/deps/liburing/liburing/test/eeed8b54e0df-test.c +0 -114
  395. package/deps/liburing/liburing/test/empty-eownerdead.c +0 -42
  396. package/deps/liburing/liburing/test/eventfd-disable.c +0 -151
  397. package/deps/liburing/liburing/test/eventfd-ring.c +0 -97
  398. package/deps/liburing/liburing/test/eventfd.c +0 -112
  399. package/deps/liburing/liburing/test/fadvise.c +0 -202
  400. package/deps/liburing/liburing/test/fallocate.c +0 -249
  401. package/deps/liburing/liburing/test/fc2a85cb02ef-test.c +0 -138
  402. package/deps/liburing/liburing/test/file-register.c +0 -843
  403. package/deps/liburing/liburing/test/file-update.c +0 -173
  404. package/deps/liburing/liburing/test/files-exit-hang-poll.c +0 -128
  405. package/deps/liburing/liburing/test/files-exit-hang-timeout.c +0 -134
  406. package/deps/liburing/liburing/test/fixed-link.c +0 -90
  407. package/deps/liburing/liburing/test/fsync.c +0 -224
  408. package/deps/liburing/liburing/test/hardlink.c +0 -136
  409. package/deps/liburing/liburing/test/helpers.c +0 -135
  410. package/deps/liburing/liburing/test/helpers.h +0 -67
  411. package/deps/liburing/liburing/test/io-cancel.c +0 -537
  412. package/deps/liburing/liburing/test/io_uring_enter.c +0 -296
  413. package/deps/liburing/liburing/test/io_uring_register.c +0 -664
  414. package/deps/liburing/liburing/test/io_uring_setup.c +0 -192
  415. package/deps/liburing/liburing/test/iopoll.c +0 -366
  416. package/deps/liburing/liburing/test/lfs-openat-write.c +0 -117
  417. package/deps/liburing/liburing/test/lfs-openat.c +0 -273
  418. package/deps/liburing/liburing/test/link-timeout.c +0 -1107
  419. package/deps/liburing/liburing/test/link.c +0 -496
  420. package/deps/liburing/liburing/test/link_drain.c +0 -229
  421. package/deps/liburing/liburing/test/madvise.c +0 -195
  422. package/deps/liburing/liburing/test/mkdir.c +0 -108
  423. package/deps/liburing/liburing/test/multicqes_drain.c +0 -383
  424. package/deps/liburing/liburing/test/nop-all-sizes.c +0 -107
  425. package/deps/liburing/liburing/test/nop.c +0 -115
  426. package/deps/liburing/liburing/test/open-close.c +0 -146
  427. package/deps/liburing/liburing/test/openat2.c +0 -240
  428. package/deps/liburing/liburing/test/personality.c +0 -204
  429. package/deps/liburing/liburing/test/pipe-eof.c +0 -81
  430. package/deps/liburing/liburing/test/pipe-reuse.c +0 -105
  431. package/deps/liburing/liburing/test/poll-cancel-ton.c +0 -139
  432. package/deps/liburing/liburing/test/poll-cancel.c +0 -135
  433. package/deps/liburing/liburing/test/poll-link.c +0 -227
  434. package/deps/liburing/liburing/test/poll-many.c +0 -208
  435. package/deps/liburing/liburing/test/poll-mshot-update.c +0 -273
  436. package/deps/liburing/liburing/test/poll-ring.c +0 -48
  437. package/deps/liburing/liburing/test/poll-v-poll.c +0 -353
  438. package/deps/liburing/liburing/test/poll.c +0 -109
  439. package/deps/liburing/liburing/test/probe.c +0 -137
  440. package/deps/liburing/liburing/test/read-write.c +0 -876
  441. package/deps/liburing/liburing/test/register-restrictions.c +0 -633
  442. package/deps/liburing/liburing/test/rename.c +0 -134
  443. package/deps/liburing/liburing/test/ring-leak.c +0 -173
  444. package/deps/liburing/liburing/test/ring-leak2.c +0 -249
  445. package/deps/liburing/liburing/test/rsrc_tags.c +0 -449
  446. package/deps/liburing/liburing/test/runtests-loop.sh +0 -16
  447. package/deps/liburing/liburing/test/runtests.sh +0 -170
  448. package/deps/liburing/liburing/test/rw_merge_test.c +0 -97
  449. package/deps/liburing/liburing/test/self.c +0 -91
  450. package/deps/liburing/liburing/test/send_recv.c +0 -291
  451. package/deps/liburing/liburing/test/send_recvmsg.c +0 -345
  452. package/deps/liburing/liburing/test/sendmsg_fs_cve.c +0 -198
  453. package/deps/liburing/liburing/test/shared-wq.c +0 -84
  454. package/deps/liburing/liburing/test/short-read.c +0 -75
  455. package/deps/liburing/liburing/test/shutdown.c +0 -163
  456. package/deps/liburing/liburing/test/sigfd-deadlock.c +0 -74
  457. package/deps/liburing/liburing/test/socket-rw-eagain.c +0 -156
  458. package/deps/liburing/liburing/test/socket-rw.c +0 -147
  459. package/deps/liburing/liburing/test/splice.c +0 -511
  460. package/deps/liburing/liburing/test/sq-full-cpp.cc +0 -45
  461. package/deps/liburing/liburing/test/sq-full.c +0 -45
  462. package/deps/liburing/liburing/test/sq-poll-dup.c +0 -200
  463. package/deps/liburing/liburing/test/sq-poll-kthread.c +0 -168
  464. package/deps/liburing/liburing/test/sq-poll-share.c +0 -137
  465. package/deps/liburing/liburing/test/sq-space_left.c +0 -159
  466. package/deps/liburing/liburing/test/sqpoll-cancel-hang.c +0 -159
  467. package/deps/liburing/liburing/test/sqpoll-disable-exit.c +0 -195
  468. package/deps/liburing/liburing/test/sqpoll-exit-hang.c +0 -77
  469. package/deps/liburing/liburing/test/sqpoll-sleep.c +0 -68
  470. package/deps/liburing/liburing/test/statx.c +0 -172
  471. package/deps/liburing/liburing/test/stdout.c +0 -232
  472. package/deps/liburing/liburing/test/submit-link-fail.c +0 -154
  473. package/deps/liburing/liburing/test/submit-reuse.c +0 -239
  474. package/deps/liburing/liburing/test/symlink.c +0 -116
  475. package/deps/liburing/liburing/test/teardowns.c +0 -58
  476. package/deps/liburing/liburing/test/thread-exit.c +0 -131
  477. package/deps/liburing/liburing/test/timeout-new.c +0 -246
  478. package/deps/liburing/liburing/test/timeout-overflow.c +0 -204
  479. package/deps/liburing/liburing/test/timeout.c +0 -1354
  480. package/deps/liburing/liburing/test/unlink.c +0 -111
  481. package/deps/liburing/liburing/test/wakeup-hang.c +0 -162
  482. package/deps/rocksdb/rocksdb/README.md +0 -32
  483. package/deps/rocksdb/rocksdb/microbench/README.md +0 -60
  484. package/deps/rocksdb/rocksdb/plugin/README.md +0 -43
  485. package/deps/rocksdb/rocksdb/port/README +0 -10
  486. package/deps/rocksdb/rocksdb/python.mk +0 -9
  487. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/README +0 -13
  488. package/prebuilds/linux-arm64/node.napi.node +0 -0
@@ -228,6 +228,10 @@ static std::unordered_map<std::string, OptionTypeInfo>
228
228
  track_and_verify_wals_in_manifest),
229
229
  OptionType::kBoolean, OptionVerificationType::kNormal,
230
230
  OptionTypeFlags::kNone}},
231
+ {"verify_sst_unique_id_in_manifest",
232
+ {offsetof(struct ImmutableDBOptions, verify_sst_unique_id_in_manifest),
233
+ OptionType::kBoolean, OptionVerificationType::kNormal,
234
+ OptionTypeFlags::kNone}},
231
235
  {"skip_log_error_on_recovery",
232
236
  {0, OptionType::kBoolean, OptionVerificationType::kDeprecated,
233
237
  OptionTypeFlags::kNone}},
@@ -439,22 +443,36 @@ static std::unordered_map<std::string, OptionTypeInfo>
439
443
  static_cast<int64_t>(ParseUint64(value))));
440
444
  return Status::OK();
441
445
  }}},
442
- {"env",
443
- {offsetof(struct ImmutableDBOptions, env), OptionType::kUnknown,
444
- OptionVerificationType::kNormal,
445
- (OptionTypeFlags::kDontSerialize | OptionTypeFlags::kCompareNever),
446
- // Parse the input value as an Env
447
- [](const ConfigOptions& opts, const std::string& /*name*/,
448
- const std::string& value, void* addr) {
449
- auto old_env = static_cast<Env**>(addr); // Get the old value
450
- Env* new_env = *old_env; // Set new to old
451
- Status s = Env::CreateFromString(opts, value,
452
- &new_env); // Update new value
453
- if (s.ok()) { // It worked
454
- *old_env = new_env; // Update the old one
455
- }
456
- return s;
457
- }}},
446
+ {"env", //**TODO: Should this be kCustomizable?
447
+ OptionTypeInfo(
448
+ offsetof(struct ImmutableDBOptions, env), OptionType::kUnknown,
449
+ OptionVerificationType::kNormal,
450
+ (OptionTypeFlags::kDontSerialize | OptionTypeFlags::kCompareNever))
451
+ .SetParseFunc([](const ConfigOptions& opts,
452
+ const std::string& /*name*/,
453
+ const std::string& value, void* addr) {
454
+ // Parse the input value as an Env
455
+ auto old_env = static_cast<Env**>(addr); // Get the old value
456
+ Env* new_env = *old_env; // Set new to old
457
+ Status s = Env::CreateFromString(opts, value,
458
+ &new_env); // Update new value
459
+ if (s.ok()) { // It worked
460
+ *old_env = new_env; // Update the old one
461
+ }
462
+ return s;
463
+ })
464
+ .SetPrepareFunc([](const ConfigOptions& opts,
465
+ const std::string& /*name*/, void* addr) {
466
+ auto env = static_cast<Env**>(addr);
467
+ return (*env)->PrepareOptions(opts);
468
+ })
469
+ .SetValidateFunc([](const DBOptions& db_opts,
470
+ const ColumnFamilyOptions& cf_opts,
471
+ const std::string& /*name*/,
472
+ const void* addr) {
473
+ const auto env = static_cast<const Env* const*>(addr);
474
+ return (*env)->ValidateOptions(db_opts, cf_opts);
475
+ })},
458
476
  {"allow_data_in_errors",
459
477
  {offsetof(struct ImmutableDBOptions, allow_data_in_errors),
460
478
  OptionType::kBoolean, OptionVerificationType::kNormal,
@@ -538,6 +556,10 @@ static std::unordered_map<std::string, OptionTypeInfo>
538
556
  OptionTypeInfo::Enum<CacheTier>(
539
557
  offsetof(struct ImmutableDBOptions, lowest_used_cache_tier),
540
558
  &cache_tier_string_map, OptionTypeFlags::kNone)},
559
+ {"enforce_single_del_contracts",
560
+ {offsetof(struct ImmutableDBOptions, enforce_single_del_contracts),
561
+ OptionType::kBoolean, OptionVerificationType::kNormal,
562
+ OptionTypeFlags::kNone}},
541
563
  };
542
564
 
543
565
  const std::string OptionsHelper::kDBOptionsName = "DBOptions";
@@ -662,6 +684,8 @@ ImmutableDBOptions::ImmutableDBOptions(const DBOptions& options)
662
684
  flush_verify_memtable_count(options.flush_verify_memtable_count),
663
685
  track_and_verify_wals_in_manifest(
664
686
  options.track_and_verify_wals_in_manifest),
687
+ verify_sst_unique_id_in_manifest(
688
+ options.verify_sst_unique_id_in_manifest),
665
689
  env(options.env),
666
690
  rate_limiter(options.rate_limiter),
667
691
  sst_file_manager(options.sst_file_manager),
@@ -736,7 +760,8 @@ ImmutableDBOptions::ImmutableDBOptions(const DBOptions& options)
736
760
  db_host_id(options.db_host_id),
737
761
  checksum_handoff_file_types(options.checksum_handoff_file_types),
738
762
  lowest_used_cache_tier(options.lowest_used_cache_tier),
739
- compaction_service(options.compaction_service) {
763
+ compaction_service(options.compaction_service),
764
+ enforce_single_del_contracts(options.enforce_single_del_contracts) {
740
765
  fs = env->GetFileSystem();
741
766
  clock = env->GetSystemClock().get();
742
767
  logger = info_log.get();
@@ -756,6 +781,8 @@ void ImmutableDBOptions::Dump(Logger* log) const {
756
781
  " "
757
782
  "Options.track_and_verify_wals_in_manifest: %d",
758
783
  track_and_verify_wals_in_manifest);
784
+ ROCKS_LOG_HEADER(log, " Options.verify_sst_unique_id_in_manifest: %d",
785
+ verify_sst_unique_id_in_manifest);
759
786
  ROCKS_LOG_HEADER(log, " Options.env: %p",
760
787
  env);
761
788
  ROCKS_LOG_HEADER(log, " Options.fs: %s",
@@ -907,6 +934,8 @@ void ImmutableDBOptions::Dump(Logger* log) const {
907
934
  allow_data_in_errors);
908
935
  ROCKS_LOG_HEADER(log, " Options.db_host_id: %s",
909
936
  db_host_id.c_str());
937
+ ROCKS_LOG_HEADER(log, " Options.enforce_single_del_contracts: %s",
938
+ enforce_single_del_contracts ? "true" : "false");
910
939
  }
911
940
 
912
941
  bool ImmutableDBOptions::IsWalDirSameAsDBPath() const {
@@ -26,6 +26,7 @@ struct ImmutableDBOptions {
26
26
  bool paranoid_checks;
27
27
  bool flush_verify_memtable_count;
28
28
  bool track_and_verify_wals_in_manifest;
29
+ bool verify_sst_unique_id_in_manifest;
29
30
  Env* env;
30
31
  std::shared_ptr<RateLimiter> rate_limiter;
31
32
  std::shared_ptr<SstFileManager> sst_file_manager;
@@ -105,6 +106,7 @@ struct ImmutableDBOptions {
105
106
  Statistics* stats;
106
107
  Logger* logger;
107
108
  std::shared_ptr<CompactionService> compaction_service;
109
+ bool enforce_single_del_contracts;
108
110
 
109
111
  bool IsWalDirSameAsDBPath() const;
110
112
  bool IsWalDirSameAsDBPath(const std::string& path) const;
@@ -211,6 +211,10 @@ void ColumnFamilyOptions::Dump(Logger* log) const {
211
211
  " Options.bottommost_compression_opts.max_dict_buffer_bytes: "
212
212
  "%" PRIu64,
213
213
  bottommost_compression_opts.max_dict_buffer_bytes);
214
+ ROCKS_LOG_HEADER(
215
+ log,
216
+ " Options.bottommost_compression_opts.use_zstd_dict_trainer: %s",
217
+ bottommost_compression_opts.use_zstd_dict_trainer ? "true" : "false");
214
218
  ROCKS_LOG_HEADER(log, " Options.compression_opts.window_bits: %d",
215
219
  compression_opts.window_bits);
216
220
  ROCKS_LOG_HEADER(log, " Options.compression_opts.level: %d",
@@ -225,6 +229,9 @@ void ColumnFamilyOptions::Dump(Logger* log) const {
225
229
  " Options.compression_opts.zstd_max_train_bytes: "
226
230
  "%" PRIu32,
227
231
  compression_opts.zstd_max_train_bytes);
232
+ ROCKS_LOG_HEADER(
233
+ log, " Options.compression_opts.use_zstd_dict_trainer: %s",
234
+ compression_opts.use_zstd_dict_trainer ? "true" : "false");
228
235
  ROCKS_LOG_HEADER(log,
229
236
  " Options.compression_opts.parallel_threads: "
230
237
  "%" PRIu32,
@@ -70,6 +70,8 @@ DBOptions BuildDBOptions(const ImmutableDBOptions& immutable_db_options,
70
70
  immutable_db_options.flush_verify_memtable_count;
71
71
  options.track_and_verify_wals_in_manifest =
72
72
  immutable_db_options.track_and_verify_wals_in_manifest;
73
+ options.verify_sst_unique_id_in_manifest =
74
+ immutable_db_options.verify_sst_unique_id_in_manifest;
73
75
  options.env = immutable_db_options.env;
74
76
  options.rate_limiter = immutable_db_options.rate_limiter;
75
77
  options.sst_file_manager = immutable_db_options.sst_file_manager;
@@ -182,6 +184,8 @@ DBOptions BuildDBOptions(const ImmutableDBOptions& immutable_db_options,
182
184
  options.checksum_handoff_file_types =
183
185
  immutable_db_options.checksum_handoff_file_types;
184
186
  options.lowest_used_cache_tier = immutable_db_options.lowest_used_cache_tier;
187
+ options.enforce_single_del_contracts =
188
+ immutable_db_options.enforce_single_del_contracts;
185
189
  return options;
186
190
  }
187
191
 
@@ -463,43 +467,43 @@ bool SerializeSingleOptionHelper(const void* opt_address,
463
467
  *value = *(static_cast<const bool*>(opt_address)) ? "true" : "false";
464
468
  break;
465
469
  case OptionType::kInt:
466
- *value = ToString(*(static_cast<const int*>(opt_address)));
470
+ *value = std::to_string(*(static_cast<const int*>(opt_address)));
467
471
  break;
468
472
  case OptionType::kInt32T:
469
- *value = ToString(*(static_cast<const int32_t*>(opt_address)));
473
+ *value = std::to_string(*(static_cast<const int32_t*>(opt_address)));
470
474
  break;
471
475
  case OptionType::kInt64T:
472
476
  {
473
477
  int64_t v;
474
478
  GetUnaligned(static_cast<const int64_t*>(opt_address), &v);
475
- *value = ToString(v);
479
+ *value = std::to_string(v);
476
480
  }
477
481
  break;
478
482
  case OptionType::kUInt:
479
- *value = ToString(*(static_cast<const unsigned int*>(opt_address)));
483
+ *value = std::to_string(*(static_cast<const unsigned int*>(opt_address)));
480
484
  break;
481
485
  case OptionType::kUInt8T:
482
- *value = ToString(*(static_cast<const uint8_t*>(opt_address)));
486
+ *value = std::to_string(*(static_cast<const uint8_t*>(opt_address)));
483
487
  break;
484
488
  case OptionType::kUInt32T:
485
- *value = ToString(*(static_cast<const uint32_t*>(opt_address)));
489
+ *value = std::to_string(*(static_cast<const uint32_t*>(opt_address)));
486
490
  break;
487
491
  case OptionType::kUInt64T:
488
492
  {
489
493
  uint64_t v;
490
494
  GetUnaligned(static_cast<const uint64_t*>(opt_address), &v);
491
- *value = ToString(v);
495
+ *value = std::to_string(v);
492
496
  }
493
497
  break;
494
498
  case OptionType::kSizeT:
495
499
  {
496
500
  size_t v;
497
501
  GetUnaligned(static_cast<const size_t*>(opt_address), &v);
498
- *value = ToString(v);
502
+ *value = std::to_string(v);
499
503
  }
500
504
  break;
501
505
  case OptionType::kDouble:
502
- *value = ToString(*(static_cast<const double*>(opt_address)));
506
+ *value = std::to_string(*(static_cast<const double*>(opt_address)));
503
507
  break;
504
508
  case OptionType::kString:
505
509
  *value =
@@ -898,18 +902,18 @@ Status OptionTypeInfo::Parse(const ConfigOptions& config_options,
898
902
  return Status::OK();
899
903
  }
900
904
  try {
901
- void* opt_addr = static_cast<char*>(opt_ptr) + offset_;
902
905
  const std::string& opt_value = config_options.input_strings_escaped
903
906
  ? UnescapeOptionString(value)
904
907
  : value;
905
908
 
906
- if (opt_addr == nullptr) {
909
+ if (opt_ptr == nullptr) {
907
910
  return Status::NotFound("Could not find option", opt_name);
908
911
  } else if (parse_func_ != nullptr) {
909
912
  ConfigOptions copy = config_options;
910
913
  copy.invoke_prepare_options = false;
914
+ void* opt_addr = GetOffset(opt_ptr);
911
915
  return parse_func_(copy, opt_name, opt_value, opt_addr);
912
- } else if (ParseOptionHelper(opt_addr, type_, opt_value)) {
916
+ } else if (ParseOptionHelper(GetOffset(opt_ptr), type_, opt_value)) {
913
917
  return Status::OK();
914
918
  } else if (IsConfigurable()) {
915
919
  // The option is <config>.<name>
@@ -1021,12 +1025,12 @@ Status OptionTypeInfo::Serialize(const ConfigOptions& config_options,
1021
1025
  std::string* opt_value) const {
1022
1026
  // If the option is no longer used in rocksdb and marked as deprecated,
1023
1027
  // we skip it in the serialization.
1024
- const void* opt_addr = static_cast<const char*>(opt_ptr) + offset_;
1025
- if (opt_addr == nullptr || IsDeprecated()) {
1028
+ if (opt_ptr == nullptr || IsDeprecated()) {
1026
1029
  return Status::OK();
1027
1030
  } else if (IsEnabled(OptionTypeFlags::kDontSerialize)) {
1028
1031
  return Status::NotSupported("Cannot serialize option: ", opt_name);
1029
1032
  } else if (serialize_func_ != nullptr) {
1033
+ const void* opt_addr = GetOffset(opt_ptr);
1030
1034
  return serialize_func_(config_options, opt_name, opt_addr, opt_value);
1031
1035
  } else if (IsCustomizable()) {
1032
1036
  const Customizable* custom = AsRawPointer<Customizable>(opt_ptr);
@@ -1074,7 +1078,8 @@ Status OptionTypeInfo::Serialize(const ConfigOptions& config_options,
1074
1078
  return Status::OK();
1075
1079
  } else if (config_options.mutable_options_only && !IsMutable()) {
1076
1080
  return Status::OK();
1077
- } else if (SerializeSingleOptionHelper(opt_addr, type_, opt_value)) {
1081
+ } else if (SerializeSingleOptionHelper(GetOffset(opt_ptr), type_,
1082
+ opt_value)) {
1078
1083
  return Status::OK();
1079
1084
  } else {
1080
1085
  return Status::InvalidArgument("Cannot serialize option: ", opt_name);
@@ -1223,39 +1228,43 @@ bool OptionTypeInfo::AreEqual(const ConfigOptions& config_options,
1223
1228
  if (!config_options.IsCheckEnabled(level)) {
1224
1229
  return true; // If the sanity level is not being checked, skip it
1225
1230
  }
1226
- const void* this_addr = static_cast<const char*>(this_ptr) + offset_;
1227
- const void* that_addr = static_cast<const char*>(that_ptr) + offset_;
1228
- if (this_addr == nullptr || that_addr == nullptr) {
1229
- if (this_addr == that_addr) {
1231
+ if (this_ptr == nullptr || that_ptr == nullptr) {
1232
+ if (this_ptr == that_ptr) {
1230
1233
  return true;
1231
1234
  }
1232
1235
  } else if (equals_func_ != nullptr) {
1236
+ const void* this_addr = GetOffset(this_ptr);
1237
+ const void* that_addr = GetOffset(that_ptr);
1233
1238
  if (equals_func_(config_options, opt_name, this_addr, that_addr,
1234
1239
  mismatch)) {
1235
1240
  return true;
1236
1241
  }
1237
- } else if (AreOptionsEqual(type_, this_addr, that_addr)) {
1238
- return true;
1239
- } else if (IsConfigurable()) {
1240
- const auto* this_config = AsRawPointer<Configurable>(this_ptr);
1241
- const auto* that_config = AsRawPointer<Configurable>(that_ptr);
1242
- if (this_config == that_config) {
1242
+ } else {
1243
+ const void* this_addr = GetOffset(this_ptr);
1244
+ const void* that_addr = GetOffset(that_ptr);
1245
+ if (AreOptionsEqual(type_, this_addr, that_addr)) {
1243
1246
  return true;
1244
- } else if (this_config != nullptr && that_config != nullptr) {
1245
- std::string bad_name;
1246
- bool matches;
1247
- if (level < config_options.sanity_level) {
1248
- ConfigOptions copy = config_options;
1249
- copy.sanity_level = level;
1250
- matches = this_config->AreEquivalent(copy, that_config, &bad_name);
1251
- } else {
1252
- matches =
1253
- this_config->AreEquivalent(config_options, that_config, &bad_name);
1254
- }
1255
- if (!matches) {
1256
- *mismatch = opt_name + "." + bad_name;
1247
+ } else if (IsConfigurable()) {
1248
+ const auto* this_config = AsRawPointer<Configurable>(this_ptr);
1249
+ const auto* that_config = AsRawPointer<Configurable>(that_ptr);
1250
+ if (this_config == that_config) {
1251
+ return true;
1252
+ } else if (this_config != nullptr && that_config != nullptr) {
1253
+ std::string bad_name;
1254
+ bool matches;
1255
+ if (level < config_options.sanity_level) {
1256
+ ConfigOptions copy = config_options;
1257
+ copy.sanity_level = level;
1258
+ matches = this_config->AreEquivalent(copy, that_config, &bad_name);
1259
+ } else {
1260
+ matches = this_config->AreEquivalent(config_options, that_config,
1261
+ &bad_name);
1262
+ }
1263
+ if (!matches) {
1264
+ *mismatch = opt_name + "." + bad_name;
1265
+ }
1266
+ return matches;
1257
1267
  }
1258
- return matches;
1259
1268
  }
1260
1269
  }
1261
1270
  if (mismatch->empty()) {
@@ -1379,6 +1388,44 @@ bool OptionTypeInfo::AreEqualByName(const ConfigOptions& config_options,
1379
1388
  return (this_value == that_value);
1380
1389
  }
1381
1390
 
1391
+ Status OptionTypeInfo::Prepare(const ConfigOptions& config_options,
1392
+ const std::string& name, void* opt_ptr) const {
1393
+ if (ShouldPrepare()) {
1394
+ if (prepare_func_ != nullptr) {
1395
+ void* opt_addr = GetOffset(opt_ptr);
1396
+ return prepare_func_(config_options, name, opt_addr);
1397
+ } else if (IsConfigurable()) {
1398
+ Configurable* config = AsRawPointer<Configurable>(opt_ptr);
1399
+ if (config != nullptr) {
1400
+ return config->PrepareOptions(config_options);
1401
+ } else if (!CanBeNull()) {
1402
+ return Status::NotFound("Missing configurable object", name);
1403
+ }
1404
+ }
1405
+ }
1406
+ return Status::OK();
1407
+ }
1408
+
1409
+ Status OptionTypeInfo::Validate(const DBOptions& db_opts,
1410
+ const ColumnFamilyOptions& cf_opts,
1411
+ const std::string& name,
1412
+ const void* opt_ptr) const {
1413
+ if (ShouldValidate()) {
1414
+ if (validate_func_ != nullptr) {
1415
+ const void* opt_addr = GetOffset(opt_ptr);
1416
+ return validate_func_(db_opts, cf_opts, name, opt_addr);
1417
+ } else if (IsConfigurable()) {
1418
+ const Configurable* config = AsRawPointer<Configurable>(opt_ptr);
1419
+ if (config != nullptr) {
1420
+ return config->ValidateOptions(db_opts, cf_opts);
1421
+ } else if (!CanBeNull()) {
1422
+ return Status::NotFound("Missing configurable object", name);
1423
+ }
1424
+ }
1425
+ }
1426
+ return Status::OK();
1427
+ }
1428
+
1382
1429
  const OptionTypeInfo* OptionTypeInfo::Find(
1383
1430
  const std::string& opt_name,
1384
1431
  const std::unordered_map<std::string, OptionTypeInfo>& opt_map,
@@ -79,16 +79,16 @@ Status PersistRocksDBOptions(const ConfigOptions& config_options_in,
79
79
 
80
80
  std::string options_file_content;
81
81
 
82
- s = writable->Append(option_file_header + "[" +
83
- opt_section_titles[kOptionSectionVersion] +
84
- "]\n"
85
- " rocksdb_version=" +
86
- ToString(ROCKSDB_MAJOR) + "." + ToString(ROCKSDB_MINOR) +
87
- "." + ToString(ROCKSDB_PATCH) + "\n");
82
+ s = writable->Append(
83
+ option_file_header + "[" + opt_section_titles[kOptionSectionVersion] +
84
+ "]\n"
85
+ " rocksdb_version=" +
86
+ std::to_string(ROCKSDB_MAJOR) + "." + std::to_string(ROCKSDB_MINOR) +
87
+ "." + std::to_string(ROCKSDB_PATCH) + "\n");
88
88
  if (s.ok()) {
89
89
  s = writable->Append(
90
- " options_file_version=" + ToString(ROCKSDB_OPTION_FILE_MAJOR) + "." +
91
- ToString(ROCKSDB_OPTION_FILE_MINOR) + "\n");
90
+ " options_file_version=" + std::to_string(ROCKSDB_OPTION_FILE_MAJOR) +
91
+ "." + std::to_string(ROCKSDB_OPTION_FILE_MINOR) + "\n");
92
92
  }
93
93
  if (s.ok()) {
94
94
  s = writable->Append("\n[" + opt_section_titles[kOptionSectionDBOptions] +
@@ -216,7 +216,7 @@ Status RocksDBOptionsParser::InvalidArgument(const int line_num,
216
216
  const std::string& message) {
217
217
  return Status::InvalidArgument(
218
218
  "[RocksDBOptionsParser Error] ",
219
- message + " (at line " + ToString(line_num) + ")");
219
+ message + " (at line " + std::to_string(line_num) + ")");
220
220
  }
221
221
 
222
222
  Status RocksDBOptionsParser::ParseStatement(std::string* name,
@@ -590,7 +590,7 @@ Status RocksDBOptionsParser::VerifyRocksDBOptionsFromFile(
590
590
  return Status::InvalidArgument(
591
591
  "[RocksDBOptionParser Error] The persisted options and the db"
592
592
  "instance does not have the same name for column family ",
593
- ToString(i));
593
+ std::to_string(i));
594
594
  }
595
595
  }
596
596
 
@@ -34,6 +34,7 @@ namespace ROCKSDB_NAMESPACE {
34
34
  #ifndef ROCKSDB_LITE
35
35
  #if defined OS_LINUX || defined OS_WIN
36
36
  #ifndef __clang__
37
+ #ifndef ROCKSDB_UBSAN_RUN
37
38
 
38
39
  class OptionsSettableTest : public testing::Test {
39
40
  public:
@@ -116,7 +117,8 @@ bool CompareBytes(char* start_ptr1, char* start_ptr2, size_t total_size,
116
117
  // kBbtoExcluded, and maybe add customized verification for it.
117
118
  TEST_F(OptionsSettableTest, BlockBasedTableOptionsAllFieldsSettable) {
118
119
  // Items in the form of <offset, size>. Need to be in ascending order
119
- // and not overlapping. Need to updated if new pointer-option is added.
120
+ // and not overlapping. Need to update if new option to be excluded is added
121
+ // (e.g, pointer-type)
120
122
  const OffsetGap kBbtoExcluded = {
121
123
  {offsetof(struct BlockBasedTableOptions, flush_block_policy_factory),
122
124
  sizeof(std::shared_ptr<FlushBlockPolicyFactory>)},
@@ -126,6 +128,8 @@ TEST_F(OptionsSettableTest, BlockBasedTableOptionsAllFieldsSettable) {
126
128
  sizeof(std::shared_ptr<PersistentCache>)},
127
129
  {offsetof(struct BlockBasedTableOptions, block_cache_compressed),
128
130
  sizeof(std::shared_ptr<Cache>)},
131
+ {offsetof(struct BlockBasedTableOptions, cache_usage_options),
132
+ sizeof(CacheUsageOptions)},
129
133
  {offsetof(struct BlockBasedTableOptions, filter_policy),
130
134
  sizeof(std::shared_ptr<const FilterPolicy>)},
131
135
  };
@@ -188,8 +192,6 @@ TEST_F(OptionsSettableTest, BlockBasedTableOptionsAllFieldsSettable) {
188
192
  "index_block_restart_interval=4;"
189
193
  "filter_policy=bloomfilter:4:true;whole_key_filtering=1;detect_filter_"
190
194
  "construct_corruption=false;"
191
- "reserve_table_builder_memory=false;"
192
- "reserve_table_reader_memory=false;"
193
195
  "format_version=1;"
194
196
  "verify_compression=true;read_amp_bytes_per_bit=0;"
195
197
  "enable_index_compression=false;"
@@ -302,6 +304,7 @@ TEST_F(OptionsSettableTest, DBOptionsAllFieldsSettable) {
302
304
  "paranoid_checks=true;"
303
305
  "flush_verify_memtable_count=true;"
304
306
  "track_and_verify_wals_in_manifest=true;"
307
+ "verify_sst_unique_id_in_manifest=true;"
305
308
  "is_fd_close_on_exec=false;"
306
309
  "bytes_per_sync=4295013613;"
307
310
  "strict_bytes_per_sync=true;"
@@ -352,10 +355,11 @@ TEST_F(OptionsSettableTest, DBOptionsAllFieldsSettable) {
352
355
  "write_dbid_to_manifest=false;"
353
356
  "best_efforts_recovery=false;"
354
357
  "max_bgerror_resume_count=2;"
355
- "bgerror_resume_retry_interval=1000000"
358
+ "bgerror_resume_retry_interval=1000000;"
356
359
  "db_host_id=hostname;"
357
360
  "lowest_used_cache_tier=kNonVolatileBlockTier;"
358
- "allow_data_in_errors=false",
361
+ "allow_data_in_errors=false;"
362
+ "enforce_single_del_contracts=false;",
359
363
  new_options));
360
364
 
361
365
  ASSERT_EQ(unset_bytes_base, NumUnsetBytes(new_options_ptr, sizeof(DBOptions),
@@ -478,8 +482,8 @@ TEST_F(OptionsSettableTest, ColumnFamilyOptionsAllFieldsSettable) {
478
482
  "max_bytes_for_level_multiplier=60;"
479
483
  "memtable_factory=SkipListFactory;"
480
484
  "compression=kNoCompression;"
481
- "compression_opts=5:6:7:8:9:10:true:11;"
482
- "bottommost_compression_opts=4:5:6:7:8:9:true:10;"
485
+ "compression_opts=5:6:7:8:9:10:true:11:false;"
486
+ "bottommost_compression_opts=4:5:6:7:8:9:true:10:true;"
483
487
  "bottommost_compression=kDisableCompressionOption;"
484
488
  "level0_stop_writes_trigger=33;"
485
489
  "num_levels=99;"
@@ -581,6 +585,7 @@ TEST_F(OptionsSettableTest, ColumnFamilyOptionsAllFieldsSettable) {
581
585
  delete[] mcfo2_ptr;
582
586
  delete[] cfo_clean_ptr;
583
587
  }
588
+ #endif // !ROCKSDB_UBSAN_RUN
584
589
  #endif // !__clang__
585
590
  #endif // OS_LINUX || OS_WIN
586
591
  #endif // !ROCKSDB_LITE