@nxtedition/rocksdb 6.0.1 → 7.0.0-alpha.1

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 (490) hide show
  1. package/BUILDING.md +12 -4
  2. package/binding.cc +421 -40
  3. package/deps/rocksdb/build_version.cc +4 -10
  4. package/deps/rocksdb/rocksdb/CMakeLists.txt +26 -3
  5. package/deps/rocksdb/rocksdb/Makefile +73 -91
  6. package/deps/rocksdb/rocksdb/TARGETS +27 -2
  7. package/deps/rocksdb/rocksdb/cache/cache_test.cc +29 -17
  8. package/deps/rocksdb/rocksdb/cache/fast_lru_cache.cc +511 -0
  9. package/deps/rocksdb/rocksdb/cache/fast_lru_cache.h +299 -0
  10. package/deps/rocksdb/rocksdb/cache/lru_cache.cc +3 -0
  11. package/deps/rocksdb/rocksdb/cache/lru_cache.h +7 -0
  12. package/deps/rocksdb/rocksdb/cmake/modules/CxxFlags.cmake +7 -0
  13. package/deps/rocksdb/rocksdb/cmake/modules/FindJeMalloc.cmake +29 -0
  14. package/deps/rocksdb/rocksdb/cmake/modules/FindNUMA.cmake +29 -0
  15. package/deps/rocksdb/rocksdb/cmake/modules/FindSnappy.cmake +29 -0
  16. package/deps/rocksdb/rocksdb/cmake/modules/FindTBB.cmake +33 -0
  17. package/deps/rocksdb/rocksdb/cmake/modules/Findgflags.cmake +29 -0
  18. package/deps/rocksdb/rocksdb/cmake/modules/Findlz4.cmake +29 -0
  19. package/deps/rocksdb/rocksdb/cmake/modules/Finduring.cmake +26 -0
  20. package/deps/rocksdb/rocksdb/cmake/modules/Findzstd.cmake +29 -0
  21. package/deps/rocksdb/rocksdb/cmake/modules/ReadVersion.cmake +10 -0
  22. package/deps/rocksdb/rocksdb/common.mk +30 -0
  23. package/deps/rocksdb/rocksdb/crash_test.mk +3 -3
  24. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +1 -1
  25. package/deps/rocksdb/rocksdb/db/blob/blob_index.h +3 -3
  26. package/deps/rocksdb/rocksdb/db/blob/db_blob_index_test.cc +7 -7
  27. package/deps/rocksdb/rocksdb/db/builder.cc +22 -7
  28. package/deps/rocksdb/rocksdb/db/c.cc +71 -0
  29. package/deps/rocksdb/rocksdb/db/c_test.c +28 -2
  30. package/deps/rocksdb/rocksdb/db/column_family.cc +12 -5
  31. package/deps/rocksdb/rocksdb/db/column_family_test.cc +23 -22
  32. package/deps/rocksdb/rocksdb/db/compact_files_test.cc +11 -11
  33. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +2 -2
  34. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +36 -10
  35. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +4 -1
  36. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +3 -2
  37. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +54 -16
  38. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +14 -2
  39. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +3 -3
  40. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +85 -18
  41. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +7 -7
  42. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +1 -1
  43. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +23 -22
  44. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +1 -1
  45. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +151 -32
  46. package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +1 -1
  47. package/deps/rocksdb/rocksdb/db/convenience.cc +8 -6
  48. package/deps/rocksdb/rocksdb/db/corruption_test.cc +209 -38
  49. package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +2 -2
  50. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +404 -32
  51. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +28 -25
  52. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +85 -138
  53. package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +68 -3
  54. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +38 -13
  55. package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +1 -1
  56. package/deps/rocksdb/rocksdb/db/db_flush_test.cc +1 -1
  57. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +11 -20
  58. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +15 -1
  59. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +12 -9
  60. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +5 -4
  61. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +1 -1
  62. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +2 -2
  63. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +42 -10
  64. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +54 -23
  65. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +3 -0
  66. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +14 -4
  67. package/deps/rocksdb/rocksdb/db/db_info_dumper.cc +26 -18
  68. package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +8 -7
  69. package/deps/rocksdb/rocksdb/db/db_iter_test.cc +8 -8
  70. package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +6 -3
  71. package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +2 -2
  72. package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +6 -6
  73. package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +2 -2
  74. package/deps/rocksdb/rocksdb/db/db_options_test.cc +28 -12
  75. package/deps/rocksdb/rocksdb/db/db_properties_test.cc +16 -15
  76. package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +6 -4
  77. package/deps/rocksdb/rocksdb/db/db_readonly_with_timestamp_test.cc +331 -0
  78. package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +11 -6
  79. package/deps/rocksdb/rocksdb/db/db_sst_test.cc +68 -7
  80. package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +6 -5
  81. package/deps/rocksdb/rocksdb/db/db_test.cc +60 -42
  82. package/deps/rocksdb/rocksdb/db/db_test2.cc +244 -111
  83. package/deps/rocksdb/rocksdb/db/db_test_util.cc +101 -19
  84. package/deps/rocksdb/rocksdb/db/db_test_util.h +52 -2
  85. package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +1 -1
  86. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +7 -7
  87. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +5 -175
  88. package/deps/rocksdb/rocksdb/db/db_with_timestamp_test_util.cc +96 -0
  89. package/deps/rocksdb/rocksdb/db/db_with_timestamp_test_util.h +126 -0
  90. package/deps/rocksdb/rocksdb/db/db_write_test.cc +6 -6
  91. package/deps/rocksdb/rocksdb/db/dbformat.h +2 -1
  92. package/deps/rocksdb/rocksdb/db/deletefile_test.cc +1 -1
  93. package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +8 -8
  94. package/deps/rocksdb/rocksdb/db/experimental.cc +1 -1
  95. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +91 -12
  96. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +16 -2
  97. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +2 -0
  98. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +7 -7
  99. package/deps/rocksdb/rocksdb/db/file_indexer.h +1 -4
  100. package/deps/rocksdb/rocksdb/db/flush_job.cc +28 -15
  101. package/deps/rocksdb/rocksdb/db/flush_job.h +4 -0
  102. package/deps/rocksdb/rocksdb/db/flush_job_test.cc +98 -30
  103. package/deps/rocksdb/rocksdb/db/forward_iterator.cc +1 -1
  104. package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +14 -1
  105. package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +6 -0
  106. package/deps/rocksdb/rocksdb/db/internal_stats.cc +12 -12
  107. package/deps/rocksdb/rocksdb/db/listener_test.cc +4 -3
  108. package/deps/rocksdb/rocksdb/db/memtable.cc +2 -2
  109. package/deps/rocksdb/rocksdb/db/memtable_list.h +1 -1
  110. package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +37 -25
  111. package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +1 -1
  112. package/deps/rocksdb/rocksdb/db/perf_context_test.cc +18 -18
  113. package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +6 -6
  114. package/deps/rocksdb/rocksdb/db/prefix_test.cc +1 -1
  115. package/deps/rocksdb/rocksdb/db/repair.cc +13 -2
  116. package/deps/rocksdb/rocksdb/db/repair_test.cc +37 -15
  117. package/deps/rocksdb/rocksdb/db/snapshot_checker.h +1 -2
  118. package/deps/rocksdb/rocksdb/db/snapshot_impl.h +3 -1
  119. package/deps/rocksdb/rocksdb/db/table_cache.cc +20 -130
  120. package/deps/rocksdb/rocksdb/db/table_cache.h +3 -2
  121. package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +140 -0
  122. package/deps/rocksdb/rocksdb/db/version_builder.cc +1 -1
  123. package/deps/rocksdb/rocksdb/db/version_builder_test.cc +133 -133
  124. package/deps/rocksdb/rocksdb/db/version_edit.cc +22 -2
  125. package/deps/rocksdb/rocksdb/db/version_edit.h +13 -4
  126. package/deps/rocksdb/rocksdb/db/version_edit_test.cc +14 -14
  127. package/deps/rocksdb/rocksdb/db/version_set.cc +207 -214
  128. package/deps/rocksdb/rocksdb/db/version_set.h +14 -3
  129. package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +154 -0
  130. package/deps/rocksdb/rocksdb/db/version_set_test.cc +10 -9
  131. package/deps/rocksdb/rocksdb/db/wal_edit.h +2 -1
  132. package/deps/rocksdb/rocksdb/db/wal_manager.cc +2 -3
  133. package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +1 -1
  134. package/deps/rocksdb/rocksdb/db/write_batch.cc +178 -30
  135. package/deps/rocksdb/rocksdb/db/write_batch_test.cc +6 -6
  136. package/deps/rocksdb/rocksdb/db/write_controller.h +1 -1
  137. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +0 -2
  138. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +9 -6
  139. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compaction_filter.h +2 -1
  140. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +4 -3
  141. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +44 -6
  142. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.cc +4 -1
  143. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.cc +0 -10
  144. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +45 -42
  145. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +374 -275
  146. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +53 -3
  147. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +0 -12
  148. package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +13 -11
  149. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +276 -109
  150. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.h +63 -0
  151. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +45 -54
  152. package/deps/rocksdb/rocksdb/env/composite_env.cc +87 -14
  153. package/deps/rocksdb/rocksdb/env/env.cc +0 -60
  154. package/deps/rocksdb/rocksdb/env/env_encryption.cc +9 -0
  155. package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +1 -1
  156. package/deps/rocksdb/rocksdb/env/env_posix.cc +6 -5
  157. package/deps/rocksdb/rocksdb/env/env_test.cc +18 -5
  158. package/deps/rocksdb/rocksdb/env/fs_posix.cc +17 -12
  159. package/deps/rocksdb/rocksdb/env/io_posix.cc +39 -37
  160. package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +9 -9
  161. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +159 -65
  162. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +44 -22
  163. package/deps/rocksdb/rocksdb/file/file_util.h +2 -0
  164. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +142 -17
  165. package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +5 -2
  166. package/deps/rocksdb/rocksdb/file/sequence_file_reader.cc +7 -0
  167. package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +60 -40
  168. package/deps/rocksdb/rocksdb/file/writable_file_writer.h +1 -0
  169. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +23 -5
  170. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +49 -1
  171. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +5 -5
  172. package/deps/rocksdb/rocksdb/include/rocksdb/cleanable.h +59 -2
  173. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +1 -0
  174. package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +2 -1
  175. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +46 -44
  176. package/deps/rocksdb/rocksdb/include/rocksdb/env.h +1 -1
  177. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +2 -0
  178. package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +2 -4
  179. package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +3 -0
  180. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +45 -3
  181. package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +2 -0
  182. package/deps/rocksdb/rocksdb/include/rocksdb/snapshot.h +4 -1
  183. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +3 -0
  184. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +91 -40
  185. package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +1 -2
  186. package/deps/rocksdb/rocksdb/include/rocksdb/unique_id.h +22 -13
  187. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/customizable_util.h +9 -0
  188. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +4 -0
  189. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/object_registry.h +25 -0
  190. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +378 -103
  191. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +14 -0
  192. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
  193. package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +18 -4
  194. package/deps/rocksdb/rocksdb/memory/arena.h +1 -1
  195. package/deps/rocksdb/rocksdb/memory/concurrent_arena.cc +1 -5
  196. package/deps/rocksdb/rocksdb/memory/concurrent_arena.h +1 -5
  197. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +6 -8
  198. package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +1 -1
  199. package/deps/rocksdb/rocksdb/memtable/write_buffer_manager.cc +1 -1
  200. package/deps/rocksdb/rocksdb/memtable/write_buffer_manager_test.cc +5 -3
  201. package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +266 -45
  202. package/deps/rocksdb/rocksdb/monitoring/histogram.cc +2 -1
  203. package/deps/rocksdb/rocksdb/monitoring/iostats_context.cc +1 -4
  204. package/deps/rocksdb/rocksdb/monitoring/iostats_context_imp.h +4 -4
  205. package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +7 -8
  206. package/deps/rocksdb/rocksdb/monitoring/perf_context_imp.h +2 -2
  207. package/deps/rocksdb/rocksdb/monitoring/perf_level.cc +1 -5
  208. package/deps/rocksdb/rocksdb/monitoring/perf_level_imp.h +1 -5
  209. package/deps/rocksdb/rocksdb/monitoring/persistent_stats_history.cc +2 -2
  210. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +1 -1
  211. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.cc +2 -1
  212. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.h +1 -1
  213. package/deps/rocksdb/rocksdb/monitoring/thread_status_util.cc +3 -3
  214. package/deps/rocksdb/rocksdb/monitoring/thread_status_util.h +2 -2
  215. package/deps/rocksdb/rocksdb/options/cf_options.cc +47 -38
  216. package/deps/rocksdb/rocksdb/options/configurable.cc +9 -27
  217. package/deps/rocksdb/rocksdb/options/configurable_test.cc +1 -1
  218. package/deps/rocksdb/rocksdb/options/customizable.cc +3 -1
  219. package/deps/rocksdb/rocksdb/options/customizable_test.cc +379 -318
  220. package/deps/rocksdb/rocksdb/options/db_options.cc +46 -17
  221. package/deps/rocksdb/rocksdb/options/db_options.h +2 -0
  222. package/deps/rocksdb/rocksdb/options/options.cc +7 -0
  223. package/deps/rocksdb/rocksdb/options/options_helper.cc +86 -39
  224. package/deps/rocksdb/rocksdb/options/options_parser.cc +10 -10
  225. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +12 -7
  226. package/deps/rocksdb/rocksdb/options/options_test.cc +222 -68
  227. package/deps/rocksdb/rocksdb/port/port_posix.h +0 -15
  228. package/deps/rocksdb/rocksdb/port/win/env_win.cc +5 -4
  229. package/deps/rocksdb/rocksdb/port/win/env_win.h +2 -2
  230. package/deps/rocksdb/rocksdb/port/win/port_win.h +0 -31
  231. package/deps/rocksdb/rocksdb/rocksdb.pc.in +11 -0
  232. package/deps/rocksdb/rocksdb/src.mk +6 -1
  233. package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +2 -1
  234. package/deps/rocksdb/rocksdb/table/block_based/block.cc +4 -2
  235. package/deps/rocksdb/rocksdb/table/block_based/block.h +21 -25
  236. package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.cc +3 -4
  237. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +23 -8
  238. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +52 -15
  239. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +81 -7
  240. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +8 -2
  241. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +94 -726
  242. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +21 -15
  243. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +9 -3
  244. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +754 -0
  245. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +44 -73
  246. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +15 -5
  247. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +2 -1
  248. package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +2 -11
  249. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +59 -1
  250. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.h +18 -0
  251. package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +33 -17
  252. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +0 -61
  253. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +0 -13
  254. package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +2 -1
  255. package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +2 -2
  256. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +3 -2
  257. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +2 -1
  258. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +3 -2
  259. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +4 -3
  260. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +8 -4
  261. package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +4 -4
  262. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +2 -1
  263. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +65 -7
  264. package/deps/rocksdb/rocksdb/table/block_fetcher.h +2 -0
  265. package/deps/rocksdb/rocksdb/table/cleanable_test.cc +113 -0
  266. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +1 -1
  267. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.h +1 -1
  268. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +1 -1
  269. package/deps/rocksdb/rocksdb/table/format.cc +22 -20
  270. package/deps/rocksdb/rocksdb/table/iterator.cc +1 -81
  271. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +39 -0
  272. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +2 -2
  273. package/deps/rocksdb/rocksdb/table/multiget_context.h +60 -13
  274. package/deps/rocksdb/rocksdb/table/persistent_cache_options.h +0 -3
  275. package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.cc +12 -1
  276. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +4 -4
  277. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +2 -1
  278. package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +1 -1
  279. package/deps/rocksdb/rocksdb/table/sst_file_writer_collectors.h +1 -1
  280. package/deps/rocksdb/rocksdb/table/table_properties.cc +3 -5
  281. package/deps/rocksdb/rocksdb/table/table_reader.h +13 -0
  282. package/deps/rocksdb/rocksdb/table/table_test.cc +202 -78
  283. package/deps/rocksdb/rocksdb/table/unique_id.cc +84 -25
  284. package/deps/rocksdb/rocksdb/table/unique_id_impl.h +37 -4
  285. package/deps/rocksdb/rocksdb/test_util/testutil.cc +3 -1
  286. package/deps/rocksdb/rocksdb/test_util/testutil.h +11 -8
  287. package/deps/rocksdb/rocksdb/test_util/transaction_test_util.cc +8 -4
  288. package/deps/rocksdb/rocksdb/test_util/transaction_test_util.h +17 -0
  289. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.cc +11 -9
  290. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +3 -3
  291. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +277 -105
  292. package/deps/rocksdb/rocksdb/tools/db_sanity_test.cc +4 -4
  293. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +186 -42
  294. package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +75 -49
  295. package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +9 -8
  296. package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +4 -1
  297. package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +2 -2
  298. package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +26 -4
  299. package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +1 -1
  300. package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.h +1 -1
  301. package/deps/rocksdb/rocksdb/util/async_file_reader.cc +72 -0
  302. package/deps/rocksdb/rocksdb/util/async_file_reader.h +144 -0
  303. package/deps/rocksdb/rocksdb/util/autovector_test.cc +4 -4
  304. package/deps/rocksdb/rocksdb/util/bloom_test.cc +14 -8
  305. package/deps/rocksdb/rocksdb/util/build_version.cc.in +5 -6
  306. package/deps/rocksdb/rocksdb/util/cleanable.cc +180 -0
  307. package/deps/rocksdb/rocksdb/util/comparator.cc +5 -3
  308. package/deps/rocksdb/rocksdb/util/compression.h +56 -7
  309. package/deps/rocksdb/rocksdb/util/coro_utils.h +111 -0
  310. package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +148 -0
  311. package/deps/rocksdb/rocksdb/util/filelock_test.cc +2 -2
  312. package/deps/rocksdb/rocksdb/util/filter_bench.cc +12 -4
  313. package/deps/rocksdb/rocksdb/util/heap.h +5 -3
  314. package/deps/rocksdb/rocksdb/util/random.cc +1 -5
  315. package/deps/rocksdb/rocksdb/util/rate_limiter.cc +12 -9
  316. package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +1 -1
  317. package/deps/rocksdb/rocksdb/util/ribbon_alg.h +1 -1
  318. package/deps/rocksdb/rocksdb/util/ribbon_test.cc +2 -4
  319. package/deps/rocksdb/rocksdb/util/single_thread_executor.h +55 -0
  320. package/deps/rocksdb/rocksdb/util/slice.cc +8 -9
  321. package/deps/rocksdb/rocksdb/util/string_util.cc +3 -2
  322. package/deps/rocksdb/rocksdb/util/string_util.h +0 -13
  323. package/deps/rocksdb/rocksdb/util/thread_local.cc +4 -23
  324. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +99 -22
  325. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_impl.h +7 -0
  326. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +102 -59
  327. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +38 -36
  328. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +2 -2
  329. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +28 -0
  330. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +3 -0
  331. package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +1 -1
  332. package/deps/rocksdb/rocksdb/utilities/object_registry.cc +71 -0
  333. package/deps/rocksdb/rocksdb/utilities/object_registry_test.cc +71 -0
  334. package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +1 -1
  335. package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache_test.cc +5 -5
  336. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.cc +3 -3
  337. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_tracker.cc +0 -13
  338. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +40 -0
  339. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.cc +10 -8
  340. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.h +4 -2
  341. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +17 -0
  342. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc +7 -7
  343. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +8 -1
  344. package/deps/rocksdb/rocksdb/utilities/transactions/snapshot_checker.cc +5 -1
  345. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +21 -15
  346. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.cc +2 -2
  347. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +69 -11
  348. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +22 -9
  349. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +26 -5
  350. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.h +17 -4
  351. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +19 -16
  352. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +7 -3
  353. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +3 -2
  354. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +2 -2
  355. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +2 -2
  356. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +6 -6
  357. package/deps/rocksdb/rocksdb.gyp +20 -13
  358. package/index.js +187 -3
  359. package/iterator.js +1 -0
  360. package/package-lock.json +23687 -0
  361. package/package.json +2 -30
  362. package/prebuilds/darwin-arm64/node.napi.node +0 -0
  363. package/snapshot.js +23 -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/darwin-x64/node.napi.node +0 -0
  489. package/prebuilds/linux-arm64/node.napi.node +0 -0
  490. package/prebuilds/linux-x64/node.napi.node +0 -0
@@ -43,6 +43,23 @@ class RepairTest : public DBTestBase {
43
43
  }
44
44
  return s;
45
45
  }
46
+
47
+ void ReopenWithSstIdVerify() {
48
+ std::atomic_int verify_passed{0};
49
+ SyncPoint::GetInstance()->SetCallBack(
50
+ "Version::VerifySstUniqueIds::Passed", [&](void* arg) {
51
+ // override job status
52
+ auto id = static_cast<std::string*>(arg);
53
+ assert(!id->empty());
54
+ verify_passed++;
55
+ });
56
+ SyncPoint::GetInstance()->EnableProcessing();
57
+ auto options = CurrentOptions();
58
+ options.verify_sst_unique_id_in_manifest = true;
59
+ Reopen(options);
60
+
61
+ ASSERT_GT(verify_passed, 0);
62
+ }
46
63
  };
47
64
 
48
65
  TEST_F(RepairTest, LostManifest) {
@@ -61,7 +78,7 @@ TEST_F(RepairTest, LostManifest) {
61
78
  ASSERT_OK(env_->FileExists(manifest_path));
62
79
  ASSERT_OK(env_->DeleteFile(manifest_path));
63
80
  ASSERT_OK(RepairDB(dbname_, CurrentOptions()));
64
- Reopen(CurrentOptions());
81
+ ReopenWithSstIdVerify();
65
82
 
66
83
  ASSERT_EQ(Get("key"), "val");
67
84
  ASSERT_EQ(Get("key2"), "val2");
@@ -88,7 +105,9 @@ TEST_F(RepairTest, LostManifestMoreDbFeatures) {
88
105
  ASSERT_OK(env_->FileExists(manifest_path));
89
106
  ASSERT_OK(env_->DeleteFile(manifest_path));
90
107
  ASSERT_OK(RepairDB(dbname_, CurrentOptions()));
91
- Reopen(CurrentOptions());
108
+
109
+ // repair from sst should work with unique_id verification
110
+ ReopenWithSstIdVerify();
92
111
 
93
112
  ASSERT_EQ(Get("key"), "val");
94
113
  ASSERT_EQ(Get("key2"), "NOT_FOUND");
@@ -113,7 +132,8 @@ TEST_F(RepairTest, CorruptManifest) {
113
132
  ASSERT_OK(CreateFile(env_->GetFileSystem(), manifest_path, "blah",
114
133
  false /* use_fsync */));
115
134
  ASSERT_OK(RepairDB(dbname_, CurrentOptions()));
116
- Reopen(CurrentOptions());
135
+
136
+ ReopenWithSstIdVerify();
117
137
 
118
138
  ASSERT_EQ(Get("key"), "val");
119
139
  ASSERT_EQ(Get("key2"), "val2");
@@ -139,7 +159,8 @@ TEST_F(RepairTest, IncompleteManifest) {
139
159
  // Replace the manifest with one that is only aware of the first SST file.
140
160
  CopyFile(orig_manifest_path + ".tmp", new_manifest_path);
141
161
  ASSERT_OK(RepairDB(dbname_, CurrentOptions()));
142
- Reopen(CurrentOptions());
162
+
163
+ ReopenWithSstIdVerify();
143
164
 
144
165
  ASSERT_EQ(Get("key"), "val");
145
166
  ASSERT_EQ(Get("key2"), "val2");
@@ -157,7 +178,8 @@ TEST_F(RepairTest, PostRepairSstFileNumbering) {
157
178
 
158
179
  ASSERT_OK(RepairDB(dbname_, CurrentOptions()));
159
180
 
160
- Reopen(CurrentOptions());
181
+ ReopenWithSstIdVerify();
182
+
161
183
  uint64_t post_repair_file_num = dbfull()->TEST_Current_Next_FileNo();
162
184
  ASSERT_GE(post_repair_file_num, pre_repair_file_num);
163
185
  }
@@ -176,7 +198,7 @@ TEST_F(RepairTest, LostSst) {
176
198
 
177
199
  Close();
178
200
  ASSERT_OK(RepairDB(dbname_, CurrentOptions()));
179
- Reopen(CurrentOptions());
201
+ ReopenWithSstIdVerify();
180
202
 
181
203
  // Exactly one of the key-value pairs should be in the DB now.
182
204
  ASSERT_TRUE((Get("key") == "val") != (Get("key2") == "val2"));
@@ -198,7 +220,7 @@ TEST_F(RepairTest, CorruptSst) {
198
220
 
199
221
  Close();
200
222
  ASSERT_OK(RepairDB(dbname_, CurrentOptions()));
201
- Reopen(CurrentOptions());
223
+ ReopenWithSstIdVerify();
202
224
 
203
225
  // Exactly one of the key-value pairs should be in the DB now.
204
226
  ASSERT_TRUE((Get("key") == "val") != (Get("key2") == "val2"));
@@ -226,7 +248,7 @@ TEST_F(RepairTest, UnflushedSst) {
226
248
  ASSERT_OK(env_->FileExists(manifest_path));
227
249
  ASSERT_OK(env_->DeleteFile(manifest_path));
228
250
  ASSERT_OK(RepairDB(dbname_, CurrentOptions()));
229
- Reopen(CurrentOptions());
251
+ ReopenWithSstIdVerify();
230
252
 
231
253
  ASSERT_OK(dbfull()->GetSortedWalFiles(wal_files));
232
254
  ASSERT_EQ(wal_files.size(), 0);
@@ -265,7 +287,7 @@ TEST_F(RepairTest, SeparateWalDir) {
265
287
  // make sure that all WALs are converted to SSTables.
266
288
  options.wal_dir = "";
267
289
 
268
- Reopen(options);
290
+ ReopenWithSstIdVerify();
269
291
  ASSERT_OK(dbfull()->GetSortedWalFiles(wal_files));
270
292
  ASSERT_EQ(wal_files.size(), 0);
271
293
  {
@@ -289,7 +311,7 @@ TEST_F(RepairTest, RepairMultipleColumnFamilies) {
289
311
  CreateAndReopenWithCF({"pikachu1", "pikachu2"}, CurrentOptions());
290
312
  for (int i = 0; i < kNumCfs; ++i) {
291
313
  for (int j = 0; j < kEntriesPerCf; ++j) {
292
- ASSERT_OK(Put(i, "key" + ToString(j), "val" + ToString(j)));
314
+ ASSERT_OK(Put(i, "key" + std::to_string(j), "val" + std::to_string(j)));
293
315
  if (j == kEntriesPerCf - 1 && i == kNumCfs - 1) {
294
316
  // Leave one unflushed so we can verify WAL entries are properly
295
317
  // associated with column families.
@@ -313,7 +335,7 @@ TEST_F(RepairTest, RepairMultipleColumnFamilies) {
313
335
  CurrentOptions());
314
336
  for (int i = 0; i < kNumCfs; ++i) {
315
337
  for (int j = 0; j < kEntriesPerCf; ++j) {
316
- ASSERT_EQ(Get(i, "key" + ToString(j)), "val" + ToString(j));
338
+ ASSERT_EQ(Get(i, "key" + std::to_string(j)), "val" + std::to_string(j));
317
339
  }
318
340
  }
319
341
  }
@@ -334,7 +356,7 @@ TEST_F(RepairTest, RepairColumnFamilyOptions) {
334
356
  std::vector<Options>{opts, rev_opts});
335
357
  for (int i = 0; i < kNumCfs; ++i) {
336
358
  for (int j = 0; j < kEntriesPerCf; ++j) {
337
- ASSERT_OK(Put(i, "key" + ToString(j), "val" + ToString(j)));
359
+ ASSERT_OK(Put(i, "key" + std::to_string(j), "val" + std::to_string(j)));
338
360
  if (i == kNumCfs - 1 && j == kEntriesPerCf - 1) {
339
361
  // Leave one unflushed so we can verify RepairDB's flush logic
340
362
  continue;
@@ -352,7 +374,7 @@ TEST_F(RepairTest, RepairColumnFamilyOptions) {
352
374
  std::vector<Options>{opts, rev_opts}));
353
375
  for (int i = 0; i < kNumCfs; ++i) {
354
376
  for (int j = 0; j < kEntriesPerCf; ++j) {
355
- ASSERT_EQ(Get(i, "key" + ToString(j)), "val" + ToString(j));
377
+ ASSERT_EQ(Get(i, "key" + std::to_string(j)), "val" + std::to_string(j));
356
378
  }
357
379
  }
358
380
 
@@ -377,7 +399,7 @@ TEST_F(RepairTest, RepairColumnFamilyOptions) {
377
399
  std::vector<Options>{opts, rev_opts}));
378
400
  for (int i = 0; i < kNumCfs; ++i) {
379
401
  for (int j = 0; j < kEntriesPerCf; ++j) {
380
- ASSERT_EQ(Get(i, "key" + ToString(j)), "val" + ToString(j));
402
+ ASSERT_EQ(Get(i, "key" + std::to_string(j)), "val" + std::to_string(j));
381
403
  }
382
404
  }
383
405
  }
@@ -398,7 +420,7 @@ TEST_F(RepairTest, DbNameContainsTrailingSlash) {
398
420
  Close();
399
421
 
400
422
  ASSERT_OK(RepairDB(dbname_ + "/", CurrentOptions()));
401
- Reopen(CurrentOptions());
423
+ ReopenWithSstIdVerify();
402
424
  ASSERT_EQ(Get("key"), "val");
403
425
  }
404
426
  #endif // ROCKSDB_LITE
@@ -33,10 +33,9 @@ class DisableGCSnapshotChecker : public SnapshotChecker {
33
33
  // By returning kNotInSnapshot, we prevent all the values from being GCed
34
34
  return SnapshotCheckerResult::kNotInSnapshot;
35
35
  }
36
- static DisableGCSnapshotChecker* Instance() { return &instance_; }
36
+ static DisableGCSnapshotChecker* Instance();
37
37
 
38
38
  protected:
39
- static DisableGCSnapshotChecker instance_;
40
39
  explicit DisableGCSnapshotChecker() {}
41
40
  };
42
41
 
@@ -27,7 +27,9 @@ class SnapshotImpl : public Snapshot {
27
27
  // scope of queries to IsInSnapshot.
28
28
  SequenceNumber min_uncommitted_ = kMinUnCommittedSeq;
29
29
 
30
- virtual SequenceNumber GetSequenceNumber() const override { return number_; }
30
+ SequenceNumber GetSequenceNumber() const override { return number_; }
31
+
32
+ int64_t GetUnixTime() const override { return unix_time_; }
31
33
 
32
34
  private:
33
35
  friend class SnapshotList;
@@ -32,14 +32,31 @@
32
32
  #include "util/stop_watch.h"
33
33
 
34
34
  namespace ROCKSDB_NAMESPACE {
35
-
36
35
  namespace {
37
-
38
36
  template <class T>
39
37
  static void DeleteEntry(const Slice& /*key*/, void* value) {
40
38
  T* typed_value = reinterpret_cast<T*>(value);
41
39
  delete typed_value;
42
40
  }
41
+ } // namespace
42
+ } // namespace ROCKSDB_NAMESPACE
43
+
44
+ // Generate the regular and coroutine versions of some methods by
45
+ // including table_cache_sync_and_async.h twice
46
+ // Macros in the header will expand differently based on whether
47
+ // WITH_COROUTINES or WITHOUT_COROUTINES is defined
48
+ // clang-format off
49
+ #define WITHOUT_COROUTINES
50
+ #include "db/table_cache_sync_and_async.h"
51
+ #undef WITHOUT_COROUTINES
52
+ #define WITH_COROUTINES
53
+ #include "db/table_cache_sync_and_async.h"
54
+ #undef WITH_COROUTINES
55
+ // clang-format on
56
+
57
+ namespace ROCKSDB_NAMESPACE {
58
+
59
+ namespace {
43
60
 
44
61
  static void UnrefEntry(void* arg1, void* arg2) {
45
62
  Cache* cache = reinterpret_cast<Cache*>(arg1);
@@ -468,8 +485,7 @@ Status TableCache::Get(
468
485
  #ifndef ROCKSDB_LITE
469
486
  // Put the replay log in row cache only if something was found.
470
487
  if (!done && s.ok() && row_cache_entry && !row_cache_entry->empty()) {
471
- size_t charge =
472
- row_cache_key.Size() + row_cache_entry->size() + sizeof(std::string);
488
+ size_t charge = row_cache_entry->capacity() + sizeof(std::string);
473
489
  void* row_ptr = new std::string(std::move(*row_cache_entry));
474
490
  // If row cache is full, it's OK to continue.
475
491
  ioptions_.row_cache
@@ -485,132 +501,6 @@ Status TableCache::Get(
485
501
  return s;
486
502
  }
487
503
 
488
- // Batched version of TableCache::MultiGet.
489
- Status TableCache::MultiGet(
490
- const ReadOptions& options,
491
- const InternalKeyComparator& internal_comparator,
492
- const FileMetaData& file_meta, const MultiGetContext::Range* mget_range,
493
- const std::shared_ptr<const SliceTransform>& prefix_extractor,
494
- HistogramImpl* file_read_hist, bool skip_filters, int level) {
495
- auto& fd = file_meta.fd;
496
- Status s;
497
- TableReader* t = fd.table_reader;
498
- Cache::Handle* handle = nullptr;
499
- MultiGetRange table_range(*mget_range, mget_range->begin(),
500
- mget_range->end());
501
- #ifndef ROCKSDB_LITE
502
- autovector<std::string, MultiGetContext::MAX_BATCH_SIZE> row_cache_entries;
503
- IterKey row_cache_key;
504
- size_t row_cache_key_prefix_size = 0;
505
- KeyContext& first_key = *table_range.begin();
506
- bool lookup_row_cache =
507
- ioptions_.row_cache && !first_key.get_context->NeedToReadSequence();
508
-
509
- // Check row cache if enabled. Since row cache does not currently store
510
- // sequence numbers, we cannot use it if we need to fetch the sequence.
511
- if (lookup_row_cache) {
512
- GetContext* first_context = first_key.get_context;
513
- CreateRowCacheKeyPrefix(options, fd, first_key.ikey, first_context,
514
- row_cache_key);
515
- row_cache_key_prefix_size = row_cache_key.Size();
516
-
517
- for (auto miter = table_range.begin(); miter != table_range.end();
518
- ++miter) {
519
- const Slice& user_key = miter->ukey_with_ts;
520
-
521
- GetContext* get_context = miter->get_context;
522
-
523
- if (GetFromRowCache(user_key, row_cache_key, row_cache_key_prefix_size,
524
- get_context)) {
525
- table_range.SkipKey(miter);
526
- } else {
527
- row_cache_entries.emplace_back();
528
- get_context->SetReplayLog(&(row_cache_entries.back()));
529
- }
530
- }
531
- }
532
- #endif // ROCKSDB_LITE
533
-
534
- // Check that table_range is not empty. Its possible all keys may have been
535
- // found in the row cache and thus the range may now be empty
536
- if (s.ok() && !table_range.empty()) {
537
- if (t == nullptr) {
538
- s = FindTable(options, file_options_, internal_comparator, fd, &handle,
539
- prefix_extractor,
540
- options.read_tier == kBlockCacheTier /* no_io */,
541
- true /* record_read_stats */, file_read_hist, skip_filters,
542
- level, true /* prefetch_index_and_filter_in_cache */,
543
- 0 /*max_file_size_for_l0_meta_pin*/, file_meta.temperature);
544
- TEST_SYNC_POINT_CALLBACK("TableCache::MultiGet:FindTable", &s);
545
- if (s.ok()) {
546
- t = GetTableReaderFromHandle(handle);
547
- assert(t);
548
- }
549
- }
550
- if (s.ok() && !options.ignore_range_deletions) {
551
- std::unique_ptr<FragmentedRangeTombstoneIterator> range_del_iter(
552
- t->NewRangeTombstoneIterator(options));
553
- if (range_del_iter != nullptr) {
554
- for (auto iter = table_range.begin(); iter != table_range.end();
555
- ++iter) {
556
- SequenceNumber* max_covering_tombstone_seq =
557
- iter->get_context->max_covering_tombstone_seq();
558
- *max_covering_tombstone_seq = std::max(
559
- *max_covering_tombstone_seq,
560
- range_del_iter->MaxCoveringTombstoneSeqnum(iter->ukey_with_ts));
561
- }
562
- }
563
- }
564
- if (s.ok()) {
565
- t->MultiGet(options, &table_range, prefix_extractor.get(), skip_filters);
566
- } else if (options.read_tier == kBlockCacheTier && s.IsIncomplete()) {
567
- for (auto iter = table_range.begin(); iter != table_range.end(); ++iter) {
568
- Status* status = iter->s;
569
- if (status->IsIncomplete()) {
570
- // Couldn't find Table in cache but treat as kFound if no_io set
571
- iter->get_context->MarkKeyMayExist();
572
- s = Status::OK();
573
- }
574
- }
575
- }
576
- }
577
-
578
- #ifndef ROCKSDB_LITE
579
- if (lookup_row_cache) {
580
- size_t row_idx = 0;
581
-
582
- for (auto miter = table_range.begin(); miter != table_range.end();
583
- ++miter) {
584
- std::string& row_cache_entry = row_cache_entries[row_idx++];
585
- const Slice& user_key = miter->ukey_with_ts;
586
- ;
587
- GetContext* get_context = miter->get_context;
588
-
589
- get_context->SetReplayLog(nullptr);
590
- // Compute row cache key.
591
- row_cache_key.TrimAppend(row_cache_key_prefix_size, user_key.data(),
592
- user_key.size());
593
- // Put the replay log in row cache only if something was found.
594
- if (s.ok() && !row_cache_entry.empty()) {
595
- size_t charge =
596
- row_cache_key.Size() + row_cache_entry.size() + sizeof(std::string);
597
- void* row_ptr = new std::string(std::move(row_cache_entry));
598
- // If row cache is full, it's OK.
599
- ioptions_.row_cache
600
- ->Insert(row_cache_key.GetUserKey(), row_ptr, charge,
601
- &DeleteEntry<std::string>)
602
- .PermitUncheckedError();
603
- }
604
- }
605
- }
606
- #endif // ROCKSDB_LITE
607
-
608
- if (handle != nullptr) {
609
- ReleaseHandle(handle);
610
- }
611
- return s;
612
- }
613
-
614
504
  Status TableCache::GetTableProperties(
615
505
  const FileOptions& file_options,
616
506
  const InternalKeyComparator& internal_comparator, const FileDescriptor& fd,
@@ -24,6 +24,7 @@
24
24
  #include "rocksdb/table.h"
25
25
  #include "table/table_reader.h"
26
26
  #include "trace_replay/block_cache_tracer.h"
27
+ #include "util/coro_utils.h"
27
28
 
28
29
  namespace ROCKSDB_NAMESPACE {
29
30
 
@@ -115,8 +116,8 @@ class TableCache {
115
116
  // in the embedded GetContext
116
117
  // @param skip_filters Disables loading/accessing the filter block
117
118
  // @param level The level this table is at, -1 for "not set / don't know"
118
- Status MultiGet(
119
- const ReadOptions& options,
119
+ DECLARE_SYNC_AND_ASYNC(
120
+ Status, MultiGet, const ReadOptions& options,
120
121
  const InternalKeyComparator& internal_comparator,
121
122
  const FileMetaData& file_meta, const MultiGetContext::Range* mget_range,
122
123
  const std::shared_ptr<const SliceTransform>& prefix_extractor = nullptr,
@@ -0,0 +1,140 @@
1
+ // Copyright (c) Meta Platforms, Inc. and its affiliates. All Rights Reserved.
2
+ // This source code is licensed under both the GPLv2 (found in the
3
+ // COPYING file in the root directory) and Apache 2.0 License
4
+ // (found in the LICENSE.Apache file in the root directory).
5
+
6
+ #include "util/coro_utils.h"
7
+
8
+ #if defined(WITHOUT_COROUTINES) || \
9
+ (defined(USE_COROUTINES) && defined(WITH_COROUTINES))
10
+ namespace ROCKSDB_NAMESPACE {
11
+
12
+ #if defined(WITHOUT_COROUTINES)
13
+ #endif
14
+
15
+ // Batched version of TableCache::MultiGet.
16
+ DEFINE_SYNC_AND_ASYNC(Status, TableCache::MultiGet)
17
+ (const ReadOptions& options, const InternalKeyComparator& internal_comparator,
18
+ const FileMetaData& file_meta, const MultiGetContext::Range* mget_range,
19
+ const std::shared_ptr<const SliceTransform>& prefix_extractor,
20
+ HistogramImpl* file_read_hist, bool skip_filters, int level) {
21
+ auto& fd = file_meta.fd;
22
+ Status s;
23
+ TableReader* t = fd.table_reader;
24
+ Cache::Handle* handle = nullptr;
25
+ MultiGetRange table_range(*mget_range, mget_range->begin(),
26
+ mget_range->end());
27
+ #ifndef ROCKSDB_LITE
28
+ autovector<std::string, MultiGetContext::MAX_BATCH_SIZE> row_cache_entries;
29
+ IterKey row_cache_key;
30
+ size_t row_cache_key_prefix_size = 0;
31
+ KeyContext& first_key = *table_range.begin();
32
+ bool lookup_row_cache =
33
+ ioptions_.row_cache && !first_key.get_context->NeedToReadSequence();
34
+
35
+ // Check row cache if enabled. Since row cache does not currently store
36
+ // sequence numbers, we cannot use it if we need to fetch the sequence.
37
+ if (lookup_row_cache) {
38
+ GetContext* first_context = first_key.get_context;
39
+ CreateRowCacheKeyPrefix(options, fd, first_key.ikey, first_context,
40
+ row_cache_key);
41
+ row_cache_key_prefix_size = row_cache_key.Size();
42
+
43
+ for (auto miter = table_range.begin(); miter != table_range.end();
44
+ ++miter) {
45
+ const Slice& user_key = miter->ukey_with_ts;
46
+
47
+ GetContext* get_context = miter->get_context;
48
+
49
+ if (GetFromRowCache(user_key, row_cache_key, row_cache_key_prefix_size,
50
+ get_context)) {
51
+ table_range.SkipKey(miter);
52
+ } else {
53
+ row_cache_entries.emplace_back();
54
+ get_context->SetReplayLog(&(row_cache_entries.back()));
55
+ }
56
+ }
57
+ }
58
+ #endif // ROCKSDB_LITE
59
+
60
+ // Check that table_range is not empty. Its possible all keys may have been
61
+ // found in the row cache and thus the range may now be empty
62
+ if (s.ok() && !table_range.empty()) {
63
+ if (t == nullptr) {
64
+ s = FindTable(options, file_options_, internal_comparator, fd, &handle,
65
+ prefix_extractor,
66
+ options.read_tier == kBlockCacheTier /* no_io */,
67
+ true /* record_read_stats */, file_read_hist, skip_filters,
68
+ level, true /* prefetch_index_and_filter_in_cache */,
69
+ 0 /*max_file_size_for_l0_meta_pin*/, file_meta.temperature);
70
+ TEST_SYNC_POINT_CALLBACK("TableCache::MultiGet:FindTable", &s);
71
+ if (s.ok()) {
72
+ t = GetTableReaderFromHandle(handle);
73
+ assert(t);
74
+ }
75
+ }
76
+ if (s.ok() && !options.ignore_range_deletions) {
77
+ std::unique_ptr<FragmentedRangeTombstoneIterator> range_del_iter(
78
+ t->NewRangeTombstoneIterator(options));
79
+ if (range_del_iter != nullptr) {
80
+ for (auto iter = table_range.begin(); iter != table_range.end();
81
+ ++iter) {
82
+ SequenceNumber* max_covering_tombstone_seq =
83
+ iter->get_context->max_covering_tombstone_seq();
84
+ *max_covering_tombstone_seq = std::max(
85
+ *max_covering_tombstone_seq,
86
+ range_del_iter->MaxCoveringTombstoneSeqnum(iter->ukey_with_ts));
87
+ }
88
+ }
89
+ }
90
+ if (s.ok()) {
91
+ CO_AWAIT(t->MultiGet)
92
+ (options, &table_range, prefix_extractor.get(), skip_filters);
93
+ } else if (options.read_tier == kBlockCacheTier && s.IsIncomplete()) {
94
+ for (auto iter = table_range.begin(); iter != table_range.end(); ++iter) {
95
+ Status* status = iter->s;
96
+ if (status->IsIncomplete()) {
97
+ // Couldn't find Table in cache but treat as kFound if no_io set
98
+ iter->get_context->MarkKeyMayExist();
99
+ s = Status::OK();
100
+ }
101
+ }
102
+ }
103
+ }
104
+
105
+ #ifndef ROCKSDB_LITE
106
+ if (lookup_row_cache) {
107
+ size_t row_idx = 0;
108
+
109
+ for (auto miter = table_range.begin(); miter != table_range.end();
110
+ ++miter) {
111
+ std::string& row_cache_entry = row_cache_entries[row_idx++];
112
+ const Slice& user_key = miter->ukey_with_ts;
113
+ ;
114
+ GetContext* get_context = miter->get_context;
115
+
116
+ get_context->SetReplayLog(nullptr);
117
+ // Compute row cache key.
118
+ row_cache_key.TrimAppend(row_cache_key_prefix_size, user_key.data(),
119
+ user_key.size());
120
+ // Put the replay log in row cache only if something was found.
121
+ if (s.ok() && !row_cache_entry.empty()) {
122
+ size_t charge = row_cache_entry.capacity() + sizeof(std::string);
123
+ void* row_ptr = new std::string(std::move(row_cache_entry));
124
+ // If row cache is full, it's OK.
125
+ ioptions_.row_cache
126
+ ->Insert(row_cache_key.GetUserKey(), row_ptr, charge,
127
+ &DeleteEntry<std::string>)
128
+ .PermitUncheckedError();
129
+ }
130
+ }
131
+ }
132
+ #endif // ROCKSDB_LITE
133
+
134
+ if (handle != nullptr) {
135
+ ReleaseHandle(handle);
136
+ }
137
+ CO_RETURN s;
138
+ }
139
+ } // namespace ROCKSDB_NAMESPACE
140
+ #endif
@@ -1144,7 +1144,7 @@ class VersionBuilder::Rep {
1144
1144
 
1145
1145
  size_t table_cache_capacity = table_cache_->get_cache()->GetCapacity();
1146
1146
  bool always_load = (table_cache_capacity == TableCache::kInfiniteCapacity);
1147
- size_t max_load = port::kMaxSizet;
1147
+ size_t max_load = std::numeric_limits<size_t>::max();
1148
1148
 
1149
1149
  if (!always_load) {
1150
1150
  // If it is initial loading and not set to always loading all the