@nxtedition/rocksdb 8.2.7 → 9.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 (359) hide show
  1. package/deps/rocksdb/rocksdb/CMakeLists.txt +7 -1
  2. package/deps/rocksdb/rocksdb/Makefile +22 -19
  3. package/deps/rocksdb/rocksdb/TARGETS +8 -0
  4. package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +157 -61
  5. package/deps/rocksdb/rocksdb/cache/cache_test.cc +43 -92
  6. package/deps/rocksdb/rocksdb/cache/clock_cache.cc +632 -455
  7. package/deps/rocksdb/rocksdb/cache/clock_cache.h +244 -149
  8. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +41 -13
  9. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +11 -1
  10. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +216 -17
  11. package/deps/rocksdb/rocksdb/cache/lru_cache.cc +7 -5
  12. package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +279 -199
  13. package/deps/rocksdb/rocksdb/cache/secondary_cache.cc +2 -1
  14. package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +159 -8
  15. package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.h +28 -2
  16. package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +1 -1
  17. package/deps/rocksdb/rocksdb/cache/sharded_cache.h +8 -0
  18. package/deps/rocksdb/rocksdb/crash_test.mk +14 -0
  19. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +3 -1
  20. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +1 -1
  21. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +1 -1
  22. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.cc +2 -2
  23. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.h +1 -1
  24. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +18 -21
  25. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +1 -2
  26. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +1 -1
  27. package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.cc +2 -3
  28. package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +1 -1
  29. package/deps/rocksdb/rocksdb/db/builder.cc +32 -7
  30. package/deps/rocksdb/rocksdb/db/c.cc +169 -6
  31. package/deps/rocksdb/rocksdb/db/c_test.c +104 -6
  32. package/deps/rocksdb/rocksdb/db/column_family.cc +98 -47
  33. package/deps/rocksdb/rocksdb/db/column_family.h +25 -2
  34. package/deps/rocksdb/rocksdb/db/column_family_test.cc +213 -2
  35. package/deps/rocksdb/rocksdb/db/compact_files_test.cc +4 -1
  36. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +93 -23
  37. package/deps/rocksdb/rocksdb/db/compaction/compaction.h +33 -9
  38. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +7 -6
  39. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +17 -6
  40. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +2 -2
  41. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +107 -43
  42. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +15 -4
  43. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +2 -0
  44. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +4 -2
  45. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +25 -17
  46. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +13 -4
  47. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +11 -11
  48. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +29 -4
  49. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +24 -31
  50. package/deps/rocksdb/rocksdb/db/compaction/file_pri.h +3 -1
  51. package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +19 -19
  52. package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +2 -1
  53. package/deps/rocksdb/rocksdb/db/convenience.cc +20 -3
  54. package/deps/rocksdb/rocksdb/db/convenience_impl.h +15 -0
  55. package/deps/rocksdb/rocksdb/db/corruption_test.cc +17 -0
  56. package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +1 -0
  57. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +17 -3
  58. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +5 -0
  59. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +15 -15
  60. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +666 -44
  61. package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +2 -29
  62. package/deps/rocksdb/rocksdb/db/db_flush_test.cc +274 -1
  63. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +40 -19
  64. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +6 -5
  65. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +250 -116
  66. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +51 -23
  67. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +354 -96
  68. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +6 -3
  69. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +2 -1
  70. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +5 -0
  71. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +50 -21
  72. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +26 -13
  73. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +13 -5
  74. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +61 -21
  75. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +8 -87
  76. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +7 -1
  77. package/deps/rocksdb/rocksdb/db/db_iter.cc +2 -2
  78. package/deps/rocksdb/rocksdb/db/db_iter.h +1 -0
  79. package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +4 -11
  80. package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +6 -6
  81. package/deps/rocksdb/rocksdb/db/db_options_test.cc +39 -29
  82. package/deps/rocksdb/rocksdb/db/db_properties_test.cc +26 -36
  83. package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +106 -0
  84. package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +12 -3
  85. package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +1 -1
  86. package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +1 -0
  87. package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +279 -166
  88. package/deps/rocksdb/rocksdb/db/db_test.cc +48 -21
  89. package/deps/rocksdb/rocksdb/db/db_test2.cc +81 -12
  90. package/deps/rocksdb/rocksdb/db/db_test_util.cc +14 -6
  91. package/deps/rocksdb/rocksdb/db/db_test_util.h +40 -0
  92. package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +13 -1
  93. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +233 -0
  94. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +143 -0
  95. package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +6 -6
  96. package/deps/rocksdb/rocksdb/db/db_write_test.cc +2 -2
  97. package/deps/rocksdb/rocksdb/db/dbformat.cc +36 -0
  98. package/deps/rocksdb/rocksdb/db/dbformat.h +169 -20
  99. package/deps/rocksdb/rocksdb/db/dbformat_test.cc +129 -0
  100. package/deps/rocksdb/rocksdb/db/error_handler.cc +16 -0
  101. package/deps/rocksdb/rocksdb/db/error_handler.h +6 -3
  102. package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +4 -4
  103. package/deps/rocksdb/rocksdb/db/event_helpers.cc +4 -0
  104. package/deps/rocksdb/rocksdb/db/experimental.cc +2 -1
  105. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +4 -4
  106. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +17 -8
  107. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +86 -4
  108. package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +1 -1
  109. package/deps/rocksdb/rocksdb/db/file_indexer.cc +2 -4
  110. package/deps/rocksdb/rocksdb/db/flush_job.cc +101 -11
  111. package/deps/rocksdb/rocksdb/db/flush_job.h +24 -1
  112. package/deps/rocksdb/rocksdb/db/flush_job_test.cc +88 -11
  113. package/deps/rocksdb/rocksdb/db/forward_iterator.cc +2 -3
  114. package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +159 -91
  115. package/deps/rocksdb/rocksdb/db/import_column_family_job.h +19 -10
  116. package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +143 -0
  117. package/deps/rocksdb/rocksdb/db/internal_stats.cc +13 -1
  118. package/deps/rocksdb/rocksdb/db/internal_stats.h +2 -0
  119. package/deps/rocksdb/rocksdb/db/listener_test.cc +2 -1
  120. package/deps/rocksdb/rocksdb/db/log_reader.h +3 -2
  121. package/deps/rocksdb/rocksdb/db/log_test.cc +17 -21
  122. package/deps/rocksdb/rocksdb/db/log_writer.cc +1 -1
  123. package/deps/rocksdb/rocksdb/db/log_writer.h +3 -2
  124. package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +4 -3
  125. package/deps/rocksdb/rocksdb/db/memtable.cc +52 -13
  126. package/deps/rocksdb/rocksdb/db/memtable.h +45 -1
  127. package/deps/rocksdb/rocksdb/db/memtable_list.cc +44 -10
  128. package/deps/rocksdb/rocksdb/db/memtable_list.h +32 -1
  129. package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +90 -4
  130. package/deps/rocksdb/rocksdb/db/perf_context_test.cc +2 -2
  131. package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +1 -0
  132. package/deps/rocksdb/rocksdb/db/repair.cc +21 -4
  133. package/deps/rocksdb/rocksdb/db/repair_test.cc +143 -2
  134. package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +5 -4
  135. package/deps/rocksdb/rocksdb/db/table_cache.cc +44 -35
  136. package/deps/rocksdb/rocksdb/db/table_cache.h +6 -6
  137. package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +2 -2
  138. package/deps/rocksdb/rocksdb/db/version_builder.cc +0 -1
  139. package/deps/rocksdb/rocksdb/db/version_builder_test.cc +236 -204
  140. package/deps/rocksdb/rocksdb/db/version_edit.cc +66 -4
  141. package/deps/rocksdb/rocksdb/db/version_edit.h +48 -6
  142. package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +80 -8
  143. package/deps/rocksdb/rocksdb/db/version_edit_handler.h +12 -0
  144. package/deps/rocksdb/rocksdb/db/version_edit_test.cc +86 -17
  145. package/deps/rocksdb/rocksdb/db/version_set.cc +136 -41
  146. package/deps/rocksdb/rocksdb/db/version_set.h +28 -7
  147. package/deps/rocksdb/rocksdb/db/version_set_test.cc +25 -15
  148. package/deps/rocksdb/rocksdb/db/write_batch.cc +11 -0
  149. package/deps/rocksdb/rocksdb/db/write_batch_internal.h +3 -0
  150. package/deps/rocksdb/rocksdb/db/write_batch_test.cc +16 -0
  151. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +22 -3
  152. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +2 -0
  153. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +42 -0
  154. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +32 -3
  155. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +7 -0
  156. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +247 -120
  157. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +9 -4
  158. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +13 -6
  159. package/deps/rocksdb/rocksdb/db_stress_tool/expected_value.h +2 -0
  160. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +15 -27
  161. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +264 -69
  162. package/deps/rocksdb/rocksdb/env/env.cc +1 -2
  163. package/deps/rocksdb/rocksdb/env/env_encryption.cc +11 -165
  164. package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +0 -17
  165. package/deps/rocksdb/rocksdb/env/env_posix.cc +6 -2
  166. package/deps/rocksdb/rocksdb/env/env_test.cc +86 -2
  167. package/deps/rocksdb/rocksdb/env/fs_posix.cc +6 -4
  168. package/deps/rocksdb/rocksdb/env/unique_id_gen.cc +78 -0
  169. package/deps/rocksdb/rocksdb/env/unique_id_gen.h +34 -0
  170. package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +1 -0
  171. package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +15 -4
  172. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +52 -43
  173. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +34 -18
  174. package/deps/rocksdb/rocksdb/file/file_util.cc +10 -5
  175. package/deps/rocksdb/rocksdb/file/file_util.h +13 -1
  176. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +724 -79
  177. package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +64 -33
  178. package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +3 -16
  179. package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +23 -12
  180. package/deps/rocksdb/rocksdb/file/sequence_file_reader.h +3 -0
  181. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_cache.h +2 -1
  182. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +153 -88
  183. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +70 -2
  184. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +50 -11
  185. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +3 -0
  186. package/deps/rocksdb/rocksdb/include/rocksdb/comparator.h +16 -2
  187. package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +1 -1
  188. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +55 -8
  189. package/deps/rocksdb/rocksdb/include/rocksdb/env.h +32 -4
  190. package/deps/rocksdb/rocksdb/include/rocksdb/env_encryption.h +9 -109
  191. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +90 -13
  192. package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +3 -0
  193. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +85 -17
  194. package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +13 -1
  195. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_manager.h +2 -1
  196. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +5 -1
  197. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +21 -2
  198. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +7 -1
  199. package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +6 -0
  200. package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +5 -0
  201. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/optimistic_transaction_db.h +33 -2
  202. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +14 -0
  203. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +33 -2
  204. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +0 -3
  205. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
  206. package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +3 -0
  207. package/deps/rocksdb/rocksdb/memory/arena_test.cc +18 -11
  208. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +2 -1
  209. package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +69 -34
  210. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +16 -1
  211. package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +10 -0
  212. package/deps/rocksdb/rocksdb/options/cf_options.cc +19 -0
  213. package/deps/rocksdb/rocksdb/options/cf_options.h +10 -2
  214. package/deps/rocksdb/rocksdb/options/customizable_test.cc +2 -1
  215. package/deps/rocksdb/rocksdb/options/db_options.cc +7 -0
  216. package/deps/rocksdb/rocksdb/options/db_options.h +1 -0
  217. package/deps/rocksdb/rocksdb/options/options.cc +15 -1
  218. package/deps/rocksdb/rocksdb/options/options_helper.cc +6 -0
  219. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +11 -3
  220. package/deps/rocksdb/rocksdb/options/options_test.cc +8 -0
  221. package/deps/rocksdb/rocksdb/port/mmap.h +20 -0
  222. package/deps/rocksdb/rocksdb/port/stack_trace.cc +27 -12
  223. package/deps/rocksdb/rocksdb/port/win/env_win.h +1 -1
  224. package/deps/rocksdb/rocksdb/src.mk +3 -0
  225. package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +2 -1
  226. package/deps/rocksdb/rocksdb/table/block_based/block.cc +48 -22
  227. package/deps/rocksdb/rocksdb/table/block_based/block.h +60 -12
  228. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +115 -42
  229. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +6 -5
  230. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +60 -2
  231. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +2 -0
  232. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +62 -44
  233. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +36 -14
  234. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +38 -15
  235. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +219 -51
  236. package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +41 -8
  237. package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +25 -1
  238. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +50 -21
  239. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +11 -4
  240. package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +195 -55
  241. package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +1 -1
  242. package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +31 -16
  243. package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +97 -58
  244. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +1 -1
  245. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +6 -0
  246. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +27 -12
  247. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +3 -1
  248. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +114 -70
  249. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +1 -2
  250. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +9 -6
  251. package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +15 -3
  252. package/deps/rocksdb/rocksdb/table/block_based/reader_common.h +6 -3
  253. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +11 -11
  254. package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +3 -0
  255. package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.cc +1 -0
  256. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +6 -2
  257. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +1 -2
  258. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.cc +2 -3
  259. package/deps/rocksdb/rocksdb/table/format.cc +175 -33
  260. package/deps/rocksdb/rocksdb/table/format.h +63 -10
  261. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +10 -2
  262. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +12 -4
  263. package/deps/rocksdb/rocksdb/table/meta_blocks.h +1 -0
  264. package/deps/rocksdb/rocksdb/table/mock_table.cc +8 -3
  265. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +10 -5
  266. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.h +10 -1
  267. package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.cc +1 -2
  268. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +3 -3
  269. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +12 -3
  270. package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +26 -1
  271. package/deps/rocksdb/rocksdb/table/table_builder.h +6 -2
  272. package/deps/rocksdb/rocksdb/table/table_properties.cc +6 -0
  273. package/deps/rocksdb/rocksdb/table/table_test.cc +52 -22
  274. package/deps/rocksdb/rocksdb/test_util/secondary_cache_test_util.h +19 -7
  275. package/deps/rocksdb/rocksdb/test_util/sync_point.h +3 -1
  276. package/deps/rocksdb/rocksdb/test_util/testutil.cc +29 -0
  277. package/deps/rocksdb/rocksdb/test_util/testutil.h +19 -0
  278. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +65 -26
  279. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +8 -5
  280. package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +1 -0
  281. package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +1 -0
  282. package/deps/rocksdb/rocksdb/tools/sst_dump_test.cc +0 -1
  283. package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +4 -0
  284. package/deps/rocksdb/rocksdb/unreleased_history/README.txt +73 -0
  285. package/deps/rocksdb/rocksdb/unreleased_history/add.sh +27 -0
  286. package/deps/rocksdb/rocksdb/unreleased_history/behavior_changes/.gitkeep +0 -0
  287. package/deps/rocksdb/rocksdb/unreleased_history/bug_fixes/.gitkeep +0 -0
  288. package/deps/rocksdb/rocksdb/unreleased_history/new_features/.gitkeep +0 -0
  289. package/deps/rocksdb/rocksdb/unreleased_history/performance_improvements/.gitkeep +0 -0
  290. package/deps/rocksdb/rocksdb/unreleased_history/public_api_changes/.gitkeep +0 -0
  291. package/deps/rocksdb/rocksdb/unreleased_history/release.sh +104 -0
  292. package/deps/rocksdb/rocksdb/util/async_file_reader.cc +5 -0
  293. package/deps/rocksdb/rocksdb/util/bloom_impl.h +3 -3
  294. package/deps/rocksdb/rocksdb/util/cast_util.h +14 -0
  295. package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +2 -0
  296. package/deps/rocksdb/rocksdb/util/comparator.cc +29 -7
  297. package/deps/rocksdb/rocksdb/util/compression.cc +4 -4
  298. package/deps/rocksdb/rocksdb/util/compression.h +110 -32
  299. package/deps/rocksdb/rocksdb/util/core_local.h +2 -1
  300. package/deps/rocksdb/rocksdb/util/dynamic_bloom.h +4 -4
  301. package/deps/rocksdb/rocksdb/util/filelock_test.cc +3 -0
  302. package/deps/rocksdb/rocksdb/util/hash.h +7 -3
  303. package/deps/rocksdb/rocksdb/util/hash_test.cc +44 -0
  304. package/deps/rocksdb/rocksdb/util/math.h +58 -6
  305. package/deps/rocksdb/rocksdb/util/math128.h +29 -7
  306. package/deps/rocksdb/rocksdb/util/mutexlock.h +35 -27
  307. package/deps/rocksdb/rocksdb/util/single_thread_executor.h +1 -0
  308. package/deps/rocksdb/rocksdb/util/stop_watch.h +1 -1
  309. package/deps/rocksdb/rocksdb/util/thread_operation.h +8 -1
  310. package/deps/rocksdb/rocksdb/util/udt_util.cc +343 -0
  311. package/deps/rocksdb/rocksdb/util/udt_util.h +173 -1
  312. package/deps/rocksdb/rocksdb/util/udt_util_test.cc +447 -0
  313. package/deps/rocksdb/rocksdb/util/write_batch_util.cc +25 -0
  314. package/deps/rocksdb/rocksdb/util/write_batch_util.h +80 -0
  315. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +4 -4
  316. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +69 -25
  317. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +7 -6
  318. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +1 -1
  319. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +2 -3
  320. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +6 -11
  321. package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.h +1 -2
  322. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +4 -5
  323. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +1 -1
  324. package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.cc +2 -2
  325. package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.h +2 -1
  326. package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration_test.cc +3 -3
  327. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +1 -2
  328. package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.cc +2 -3
  329. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.cc +2 -2
  330. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.h +1 -1
  331. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.cc +23 -8
  332. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +9 -6
  333. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +37 -12
  334. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +231 -33
  335. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +0 -1
  336. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +76 -20
  337. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +18 -9
  338. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +40 -23
  339. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +13 -12
  340. package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +7 -0
  341. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +1 -1
  342. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +41 -11
  343. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.h +6 -3
  344. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +71 -24
  345. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.h +19 -4
  346. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +60 -107
  347. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +39 -11
  348. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.h +6 -3
  349. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +14 -8
  350. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.h +1 -1
  351. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +10 -5
  352. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +1 -1
  353. package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +1 -1
  354. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +2 -1
  355. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +6 -6
  356. package/deps/rocksdb/rocksdb.gyp +2 -0
  357. package/package.json +1 -1
  358. package/prebuilds/darwin-arm64/node.napi.node +0 -0
  359. package/prebuilds/linux-x64/node.napi.node +0 -0
@@ -303,7 +303,7 @@ static void DBPut(benchmark::State& state) {
303
303
 
304
304
  if (state.thread_index() == 0) {
305
305
  auto db_full = static_cast_with_check<DBImpl>(db.get());
306
- Status s = db_full->WaitForCompact();
306
+ Status s = db_full->WaitForCompact(WaitForCompactOptions());
307
307
  if (!s.ok()) {
308
308
  state.SkipWithError(s.ToString().c_str());
309
309
  return;
@@ -410,7 +410,7 @@ static void ManualCompaction(benchmark::State& state) {
410
410
 
411
411
  if (state.thread_index() == 0) {
412
412
  auto db_full = static_cast_with_check<DBImpl>(db.get());
413
- s = db_full->WaitForCompact();
413
+ s = db_full->WaitForCompact(WaitForCompactOptions());
414
414
  if (!s.ok()) {
415
415
  state.SkipWithError(s.ToString().c_str());
416
416
  return;
@@ -510,7 +510,7 @@ static void ManualFlush(benchmark::State& state) {
510
510
 
511
511
  if (state.thread_index() == 0) {
512
512
  auto db_full = static_cast_with_check<DBImpl>(db.get());
513
- Status s = db_full->WaitForCompact();
513
+ Status s = db_full->WaitForCompact(WaitForCompactOptions());
514
514
  if (!s.ok()) {
515
515
  state.SkipWithError(s.ToString().c_str());
516
516
  return;
@@ -538,6 +538,23 @@ static void ManualFlushArguments(benchmark::internal::Benchmark* b) {
538
538
 
539
539
  BENCHMARK(ManualFlush)->Iterations(1)->Apply(ManualFlushArguments);
540
540
 
541
+ // Copied from test_util.cc to not depend on rocksdb_test_lib
542
+ // when building microbench binaries.
543
+ static Slice CompressibleString(Random* rnd, double compressed_fraction,
544
+ int len, std::string* dst) {
545
+ int raw = static_cast<int>(len * compressed_fraction);
546
+ if (raw < 1) raw = 1;
547
+ std::string raw_data = rnd->RandomBinaryString(raw);
548
+
549
+ // Duplicate the random data until we have filled "len" bytes
550
+ dst->clear();
551
+ while (dst->size() < (unsigned int)len) {
552
+ dst->append(raw_data);
553
+ }
554
+ dst->resize(len);
555
+ return Slice(*dst);
556
+ }
557
+
541
558
  static void DBGet(benchmark::State& state) {
542
559
  auto compaction_style = static_cast<CompactionStyle>(state.range(0));
543
560
  uint64_t max_data = state.range(1);
@@ -546,6 +563,9 @@ static void DBGet(benchmark::State& state) {
546
563
  bool negative_query = state.range(4);
547
564
  bool enable_filter = state.range(5);
548
565
  bool mmap = state.range(6);
566
+ auto compression_type = static_cast<CompressionType>(state.range(7));
567
+ bool compression_checksum = static_cast<bool>(state.range(8));
568
+ bool no_blockcache = state.range(9);
549
569
  uint64_t key_num = max_data / per_key_size;
550
570
 
551
571
  // setup DB
@@ -568,39 +588,45 @@ static void DBGet(benchmark::State& state) {
568
588
  table_options.no_block_cache = true;
569
589
  table_options.block_restart_interval = 1;
570
590
  }
591
+ options.compression = compression_type;
592
+ options.compression_opts.checksum = compression_checksum;
593
+ if (no_blockcache) {
594
+ table_options.no_block_cache = true;
595
+ } else {
596
+ table_options.block_cache = NewLRUCache(100 << 20);
597
+ }
571
598
  options.table_factory.reset(NewBlockBasedTableFactory(table_options));
572
599
 
573
600
  auto rnd = Random(301 + state.thread_index());
574
- KeyGenerator kg(&rnd, key_num);
575
601
 
576
602
  if (state.thread_index() == 0) {
603
+ KeyGenerator kg_seq(key_num /* max_key */);
577
604
  SetupDB(state, options, &db, "DBGet");
578
605
 
579
- // load db
606
+ // Load all valid keys into DB. That way, iterations in `!negative_query`
607
+ // runs can always find the key even though it is generated from a random
608
+ // number.
580
609
  auto wo = WriteOptions();
581
610
  wo.disableWAL = true;
611
+ std::string val;
582
612
  for (uint64_t i = 0; i < key_num; i++) {
583
- Status s = db->Put(wo, kg.Next(),
584
- rnd.RandomString(static_cast<int>(per_key_size)));
613
+ CompressibleString(&rnd, 0.5, static_cast<int>(per_key_size), &val);
614
+ Status s = db->Put(wo, kg_seq.Next(), val);
585
615
  if (!s.ok()) {
586
616
  state.SkipWithError(s.ToString().c_str());
587
617
  }
588
618
  }
589
619
 
590
- FlushOptions fo;
591
- Status s = db->Flush(fo);
592
- if (!s.ok()) {
593
- state.SkipWithError(s.ToString().c_str());
594
- }
595
-
596
- auto db_full = static_cast_with_check<DBImpl>(db.get());
597
- s = db_full->WaitForCompact();
620
+ // Compact whole DB into one level, so each iteration will consider the same
621
+ // number of files (one).
622
+ Status s = db->CompactRange(CompactRangeOptions(), nullptr /* begin */,
623
+ nullptr /* end */);
598
624
  if (!s.ok()) {
599
625
  state.SkipWithError(s.ToString().c_str());
600
- return;
601
626
  }
602
627
  }
603
628
 
629
+ KeyGenerator kg_rnd(&rnd, key_num /* max_key */);
604
630
  auto ro = ReadOptions();
605
631
  if (mmap) {
606
632
  ro.verify_checksums = false;
@@ -609,7 +635,7 @@ static void DBGet(benchmark::State& state) {
609
635
  if (negative_query) {
610
636
  for (auto _ : state) {
611
637
  std::string val;
612
- Status s = db->Get(ro, kg.NextNonExist(), &val);
638
+ Status s = db->Get(ro, kg_rnd.NextNonExist(), &val);
613
639
  if (s.IsNotFound()) {
614
640
  not_found++;
615
641
  }
@@ -617,7 +643,7 @@ static void DBGet(benchmark::State& state) {
617
643
  } else {
618
644
  for (auto _ : state) {
619
645
  std::string val;
620
- Status s = db->Get(ro, kg.Next(), &val);
646
+ Status s = db->Get(ro, kg_rnd.Next(), &val);
621
647
  if (s.IsNotFound()) {
622
648
  not_found++;
623
649
  }
@@ -636,21 +662,30 @@ static void DBGet(benchmark::State& state) {
636
662
  state.counters["get_p99"] = histogram_data.percentile99 * std::milli::den;
637
663
  }
638
664
 
639
- TeardownDB(state, db, options, kg);
665
+ TeardownDB(state, db, options, kg_rnd);
640
666
  }
641
667
  }
642
668
 
643
669
  static void DBGetArguments(benchmark::internal::Benchmark* b) {
644
670
  for (int comp_style : {kCompactionStyleLevel, kCompactionStyleUniversal,
645
671
  kCompactionStyleFIFO}) {
646
- for (int64_t max_data : {128l << 20, 512l << 20}) {
672
+ for (int64_t max_data : {1l << 20, 128l << 20, 512l << 20}) {
647
673
  for (int64_t per_key_size : {256, 1024}) {
648
674
  for (bool enable_statistics : {false, true}) {
649
675
  for (bool negative_query : {false, true}) {
650
676
  for (bool enable_filter : {false, true}) {
651
677
  for (bool mmap : {false, true}) {
652
- b->Args({comp_style, max_data, per_key_size, enable_statistics,
653
- negative_query, enable_filter, mmap});
678
+ for (int compression_type :
679
+ {kNoCompression /* 0x0 */, kZSTD /* 0x7 */}) {
680
+ for (bool compression_checksum : {false, true}) {
681
+ for (bool no_blockcache : {false, true}) {
682
+ b->Args({comp_style, max_data, per_key_size,
683
+ enable_statistics, negative_query, enable_filter,
684
+ mmap, compression_type, compression_checksum,
685
+ no_blockcache});
686
+ }
687
+ }
688
+ }
654
689
  }
655
690
  }
656
691
  }
@@ -659,12 +694,13 @@ static void DBGetArguments(benchmark::internal::Benchmark* b) {
659
694
  }
660
695
  }
661
696
  b->ArgNames({"comp_style", "max_data", "per_key_size", "enable_statistics",
662
- "negative_query", "enable_filter", "mmap"});
697
+ "negative_query", "enable_filter", "mmap", "compression_type",
698
+ "compression_checksum", "no_blockcache"});
663
699
  }
664
700
 
665
- static constexpr uint64_t kDBGetNum = 1l << 20;
666
- BENCHMARK(DBGet)->Threads(1)->Iterations(kDBGetNum)->Apply(DBGetArguments);
667
- BENCHMARK(DBGet)->Threads(8)->Iterations(kDBGetNum / 8)->Apply(DBGetArguments);
701
+ static const uint64_t DBGetNum = 10000l;
702
+ BENCHMARK(DBGet)->Threads(1)->Iterations(DBGetNum)->Apply(DBGetArguments);
703
+ BENCHMARK(DBGet)->Threads(8)->Iterations(DBGetNum / 8)->Apply(DBGetArguments);
668
704
 
669
705
  static void SimpleGetWithPerfContext(benchmark::State& state) {
670
706
  // setup DB
@@ -707,7 +743,7 @@ static void SimpleGetWithPerfContext(benchmark::State& state) {
707
743
  }
708
744
  }
709
745
  auto db_full = static_cast_with_check<DBImpl>(db.get());
710
- s = db_full->WaitForCompact();
746
+ s = db_full->WaitForCompact(WaitForCompactOptions());
711
747
  if (!s.ok()) {
712
748
  state.SkipWithError(s.ToString().c_str());
713
749
  return;
@@ -1115,7 +1151,7 @@ static void IteratorSeek(benchmark::State& state) {
1115
1151
  }
1116
1152
 
1117
1153
  auto db_full = static_cast_with_check<DBImpl>(db.get());
1118
- s = db_full->WaitForCompact();
1154
+ s = db_full->WaitForCompact(WaitForCompactOptions());
1119
1155
  if (!s.ok()) {
1120
1156
  state.SkipWithError(s.ToString().c_str());
1121
1157
  return;
@@ -1206,7 +1242,7 @@ static void IteratorNext(benchmark::State& state) {
1206
1242
  }
1207
1243
 
1208
1244
  auto db_full = static_cast_with_check<DBImpl>(db.get());
1209
- s = db_full->WaitForCompact();
1245
+ s = db_full->WaitForCompact(WaitForCompactOptions());
1210
1246
  if (!s.ok()) {
1211
1247
  state.SkipWithError(s.ToString().c_str());
1212
1248
  return;
@@ -1270,7 +1306,7 @@ static void IteratorNextWithPerfContext(benchmark::State& state) {
1270
1306
  }
1271
1307
  }
1272
1308
  auto db_full = static_cast_with_check<DBImpl>(db.get());
1273
- Status s = db_full->WaitForCompact();
1309
+ Status s = db_full->WaitForCompact(WaitForCompactOptions());
1274
1310
  if (!s.ok()) {
1275
1311
  state.SkipWithError(s.ToString().c_str());
1276
1312
  return;
@@ -1368,7 +1404,7 @@ static void IteratorPrev(benchmark::State& state) {
1368
1404
  }
1369
1405
 
1370
1406
  auto db_full = static_cast_with_check<DBImpl>(db.get());
1371
- s = db_full->WaitForCompact();
1407
+ s = db_full->WaitForCompact(WaitForCompactOptions());
1372
1408
  if (!s.ok()) {
1373
1409
  state.SkipWithError(s.ToString().c_str());
1374
1410
  return;
@@ -1460,7 +1496,7 @@ static void PrefixSeek(benchmark::State& state) {
1460
1496
  }
1461
1497
 
1462
1498
  auto db_full = static_cast_with_check<DBImpl>(db.get());
1463
- s = db_full->WaitForCompact();
1499
+ s = db_full->WaitForCompact(WaitForCompactOptions());
1464
1500
  if (!s.ok()) {
1465
1501
  state.SkipWithError(s.ToString().c_str());
1466
1502
  return;
@@ -1558,8 +1594,7 @@ static void RandomAccessFileReaderRead(benchmark::State& state) {
1558
1594
  uint64_t idx = 0;
1559
1595
  for (auto _ : state) {
1560
1596
  s = readers[idx++ % kFileNum]->Read(io_options, 0, kDefaultPageSize / 3,
1561
- &result, scratch.get(), nullptr,
1562
- Env::IO_TOTAL);
1597
+ &result, scratch.get(), nullptr);
1563
1598
  if (!s.ok()) {
1564
1599
  state.SkipWithError(s.ToString().c_str());
1565
1600
  }
@@ -175,11 +175,18 @@ const std::vector<std::pair<Tickers, std::string>> TickersNameMap = {
175
175
  {BLOCK_CACHE_COMPRESSION_DICT_ADD_REDUNDANT,
176
176
  "rocksdb.block.cache.compression.dict.add.redundant"},
177
177
  {FILES_MARKED_TRASH, "rocksdb.files.marked.trash"},
178
+ {FILES_DELETED_FROM_TRASH_QUEUE, "rocksdb.files.marked.trash.deleted"},
178
179
  {FILES_DELETED_IMMEDIATELY, "rocksdb.files.deleted.immediately"},
179
- {ERROR_HANDLER_BG_ERROR_COUNT, "rocksdb.error.handler.bg.errro.count"},
180
+ {ERROR_HANDLER_BG_ERROR_COUNT, "rocksdb.error.handler.bg.error.count"},
181
+ {ERROR_HANDLER_BG_ERROR_COUNT_MISSPELLED,
182
+ "rocksdb.error.handler.bg.errro.count"},
180
183
  {ERROR_HANDLER_BG_IO_ERROR_COUNT,
184
+ "rocksdb.error.handler.bg.io.error.count"},
185
+ {ERROR_HANDLER_BG_IO_ERROR_COUNT_MISSPELLED,
181
186
  "rocksdb.error.handler.bg.io.errro.count"},
182
187
  {ERROR_HANDLER_BG_RETRYABLE_IO_ERROR_COUNT,
188
+ "rocksdb.error.handler.bg.retryable.io.error.count"},
189
+ {ERROR_HANDLER_BG_RETRYABLE_IO_ERROR_COUNT_MISSPELLED,
183
190
  "rocksdb.error.handler.bg.retryable.io.errro.count"},
184
191
  {ERROR_HANDLER_AUTORESUME_COUNT, "rocksdb.error.handler.autoresume.count"},
185
192
  {ERROR_HANDLER_AUTORESUME_RETRY_TOTAL_COUNT,
@@ -250,6 +257,7 @@ const std::vector<std::pair<Tickers, std::string>> TickersNameMap = {
250
257
  "rocksdb.number.block_compression_rejected"},
251
258
  {BYTES_DECOMPRESSED_FROM, "rocksdb.bytes.decompressed.from"},
252
259
  {BYTES_DECOMPRESSED_TO, "rocksdb.bytes.decompressed.to"},
260
+ {READAHEAD_TRIMMED, "rocksdb.readahead.trimmed"},
253
261
  };
254
262
 
255
263
  const std::vector<std::pair<Histograms, std::string>> HistogramsNameMap = {
@@ -274,6 +282,13 @@ const std::vector<std::pair<Histograms, std::string>> HistogramsNameMap = {
274
282
  {FILE_READ_FLUSH_MICROS, "rocksdb.file.read.flush.micros"},
275
283
  {FILE_READ_COMPACTION_MICROS, "rocksdb.file.read.compaction.micros"},
276
284
  {FILE_READ_DB_OPEN_MICROS, "rocksdb.file.read.db.open.micros"},
285
+ {FILE_READ_GET_MICROS, "rocksdb.file.read.get.micros"},
286
+ {FILE_READ_MULTIGET_MICROS, "rocksdb.file.read.multiget.micros"},
287
+ {FILE_READ_DB_ITERATOR_MICROS, "rocksdb.file.read.db.iterator.micros"},
288
+ {FILE_READ_VERIFY_DB_CHECKSUM_MICROS,
289
+ "rocksdb.file.read.verify.db.checksum.micros"},
290
+ {FILE_READ_VERIFY_FILE_CHECKSUMS_MICROS,
291
+ "rocksdb.file.read.verify.file.checksums.micros"},
277
292
  {NUM_SUBCOMPACTIONS_SCHEDULED, "rocksdb.num.subcompactions.scheduled"},
278
293
  {BYTES_PER_READ, "rocksdb.bytes.per.read"},
279
294
  {BYTES_PER_WRITE, "rocksdb.bytes.per.write"},
@@ -36,6 +36,16 @@ Env::IOActivity ThreadStatusUtil::TEST_GetExpectedIOActivity(
36
36
  return Env::IOActivity::kCompaction;
37
37
  case ThreadStatus::OperationType::OP_DBOPEN:
38
38
  return Env::IOActivity::kDBOpen;
39
+ case ThreadStatus::OperationType::OP_GET:
40
+ return Env::IOActivity::kGet;
41
+ case ThreadStatus::OperationType::OP_MULTIGET:
42
+ return Env::IOActivity::kMultiGet;
43
+ case ThreadStatus::OperationType::OP_DBITERATOR:
44
+ return Env::IOActivity::kDBIterator;
45
+ case ThreadStatus::OperationType::OP_VERIFY_DB_CHECKSUM:
46
+ return Env::IOActivity::kVerifyDBChecksum;
47
+ case ThreadStatus::OperationType::OP_VERIFY_FILE_CHECKSUMS:
48
+ return Env::IOActivity::kVerifyFileChecksums;
39
49
  default:
40
50
  return Env::IOActivity::kUnknown;
41
51
  }
@@ -173,6 +173,9 @@ static std::unordered_map<std::string, OptionTypeInfo>
173
173
  {offsetof(struct CompressionOptions, use_zstd_dict_trainer),
174
174
  OptionType::kBoolean, OptionVerificationType::kNormal,
175
175
  OptionTypeFlags::kMutable}},
176
+ {"checksum",
177
+ {offsetof(struct CompressionOptions, checksum), OptionType::kBoolean,
178
+ OptionVerificationType::kNormal, OptionTypeFlags::kMutable}},
176
179
  };
177
180
 
178
181
  static std::unordered_map<std::string, OptionTypeInfo>
@@ -507,6 +510,10 @@ static std::unordered_map<std::string, OptionTypeInfo>
507
510
  {offsetof(struct MutableCFOptions, memtable_protection_bytes_per_key),
508
511
  OptionType::kUInt32T, OptionVerificationType::kNormal,
509
512
  OptionTypeFlags::kMutable}},
513
+ {"bottommost_file_compaction_delay",
514
+ {offsetof(struct MutableCFOptions, bottommost_file_compaction_delay),
515
+ OptionType::kUInt32T, OptionVerificationType::kNormal,
516
+ OptionTypeFlags::kMutable}},
510
517
  {"block_protection_bytes_per_key",
511
518
  {offsetof(struct MutableCFOptions, block_protection_bytes_per_key),
512
519
  OptionType::kUInt8T, OptionVerificationType::kNormal,
@@ -552,6 +559,11 @@ static std::unordered_map<std::string, OptionTypeInfo>
552
559
  }
553
560
  })},
554
561
  // End special case properties
562
+ {"memtable_max_range_deletions",
563
+ {offsetof(struct MutableCFOptions, memtable_max_range_deletions),
564
+ OptionType::kUInt32T, OptionVerificationType::kNormal,
565
+ OptionTypeFlags::kMutable}},
566
+
555
567
  };
556
568
 
557
569
  static std::unordered_map<std::string, OptionTypeInfo>
@@ -595,6 +607,10 @@ static std::unordered_map<std::string, OptionTypeInfo>
595
607
  {offsetof(struct ImmutableCFOptions, force_consistency_checks),
596
608
  OptionType::kBoolean, OptionVerificationType::kNormal,
597
609
  OptionTypeFlags::kNone}},
610
+ {"default_temperature",
611
+ {offsetof(struct ImmutableCFOptions, default_temperature),
612
+ OptionType::kTemperature, OptionVerificationType::kNormal,
613
+ OptionTypeFlags::kCompareNever}},
598
614
  {"preclude_last_level_data_seconds",
599
615
  {offsetof(struct ImmutableCFOptions, preclude_last_level_data_seconds),
600
616
  OptionType::kUInt64T, OptionVerificationType::kNormal,
@@ -941,6 +957,7 @@ ImmutableCFOptions::ImmutableCFOptions(const ColumnFamilyOptions& cf_options)
941
957
  num_levels(cf_options.num_levels),
942
958
  optimize_filters_for_hits(cf_options.optimize_filters_for_hits),
943
959
  force_consistency_checks(cf_options.force_consistency_checks),
960
+ default_temperature(cf_options.default_temperature),
944
961
  preclude_last_level_data_seconds(
945
962
  cf_options.preclude_last_level_data_seconds),
946
963
  preserve_internal_time_seconds(cf_options.preserve_internal_time_seconds),
@@ -1112,6 +1129,8 @@ void MutableCFOptions::Dump(Logger* log) const {
1112
1129
  ROCKS_LOG_INFO(log,
1113
1130
  " experimental_mempurge_threshold: %f",
1114
1131
  experimental_mempurge_threshold);
1132
+ ROCKS_LOG_INFO(log, " bottommost_file_compaction_delay: %" PRIu32,
1133
+ bottommost_file_compaction_delay);
1115
1134
 
1116
1135
  // Universal Compaction Options
1117
1136
  ROCKS_LOG_INFO(log, "compaction_options_universal.size_ratio : %d",
@@ -72,6 +72,8 @@ struct ImmutableCFOptions {
72
72
 
73
73
  bool force_consistency_checks;
74
74
 
75
+ Temperature default_temperature;
76
+
75
77
  uint64_t preclude_last_level_data_seconds;
76
78
 
77
79
  uint64_t preserve_internal_time_seconds;
@@ -175,7 +177,10 @@ struct MutableCFOptions {
175
177
  block_protection_bytes_per_key(options.block_protection_bytes_per_key),
176
178
  sample_for_compression(
177
179
  options.sample_for_compression), // TODO: is 0 fine here?
178
- compression_per_level(options.compression_per_level) {
180
+ compression_per_level(options.compression_per_level),
181
+ memtable_max_range_deletions(options.memtable_max_range_deletions),
182
+ bottommost_file_compaction_delay(
183
+ options.bottommost_file_compaction_delay) {
179
184
  RefreshDerivedOptions(options.num_levels, options.compaction_style);
180
185
  }
181
186
 
@@ -224,7 +229,8 @@ struct MutableCFOptions {
224
229
  last_level_temperature(Temperature::kUnknown),
225
230
  memtable_protection_bytes_per_key(0),
226
231
  block_protection_bytes_per_key(0),
227
- sample_for_compression(0) {}
232
+ sample_for_compression(0),
233
+ memtable_max_range_deletions(0) {}
228
234
 
229
235
  explicit MutableCFOptions(const Options& options);
230
236
 
@@ -318,6 +324,8 @@ struct MutableCFOptions {
318
324
 
319
325
  uint64_t sample_for_compression;
320
326
  std::vector<CompressionType> compression_per_level;
327
+ uint32_t memtable_max_range_deletions;
328
+ uint32_t bottommost_file_compaction_delay;
321
329
 
322
330
  // Derived options
323
331
  // Per-level target file size.
@@ -1230,7 +1230,8 @@ class TestSecondaryCache : public SecondaryCache {
1230
1230
  static const char* kClassName() { return "Test"; }
1231
1231
  const char* Name() const override { return kClassName(); }
1232
1232
  Status Insert(const Slice& /*key*/, Cache::ObjectPtr /*value*/,
1233
- const Cache::CacheItemHelper* /*helper*/) override {
1233
+ const Cache::CacheItemHelper* /*helper*/,
1234
+ bool /*force_insert*/) override {
1234
1235
  return Status::NotSupported();
1235
1236
  }
1236
1237
  std::unique_ptr<SecondaryCacheResultHandle> Lookup(
@@ -222,6 +222,10 @@ static std::unordered_map<std::string, OptionTypeInfo>
222
222
  {offsetof(struct ImmutableDBOptions, flush_verify_memtable_count),
223
223
  OptionType::kBoolean, OptionVerificationType::kNormal,
224
224
  OptionTypeFlags::kNone}},
225
+ {"compaction_verify_record_count",
226
+ {offsetof(struct ImmutableDBOptions, compaction_verify_record_count),
227
+ OptionType::kBoolean, OptionVerificationType::kNormal,
228
+ OptionTypeFlags::kNone}},
225
229
  {"track_and_verify_wals_in_manifest",
226
230
  {offsetof(struct ImmutableDBOptions,
227
231
  track_and_verify_wals_in_manifest),
@@ -679,6 +683,7 @@ ImmutableDBOptions::ImmutableDBOptions(const DBOptions& options)
679
683
  error_if_exists(options.error_if_exists),
680
684
  paranoid_checks(options.paranoid_checks),
681
685
  flush_verify_memtable_count(options.flush_verify_memtable_count),
686
+ compaction_verify_record_count(options.compaction_verify_record_count),
682
687
  track_and_verify_wals_in_manifest(
683
688
  options.track_and_verify_wals_in_manifest),
684
689
  verify_sst_unique_id_in_manifest(
@@ -771,6 +776,8 @@ void ImmutableDBOptions::Dump(Logger* log) const {
771
776
  paranoid_checks);
772
777
  ROCKS_LOG_HEADER(log, " Options.flush_verify_memtable_count: %d",
773
778
  flush_verify_memtable_count);
779
+ ROCKS_LOG_HEADER(log, " Options.compaction_verify_record_count: %d",
780
+ compaction_verify_record_count);
774
781
  ROCKS_LOG_HEADER(log,
775
782
  " "
776
783
  "Options.track_and_verify_wals_in_manifest: %d",
@@ -25,6 +25,7 @@ struct ImmutableDBOptions {
25
25
  bool error_if_exists;
26
26
  bool paranoid_checks;
27
27
  bool flush_verify_memtable_count;
28
+ bool compaction_verify_record_count;
28
29
  bool track_and_verify_wals_in_manifest;
29
30
  bool verify_sst_unique_id_in_manifest;
30
31
  Env* env;
@@ -94,6 +94,7 @@ AdvancedColumnFamilyOptions::AdvancedColumnFamilyOptions(const Options& options)
94
94
  ttl(options.ttl),
95
95
  periodic_compaction_seconds(options.periodic_compaction_seconds),
96
96
  sample_for_compression(options.sample_for_compression),
97
+ default_temperature(options.default_temperature),
97
98
  preclude_last_level_data_seconds(
98
99
  options.preclude_last_level_data_seconds),
99
100
  preserve_internal_time_seconds(options.preserve_internal_time_seconds),
@@ -412,6 +413,17 @@ void ColumnFamilyOptions::Dump(Logger* log) const {
412
413
  ROCKS_LOG_HEADER(log,
413
414
  " Options.periodic_compaction_seconds: %" PRIu64,
414
415
  periodic_compaction_seconds);
416
+ const auto& it_temp = temperature_to_string.find(default_temperature);
417
+ std::string str_default_temperature;
418
+ if (it_temp == temperature_to_string.end()) {
419
+ assert(false);
420
+ str_default_temperature = "unknown_temperature";
421
+ } else {
422
+ str_default_temperature = it_temp->second;
423
+ }
424
+ ROCKS_LOG_HEADER(log,
425
+ " Options.default_temperature: %s",
426
+ str_default_temperature.c_str());
415
427
  ROCKS_LOG_HEADER(log, " Options.preclude_last_level_data_seconds: %" PRIu64,
416
428
  preclude_last_level_data_seconds);
417
429
  ROCKS_LOG_HEADER(log, " Options.preserve_internal_time_seconds: %" PRIu64,
@@ -448,8 +460,10 @@ void ColumnFamilyOptions::Dump(Logger* log) const {
448
460
  ? "flush only"
449
461
  : "disabled");
450
462
  }
451
- ROCKS_LOG_HEADER(log, "Options.experimental_mempurge_threshold: %f",
463
+ ROCKS_LOG_HEADER(log, " Options.experimental_mempurge_threshold: %f",
452
464
  experimental_mempurge_threshold);
465
+ ROCKS_LOG_HEADER(log, " Options.memtable_max_range_deletions: %d",
466
+ memtable_max_range_deletions);
453
467
  } // ColumnFamilyOptions::Dump
454
468
 
455
469
  void Options::Dump(Logger* log) const {
@@ -60,6 +60,8 @@ DBOptions BuildDBOptions(const ImmutableDBOptions& immutable_db_options,
60
60
  options.paranoid_checks = immutable_db_options.paranoid_checks;
61
61
  options.flush_verify_memtable_count =
62
62
  immutable_db_options.flush_verify_memtable_count;
63
+ options.compaction_verify_record_count =
64
+ immutable_db_options.compaction_verify_record_count;
63
65
  options.track_and_verify_wals_in_manifest =
64
66
  immutable_db_options.track_and_verify_wals_in_manifest;
65
67
  options.verify_sst_unique_id_in_manifest =
@@ -208,6 +210,8 @@ void UpdateColumnFamilyOptions(const MutableCFOptions& moptions,
208
210
  moptions.memtable_protection_bytes_per_key;
209
211
  cf_opts->block_protection_bytes_per_key =
210
212
  moptions.block_protection_bytes_per_key;
213
+ cf_opts->bottommost_file_compaction_delay =
214
+ moptions.bottommost_file_compaction_delay;
211
215
 
212
216
  // Compaction related options
213
217
  cf_opts->disable_auto_compactions = moptions.disable_auto_compactions;
@@ -270,6 +274,7 @@ void UpdateColumnFamilyOptions(const MutableCFOptions& moptions,
270
274
  cf_opts->compression_per_level = moptions.compression_per_level;
271
275
  cf_opts->last_level_temperature = moptions.last_level_temperature;
272
276
  cf_opts->bottommost_temperature = moptions.last_level_temperature;
277
+ cf_opts->memtable_max_range_deletions = moptions.memtable_max_range_deletions;
273
278
  }
274
279
 
275
280
  void UpdateColumnFamilyOptions(const ImmutableCFOptions& ioptions,
@@ -312,6 +317,7 @@ void UpdateColumnFamilyOptions(const ImmutableCFOptions& ioptions,
312
317
  ioptions.preserve_internal_time_seconds;
313
318
  cf_opts->persist_user_defined_timestamps =
314
319
  ioptions.persist_user_defined_timestamps;
320
+ cf_opts->default_temperature = ioptions.default_temperature;
315
321
 
316
322
  // TODO(yhchiang): find some way to handle the following derived options
317
323
  // * max_file_size
@@ -308,6 +308,7 @@ TEST_F(OptionsSettableTest, DBOptionsAllFieldsSettable) {
308
308
  "writable_file_max_buffer_size=1048576;"
309
309
  "paranoid_checks=true;"
310
310
  "flush_verify_memtable_count=true;"
311
+ "compaction_verify_record_count=true;"
311
312
  "track_and_verify_wals_in_manifest=true;"
312
313
  "verify_sst_unique_id_in_manifest=true;"
313
314
  "is_fd_close_on_exec=false;"
@@ -377,6 +378,8 @@ TEST_F(OptionsSettableTest, DBOptionsAllFieldsSettable) {
377
378
  delete[] new_options_ptr;
378
379
  }
379
380
 
381
+ // status check adds CXX flag -fno-elide-constructors which fails this test.
382
+ #ifndef ROCKSDB_ASSERT_STATUS_CHECKED
380
383
  // If the test fails, likely a new option is added to ColumnFamilyOptions
381
384
  // but it cannot be set through GetColumnFamilyOptionsFromString(), or the
382
385
  // test is not updated accordingly.
@@ -501,11 +504,12 @@ TEST_F(OptionsSettableTest, ColumnFamilyOptionsAllFieldsSettable) {
501
504
  "compression=kNoCompression;"
502
505
  "compression_opts={max_dict_buffer_bytes=5;use_zstd_dict_trainer=true;"
503
506
  "enabled=false;parallel_threads=6;zstd_max_train_bytes=7;strategy=8;max_"
504
- "dict_bytes=9;level=10;window_bits=11;max_compressed_bytes_per_kb=987;};"
507
+ "dict_bytes=9;level=10;window_bits=11;max_compressed_bytes_per_kb=987;"
508
+ "checksum=true};"
505
509
  "bottommost_compression_opts={max_dict_buffer_bytes=4;use_zstd_dict_"
506
510
  "trainer=true;enabled=true;parallel_threads=5;zstd_max_train_bytes=6;"
507
511
  "strategy=7;max_dict_bytes=8;level=9;window_bits=10;max_compressed_bytes_"
508
- "per_kb=876;};"
512
+ "per_kb=876;checksum=true};"
509
513
  "bottommost_compression=kDisableCompressionOption;"
510
514
  "level0_stop_writes_trigger=33;"
511
515
  "num_levels=99;"
@@ -548,6 +552,7 @@ TEST_F(OptionsSettableTest, ColumnFamilyOptionsAllFieldsSettable) {
548
552
  "prepopulate_blob_cache=kDisable;"
549
553
  "bottommost_temperature=kWarm;"
550
554
  "last_level_temperature=kWarm;"
555
+ "default_temperature=kHot;"
551
556
  "preclude_last_level_data_seconds=86400;"
552
557
  "preserve_internal_time_seconds=86400;"
553
558
  "compaction_options_fifo={max_table_files_size=3;allow_"
@@ -556,7 +561,9 @@ TEST_F(OptionsSettableTest, ColumnFamilyOptionsAllFieldsSettable) {
556
561
  "blob_cache=1M;"
557
562
  "memtable_protection_bytes_per_key=2;"
558
563
  "persist_user_defined_timestamps=true;"
559
- "block_protection_bytes_per_key=1;",
564
+ "block_protection_bytes_per_key=1;"
565
+ "memtable_max_range_deletions=999999;"
566
+ "bottommost_file_compaction_delay=7200;",
560
567
  new_options));
561
568
 
562
569
  ASSERT_NE(new_options->blob_cache.get(), nullptr);
@@ -639,6 +646,7 @@ TEST_F(OptionsSettableTest, ColumnFamilyOptionsAllFieldsSettable) {
639
646
  delete[] mcfo2_ptr;
640
647
  delete[] cfo_clean_ptr;
641
648
  }
649
+ #endif // !ROCKSDB_ASSERT_STATUS_CHECKED
642
650
  #endif // !ROCKSDB_UBSAN_RUN
643
651
  #endif // !__clang__
644
652
  #endif // OS_LINUX || OS_WIN
@@ -130,7 +130,9 @@ TEST_F(OptionsTest, GetOptionsFromMapTest) {
130
130
  {"blob_file_starting_level", "1"},
131
131
  {"prepopulate_blob_cache", "kDisable"},
132
132
  {"last_level_temperature", "kWarm"},
133
+ {"default_temperature", "kHot"},
133
134
  {"persist_user_defined_timestamps", "true"},
135
+ {"memtable_max_range_deletions", "0"},
134
136
  };
135
137
 
136
138
  std::unordered_map<std::string, std::string> db_options_map = {
@@ -283,7 +285,9 @@ TEST_F(OptionsTest, GetOptionsFromMapTest) {
283
285
  ASSERT_EQ(new_cf_opt.prepopulate_blob_cache, PrepopulateBlobCache::kDisable);
284
286
  ASSERT_EQ(new_cf_opt.last_level_temperature, Temperature::kWarm);
285
287
  ASSERT_EQ(new_cf_opt.bottommost_temperature, Temperature::kWarm);
288
+ ASSERT_EQ(new_cf_opt.default_temperature, Temperature::kHot);
286
289
  ASSERT_EQ(new_cf_opt.persist_user_defined_timestamps, true);
290
+ ASSERT_EQ(new_cf_opt.memtable_max_range_deletions, 0);
287
291
 
288
292
  cf_options_map["write_buffer_size"] = "hello";
289
293
  ASSERT_NOK(GetColumnFamilyOptionsFromMap(exact, base_cf_opt, cf_options_map,
@@ -2337,7 +2341,9 @@ TEST_F(OptionsOldApiTest, GetOptionsFromMapTest) {
2337
2341
  {"blob_file_starting_level", "1"},
2338
2342
  {"prepopulate_blob_cache", "kDisable"},
2339
2343
  {"last_level_temperature", "kWarm"},
2344
+ {"default_temperature", "kHot"},
2340
2345
  {"persist_user_defined_timestamps", "true"},
2346
+ {"memtable_max_range_deletions", "0"},
2341
2347
  };
2342
2348
 
2343
2349
  std::unordered_map<std::string, std::string> db_options_map = {
@@ -2488,7 +2494,9 @@ TEST_F(OptionsOldApiTest, GetOptionsFromMapTest) {
2488
2494
  ASSERT_EQ(new_cf_opt.prepopulate_blob_cache, PrepopulateBlobCache::kDisable);
2489
2495
  ASSERT_EQ(new_cf_opt.last_level_temperature, Temperature::kWarm);
2490
2496
  ASSERT_EQ(new_cf_opt.bottommost_temperature, Temperature::kWarm);
2497
+ ASSERT_EQ(new_cf_opt.default_temperature, Temperature::kHot);
2491
2498
  ASSERT_EQ(new_cf_opt.persist_user_defined_timestamps, true);
2499
+ ASSERT_EQ(new_cf_opt.memtable_max_range_deletions, 0);
2492
2500
 
2493
2501
  cf_options_map["write_buffer_size"] = "hello";
2494
2502
  ASSERT_NOK(GetColumnFamilyOptionsFromMap(cf_config_options, base_cf_opt,
@@ -14,6 +14,7 @@
14
14
  #endif // OS_WIN
15
15
 
16
16
  #include <cstdint>
17
+ #include <utility>
17
18
 
18
19
  #include "rocksdb/rocksdb_namespace.h"
19
20
 
@@ -67,4 +68,23 @@ class MemMapping {
67
68
  static MemMapping AllocateAnonymous(size_t length, bool huge);
68
69
  };
69
70
 
71
+ // Simple MemMapping wrapper that presents the memory as an array of T.
72
+ // For example,
73
+ // TypedMemMapping<uint64_t> arr = MemMapping::AllocateLazyZeroed(num_bytes);
74
+ template <typename T>
75
+ class TypedMemMapping : public MemMapping {
76
+ public:
77
+ /*implicit*/ TypedMemMapping(MemMapping&& v) noexcept
78
+ : MemMapping(std::move(v)) {}
79
+ TypedMemMapping& operator=(MemMapping&& v) noexcept {
80
+ MemMapping& base = *this;
81
+ base = std::move(v);
82
+ }
83
+
84
+ inline T* Get() const { return static_cast<T*>(MemMapping::Get()); }
85
+ inline size_t Count() const { return MemMapping::Length() / sizeof(T); }
86
+
87
+ inline T& operator[](size_t index) const { return Get()[index]; }
88
+ };
89
+
70
90
  } // namespace ROCKSDB_NAMESPACE