@nxtedition/rocksdb 9.0.0 → 10.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (307) hide show
  1. package/binding.cc +244 -177
  2. package/deps/rocksdb/rocksdb/CMakeLists.txt +13 -9
  3. package/deps/rocksdb/rocksdb/Makefile +15 -6
  4. package/deps/rocksdb/rocksdb/README.md +29 -0
  5. package/deps/rocksdb/rocksdb/TARGETS +17 -2
  6. package/deps/rocksdb/rocksdb/cache/cache.cc +35 -0
  7. package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +74 -15
  8. package/deps/rocksdb/rocksdb/cache/cache_helpers.cc +2 -1
  9. package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.h +4 -3
  10. package/deps/rocksdb/rocksdb/cache/cache_test.cc +16 -4
  11. package/deps/rocksdb/rocksdb/cache/charged_cache.cc +4 -2
  12. package/deps/rocksdb/rocksdb/cache/charged_cache.h +5 -3
  13. package/deps/rocksdb/rocksdb/cache/clock_cache.cc +2024 -14
  14. package/deps/rocksdb/rocksdb/cache/clock_cache.h +349 -23
  15. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +126 -51
  16. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +9 -0
  17. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +202 -7
  18. package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +31 -14
  19. package/deps/rocksdb/rocksdb/cache/secondary_cache.cc +0 -33
  20. package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +314 -25
  21. package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.h +29 -4
  22. package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +10 -0
  23. package/deps/rocksdb/rocksdb/cache/sharded_cache.h +8 -3
  24. package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache.cc +119 -0
  25. package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache.h +155 -0
  26. package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache_test.cc +711 -0
  27. package/deps/rocksdb/rocksdb/cache/typed_cache.h +17 -11
  28. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +25 -11
  29. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +1 -0
  30. package/deps/rocksdb/rocksdb/db/blob/blob_contents.h +2 -1
  31. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +2 -1
  32. package/deps/rocksdb/rocksdb/db/blob/db_blob_basic_test.cc +8 -0
  33. package/deps/rocksdb/rocksdb/db/blob/db_blob_index_test.cc +7 -3
  34. package/deps/rocksdb/rocksdb/db/builder.cc +3 -3
  35. package/deps/rocksdb/rocksdb/db/c.cc +64 -0
  36. package/deps/rocksdb/rocksdb/db/c_test.c +36 -0
  37. package/deps/rocksdb/rocksdb/db/column_family.cc +23 -15
  38. package/deps/rocksdb/rocksdb/db/column_family.h +9 -0
  39. package/deps/rocksdb/rocksdb/db/column_family_test.cc +101 -5
  40. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +36 -23
  41. package/deps/rocksdb/rocksdb/db/compaction/compaction.h +24 -10
  42. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +3 -5
  43. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +42 -18
  44. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +7 -3
  45. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +4 -2
  46. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +8 -6
  47. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +1 -1
  48. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +3 -0
  49. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +61 -0
  50. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +146 -64
  51. package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +13 -39
  52. package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +1 -0
  53. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +29 -7
  54. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +8 -3
  55. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +59 -0
  56. package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +27 -3
  57. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +186 -2
  58. package/deps/rocksdb/rocksdb/db/db_flush_test.cc +1 -0
  59. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +17 -5
  60. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +519 -240
  61. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +104 -43
  62. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +169 -66
  63. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +2 -1
  64. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +12 -4
  65. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +50 -14
  66. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +85 -53
  67. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +3 -7
  68. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +99 -82
  69. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +4 -14
  70. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +24 -21
  71. package/deps/rocksdb/rocksdb/db/db_info_dumper.cc +6 -0
  72. package/deps/rocksdb/rocksdb/db/db_iter.cc +83 -55
  73. package/deps/rocksdb/rocksdb/db/db_iter.h +10 -2
  74. package/deps/rocksdb/rocksdb/db/db_iter_test.cc +29 -0
  75. package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +276 -21
  76. package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +35 -0
  77. package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +187 -1
  78. package/deps/rocksdb/rocksdb/db/db_options_test.cc +258 -0
  79. package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +258 -0
  80. package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +1 -0
  81. package/deps/rocksdb/rocksdb/db/db_readonly_with_timestamp_test.cc +52 -0
  82. package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +74 -1
  83. package/deps/rocksdb/rocksdb/db/db_sst_test.cc +22 -4
  84. package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +3 -1
  85. package/deps/rocksdb/rocksdb/db/db_test.cc +134 -30
  86. package/deps/rocksdb/rocksdb/db/db_test2.cc +3 -0
  87. package/deps/rocksdb/rocksdb/db/db_test_util.cc +11 -6
  88. package/deps/rocksdb/rocksdb/db/db_test_util.h +5 -2
  89. package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +1 -0
  90. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +12 -0
  91. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +337 -1
  92. package/deps/rocksdb/rocksdb/db/deletefile_test.cc +2 -0
  93. package/deps/rocksdb/rocksdb/db/error_handler.cc +51 -34
  94. package/deps/rocksdb/rocksdb/db/error_handler.h +7 -6
  95. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +58 -0
  96. package/deps/rocksdb/rocksdb/db/flush_job.cc +17 -19
  97. package/deps/rocksdb/rocksdb/db/flush_job.h +3 -3
  98. package/deps/rocksdb/rocksdb/db/flush_job_test.cc +2 -1
  99. package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +2 -0
  100. package/deps/rocksdb/rocksdb/db/memtable.cc +18 -70
  101. package/deps/rocksdb/rocksdb/db/memtable_list.cc +1 -1
  102. package/deps/rocksdb/rocksdb/db/memtable_list.h +11 -1
  103. package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +1 -1
  104. package/deps/rocksdb/rocksdb/db/merge_helper.cc +330 -115
  105. package/deps/rocksdb/rocksdb/db/merge_helper.h +100 -12
  106. package/deps/rocksdb/rocksdb/db/merge_operator.cc +82 -0
  107. package/deps/rocksdb/rocksdb/db/merge_test.cc +267 -0
  108. package/deps/rocksdb/rocksdb/db/perf_context_test.cc +3 -0
  109. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.h +4 -4
  110. package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +2 -0
  111. package/deps/rocksdb/rocksdb/db/prefix_test.cc +1 -0
  112. package/deps/rocksdb/rocksdb/db/range_del_aggregator.h +4 -0
  113. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +4 -0
  114. package/deps/rocksdb/rocksdb/db/repair.cc +4 -3
  115. package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +454 -70
  116. package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.cc +105 -69
  117. package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.h +83 -46
  118. package/deps/rocksdb/rocksdb/db/table_cache.cc +32 -19
  119. package/deps/rocksdb/rocksdb/db/table_cache.h +12 -6
  120. package/deps/rocksdb/rocksdb/db/version_edit.h +10 -4
  121. package/deps/rocksdb/rocksdb/db/version_set.cc +75 -73
  122. package/deps/rocksdb/rocksdb/db/version_set.h +8 -8
  123. package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +2 -5
  124. package/deps/rocksdb/rocksdb/db/version_set_test.cc +22 -11
  125. package/deps/rocksdb/rocksdb/db/wide/db_wide_basic_test.cc +525 -0
  126. package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.cc +6 -22
  127. package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.h +0 -20
  128. package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization_test.cc +0 -29
  129. package/deps/rocksdb/rocksdb/db/wide/wide_columns_helper.cc +46 -0
  130. package/deps/rocksdb/rocksdb/db/wide/wide_columns_helper.h +40 -0
  131. package/deps/rocksdb/rocksdb/db/wide/wide_columns_helper_test.cc +39 -0
  132. package/deps/rocksdb/rocksdb/db/write_batch.cc +44 -20
  133. package/deps/rocksdb/rocksdb/db_stress_tool/CMakeLists.txt +1 -0
  134. package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +4 -4
  135. package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +4 -7
  136. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +88 -10
  137. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +15 -10
  138. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +108 -58
  139. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +36 -14
  140. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +34 -0
  141. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +1 -1
  142. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +195 -130
  143. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +4 -2
  144. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +12 -12
  145. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_wide_merge_operator.cc +51 -0
  146. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_wide_merge_operator.h +27 -0
  147. package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +3 -6
  148. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +14 -11
  149. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +44 -38
  150. package/deps/rocksdb/rocksdb/env/env.cc +5 -0
  151. package/deps/rocksdb/rocksdb/env/unique_id_gen.cc +1 -0
  152. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +50 -29
  153. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +32 -2
  154. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +513 -30
  155. package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +8 -0
  156. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_cache.h +38 -13
  157. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +14 -7
  158. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +42 -0
  159. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +65 -12
  160. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +11 -0
  161. package/deps/rocksdb/rocksdb/include/rocksdb/comparator.h +26 -0
  162. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +37 -4
  163. package/deps/rocksdb/rocksdb/include/rocksdb/env.h +2 -0
  164. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +1 -0
  165. package/deps/rocksdb/rocksdb/include/rocksdb/filter_policy.h +8 -3
  166. package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +10 -4
  167. package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +4 -0
  168. package/deps/rocksdb/rocksdb/include/rocksdb/memory_allocator.h +1 -1
  169. package/deps/rocksdb/rocksdb/include/rocksdb/merge_operator.h +55 -4
  170. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +45 -5
  171. package/deps/rocksdb/rocksdb/include/rocksdb/port_defs.h +4 -0
  172. package/deps/rocksdb/rocksdb/include/rocksdb/rate_limiter.h +9 -0
  173. package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +79 -8
  174. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +16 -0
  175. package/deps/rocksdb/rocksdb/include/rocksdb/status.h +35 -0
  176. package/deps/rocksdb/rocksdb/include/rocksdb/system_clock.h +15 -0
  177. package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +14 -3
  178. package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +2 -0
  179. package/deps/rocksdb/rocksdb/include/rocksdb/types.h +7 -0
  180. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +6 -1
  181. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +2 -1
  182. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +9 -0
  183. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
  184. package/deps/rocksdb/rocksdb/include/rocksdb/wide_columns.h +53 -2
  185. package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +0 -2
  186. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +2 -2
  187. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.h +1 -1
  188. package/deps/rocksdb/rocksdb/microbench/README.md +60 -0
  189. package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.h +1 -1
  190. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +6 -0
  191. package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +18 -7
  192. package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +4 -0
  193. package/deps/rocksdb/rocksdb/options/customizable_test.cc +4 -0
  194. package/deps/rocksdb/rocksdb/options/db_options.cc +47 -2
  195. package/deps/rocksdb/rocksdb/options/db_options.h +3 -0
  196. package/deps/rocksdb/rocksdb/options/options_helper.cc +12 -0
  197. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +3 -1
  198. package/deps/rocksdb/rocksdb/options/options_test.cc +6 -1
  199. package/deps/rocksdb/rocksdb/plugin/README.md +43 -0
  200. package/deps/rocksdb/rocksdb/port/README +10 -0
  201. package/deps/rocksdb/rocksdb/port/port_example.h +1 -1
  202. package/deps/rocksdb/rocksdb/port/port_posix.cc +1 -1
  203. package/deps/rocksdb/rocksdb/port/port_posix.h +7 -4
  204. package/deps/rocksdb/rocksdb/port/stack_trace.cc +5 -0
  205. package/deps/rocksdb/rocksdb/port/win/port_win.h +5 -2
  206. package/deps/rocksdb/rocksdb/src.mk +7 -1
  207. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +1 -1
  208. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +3 -1
  209. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +275 -61
  210. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +96 -4
  211. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +179 -62
  212. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +35 -22
  213. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +12 -8
  214. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +14 -9
  215. package/deps/rocksdb/rocksdb/table/block_based/block_cache.cc +3 -1
  216. package/deps/rocksdb/rocksdb/table/block_based/block_cache.h +26 -7
  217. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +15 -12
  218. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +10 -5
  219. package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +39 -18
  220. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +6 -6
  221. package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +44 -26
  222. package/deps/rocksdb/rocksdb/table/block_based/filter_policy_internal.h +2 -1
  223. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +1 -1
  224. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +10 -8
  225. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +4 -2
  226. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +3 -2
  227. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +1 -1
  228. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +3 -2
  229. package/deps/rocksdb/rocksdb/table/block_fetcher.h +4 -0
  230. package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +6 -2
  231. package/deps/rocksdb/rocksdb/table/get_context.cc +52 -89
  232. package/deps/rocksdb/rocksdb/table/get_context.h +12 -3
  233. package/deps/rocksdb/rocksdb/table/internal_iterator.h +11 -0
  234. package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +29 -1
  235. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +12 -0
  236. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +33 -6
  237. package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +1 -0
  238. package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +2 -4
  239. package/deps/rocksdb/rocksdb/table/table_reader.h +6 -0
  240. package/deps/rocksdb/rocksdb/test_util/mock_time_env.h +31 -0
  241. package/deps/rocksdb/rocksdb/test_util/secondary_cache_test_util.cc +2 -1
  242. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_pysim.py +3 -3
  243. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +26 -43
  244. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +213 -28
  245. package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +36 -0
  246. package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +0 -1
  247. package/deps/rocksdb/rocksdb/tools/sst_dump_test.cc +33 -10
  248. package/deps/rocksdb/rocksdb/util/bloom_test.cc +32 -11
  249. package/deps/rocksdb/rocksdb/util/cast_util.h +10 -0
  250. package/deps/rocksdb/rocksdb/util/comparator.cc +26 -1
  251. package/deps/rocksdb/rocksdb/util/compression.h +9 -3
  252. package/deps/rocksdb/rocksdb/util/crc32c.cc +7 -1
  253. package/deps/rocksdb/rocksdb/util/distributed_mutex.h +1 -1
  254. package/deps/rocksdb/rocksdb/util/overload.h +23 -0
  255. package/deps/rocksdb/rocksdb/util/rate_limiter.cc +53 -18
  256. package/deps/rocksdb/rocksdb/util/rate_limiter_impl.h +6 -1
  257. package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +90 -19
  258. package/deps/rocksdb/rocksdb/util/slice_test.cc +30 -0
  259. package/deps/rocksdb/rocksdb/util/status.cc +1 -0
  260. package/deps/rocksdb/rocksdb/util/string_util.cc +39 -0
  261. package/deps/rocksdb/rocksdb/util/string_util.h +10 -0
  262. package/deps/rocksdb/rocksdb/util/thread_operation.h +2 -0
  263. package/deps/rocksdb/rocksdb/util/udt_util.cc +42 -0
  264. package/deps/rocksdb/rocksdb/util/udt_util.h +19 -0
  265. package/deps/rocksdb/rocksdb/util/udt_util_test.cc +14 -0
  266. package/deps/rocksdb/rocksdb/util/xxhash.h +0 -3
  267. package/deps/rocksdb/rocksdb/util/xxph3.h +0 -4
  268. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +2 -1
  269. package/deps/rocksdb/rocksdb/utilities/fault_injection_env.h +1 -0
  270. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +19 -15
  271. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +11 -7
  272. package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.h +5 -0
  273. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend_test.cc +3 -0
  274. package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration_test.cc +9 -0
  275. package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache.cc +7 -4
  276. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/README +13 -0
  277. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +41 -0
  278. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +15 -9
  279. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +4 -0
  280. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +155 -0
  281. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +6 -0
  282. package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +81 -1
  283. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +2 -6
  284. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +7 -5
  285. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +2 -1
  286. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +3 -2
  287. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +57 -27
  288. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +127 -120
  289. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +129 -59
  290. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +105 -8
  291. package/deps/rocksdb/rocksdb.gyp +4 -2
  292. package/index.js +38 -55
  293. package/package.json +4 -4
  294. package/prebuilds/darwin-arm64/@nxtedition+rocksdb.node +0 -0
  295. package/util.h +7 -1
  296. package/deps/rocksdb/rocksdb/cmake/modules/CxxFlags.cmake +0 -7
  297. package/deps/rocksdb/rocksdb/cmake/modules/FindJeMalloc.cmake +0 -29
  298. package/deps/rocksdb/rocksdb/cmake/modules/FindNUMA.cmake +0 -29
  299. package/deps/rocksdb/rocksdb/cmake/modules/FindSnappy.cmake +0 -29
  300. package/deps/rocksdb/rocksdb/cmake/modules/FindTBB.cmake +0 -33
  301. package/deps/rocksdb/rocksdb/cmake/modules/Findgflags.cmake +0 -29
  302. package/deps/rocksdb/rocksdb/cmake/modules/Findlz4.cmake +0 -29
  303. package/deps/rocksdb/rocksdb/cmake/modules/Finduring.cmake +0 -26
  304. package/deps/rocksdb/rocksdb/cmake/modules/Findzstd.cmake +0 -29
  305. package/deps/rocksdb/rocksdb/cmake/modules/ReadVersion.cmake +0 -10
  306. package/prebuilds/darwin-arm64/node.napi.node +0 -0
  307. package/prebuilds/linux-x64/node.napi.node +0 -0
@@ -99,6 +99,8 @@ class ShardedCacheBase : public Cache {
99
99
 
100
100
  bool HasStrictCapacityLimit() const override;
101
101
  size_t GetCapacity() const override;
102
+ Status GetSecondaryCacheCapacity(size_t& size) const override;
103
+ Status GetSecondaryCachePinnedUsage(size_t& size) const override;
102
104
 
103
105
  using Cache::GetUsage;
104
106
  size_t GetUsage(Handle* handle) const override;
@@ -170,9 +172,12 @@ class ShardedCache : public ShardedCacheBase {
170
172
  [s_c_l](CacheShard* cs) { cs->SetStrictCapacityLimit(s_c_l); });
171
173
  }
172
174
 
173
- Status Insert(const Slice& key, ObjectPtr obj, const CacheItemHelper* helper,
174
- size_t charge, Handle** handle = nullptr,
175
- Priority priority = Priority::LOW) override {
175
+ Status Insert(
176
+ const Slice& key, ObjectPtr obj, const CacheItemHelper* helper,
177
+ size_t charge, Handle** handle = nullptr,
178
+ Priority priority = Priority::LOW,
179
+ const Slice& /*compressed_value*/ = Slice(),
180
+ CompressionType /*type*/ = CompressionType::kNoCompression) override {
176
181
  assert(helper);
177
182
  HashVal hash = CacheShard::ComputeHash(key, hash_seed_);
178
183
  auto h_out = reinterpret_cast<HandleImpl**>(handle);
@@ -0,0 +1,119 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
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 "cache/tiered_secondary_cache.h"
7
+
8
+ namespace ROCKSDB_NAMESPACE {
9
+
10
+ // Creation callback for use in the lookup path. It calls the upper layer
11
+ // create_cb to create the object, and optionally calls the compressed
12
+ // secondary cache InsertSaved to save the compressed block. If
13
+ // advise_erase is set, it means the primary cache wants the block to be
14
+ // erased in the secondary cache, so we skip calling InsertSaved.
15
+ //
16
+ // For the time being, we assume that all blocks in the nvm tier belong to
17
+ // the primary block cache (i.e CacheTier::kVolatileTier). That can be changed
18
+ // if we implement demotion from the compressed secondary cache to the nvm
19
+ // cache in the future.
20
+ Status TieredSecondaryCache::MaybeInsertAndCreate(
21
+ const Slice& data, CompressionType type, CacheTier source,
22
+ Cache::CreateContext* ctx, MemoryAllocator* allocator,
23
+ Cache::ObjectPtr* out_obj, size_t* out_charge) {
24
+ TieredSecondaryCache::CreateContext* context =
25
+ static_cast<TieredSecondaryCache::CreateContext*>(ctx);
26
+ assert(source == CacheTier::kVolatileTier);
27
+ if (!context->advise_erase && type != kNoCompression) {
28
+ // Attempt to insert into compressed secondary cache
29
+ // TODO: Don't hardcode the source
30
+ context->comp_sec_cache->InsertSaved(*context->key, data, type, source)
31
+ .PermitUncheckedError();
32
+ }
33
+ // Primary cache will accept the object, so call its helper to create
34
+ // the object
35
+ return context->helper->create_cb(data, type, source, context->inner_ctx,
36
+ allocator, out_obj, out_charge);
37
+ }
38
+
39
+ // The lookup first looks up in the compressed secondary cache. If its a miss,
40
+ // then the nvm cache lookup is called. The cache item helper and create
41
+ // context are wrapped in order to intercept the creation callback to make
42
+ // the decision on promoting to the compressed secondary cache.
43
+ std::unique_ptr<SecondaryCacheResultHandle> TieredSecondaryCache::Lookup(
44
+ const Slice& key, const Cache::CacheItemHelper* helper,
45
+ Cache::CreateContext* create_context, bool wait, bool advise_erase,
46
+ bool& kept_in_sec_cache) {
47
+ bool dummy = false;
48
+ std::unique_ptr<SecondaryCacheResultHandle> result =
49
+ target()->Lookup(key, helper, create_context, wait, advise_erase,
50
+ /*kept_in_sec_cache=*/dummy);
51
+ // We never want the item to spill back into the secondary cache
52
+ kept_in_sec_cache = true;
53
+ if (result) {
54
+ assert(result->IsReady());
55
+ return result;
56
+ }
57
+
58
+ // If wait is true, then we can be a bit more efficient and avoid a memory
59
+ // allocation for the CReateContext.
60
+ const Cache::CacheItemHelper* outer_helper =
61
+ TieredSecondaryCache::GetHelper();
62
+ if (wait) {
63
+ TieredSecondaryCache::CreateContext ctx;
64
+ ctx.key = &key;
65
+ ctx.advise_erase = advise_erase;
66
+ ctx.helper = helper;
67
+ ctx.inner_ctx = create_context;
68
+ ctx.comp_sec_cache = target();
69
+
70
+ return nvm_sec_cache_->Lookup(key, outer_helper, &ctx, wait, advise_erase,
71
+ kept_in_sec_cache);
72
+ }
73
+
74
+ // If wait is false, i.e its an async lookup, we have to allocate a result
75
+ // handle for tracking purposes. Embed the CreateContext inside the handle
76
+ // so we need only allocate memory once instead of twice.
77
+ std::unique_ptr<ResultHandle> handle(new ResultHandle());
78
+ handle->ctx()->key = &key;
79
+ handle->ctx()->advise_erase = advise_erase;
80
+ handle->ctx()->helper = helper;
81
+ handle->ctx()->inner_ctx = create_context;
82
+ handle->ctx()->comp_sec_cache = target();
83
+ handle->SetInnerHandle(nvm_sec_cache_->Lookup(
84
+ key, outer_helper, handle->ctx(), wait, advise_erase, kept_in_sec_cache));
85
+ if (!handle->inner_handle()) {
86
+ handle.reset();
87
+ } else {
88
+ result.reset(handle.release());
89
+ }
90
+
91
+ return result;
92
+ }
93
+
94
+ // Call the nvm cache WaitAll to complete the lookups
95
+ void TieredSecondaryCache::WaitAll(
96
+ std::vector<SecondaryCacheResultHandle*> handles) {
97
+ std::vector<SecondaryCacheResultHandle*> nvm_handles;
98
+ std::vector<ResultHandle*> my_handles;
99
+ nvm_handles.reserve(handles.size());
100
+ for (auto handle : handles) {
101
+ // The handle could belong to the compressed secondary cache. Skip if
102
+ // that's the case.
103
+ if (handle->IsReady()) {
104
+ continue;
105
+ }
106
+ ResultHandle* hdl = static_cast<ResultHandle*>(handle);
107
+ nvm_handles.push_back(hdl->inner_handle());
108
+ my_handles.push_back(hdl);
109
+ }
110
+ nvm_sec_cache_->WaitAll(nvm_handles);
111
+ for (auto handle : my_handles) {
112
+ assert(handle->IsReady());
113
+ auto nvm_handle = handle->inner_handle();
114
+ handle->SetSize(nvm_handle->Size());
115
+ handle->SetValue(nvm_handle->Value());
116
+ }
117
+ }
118
+
119
+ } // namespace ROCKSDB_NAMESPACE
@@ -0,0 +1,155 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
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
+ #pragma once
7
+
8
+ #include "rocksdb/cache.h"
9
+ #include "rocksdb/secondary_cache.h"
10
+
11
+ namespace ROCKSDB_NAMESPACE {
12
+
13
+ // A SecondaryCache that implements stacking of a compressed secondary cache
14
+ // and a non-volatile (local flash) cache. It implements an admission
15
+ // policy of warming the bottommost tier (local flash) with compressed
16
+ // blocks from the SST on misses, and on hits in the bottommost tier,
17
+ // promoting to the compressed and/or primary block cache. The admission
18
+ // policies of the primary block cache and compressed secondary cache remain
19
+ // unchanged - promote on second access. There is no demotion ofablocks
20
+ // evicted from a tier. They are just discarded.
21
+ //
22
+ // In order to properly handle compressed blocks directly read from SSTs, and
23
+ // to allow writeback of blocks compressed by the compressed secondary
24
+ // cache in the future, we make use of the compression type and source
25
+ // cache tier arguments in InsertSaved.
26
+ class TieredSecondaryCache : public SecondaryCacheWrapper {
27
+ public:
28
+ TieredSecondaryCache(std::shared_ptr<SecondaryCache> comp_sec_cache,
29
+ std::shared_ptr<SecondaryCache> nvm_sec_cache,
30
+ TieredAdmissionPolicy adm_policy)
31
+ : SecondaryCacheWrapper(comp_sec_cache), nvm_sec_cache_(nvm_sec_cache) {
32
+ #ifndef NDEBUG
33
+ assert(adm_policy == TieredAdmissionPolicy::kAdmPolicyThreeQueue);
34
+ #else
35
+ (void)adm_policy;
36
+ #endif
37
+ }
38
+
39
+ ~TieredSecondaryCache() override {}
40
+
41
+ const char* Name() const override { return "TieredSecondaryCache"; }
42
+
43
+ // This is a no-op as we currently don't allow demotion (i.e
44
+ // insertion by the upper layer) of evicted blocks.
45
+ virtual Status Insert(const Slice& /*key*/, Cache::ObjectPtr /*obj*/,
46
+ const Cache::CacheItemHelper* /*helper*/,
47
+ bool /*force_insert*/) override {
48
+ return Status::OK();
49
+ }
50
+
51
+ // Warm up the nvm tier directly
52
+ virtual Status InsertSaved(
53
+ const Slice& key, const Slice& saved,
54
+ CompressionType type = CompressionType::kNoCompression,
55
+ CacheTier source = CacheTier::kVolatileTier) override {
56
+ return nvm_sec_cache_->InsertSaved(key, saved, type, source);
57
+ }
58
+
59
+ virtual std::unique_ptr<SecondaryCacheResultHandle> Lookup(
60
+ const Slice& key, const Cache::CacheItemHelper* helper,
61
+ Cache::CreateContext* create_context, bool wait, bool advise_erase,
62
+ bool& kept_in_sec_cache) override;
63
+
64
+ virtual void WaitAll(
65
+ std::vector<SecondaryCacheResultHandle*> handles) override;
66
+
67
+ private:
68
+ struct CreateContext : public Cache::CreateContext {
69
+ const Slice* key;
70
+ bool advise_erase;
71
+ const Cache::CacheItemHelper* helper;
72
+ Cache::CreateContext* inner_ctx;
73
+ std::shared_ptr<SecondaryCacheResultHandle> inner_handle;
74
+ SecondaryCache* comp_sec_cache;
75
+ };
76
+
77
+ class ResultHandle : public SecondaryCacheResultHandle {
78
+ public:
79
+ ~ResultHandle() override {}
80
+
81
+ bool IsReady() override {
82
+ return !inner_handle_ || inner_handle_->IsReady();
83
+ }
84
+
85
+ void Wait() override {
86
+ inner_handle_->Wait();
87
+ Complete();
88
+ }
89
+
90
+ size_t Size() override { return size_; }
91
+
92
+ Cache::ObjectPtr Value() override { return value_; }
93
+
94
+ void Complete() {
95
+ assert(IsReady());
96
+ size_ = inner_handle_->Size();
97
+ value_ = inner_handle_->Value();
98
+ inner_handle_.reset();
99
+ }
100
+
101
+ void SetInnerHandle(std::unique_ptr<SecondaryCacheResultHandle>&& handle) {
102
+ inner_handle_ = std::move(handle);
103
+ }
104
+
105
+ void SetSize(size_t size) { size_ = size; }
106
+
107
+ void SetValue(Cache::ObjectPtr val) { value_ = val; }
108
+
109
+ CreateContext* ctx() { return &ctx_; }
110
+
111
+ SecondaryCacheResultHandle* inner_handle() { return inner_handle_.get(); }
112
+
113
+ private:
114
+ std::unique_ptr<SecondaryCacheResultHandle> inner_handle_;
115
+ CreateContext ctx_;
116
+ size_t size_;
117
+ Cache::ObjectPtr value_;
118
+ };
119
+
120
+ static void NoopDelete(Cache::ObjectPtr /*obj*/,
121
+ MemoryAllocator* /*allocator*/) {
122
+ assert(false);
123
+ }
124
+ static size_t ZeroSize(Cache::ObjectPtr /*obj*/) {
125
+ assert(false);
126
+ return 0;
127
+ }
128
+ static Status NoopSaveTo(Cache::ObjectPtr /*from_obj*/,
129
+ size_t /*from_offset*/, size_t /*length*/,
130
+ char* /*out_buf*/) {
131
+ assert(false);
132
+ return Status::OK();
133
+ }
134
+ static Status MaybeInsertAndCreate(const Slice& data, CompressionType type,
135
+ CacheTier source,
136
+ Cache::CreateContext* ctx,
137
+ MemoryAllocator* allocator,
138
+ Cache::ObjectPtr* out_obj,
139
+ size_t* out_charge);
140
+
141
+ static const Cache::CacheItemHelper* GetHelper() {
142
+ const static Cache::CacheItemHelper basic_helper(CacheEntryRole::kMisc,
143
+ &NoopDelete);
144
+ const static Cache::CacheItemHelper maybe_insert_and_create_helper{
145
+ CacheEntryRole::kMisc, &NoopDelete, &ZeroSize,
146
+ &NoopSaveTo, &MaybeInsertAndCreate, &basic_helper,
147
+ };
148
+ return &maybe_insert_and_create_helper;
149
+ }
150
+
151
+ std::shared_ptr<SecondaryCache> comp_sec_cache_;
152
+ std::shared_ptr<SecondaryCache> nvm_sec_cache_;
153
+ };
154
+
155
+ } // namespace ROCKSDB_NAMESPACE