@nxtedition/rocksdb 8.2.0 → 8.2.2

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 (321) hide show
  1. package/binding.cc +3 -3
  2. package/deps/rocksdb/rocksdb/CMakeLists.txt +16 -52
  3. package/deps/rocksdb/rocksdb/Makefile +10 -5
  4. package/deps/rocksdb/rocksdb/TARGETS +8 -345
  5. package/deps/rocksdb/rocksdb/cache/cache_test.cc +92 -0
  6. package/deps/rocksdb/rocksdb/cache/clock_cache.cc +32 -32
  7. package/deps/rocksdb/rocksdb/cache/clock_cache.h +12 -9
  8. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +6 -43
  9. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +3 -13
  10. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +8 -5
  11. package/deps/rocksdb/rocksdb/cache/lru_cache.cc +21 -47
  12. package/deps/rocksdb/rocksdb/cache/lru_cache.h +3 -8
  13. package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +2 -1
  14. package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +1 -2
  15. package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +44 -7
  16. package/deps/rocksdb/rocksdb/cache/sharded_cache.h +13 -14
  17. package/deps/rocksdb/rocksdb/db/blob/blob_contents.h +1 -1
  18. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +1 -0
  19. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.cc +2 -2
  20. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.h +2 -1
  21. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache_test.cc +17 -8
  22. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +40 -21
  23. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +5 -1
  24. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +41 -42
  25. package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.cc +1 -1
  26. package/deps/rocksdb/rocksdb/db/blob/blob_log_writer.cc +1 -1
  27. package/deps/rocksdb/rocksdb/db/blob/blob_source.cc +5 -4
  28. package/deps/rocksdb/rocksdb/db/blob/blob_source.h +2 -2
  29. package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +5 -3
  30. package/deps/rocksdb/rocksdb/db/builder.cc +7 -6
  31. package/deps/rocksdb/rocksdb/db/builder.h +2 -2
  32. package/deps/rocksdb/rocksdb/db/c.cc +76 -5
  33. package/deps/rocksdb/rocksdb/db/c_test.c +141 -0
  34. package/deps/rocksdb/rocksdb/db/column_family.cc +32 -0
  35. package/deps/rocksdb/rocksdb/db/compact_files_test.cc +3 -2
  36. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +5 -0
  37. package/deps/rocksdb/rocksdb/db/compaction/compaction.h +8 -5
  38. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +12 -10
  39. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +21 -17
  40. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +2 -2
  41. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +8 -7
  42. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +3 -1
  43. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +1 -1
  44. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +77 -50
  45. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +4 -5
  46. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +55 -8
  47. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +142 -56
  48. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +1 -1
  49. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +1 -2
  50. package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +21 -20
  51. package/deps/rocksdb/rocksdb/db/convenience.cc +8 -6
  52. package/deps/rocksdb/rocksdb/db/corruption_test.cc +5 -4
  53. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +6 -3
  54. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +260 -220
  55. package/deps/rocksdb/rocksdb/db/db_clip_test.cc +142 -0
  56. package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +1 -1
  57. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +333 -27
  58. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +5 -0
  59. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +7 -0
  60. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +189 -27
  61. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +23 -10
  62. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +134 -90
  63. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +2 -2
  64. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +5 -3
  65. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +5 -1
  66. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +124 -16
  67. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +10 -0
  68. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +7 -0
  69. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +15 -0
  70. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +11 -5
  71. package/deps/rocksdb/rocksdb/db/db_iter.cc +7 -8
  72. package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +54 -3
  73. package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +42 -0
  74. package/deps/rocksdb/rocksdb/db/db_options_test.cc +116 -1
  75. package/deps/rocksdb/rocksdb/db/db_properties_test.cc +3 -2
  76. package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +3 -2
  77. package/deps/rocksdb/rocksdb/db/db_sst_test.cc +9 -8
  78. package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +142 -63
  79. package/deps/rocksdb/rocksdb/db/db_test.cc +28 -7
  80. package/deps/rocksdb/rocksdb/db/db_test2.cc +71 -131
  81. package/deps/rocksdb/rocksdb/db/db_test_util.cc +18 -0
  82. package/deps/rocksdb/rocksdb/db/db_test_util.h +6 -0
  83. package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +10 -10
  84. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +25 -0
  85. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +88 -0
  86. package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +67 -0
  87. package/deps/rocksdb/rocksdb/db/db_write_test.cc +5 -0
  88. package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +4 -4
  89. package/deps/rocksdb/rocksdb/db/experimental.cc +4 -2
  90. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +86 -1
  91. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +15 -2
  92. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +1 -2
  93. package/deps/rocksdb/rocksdb/db/flush_job.cc +21 -14
  94. package/deps/rocksdb/rocksdb/db/forward_iterator.cc +14 -7
  95. package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +31 -8
  96. package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +21 -19
  97. package/deps/rocksdb/rocksdb/db/internal_stats.cc +42 -12
  98. package/deps/rocksdb/rocksdb/db/internal_stats.h +1 -0
  99. package/deps/rocksdb/rocksdb/db/kv_checksum.h +92 -6
  100. package/deps/rocksdb/rocksdb/db/listener_test.cc +2 -2
  101. package/deps/rocksdb/rocksdb/db/log_format.h +8 -4
  102. package/deps/rocksdb/rocksdb/db/log_reader.cc +129 -51
  103. package/deps/rocksdb/rocksdb/db/log_reader.h +16 -0
  104. package/deps/rocksdb/rocksdb/db/log_test.cc +125 -4
  105. package/deps/rocksdb/rocksdb/db/log_writer.cc +32 -2
  106. package/deps/rocksdb/rocksdb/db/log_writer.h +16 -0
  107. package/deps/rocksdb/rocksdb/db/memtable.cc +17 -46
  108. package/deps/rocksdb/rocksdb/db/memtable.h +1 -1
  109. package/deps/rocksdb/rocksdb/db/memtable_list.cc +8 -4
  110. package/deps/rocksdb/rocksdb/db/merge_helper.cc +1 -1
  111. package/deps/rocksdb/rocksdb/db/perf_context_test.cc +2 -1
  112. package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +5 -4
  113. package/deps/rocksdb/rocksdb/db/repair.cc +38 -11
  114. package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +3 -3
  115. package/deps/rocksdb/rocksdb/db/table_cache.cc +68 -51
  116. package/deps/rocksdb/rocksdb/db/table_cache.h +20 -10
  117. package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +2 -1
  118. package/deps/rocksdb/rocksdb/db/table_properties_collector_test.cc +6 -3
  119. package/deps/rocksdb/rocksdb/db/version_builder.cc +9 -5
  120. package/deps/rocksdb/rocksdb/db/version_builder.h +2 -1
  121. package/deps/rocksdb/rocksdb/db/version_builder_test.cc +140 -120
  122. package/deps/rocksdb/rocksdb/db/version_edit.cc +14 -0
  123. package/deps/rocksdb/rocksdb/db/version_edit.h +12 -4
  124. package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +21 -13
  125. package/deps/rocksdb/rocksdb/db/version_edit_handler.h +26 -16
  126. package/deps/rocksdb/rocksdb/db/version_edit_test.cc +9 -9
  127. package/deps/rocksdb/rocksdb/db/version_set.cc +292 -96
  128. package/deps/rocksdb/rocksdb/db/version_set.h +53 -28
  129. package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +1 -0
  130. package/deps/rocksdb/rocksdb/db/version_set_test.cc +62 -22
  131. package/deps/rocksdb/rocksdb/db/version_util.h +5 -4
  132. package/deps/rocksdb/rocksdb/db/write_batch.cc +3 -1
  133. package/deps/rocksdb/rocksdb/db_stress_tool/CMakeLists.txt +1 -0
  134. package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +119 -27
  135. package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +123 -0
  136. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +4 -0
  137. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +7 -2
  138. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +34 -0
  139. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +13 -0
  140. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +43 -33
  141. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +29 -17
  142. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +5 -0
  143. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +6 -1
  144. package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +85 -50
  145. package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.h +96 -54
  146. package/deps/rocksdb/rocksdb/db_stress_tool/expected_value.cc +122 -0
  147. package/deps/rocksdb/rocksdb/db_stress_tool/expected_value.h +206 -0
  148. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +9 -1
  149. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.h +9 -3
  150. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +322 -92
  151. package/deps/rocksdb/rocksdb/env/env_posix.cc +12 -8
  152. package/deps/rocksdb/rocksdb/env/env_test.cc +31 -0
  153. package/deps/rocksdb/rocksdb/env/mock_env.cc +1 -1
  154. package/deps/rocksdb/rocksdb/env/unique_id_gen.h +14 -0
  155. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +1 -1
  156. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +5 -1
  157. package/deps/rocksdb/rocksdb/file/file_util.cc +3 -3
  158. package/deps/rocksdb/rocksdb/file/file_util.h +2 -0
  159. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +89 -0
  160. package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +22 -7
  161. package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +3 -2
  162. package/deps/rocksdb/rocksdb/file/readahead_raf.cc +1 -1
  163. package/deps/rocksdb/rocksdb/file/sequence_file_reader.cc +1 -1
  164. package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +1 -1
  165. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_cache.h +3 -0
  166. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +154 -74
  167. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +27 -7
  168. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +107 -28
  169. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +19 -0
  170. package/deps/rocksdb/rocksdb/include/rocksdb/env.h +8 -0
  171. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +2 -0
  172. package/deps/rocksdb/rocksdb/include/rocksdb/memory_allocator.h +7 -1
  173. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +137 -152
  174. package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +61 -26
  175. package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +30 -26
  176. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +33 -16
  177. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +87 -8
  178. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +1 -1
  179. package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +5 -0
  180. package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +1 -0
  181. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_util.h +1 -0
  182. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +7 -0
  183. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +0 -1
  184. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
  185. package/deps/rocksdb/rocksdb/include/rocksdb/write_buffer_manager.h +9 -2
  186. package/deps/rocksdb/rocksdb/logging/env_logger.h +2 -0
  187. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +78 -42
  188. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.h +14 -9
  189. package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +1 -0
  190. package/deps/rocksdb/rocksdb/memtable/skiplist_test.cc +1 -0
  191. package/deps/rocksdb/rocksdb/memtable/write_buffer_manager.cc +4 -9
  192. package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +19 -11
  193. package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.h +1 -1
  194. package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +211 -555
  195. package/deps/rocksdb/rocksdb/monitoring/perf_step_timer.h +1 -1
  196. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +36 -2
  197. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.cc +17 -7
  198. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.h +10 -7
  199. package/deps/rocksdb/rocksdb/monitoring/thread_status_util.cc +19 -18
  200. package/deps/rocksdb/rocksdb/monitoring/thread_status_util.h +10 -2
  201. package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +14 -0
  202. package/deps/rocksdb/rocksdb/options/cf_options.cc +35 -2
  203. package/deps/rocksdb/rocksdb/options/cf_options.h +5 -0
  204. package/deps/rocksdb/rocksdb/options/customizable_test.cc +1 -1
  205. package/deps/rocksdb/rocksdb/options/options.cc +12 -53
  206. package/deps/rocksdb/rocksdb/options/options_helper.cc +4 -0
  207. package/deps/rocksdb/rocksdb/options/options_parser.cc +11 -0
  208. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +32 -4
  209. package/deps/rocksdb/rocksdb/options/options_test.cc +89 -5
  210. package/deps/rocksdb/rocksdb/port/lang.h +27 -0
  211. package/deps/rocksdb/rocksdb/port/stack_trace.cc +67 -24
  212. package/deps/rocksdb/rocksdb/src.mk +2 -0
  213. package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +2 -3
  214. package/deps/rocksdb/rocksdb/table/block_based/block.cc +195 -35
  215. package/deps/rocksdb/rocksdb/table/block_based/block.h +197 -24
  216. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +71 -51
  217. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +7 -1
  218. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +4 -6
  219. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +3 -0
  220. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +43 -2
  221. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +36 -6
  222. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +266 -166
  223. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +44 -14
  224. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +1 -1
  225. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +63 -56
  226. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +8 -2
  227. package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +4 -2
  228. package/deps/rocksdb/rocksdb/table/block_based/block_cache.cc +10 -0
  229. package/deps/rocksdb/rocksdb/table/block_based/block_cache.h +14 -2
  230. package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +918 -2
  231. package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +3 -2
  232. package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +10 -9
  233. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +6 -8
  234. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.h +2 -2
  235. package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.cc +1 -1
  236. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +18 -23
  237. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +8 -8
  238. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block_test.cc +16 -32
  239. package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +7 -8
  240. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +4 -5
  241. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +3 -3
  242. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +46 -53
  243. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +12 -12
  244. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +7 -9
  245. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +26 -23
  246. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.h +2 -1
  247. package/deps/rocksdb/rocksdb/table/block_based/reader_common.h +3 -0
  248. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +4 -2
  249. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +3 -2
  250. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +7 -1
  251. package/deps/rocksdb/rocksdb/table/block_fetcher.h +1 -1
  252. package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +2 -1
  253. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +3 -2
  254. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.cc +5 -2
  255. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.h +4 -2
  256. package/deps/rocksdb/rocksdb/table/format.cc +4 -4
  257. package/deps/rocksdb/rocksdb/table/format.h +1 -1
  258. package/deps/rocksdb/rocksdb/table/get_context.cc +1 -1
  259. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +33 -22
  260. package/deps/rocksdb/rocksdb/table/meta_blocks.h +4 -0
  261. package/deps/rocksdb/rocksdb/table/mock_table.cc +4 -2
  262. package/deps/rocksdb/rocksdb/table/persistent_cache_helper.h +1 -1
  263. package/deps/rocksdb/rocksdb/table/persistent_cache_options.h +1 -1
  264. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +18 -10
  265. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.h +4 -3
  266. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +10 -7
  267. package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +4 -2
  268. package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +11 -0
  269. package/deps/rocksdb/rocksdb/table/table_builder.h +14 -5
  270. package/deps/rocksdb/rocksdb/table/table_properties.cc +2 -0
  271. package/deps/rocksdb/rocksdb/table/table_reader.h +6 -3
  272. package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +1 -1
  273. package/deps/rocksdb/rocksdb/table/table_test.cc +291 -34
  274. package/deps/rocksdb/rocksdb/test_util/secondary_cache_test_util.h +3 -1
  275. package/deps/rocksdb/rocksdb/test_util/testharness.h +5 -0
  276. package/deps/rocksdb/rocksdb/test_util/testutil.cc +2 -2
  277. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +33 -17
  278. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +3 -1
  279. package/deps/rocksdb/rocksdb/util/bloom_impl.h +2 -2
  280. package/deps/rocksdb/rocksdb/util/compression.h +1 -1
  281. package/deps/rocksdb/rocksdb/util/crc32c.cc +24 -83
  282. package/deps/rocksdb/rocksdb/util/crc32c_arm64.cc +7 -9
  283. package/deps/rocksdb/rocksdb/util/file_checksum_helper.cc +4 -1
  284. package/deps/rocksdb/rocksdb/util/filter_bench.cc +1 -1
  285. package/deps/rocksdb/rocksdb/util/gflags_compat.h +9 -10
  286. package/deps/rocksdb/rocksdb/util/math.h +12 -7
  287. package/deps/rocksdb/rocksdb/util/rate_limiter.cc +16 -18
  288. package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +46 -2
  289. package/deps/rocksdb/rocksdb/util/ribbon_test.cc +6 -6
  290. package/deps/rocksdb/rocksdb/util/slice_transform_test.cc +12 -7
  291. package/deps/rocksdb/rocksdb/util/stop_watch.h +31 -13
  292. package/deps/rocksdb/rocksdb/util/thread_list_test.cc +2 -0
  293. package/deps/rocksdb/rocksdb/util/thread_operation.h +2 -1
  294. package/deps/rocksdb/rocksdb/util/udt_util.h +77 -0
  295. package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge.cc +2 -2
  296. package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge_test.cc +1 -1
  297. package/deps/rocksdb/rocksdb/utilities/agg_merge/test_agg_merge.cc +1 -1
  298. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +1 -1
  299. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +1 -1
  300. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.h +1 -1
  301. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +11 -1
  302. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +34 -1
  303. package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +15 -0
  304. package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache.cc +1 -1
  305. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +5 -1
  306. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +29 -1
  307. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +0 -1
  308. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +0 -1
  309. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +6 -1
  310. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +10 -0
  311. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +6 -1
  312. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +5 -0
  313. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +5 -0
  314. package/package.json +1 -1
  315. package/prebuilds/darwin-arm64/node.napi.node +0 -0
  316. package/prebuilds/linux-x64/node.napi.node +0 -0
  317. /package/deps/rocksdb/rocksdb/memory/{memory_allocator.h → memory_allocator_impl.h} +0 -0
  318. /package/deps/rocksdb/rocksdb/monitoring/{statistics.h → statistics_impl.h} +0 -0
  319. /package/deps/rocksdb/rocksdb/table/block_based/{flush_block_policy.h → flush_block_policy_impl.h} +0 -0
  320. /package/deps/rocksdb/rocksdb/util/{rate_limiter.h → rate_limiter_impl.h} +0 -0
  321. /package/deps/rocksdb/rocksdb/utilities/agg_merge/{agg_merge.h → agg_merge_impl.h} +0 -0
@@ -16,6 +16,7 @@
16
16
  #include "db/column_family.h"
17
17
  #include "logging/log_buffer.h"
18
18
  #include "logging/logging.h"
19
+ #include "options/options_helper.h"
19
20
  #include "util/string_util.h"
20
21
 
21
22
  namespace ROCKSDB_NAMESPACE {
@@ -284,31 +285,36 @@ Compaction* FIFOCompactionPicker::PickSizeCompaction(
284
285
  return c;
285
286
  }
286
287
 
287
- Compaction* FIFOCompactionPicker::PickCompactionToWarm(
288
+ Compaction* FIFOCompactionPicker::PickTemperatureChangeCompaction(
288
289
  const std::string& cf_name, const MutableCFOptions& mutable_cf_options,
289
290
  const MutableDBOptions& mutable_db_options, VersionStorageInfo* vstorage,
290
291
  LogBuffer* log_buffer) {
291
- if (mutable_cf_options.compaction_options_fifo.age_for_warm == 0) {
292
+ const std::vector<FileTemperatureAge>& ages =
293
+ mutable_cf_options.compaction_options_fifo
294
+ .file_temperature_age_thresholds;
295
+ if (ages.empty()) {
292
296
  return nullptr;
293
297
  }
294
298
 
295
- // PickCompactionToWarm is only triggered if there is no non-L0 files.
296
- for (int level = 1; level < vstorage->num_levels(); ++level) {
297
- if (GetTotalFilesSize(vstorage->LevelFiles(level)) > 0) {
298
- return nullptr;
299
- }
299
+ // Does not apply to multi-level FIFO.
300
+ if (vstorage->num_levels() > 1) {
301
+ return nullptr;
300
302
  }
301
303
 
302
304
  const int kLevel0 = 0;
303
305
  const std::vector<FileMetaData*>& level_files = vstorage->LevelFiles(kLevel0);
306
+ if (level_files.empty()) {
307
+ return nullptr;
308
+ }
304
309
 
305
310
  int64_t _current_time;
306
311
  auto status = ioptions_.clock->GetCurrentTime(&_current_time);
307
312
  if (!status.ok()) {
308
- ROCKS_LOG_BUFFER(log_buffer,
309
- "[%s] FIFO compaction: Couldn't get current time: %s. "
310
- "Not doing compactions based on warm threshold. ",
311
- cf_name.c_str(), status.ToString().c_str());
313
+ ROCKS_LOG_BUFFER(
314
+ log_buffer,
315
+ "[%s] FIFO compaction: Couldn't get current time: %s. "
316
+ "Not doing compactions based on file temperature-age threshold. ",
317
+ cf_name.c_str(), status.ToString().c_str());
312
318
  return nullptr;
313
319
  }
314
320
  const uint64_t current_time = static_cast<uint64_t>(_current_time);
@@ -327,56 +333,77 @@ Compaction* FIFOCompactionPicker::PickCompactionToWarm(
327
333
  inputs[0].level = 0;
328
334
 
329
335
  // avoid underflow
330
- if (current_time > mutable_cf_options.compaction_options_fifo.age_for_warm) {
331
- uint64_t create_time_threshold =
332
- current_time - mutable_cf_options.compaction_options_fifo.age_for_warm;
336
+ uint64_t min_age = ages[0].age;
337
+ // kLastTemperature means target temperature is to be determined.
338
+ Temperature compaction_target_temp = Temperature::kLastTemperature;
339
+ if (current_time > min_age) {
340
+ uint64_t create_time_threshold = current_time - min_age;
333
341
  uint64_t compaction_size = 0;
334
- // We will ideally identify a file qualifying for warm tier by knowing
335
- // the timestamp for the youngest entry in the file. However, right now
336
- // we don't have the information. We infer it by looking at timestamp
337
- // of the next file's (which is just younger) oldest entry's timestamp.
338
- FileMetaData* prev_file = nullptr;
339
- for (auto ritr = level_files.rbegin(); ritr != level_files.rend(); ++ritr) {
340
- FileMetaData* f = *ritr;
341
- assert(f);
342
- if (f->being_compacted) {
343
- // Right now this probably won't happen as we never try to schedule
344
- // two compactions in parallel, so here we just simply don't schedule
345
- // anything.
342
+ // We will ideally identify a file qualifying for temperature change by
343
+ // knowing the timestamp for the youngest entry in the file. However, right
344
+ // now we don't have the information. We infer it by looking at timestamp of
345
+ // the previous file's (which is just younger) oldest entry's timestamp.
346
+ Temperature cur_target_temp;
347
+ // avoid index underflow
348
+ assert(level_files.size() >= 1);
349
+ for (size_t index = level_files.size() - 1; index >= 1; --index) {
350
+ // Try to add cur_file to compaction inputs.
351
+ FileMetaData* cur_file = level_files[index];
352
+ // prev_file is just younger than cur_file
353
+ FileMetaData* prev_file = level_files[index - 1];
354
+ if (cur_file->being_compacted) {
355
+ // Should not happen since we check for
356
+ // `level0_compactions_in_progress_` above. Here we simply just don't
357
+ // schedule anything.
346
358
  return nullptr;
347
359
  }
348
- uint64_t oldest_ancester_time = f->TryGetOldestAncesterTime();
349
- if (oldest_ancester_time == kUnknownOldestAncesterTime) {
360
+ uint64_t oldest_ancestor_time = prev_file->TryGetOldestAncesterTime();
361
+ if (oldest_ancestor_time == kUnknownOldestAncesterTime) {
350
362
  // Older files might not have enough information. It is possible to
351
363
  // handle these files by looking at newer files, but maintaining the
352
364
  // logic isn't worth it.
353
365
  break;
354
366
  }
355
- if (oldest_ancester_time > create_time_threshold) {
356
- // The previous file (which has slightly older data) doesn't qualify
357
- // for warm tier.
367
+ if (oldest_ancestor_time > create_time_threshold) {
368
+ // cur_file is too fresh
358
369
  break;
359
370
  }
360
- if (prev_file != nullptr) {
361
- compaction_size += prev_file->fd.GetFileSize();
362
- if (compaction_size > mutable_cf_options.max_compaction_bytes) {
371
+ cur_target_temp = ages[0].temperature;
372
+ for (size_t i = 1; i < ages.size(); ++i) {
373
+ if (current_time >= ages[i].age &&
374
+ oldest_ancestor_time <= current_time - ages[i].age) {
375
+ cur_target_temp = ages[i].temperature;
376
+ }
377
+ }
378
+ if (cur_file->temperature == cur_target_temp) {
379
+ if (inputs[0].empty()) {
380
+ continue;
381
+ } else {
363
382
  break;
364
383
  }
365
- inputs[0].files.push_back(prev_file);
366
- ROCKS_LOG_BUFFER(log_buffer,
367
- "[%s] FIFO compaction: picking file %" PRIu64
368
- " with next file's oldest time %" PRIu64 " for warm",
369
- cf_name.c_str(), prev_file->fd.GetNumber(),
370
- oldest_ancester_time);
371
384
  }
372
- if (f->temperature == Temperature::kUnknown ||
373
- f->temperature == Temperature::kHot) {
374
- prev_file = f;
375
- } else if (!inputs[0].files.empty()) {
376
- // A warm file newer than files picked.
385
+
386
+ // cur_file needs to change temperature
387
+ if (compaction_target_temp == Temperature::kLastTemperature) {
388
+ assert(inputs[0].empty());
389
+ compaction_target_temp = cur_target_temp;
390
+ } else if (cur_target_temp != compaction_target_temp) {
391
+ assert(!inputs[0].empty());
392
+ break;
393
+ }
394
+ if (inputs[0].empty() || compaction_size + cur_file->fd.GetFileSize() <=
395
+ mutable_cf_options.max_compaction_bytes) {
396
+ inputs[0].files.push_back(cur_file);
397
+ compaction_size += cur_file->fd.GetFileSize();
398
+ ROCKS_LOG_BUFFER(
399
+ log_buffer,
400
+ "[%s] FIFO compaction: picking file %" PRIu64
401
+ " with next file's oldest time %" PRIu64 " for temperature %s.",
402
+ cf_name.c_str(), cur_file->fd.GetNumber(), oldest_ancestor_time,
403
+ temperature_to_string[cur_target_temp].c_str());
404
+ }
405
+ if (compaction_size > mutable_cf_options.max_compaction_bytes) {
377
406
  break;
378
- } else {
379
- assert(prev_file == nullptr);
380
407
  }
381
408
  }
382
409
  }
@@ -390,7 +417,7 @@ Compaction* FIFOCompactionPicker::PickCompactionToWarm(
390
417
  std::move(inputs), 0, 0 /* output file size limit */,
391
418
  0 /* max compaction bytes, not applicable */, 0 /* output path ID */,
392
419
  mutable_cf_options.compression, mutable_cf_options.compression_opts,
393
- Temperature::kWarm,
420
+ compaction_target_temp,
394
421
  /* max_subcompactions */ 0, {}, /* is manual */ false, /* trim_ts */ "",
395
422
  vstorage->CompactionScore(0),
396
423
  /* is deletion compaction */ false, /* l0_files_might_overlap */ true,
@@ -412,8 +439,8 @@ Compaction* FIFOCompactionPicker::PickCompaction(
412
439
  vstorage, log_buffer);
413
440
  }
414
441
  if (c == nullptr) {
415
- c = PickCompactionToWarm(cf_name, mutable_cf_options, mutable_db_options,
416
- vstorage, log_buffer);
442
+ c = PickTemperatureChangeCompaction(
443
+ cf_name, mutable_cf_options, mutable_db_options, vstorage, log_buffer);
417
444
  }
418
445
  RegisterCompaction(c);
419
446
  return c;
@@ -52,10 +52,9 @@ class FIFOCompactionPicker : public CompactionPicker {
52
52
  VersionStorageInfo* version,
53
53
  LogBuffer* log_buffer);
54
54
 
55
- Compaction* PickCompactionToWarm(const std::string& cf_name,
56
- const MutableCFOptions& mutable_cf_options,
57
- const MutableDBOptions& mutable_db_options,
58
- VersionStorageInfo* version,
59
- LogBuffer* log_buffer);
55
+ Compaction* PickTemperatureChangeCompaction(
56
+ const std::string& cf_name, const MutableCFOptions& mutable_cf_options,
57
+ const MutableDBOptions& mutable_db_options, VersionStorageInfo* vstorage,
58
+ LogBuffer* log_buffer);
60
59
  };
61
60
  } // namespace ROCKSDB_NAMESPACE
@@ -83,7 +83,7 @@ class LevelCompactionBuilder {
83
83
 
84
84
  Compaction* GetCompaction();
85
85
 
86
- // For the specfied level, pick a file that we want to compact.
86
+ // From `start_level_`, pick files to compact to `output_level_`.
87
87
  // Returns false if there is no file to compact.
88
88
  // If it returns true, inputs->files.size() will be exactly one for
89
89
  // all compaction priorities except round-robin. For round-robin,
@@ -107,8 +107,9 @@ class LevelCompactionBuilder {
107
107
  bool PickIntraL0Compaction();
108
108
 
109
109
  // Return true if TrivialMove is extended. `start_index` is the index of
110
- // the intiial file picked, which should already be in `start_level_inputs_`.
111
- bool TryExtendNonL0TrivialMove(int start_index);
110
+ // the initial file picked, which should already be in `start_level_inputs_`.
111
+ bool TryExtendNonL0TrivialMove(int start_index,
112
+ bool only_expand_right = false);
112
113
 
113
114
  // Picks a file from level_files to compact.
114
115
  // level_files is a vector of (level, file metadata) in ascending order of
@@ -355,7 +356,8 @@ void LevelCompactionBuilder::SetupOtherFilesWithRoundRobinExpansion() {
355
356
  vstorage_->GetOverlappingInputs(output_level_, &smallest, &largest,
356
357
  &output_level_inputs.files);
357
358
  if (output_level_inputs.empty()) {
358
- if (TryExtendNonL0TrivialMove((int)start_index)) {
359
+ if (TryExtendNonL0TrivialMove((int)start_index,
360
+ true /* only_expand_right */)) {
359
361
  return;
360
362
  }
361
363
  }
@@ -501,6 +503,16 @@ Compaction* LevelCompactionBuilder::PickCompaction() {
501
503
  }
502
504
 
503
505
  Compaction* LevelCompactionBuilder::GetCompaction() {
506
+ // TryPickL0TrivialMove() does not apply to the case when compacting L0 to an
507
+ // empty output level. So L0 files is picked in PickFileToCompact() by
508
+ // compaction score. We may still be able to do trivial move when this file
509
+ // does not overlap with other L0s. This happens when
510
+ // compaction_inputs_[0].size() == 1 since SetupOtherL0FilesIfNeeded() did not
511
+ // pull in more L0s.
512
+ assert(!compaction_inputs_.empty());
513
+ bool l0_files_might_overlap =
514
+ start_level_ == 0 && !is_l0_trivial_move_ &&
515
+ (compaction_inputs_.size() > 1 || compaction_inputs_[0].size() > 1);
504
516
  auto c = new Compaction(
505
517
  vstorage_, ioptions_, mutable_cf_options_, mutable_db_options_,
506
518
  std::move(compaction_inputs_), output_level_,
@@ -515,8 +527,7 @@ Compaction* LevelCompactionBuilder::GetCompaction() {
515
527
  Temperature::kUnknown,
516
528
  /* max_subcompactions */ 0, std::move(grandparents_), is_manual_,
517
529
  /* trim_ts */ "", start_level_score_, false /* deletion_compaction */,
518
- /* l0_files_might_overlap */ start_level_ == 0 && !is_l0_trivial_move_,
519
- compaction_reason_);
530
+ l0_files_might_overlap, compaction_reason_);
520
531
 
521
532
  // If it's level 0 compaction, make sure we don't execute any other level 0
522
533
  // compactions in parallel
@@ -653,7 +664,8 @@ bool LevelCompactionBuilder::TryPickL0TrivialMove() {
653
664
  return false;
654
665
  }
655
666
 
656
- bool LevelCompactionBuilder::TryExtendNonL0TrivialMove(int start_index) {
667
+ bool LevelCompactionBuilder::TryExtendNonL0TrivialMove(int start_index,
668
+ bool only_expand_right) {
657
669
  if (start_level_inputs_.size() == 1 &&
658
670
  (ioptions_.db_paths.empty() || ioptions_.db_paths.size() == 1) &&
659
671
  (mutable_cf_options_.compression_per_level.empty())) {
@@ -670,6 +682,7 @@ bool LevelCompactionBuilder::TryExtendNonL0TrivialMove(int start_index) {
670
682
  size_t total_size = initial_file->fd.GetFileSize();
671
683
  CompactionInputFiles output_level_inputs;
672
684
  output_level_inputs.level = output_level_;
685
+ // Expand towards right
673
686
  for (int i = start_index + 1;
674
687
  i < static_cast<int>(level_files.size()) &&
675
688
  start_level_inputs_.size() < kMaxMultiTrivialMove;
@@ -702,6 +715,37 @@ bool LevelCompactionBuilder::TryExtendNonL0TrivialMove(int start_index) {
702
715
  }
703
716
  start_level_inputs_.files.push_back(next_file);
704
717
  }
718
+ // Expand towards left
719
+ if (!only_expand_right) {
720
+ for (int i = start_index - 1;
721
+ i >= 0 && start_level_inputs_.size() < kMaxMultiTrivialMove; i--) {
722
+ FileMetaData* next_file = level_files[i];
723
+ if (next_file->being_compacted) {
724
+ break;
725
+ }
726
+ vstorage_->GetOverlappingInputs(output_level_, &(next_file->smallest),
727
+ &(initial_file->largest),
728
+ &output_level_inputs.files);
729
+ if (!output_level_inputs.empty()) {
730
+ break;
731
+ }
732
+ if (i > 0 && compaction_picker_->icmp()
733
+ ->user_comparator()
734
+ ->CompareWithoutTimestamp(
735
+ next_file->smallest.user_key(),
736
+ level_files[i - 1]->largest.user_key()) == 0) {
737
+ // Not a clean up after adding the next file. Skip.
738
+ break;
739
+ }
740
+ total_size += next_file->fd.GetFileSize();
741
+ if (total_size > mutable_cf_options_.max_compaction_bytes) {
742
+ break;
743
+ }
744
+ // keep `files` sorted in increasing order by key range
745
+ start_level_inputs_.files.insert(start_level_inputs_.files.begin(),
746
+ next_file);
747
+ }
748
+ }
705
749
  return start_level_inputs_.size() > 1;
706
750
  }
707
751
  return false;
@@ -785,7 +829,10 @@ bool LevelCompactionBuilder::PickFileToCompact() {
785
829
  vstorage_->GetOverlappingInputs(output_level_, &smallest, &largest,
786
830
  &output_level_inputs.files);
787
831
  if (output_level_inputs.empty()) {
788
- if (TryExtendNonL0TrivialMove(index)) {
832
+ if (start_level_ > 0 &&
833
+ TryExtendNonL0TrivialMove(index,
834
+ ioptions_.compaction_pri ==
835
+ kRoundRobin /* only_expand_right */)) {
789
836
  break;
790
837
  }
791
838
  } else {