@nxtedition/rocksdb 5.2.21 → 5.2.28

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 (923) hide show
  1. package/binding.cc +510 -967
  2. package/binding.gyp +78 -72
  3. package/chained-batch.js +1 -2
  4. package/deps/rocksdb/build_version.cc +70 -4
  5. package/deps/rocksdb/rocksdb/CMakeLists.txt +281 -149
  6. package/deps/rocksdb/rocksdb/Makefile +459 -469
  7. package/deps/rocksdb/rocksdb/TARGETS +5244 -1500
  8. package/deps/rocksdb/rocksdb/cache/cache.cc +12 -3
  9. package/deps/rocksdb/rocksdb/cache/cache_bench.cc +7 -368
  10. package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +924 -0
  11. package/deps/rocksdb/rocksdb/cache/cache_entry_roles.cc +128 -0
  12. package/deps/rocksdb/rocksdb/cache/cache_entry_roles.h +103 -0
  13. package/deps/rocksdb/rocksdb/cache/cache_entry_stats.h +183 -0
  14. package/deps/rocksdb/rocksdb/cache/cache_helpers.h +11 -0
  15. package/deps/rocksdb/rocksdb/cache/cache_key.cc +344 -0
  16. package/deps/rocksdb/rocksdb/cache/cache_key.h +132 -0
  17. package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.cc +183 -0
  18. package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.h +288 -0
  19. package/deps/rocksdb/rocksdb/cache/cache_reservation_manager_test.cc +468 -0
  20. package/deps/rocksdb/rocksdb/cache/cache_test.cc +85 -8
  21. package/deps/rocksdb/rocksdb/cache/clock_cache.cc +121 -51
  22. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +171 -0
  23. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +86 -0
  24. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +607 -0
  25. package/deps/rocksdb/rocksdb/cache/lru_cache.cc +381 -154
  26. package/deps/rocksdb/rocksdb/cache/lru_cache.h +176 -33
  27. package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +1659 -3
  28. package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +94 -23
  29. package/deps/rocksdb/rocksdb/cache/sharded_cache.h +49 -28
  30. package/deps/rocksdb/rocksdb/cmake/modules/CxxFlags.cmake +7 -0
  31. package/deps/rocksdb/rocksdb/cmake/modules/FindJeMalloc.cmake +29 -0
  32. package/deps/rocksdb/rocksdb/cmake/modules/FindNUMA.cmake +29 -0
  33. package/deps/rocksdb/rocksdb/cmake/modules/FindSnappy.cmake +29 -0
  34. package/deps/rocksdb/rocksdb/cmake/modules/FindTBB.cmake +33 -0
  35. package/deps/rocksdb/rocksdb/cmake/modules/Findgflags.cmake +29 -0
  36. package/deps/rocksdb/rocksdb/cmake/modules/Findlz4.cmake +29 -0
  37. package/deps/rocksdb/rocksdb/cmake/modules/Finduring.cmake +26 -0
  38. package/deps/rocksdb/rocksdb/cmake/modules/Findzstd.cmake +29 -0
  39. package/deps/rocksdb/rocksdb/cmake/modules/ReadVersion.cmake +10 -0
  40. package/deps/rocksdb/rocksdb/crash_test.mk +93 -0
  41. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +54 -31
  42. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +10 -6
  43. package/deps/rocksdb/rocksdb/db/blob/blob_counting_iterator.h +146 -0
  44. package/deps/rocksdb/rocksdb/db/blob/blob_counting_iterator_test.cc +326 -0
  45. package/deps/rocksdb/rocksdb/db/blob/blob_fetcher.cc +34 -0
  46. package/deps/rocksdb/rocksdb/db/blob/blob_fetcher.h +37 -0
  47. package/deps/rocksdb/rocksdb/db/blob/blob_file_addition.cc +4 -2
  48. package/deps/rocksdb/rocksdb/db/blob/blob_file_addition_test.cc +8 -4
  49. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +99 -40
  50. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.h +20 -8
  51. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +95 -83
  52. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.cc +13 -10
  53. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.h +7 -4
  54. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache_test.cc +37 -37
  55. package/deps/rocksdb/rocksdb/db/blob/blob_file_completion_callback.h +101 -0
  56. package/deps/rocksdb/rocksdb/db/blob/blob_file_meta.cc +8 -1
  57. package/deps/rocksdb/rocksdb/db/blob/blob_file_meta.h +6 -0
  58. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +209 -44
  59. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +37 -11
  60. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +382 -179
  61. package/deps/rocksdb/rocksdb/db/blob/blob_garbage_meter.cc +100 -0
  62. package/deps/rocksdb/rocksdb/db/blob/blob_garbage_meter.h +102 -0
  63. package/deps/rocksdb/rocksdb/db/blob/blob_garbage_meter_test.cc +196 -0
  64. package/deps/rocksdb/rocksdb/db/blob/blob_index.h +3 -0
  65. package/deps/rocksdb/rocksdb/db/blob/blob_log_format.h +2 -1
  66. package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.cc +7 -5
  67. package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.h +10 -3
  68. package/deps/rocksdb/rocksdb/db/blob/blob_log_writer.cc +12 -8
  69. package/deps/rocksdb/rocksdb/db/blob/blob_log_writer.h +5 -5
  70. package/deps/rocksdb/rocksdb/db/blob/db_blob_basic_test.cc +772 -9
  71. package/deps/rocksdb/rocksdb/db/blob/db_blob_compaction_test.cc +730 -0
  72. package/deps/rocksdb/rocksdb/db/blob/db_blob_corruption_test.cc +82 -0
  73. package/deps/rocksdb/rocksdb/db/blob/db_blob_index_test.cc +155 -17
  74. package/deps/rocksdb/rocksdb/db/blob/prefetch_buffer_collection.cc +21 -0
  75. package/deps/rocksdb/rocksdb/db/blob/prefetch_buffer_collection.h +38 -0
  76. package/deps/rocksdb/rocksdb/db/builder.cc +137 -89
  77. package/deps/rocksdb/rocksdb/db/builder.h +16 -37
  78. package/deps/rocksdb/rocksdb/db/c.cc +413 -208
  79. package/deps/rocksdb/rocksdb/db/c_test.c +227 -138
  80. package/deps/rocksdb/rocksdb/db/column_family.cc +118 -103
  81. package/deps/rocksdb/rocksdb/db/column_family.h +86 -44
  82. package/deps/rocksdb/rocksdb/db/column_family_test.cc +38 -24
  83. package/deps/rocksdb/rocksdb/db/compact_files_test.cc +81 -0
  84. package/deps/rocksdb/rocksdb/db/compaction/clipping_iterator.h +275 -0
  85. package/deps/rocksdb/rocksdb/db/compaction/clipping_iterator_test.cc +258 -0
  86. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +81 -28
  87. package/deps/rocksdb/rocksdb/db/compaction/compaction.h +43 -12
  88. package/deps/rocksdb/rocksdb/db/compaction/compaction_iteration_stats.h +12 -0
  89. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +406 -215
  90. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +147 -50
  91. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +167 -61
  92. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +1321 -156
  93. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +197 -28
  94. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +2 -3
  95. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +246 -43
  96. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +65 -26
  97. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +7 -7
  98. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +122 -9
  99. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +8 -2
  100. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +18 -6
  101. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +1 -1
  102. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +536 -44
  103. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +311 -30
  104. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +1 -1
  105. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +849 -0
  106. package/deps/rocksdb/rocksdb/db/compaction/file_pri.h +92 -0
  107. package/deps/rocksdb/rocksdb/db/compaction/sst_partitioner.cc +46 -0
  108. package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +1 -1
  109. package/deps/rocksdb/rocksdb/db/convenience.cc +6 -3
  110. package/deps/rocksdb/rocksdb/db/corruption_test.cc +383 -28
  111. package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +7 -2
  112. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +154 -45
  113. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +1095 -33
  114. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +1249 -203
  115. package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +135 -9
  116. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +1348 -166
  117. package/deps/rocksdb/rocksdb/db/db_dynamic_level_test.cc +3 -5
  118. package/deps/rocksdb/rocksdb/db/db_encryption_test.cc +1 -1
  119. package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +312 -45
  120. package/deps/rocksdb/rocksdb/db/db_flush_test.cc +1734 -48
  121. package/deps/rocksdb/rocksdb/db/{compacted_db_impl.cc → db_impl/compacted_db_impl.cc} +24 -7
  122. package/deps/rocksdb/rocksdb/db/{compacted_db_impl.h → db_impl/compacted_db_impl.h} +1 -1
  123. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +644 -333
  124. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +365 -92
  125. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +578 -210
  126. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +38 -16
  127. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +17 -10
  128. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +75 -74
  129. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +450 -183
  130. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +42 -9
  131. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +232 -15
  132. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +42 -4
  133. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +297 -100
  134. package/deps/rocksdb/rocksdb/db/db_info_dumper.cc +16 -15
  135. package/deps/rocksdb/rocksdb/db/db_inplace_update_test.cc +31 -1
  136. package/deps/rocksdb/rocksdb/db/db_io_failure_test.cc +6 -5
  137. package/deps/rocksdb/rocksdb/db/db_iter.cc +218 -153
  138. package/deps/rocksdb/rocksdb/db/db_iter.h +14 -12
  139. package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +1 -1
  140. package/deps/rocksdb/rocksdb/db/db_iter_test.cc +84 -160
  141. package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +47 -6
  142. package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +204 -0
  143. package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +21 -13
  144. package/deps/rocksdb/rocksdb/db/db_logical_block_size_cache_test.cc +17 -10
  145. package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +38 -24
  146. package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +184 -19
  147. package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +1 -1
  148. package/deps/rocksdb/rocksdb/db/db_options_test.cc +183 -3
  149. package/deps/rocksdb/rocksdb/db/db_properties_test.cc +409 -9
  150. package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +92 -23
  151. package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +446 -0
  152. package/deps/rocksdb/rocksdb/db/{db_impl/db_secondary_test.cc → db_secondary_test.cc} +363 -35
  153. package/deps/rocksdb/rocksdb/db/db_sst_test.cc +520 -15
  154. package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +50 -1
  155. package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +139 -4
  156. package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +1 -1
  157. package/deps/rocksdb/rocksdb/db/db_test.cc +669 -359
  158. package/deps/rocksdb/rocksdb/db/db_test2.cc +2110 -304
  159. package/deps/rocksdb/rocksdb/db/db_test_util.cc +76 -43
  160. package/deps/rocksdb/rocksdb/db/db_test_util.h +231 -103
  161. package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +19 -11
  162. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +490 -71
  163. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +980 -349
  164. package/deps/rocksdb/rocksdb/db/db_with_timestamp_compaction_test.cc +11 -12
  165. package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +793 -0
  166. package/deps/rocksdb/rocksdb/db/db_write_test.cc +2 -1
  167. package/deps/rocksdb/rocksdb/db/dbformat.cc +4 -12
  168. package/deps/rocksdb/rocksdb/db/dbformat.h +28 -18
  169. package/deps/rocksdb/rocksdb/db/dbformat_test.cc +3 -0
  170. package/deps/rocksdb/rocksdb/db/deletefile_test.cc +50 -15
  171. package/deps/rocksdb/rocksdb/db/error_handler.cc +127 -41
  172. package/deps/rocksdb/rocksdb/db/error_handler.h +12 -5
  173. package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +524 -255
  174. package/deps/rocksdb/rocksdb/db/event_helpers.cc +136 -11
  175. package/deps/rocksdb/rocksdb/db/event_helpers.h +27 -2
  176. package/deps/rocksdb/rocksdb/db/experimental.cc +100 -0
  177. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +307 -4
  178. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +137 -60
  179. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +12 -8
  180. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +86 -55
  181. package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +86 -5
  182. package/deps/rocksdb/rocksdb/db/filename_test.cc +63 -0
  183. package/deps/rocksdb/rocksdb/db/flush_job.cc +619 -64
  184. package/deps/rocksdb/rocksdb/db/flush_job.h +30 -7
  185. package/deps/rocksdb/rocksdb/db/flush_job_test.cc +33 -16
  186. package/deps/rocksdb/rocksdb/db/flush_scheduler.h +2 -1
  187. package/deps/rocksdb/rocksdb/db/forward_iterator.cc +18 -17
  188. package/deps/rocksdb/rocksdb/db/forward_iterator.h +5 -4
  189. package/deps/rocksdb/rocksdb/db/forward_iterator_bench.cc +0 -1
  190. package/deps/rocksdb/rocksdb/db/history_trimming_iterator.h +91 -0
  191. package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +25 -14
  192. package/deps/rocksdb/rocksdb/db/import_column_family_job.h +6 -5
  193. package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +1 -1
  194. package/deps/rocksdb/rocksdb/db/internal_stats.cc +471 -50
  195. package/deps/rocksdb/rocksdb/db/internal_stats.h +129 -25
  196. package/deps/rocksdb/rocksdb/db/job_context.h +22 -9
  197. package/deps/rocksdb/rocksdb/db/kv_checksum.h +394 -0
  198. package/deps/rocksdb/rocksdb/db/listener_test.cc +518 -41
  199. package/deps/rocksdb/rocksdb/db/log_format.h +4 -1
  200. package/deps/rocksdb/rocksdb/db/log_reader.cc +129 -6
  201. package/deps/rocksdb/rocksdb/db/log_reader.h +17 -1
  202. package/deps/rocksdb/rocksdb/db/log_test.cc +161 -11
  203. package/deps/rocksdb/rocksdb/db/log_writer.cc +92 -13
  204. package/deps/rocksdb/rocksdb/db/log_writer.h +18 -5
  205. package/deps/rocksdb/rocksdb/db/logs_with_prep_tracker.h +1 -1
  206. package/deps/rocksdb/rocksdb/db/lookup_key.h +0 -1
  207. package/deps/rocksdb/rocksdb/db/malloc_stats.cc +2 -2
  208. package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +21 -8
  209. package/deps/rocksdb/rocksdb/db/memtable.cc +144 -54
  210. package/deps/rocksdb/rocksdb/db/memtable.h +72 -15
  211. package/deps/rocksdb/rocksdb/db/memtable_list.cc +95 -47
  212. package/deps/rocksdb/rocksdb/db/memtable_list.h +33 -13
  213. package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +61 -31
  214. package/deps/rocksdb/rocksdb/db/merge_context.h +20 -8
  215. package/deps/rocksdb/rocksdb/db/merge_helper.cc +54 -11
  216. package/deps/rocksdb/rocksdb/db/merge_helper.h +17 -6
  217. package/deps/rocksdb/rocksdb/db/merge_helper_test.cc +13 -7
  218. package/deps/rocksdb/rocksdb/db/merge_test.cc +40 -19
  219. package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +14 -25
  220. package/deps/rocksdb/rocksdb/db/output_validator.cc +3 -0
  221. package/deps/rocksdb/rocksdb/db/output_validator.h +5 -4
  222. package/deps/rocksdb/rocksdb/db/perf_context_test.cc +32 -28
  223. package/deps/rocksdb/rocksdb/db/periodic_work_scheduler.cc +43 -29
  224. package/deps/rocksdb/rocksdb/db/periodic_work_scheduler.h +9 -7
  225. package/deps/rocksdb/rocksdb/db/periodic_work_scheduler_test.cc +21 -16
  226. package/deps/rocksdb/rocksdb/db/pinned_iterators_manager.h +1 -1
  227. package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +29 -36
  228. package/deps/rocksdb/rocksdb/db/pre_release_callback.h +1 -2
  229. package/deps/rocksdb/rocksdb/db/prefix_test.cc +4 -4
  230. package/deps/rocksdb/rocksdb/db/range_del_aggregator.h +2 -2
  231. package/deps/rocksdb/rocksdb/db/range_del_aggregator_bench.cc +11 -11
  232. package/deps/rocksdb/rocksdb/db/range_del_aggregator_test.cc +3 -2
  233. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.cc +14 -8
  234. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +17 -0
  235. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter_test.cc +4 -2
  236. package/deps/rocksdb/rocksdb/db/read_callback.h +1 -0
  237. package/deps/rocksdb/rocksdb/db/repair.cc +87 -58
  238. package/deps/rocksdb/rocksdb/db/repair_test.cc +35 -5
  239. package/deps/rocksdb/rocksdb/db/snapshot_impl.h +2 -1
  240. package/deps/rocksdb/rocksdb/db/table_cache.cc +95 -69
  241. package/deps/rocksdb/rocksdb/db/table_cache.h +63 -53
  242. package/deps/rocksdb/rocksdb/db/table_properties_collector.cc +4 -4
  243. package/deps/rocksdb/rocksdb/db/table_properties_collector.h +78 -10
  244. package/deps/rocksdb/rocksdb/db/table_properties_collector_test.cc +28 -33
  245. package/deps/rocksdb/rocksdb/db/transaction_log_impl.cc +30 -51
  246. package/deps/rocksdb/rocksdb/db/transaction_log_impl.h +12 -8
  247. package/deps/rocksdb/rocksdb/db/version_builder.cc +564 -341
  248. package/deps/rocksdb/rocksdb/db/version_builder.h +8 -8
  249. package/deps/rocksdb/rocksdb/db/version_builder_test.cc +327 -155
  250. package/deps/rocksdb/rocksdb/db/version_edit.cc +89 -27
  251. package/deps/rocksdb/rocksdb/db/version_edit.h +42 -17
  252. package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +324 -43
  253. package/deps/rocksdb/rocksdb/db/version_edit_handler.h +79 -22
  254. package/deps/rocksdb/rocksdb/db/version_edit_test.cc +165 -20
  255. package/deps/rocksdb/rocksdb/db/version_set.cc +935 -1034
  256. package/deps/rocksdb/rocksdb/db/version_set.h +183 -122
  257. package/deps/rocksdb/rocksdb/db/version_set_test.cc +556 -138
  258. package/deps/rocksdb/rocksdb/db/version_util.h +68 -0
  259. package/deps/rocksdb/rocksdb/db/wal_manager.cc +23 -21
  260. package/deps/rocksdb/rocksdb/db/wal_manager.h +5 -2
  261. package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +30 -27
  262. package/deps/rocksdb/rocksdb/db/write_batch.cc +704 -209
  263. package/deps/rocksdb/rocksdb/db/write_batch_internal.h +135 -2
  264. package/deps/rocksdb/rocksdb/db/write_batch_test.cc +209 -5
  265. package/deps/rocksdb/rocksdb/db/write_callback_test.cc +2 -0
  266. package/deps/rocksdb/rocksdb/db/write_controller.cc +47 -54
  267. package/deps/rocksdb/rocksdb/db/write_controller.h +12 -9
  268. package/deps/rocksdb/rocksdb/db/write_controller_test.cc +215 -103
  269. package/deps/rocksdb/rocksdb/db/write_thread.cc +11 -0
  270. package/deps/rocksdb/rocksdb/db/write_thread.h +14 -8
  271. package/deps/rocksdb/rocksdb/db_stress_tool/CMakeLists.txt +7 -4
  272. package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +10 -3
  273. package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +6 -0
  274. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress.cc +1 -1
  275. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +19 -2
  276. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +78 -25
  277. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compaction_filter.h +13 -2
  278. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +29 -12
  279. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +5 -1
  280. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +199 -32
  281. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.cc +188 -0
  282. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +59 -10
  283. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +77 -109
  284. package/deps/rocksdb/rocksdb/{third-party/folly/folly/synchronization/WaitOptions.cpp → db_stress_tool/db_stress_stat.cc} +9 -4
  285. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_stat.h +7 -6
  286. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_table_properties_collector.h +1 -0
  287. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +699 -143
  288. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +20 -2
  289. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +49 -39
  290. package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +631 -0
  291. package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.h +287 -0
  292. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +1565 -0
  293. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.h +374 -0
  294. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +149 -18
  295. package/deps/rocksdb/rocksdb/env/composite_env.cc +464 -0
  296. package/deps/rocksdb/rocksdb/env/composite_env_wrapper.h +98 -646
  297. package/deps/rocksdb/rocksdb/env/emulated_clock.h +114 -0
  298. package/deps/rocksdb/rocksdb/env/env.cc +632 -42
  299. package/deps/rocksdb/rocksdb/env/env_basic_test.cc +84 -36
  300. package/deps/rocksdb/rocksdb/env/env_chroot.cc +88 -286
  301. package/deps/rocksdb/rocksdb/env/env_chroot.h +34 -1
  302. package/deps/rocksdb/rocksdb/env/env_encryption.cc +469 -277
  303. package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +9 -30
  304. package/deps/rocksdb/rocksdb/env/env_posix.cc +110 -119
  305. package/deps/rocksdb/rocksdb/env/env_test.cc +1128 -39
  306. package/deps/rocksdb/rocksdb/env/file_system.cc +147 -8
  307. package/deps/rocksdb/rocksdb/env/file_system_tracer.cc +207 -136
  308. package/deps/rocksdb/rocksdb/env/file_system_tracer.h +86 -54
  309. package/deps/rocksdb/rocksdb/env/fs_posix.cc +192 -64
  310. package/deps/rocksdb/rocksdb/env/fs_readonly.h +107 -0
  311. package/deps/rocksdb/rocksdb/env/fs_remap.cc +339 -0
  312. package/deps/rocksdb/rocksdb/env/fs_remap.h +139 -0
  313. package/deps/rocksdb/rocksdb/env/io_posix.cc +245 -41
  314. package/deps/rocksdb/rocksdb/env/io_posix.h +66 -1
  315. package/deps/rocksdb/rocksdb/env/mock_env.cc +147 -149
  316. package/deps/rocksdb/rocksdb/env/mock_env.h +113 -11
  317. package/deps/rocksdb/rocksdb/env/mock_env_test.cc +2 -4
  318. package/deps/rocksdb/rocksdb/env/unique_id_gen.cc +164 -0
  319. package/deps/rocksdb/rocksdb/env/unique_id_gen.h +71 -0
  320. package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +9 -5
  321. package/deps/rocksdb/rocksdb/file/delete_scheduler.h +6 -4
  322. package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +19 -12
  323. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +459 -70
  324. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +205 -28
  325. package/deps/rocksdb/rocksdb/file/file_util.cc +39 -28
  326. package/deps/rocksdb/rocksdb/file/file_util.h +18 -27
  327. package/deps/rocksdb/rocksdb/file/filename.cc +59 -22
  328. package/deps/rocksdb/rocksdb/file/filename.h +13 -8
  329. package/deps/rocksdb/rocksdb/file/line_file_reader.cc +68 -0
  330. package/deps/rocksdb/rocksdb/file/line_file_reader.h +59 -0
  331. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +1130 -6
  332. package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +220 -36
  333. package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +69 -17
  334. package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +13 -12
  335. package/deps/rocksdb/rocksdb/file/read_write_util.cc +3 -38
  336. package/deps/rocksdb/rocksdb/file/read_write_util.h +0 -4
  337. package/deps/rocksdb/rocksdb/file/readahead_file_info.h +33 -0
  338. package/deps/rocksdb/rocksdb/file/sequence_file_reader.cc +57 -9
  339. package/deps/rocksdb/rocksdb/file/sequence_file_reader.h +58 -6
  340. package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.cc +29 -54
  341. package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.h +22 -29
  342. package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +424 -50
  343. package/deps/rocksdb/rocksdb/file/writable_file_writer.h +66 -19
  344. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +157 -66
  345. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +224 -121
  346. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +333 -30
  347. package/deps/rocksdb/rocksdb/include/rocksdb/cache_bench_tool.h +14 -0
  348. package/deps/rocksdb/rocksdb/include/rocksdb/cleanable.h +1 -1
  349. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +90 -50
  350. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +13 -5
  351. package/deps/rocksdb/rocksdb/include/rocksdb/comparator.h +20 -4
  352. package/deps/rocksdb/rocksdb/include/rocksdb/concurrent_task_limiter.h +8 -3
  353. package/deps/rocksdb/rocksdb/include/rocksdb/configurable.h +53 -12
  354. package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +31 -6
  355. package/deps/rocksdb/rocksdb/include/rocksdb/customizable.h +102 -7
  356. package/deps/rocksdb/rocksdb/include/rocksdb/data_structure.h +51 -0
  357. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +370 -262
  358. package/deps/rocksdb/rocksdb/include/rocksdb/env.h +286 -87
  359. package/deps/rocksdb/rocksdb/include/rocksdb/env_encryption.h +124 -64
  360. package/deps/rocksdb/rocksdb/include/rocksdb/experimental.h +27 -0
  361. package/deps/rocksdb/rocksdb/include/rocksdb/file_checksum.h +21 -4
  362. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +384 -41
  363. package/deps/rocksdb/rocksdb/include/rocksdb/filter_policy.h +111 -143
  364. package/deps/rocksdb/rocksdb/include/rocksdb/flush_block_policy.h +20 -6
  365. package/deps/rocksdb/rocksdb/include/rocksdb/functor_wrapper.h +56 -0
  366. package/deps/rocksdb/rocksdb/include/rocksdb/io_status.h +15 -33
  367. package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +37 -1
  368. package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +1 -3
  369. package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +314 -26
  370. package/deps/rocksdb/rocksdb/include/rocksdb/memory_allocator.h +11 -7
  371. package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +50 -15
  372. package/deps/rocksdb/rocksdb/include/rocksdb/merge_operator.h +10 -3
  373. package/deps/rocksdb/rocksdb/include/rocksdb/metadata.h +186 -96
  374. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +373 -103
  375. package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +13 -3
  376. package/deps/rocksdb/rocksdb/include/rocksdb/persistent_cache.h +2 -2
  377. package/deps/rocksdb/rocksdb/include/rocksdb/rate_limiter.h +37 -7
  378. package/deps/rocksdb/rocksdb/include/rocksdb/rocksdb_namespace.h +6 -0
  379. package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +87 -0
  380. package/deps/rocksdb/rocksdb/include/rocksdb/slice.h +5 -12
  381. package/deps/rocksdb/rocksdb/include/rocksdb/slice_transform.h +59 -30
  382. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_manager.h +11 -11
  383. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +22 -0
  384. package/deps/rocksdb/rocksdb/include/rocksdb/sst_partitioner.h +17 -10
  385. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +121 -41
  386. package/deps/rocksdb/rocksdb/include/rocksdb/stats_history.h +1 -0
  387. package/deps/rocksdb/rocksdb/include/rocksdb/status.h +114 -136
  388. package/deps/rocksdb/rocksdb/include/rocksdb/system_clock.h +116 -0
  389. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +160 -18
  390. package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +57 -15
  391. package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +3 -1
  392. package/deps/rocksdb/rocksdb/include/rocksdb/trace_reader_writer.h +10 -6
  393. package/deps/rocksdb/rocksdb/include/rocksdb/trace_record.h +247 -0
  394. package/deps/rocksdb/rocksdb/include/rocksdb/trace_record_result.h +187 -0
  395. package/deps/rocksdb/rocksdb/include/rocksdb/transaction_log.h +1 -1
  396. package/deps/rocksdb/rocksdb/include/rocksdb/types.h +14 -24
  397. package/deps/rocksdb/rocksdb/include/rocksdb/unique_id.h +46 -0
  398. package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +14 -4
  399. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/agg_merge.h +138 -0
  400. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/backup_engine.h +631 -0
  401. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/cache_dump_load.h +142 -0
  402. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/checkpoint.h +12 -9
  403. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/customizable_util.h +368 -0
  404. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +24 -0
  405. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd_execute_result.h +4 -0
  406. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/object_registry.h +418 -63
  407. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +143 -73
  408. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_util.h +2 -2
  409. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/replayer.h +87 -0
  410. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/sim_cache.h +2 -2
  411. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +43 -5
  412. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/table_properties_collectors.h +18 -23
  413. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +26 -0
  414. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +32 -6
  415. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db_mutex.h +1 -2
  416. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +20 -1
  417. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +30 -3
  418. package/deps/rocksdb/rocksdb/include/rocksdb/wal_filter.h +11 -2
  419. package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +89 -11
  420. package/deps/rocksdb/rocksdb/include/rocksdb/write_batch_base.h +11 -0
  421. package/deps/rocksdb/rocksdb/include/rocksdb/write_buffer_manager.h +108 -38
  422. package/deps/rocksdb/rocksdb/logging/auto_roll_logger.cc +40 -23
  423. package/deps/rocksdb/rocksdb/logging/auto_roll_logger.h +12 -5
  424. package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +100 -49
  425. package/deps/rocksdb/rocksdb/logging/env_logger.h +7 -5
  426. package/deps/rocksdb/rocksdb/logging/env_logger_test.cc +0 -1
  427. package/deps/rocksdb/rocksdb/logging/posix_logger.h +3 -9
  428. package/deps/rocksdb/rocksdb/memory/arena.cc +3 -1
  429. package/deps/rocksdb/rocksdb/memory/arena.h +1 -1
  430. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +171 -106
  431. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.h +31 -15
  432. package/deps/rocksdb/rocksdb/memory/memkind_kmem_allocator.cc +15 -4
  433. package/deps/rocksdb/rocksdb/memory/memkind_kmem_allocator.h +24 -8
  434. package/deps/rocksdb/rocksdb/memory/memory_allocator.cc +91 -0
  435. package/deps/rocksdb/rocksdb/memory/memory_allocator_test.cc +239 -0
  436. package/deps/rocksdb/rocksdb/memory/memory_usage.h +14 -1
  437. package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.cc +72 -9
  438. package/deps/rocksdb/rocksdb/memtable/hash_skiplist_rep.cc +52 -6
  439. package/deps/rocksdb/rocksdb/memtable/inlineskiplist.h +53 -0
  440. package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +5 -5
  441. package/deps/rocksdb/rocksdb/memtable/memtablerep_bench.cc +17 -5
  442. package/deps/rocksdb/rocksdb/memtable/skiplist_test.cc +1 -1
  443. package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +87 -0
  444. package/deps/rocksdb/rocksdb/memtable/vectorrep.cc +20 -10
  445. package/deps/rocksdb/rocksdb/memtable/write_buffer_manager.cc +148 -94
  446. package/deps/rocksdb/rocksdb/memtable/write_buffer_manager_test.cc +160 -62
  447. package/deps/rocksdb/rocksdb/microbench/CMakeLists.txt +17 -0
  448. package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +1360 -0
  449. package/deps/rocksdb/rocksdb/microbench/ribbon_bench.cc +153 -0
  450. package/deps/rocksdb/rocksdb/monitoring/histogram.cc +8 -15
  451. package/deps/rocksdb/rocksdb/monitoring/histogram.h +0 -1
  452. package/deps/rocksdb/rocksdb/monitoring/histogram_test.cc +18 -16
  453. package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.cc +9 -7
  454. package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.h +5 -3
  455. package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.cc +7 -5
  456. package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.h +37 -12
  457. package/deps/rocksdb/rocksdb/monitoring/iostats_context.cc +26 -6
  458. package/deps/rocksdb/rocksdb/monitoring/iostats_context_imp.h +6 -10
  459. package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +14 -13
  460. package/deps/rocksdb/rocksdb/monitoring/perf_context_imp.h +19 -20
  461. package/deps/rocksdb/rocksdb/monitoring/perf_step_timer.h +18 -18
  462. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +84 -2
  463. package/deps/rocksdb/rocksdb/monitoring/statistics.h +6 -0
  464. package/deps/rocksdb/rocksdb/monitoring/statistics_test.cc +47 -2
  465. package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +67 -54
  466. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.cc +4 -1
  467. package/deps/rocksdb/rocksdb/monitoring/thread_status_util.cc +2 -1
  468. package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +2 -2
  469. package/deps/rocksdb/rocksdb/options/cf_options.cc +280 -212
  470. package/deps/rocksdb/rocksdb/options/cf_options.h +51 -57
  471. package/deps/rocksdb/rocksdb/options/configurable.cc +242 -138
  472. package/deps/rocksdb/rocksdb/options/configurable_helper.h +4 -68
  473. package/deps/rocksdb/rocksdb/options/configurable_test.cc +144 -21
  474. package/deps/rocksdb/rocksdb/options/configurable_test.h +2 -3
  475. package/deps/rocksdb/rocksdb/options/customizable.cc +67 -7
  476. package/deps/rocksdb/rocksdb/options/customizable_test.cc +1773 -151
  477. package/deps/rocksdb/rocksdb/options/db_options.cc +275 -47
  478. package/deps/rocksdb/rocksdb/options/db_options.h +36 -7
  479. package/deps/rocksdb/rocksdb/options/options.cc +49 -17
  480. package/deps/rocksdb/rocksdb/options/options_helper.cc +369 -352
  481. package/deps/rocksdb/rocksdb/options/options_helper.h +23 -23
  482. package/deps/rocksdb/rocksdb/options/options_parser.cc +18 -13
  483. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +67 -54
  484. package/deps/rocksdb/rocksdb/options/options_test.cc +1162 -187
  485. package/deps/rocksdb/rocksdb/port/jemalloc_helper.h +1 -1
  486. package/deps/rocksdb/rocksdb/port/lang.h +52 -0
  487. package/deps/rocksdb/rocksdb/port/port_example.h +1 -1
  488. package/deps/rocksdb/rocksdb/port/port_posix.cc +31 -2
  489. package/deps/rocksdb/rocksdb/port/port_posix.h +20 -2
  490. package/deps/rocksdb/rocksdb/port/stack_trace.cc +20 -4
  491. package/deps/rocksdb/rocksdb/port/sys_time.h +2 -2
  492. package/deps/rocksdb/rocksdb/port/win/env_default.cc +7 -7
  493. package/deps/rocksdb/rocksdb/port/win/env_win.cc +44 -74
  494. package/deps/rocksdb/rocksdb/port/win/env_win.h +25 -23
  495. package/deps/rocksdb/rocksdb/port/win/io_win.cc +32 -34
  496. package/deps/rocksdb/rocksdb/port/win/io_win.h +12 -6
  497. package/deps/rocksdb/rocksdb/port/win/port_win.cc +55 -35
  498. package/deps/rocksdb/rocksdb/port/win/port_win.h +22 -5
  499. package/deps/rocksdb/rocksdb/port/win/win_logger.cc +3 -3
  500. package/deps/rocksdb/rocksdb/port/win/win_logger.h +3 -5
  501. package/deps/rocksdb/rocksdb/port/win/win_thread.cc +7 -1
  502. package/deps/rocksdb/rocksdb/port/win/win_thread.h +12 -17
  503. package/deps/rocksdb/rocksdb/python.mk +9 -0
  504. package/deps/rocksdb/rocksdb/src.mk +82 -34
  505. package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.cc +3 -4
  506. package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.h +1 -1
  507. package/deps/rocksdb/rocksdb/table/block_based/block.cc +158 -80
  508. package/deps/rocksdb/rocksdb/table/block_based/block.h +64 -36
  509. package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.cc +23 -14
  510. package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.h +13 -5
  511. package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block_test.cc +3 -218
  512. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +603 -328
  513. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +28 -22
  514. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +220 -82
  515. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +8 -2
  516. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +3 -4
  517. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +28 -4
  518. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +598 -492
  519. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +151 -96
  520. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +31 -58
  521. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +330 -92
  522. package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +50 -19
  523. package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +23 -0
  524. package/deps/rocksdb/rocksdb/table/block_based/block_like_traits.h +226 -0
  525. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +56 -22
  526. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +42 -4
  527. package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +5 -2
  528. package/deps/rocksdb/rocksdb/table/block_based/block_type.h +2 -0
  529. package/deps/rocksdb/rocksdb/table/block_based/cachable_entry.h +34 -20
  530. package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +9 -10
  531. package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +26 -3
  532. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +2 -1
  533. package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +844 -202
  534. package/deps/rocksdb/rocksdb/table/block_based/filter_policy_internal.h +281 -81
  535. package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.cc +62 -2
  536. package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.h +2 -3
  537. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +28 -7
  538. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +22 -6
  539. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block_test.cc +28 -26
  540. package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +1 -1
  541. package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +1 -2
  542. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +2 -1
  543. package/deps/rocksdb/rocksdb/table/block_based/mock_block_based_table.h +11 -4
  544. package/deps/rocksdb/rocksdb/table/block_based/parsed_full_filter_block.cc +2 -1
  545. package/deps/rocksdb/rocksdb/table/block_based/parsed_full_filter_block.h +2 -0
  546. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +68 -26
  547. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +44 -9
  548. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +12 -10
  549. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +3 -4
  550. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.h +23 -4
  551. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +44 -19
  552. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.h +5 -1
  553. package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +16 -28
  554. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +7 -4
  555. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +2 -2
  556. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +77 -57
  557. package/deps/rocksdb/rocksdb/table/block_fetcher.h +23 -12
  558. package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +43 -56
  559. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +8 -8
  560. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.h +2 -1
  561. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +52 -70
  562. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_factory.cc +5 -8
  563. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_factory.h +1 -1
  564. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.cc +17 -11
  565. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.h +2 -3
  566. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +42 -51
  567. package/deps/rocksdb/rocksdb/table/format.cc +258 -104
  568. package/deps/rocksdb/rocksdb/table/format.h +120 -109
  569. package/deps/rocksdb/rocksdb/table/get_context.cc +97 -65
  570. package/deps/rocksdb/rocksdb/table/get_context.h +19 -12
  571. package/deps/rocksdb/rocksdb/table/internal_iterator.h +14 -0
  572. package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +8 -0
  573. package/deps/rocksdb/rocksdb/table/merger_test.cc +3 -2
  574. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +11 -21
  575. package/deps/rocksdb/rocksdb/table/merging_iterator.h +3 -3
  576. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +176 -171
  577. package/deps/rocksdb/rocksdb/table/meta_blocks.h +47 -33
  578. package/deps/rocksdb/rocksdb/table/mock_table.cc +7 -9
  579. package/deps/rocksdb/rocksdb/table/mock_table.h +3 -2
  580. package/deps/rocksdb/rocksdb/table/multiget_context.h +15 -8
  581. package/deps/rocksdb/rocksdb/table/persistent_cache_helper.cc +22 -29
  582. package/deps/rocksdb/rocksdb/table/persistent_cache_options.h +6 -3
  583. package/deps/rocksdb/rocksdb/table/plain/plain_table_bloom.h +5 -8
  584. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +29 -26
  585. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.h +12 -16
  586. package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.cc +145 -69
  587. package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.h +1 -1
  588. package/deps/rocksdb/rocksdb/table/plain/plain_table_index.cc +7 -6
  589. package/deps/rocksdb/rocksdb/table/plain/plain_table_index.h +3 -4
  590. package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.cc +3 -1
  591. package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.h +1 -1
  592. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +13 -18
  593. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.h +4 -9
  594. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +55 -37
  595. package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +10 -5
  596. package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +11 -8
  597. package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +222 -16
  598. package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +106 -58
  599. package/deps/rocksdb/rocksdb/table/sst_file_writer_collectors.h +6 -5
  600. package/deps/rocksdb/rocksdb/table/table_builder.h +68 -44
  601. package/deps/rocksdb/rocksdb/table/table_factory.cc +37 -10
  602. package/deps/rocksdb/rocksdb/table/table_properties.cc +109 -54
  603. package/deps/rocksdb/rocksdb/table/table_properties_internal.h +4 -20
  604. package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +33 -32
  605. package/deps/rocksdb/rocksdb/table/table_reader_caller.h +2 -0
  606. package/deps/rocksdb/rocksdb/table/table_test.cc +989 -326
  607. package/deps/rocksdb/rocksdb/table/two_level_iterator.cc +4 -0
  608. package/deps/rocksdb/rocksdb/table/unique_id.cc +166 -0
  609. package/deps/rocksdb/rocksdb/table/unique_id_impl.h +59 -0
  610. package/deps/rocksdb/rocksdb/test_util/mock_time_env.cc +1 -1
  611. package/deps/rocksdb/rocksdb/test_util/mock_time_env.h +13 -10
  612. package/deps/rocksdb/rocksdb/test_util/sync_point.cc +1 -2
  613. package/deps/rocksdb/rocksdb/test_util/sync_point.h +35 -16
  614. package/deps/rocksdb/rocksdb/test_util/sync_point_impl.cc +32 -10
  615. package/deps/rocksdb/rocksdb/test_util/sync_point_impl.h +31 -4
  616. package/deps/rocksdb/rocksdb/test_util/testharness.cc +53 -1
  617. package/deps/rocksdb/rocksdb/test_util/testharness.h +67 -3
  618. package/deps/rocksdb/rocksdb/test_util/testutil.cc +236 -66
  619. package/deps/rocksdb/rocksdb/test_util/testutil.h +63 -100
  620. package/deps/rocksdb/rocksdb/test_util/transaction_test_util.cc +12 -1
  621. package/deps/rocksdb/rocksdb/tools/blob_dump.cc +2 -2
  622. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.cc +6 -3
  623. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.h +1 -0
  624. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +9 -3
  625. package/deps/rocksdb/rocksdb/tools/db_bench.cc +1 -1
  626. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +1420 -611
  627. package/deps/rocksdb/rocksdb/tools/db_bench_tool_test.cc +11 -8
  628. package/deps/rocksdb/rocksdb/tools/db_repl_stress.cc +11 -1
  629. package/deps/rocksdb/rocksdb/tools/io_tracer_parser_test.cc +4 -2
  630. package/deps/rocksdb/rocksdb/tools/io_tracer_parser_tool.cc +46 -22
  631. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +655 -179
  632. package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +58 -6
  633. package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +472 -29
  634. package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +23 -2
  635. package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +2 -2
  636. package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.cc +246 -0
  637. package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.h +126 -0
  638. package/deps/rocksdb/rocksdb/tools/sst_dump_test.cc +83 -29
  639. package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +38 -17
  640. package/deps/rocksdb/rocksdb/tools/trace_analyzer_test.cc +191 -55
  641. package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +219 -296
  642. package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.h +87 -53
  643. package/deps/rocksdb/rocksdb/tools/write_stress.cc +8 -7
  644. package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.cc +6 -5
  645. package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.h +5 -4
  646. package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer_test.cc +14 -9
  647. package/deps/rocksdb/rocksdb/trace_replay/io_tracer.cc +134 -60
  648. package/deps/rocksdb/rocksdb/trace_replay/io_tracer.h +49 -38
  649. package/deps/rocksdb/rocksdb/trace_replay/io_tracer_test.cc +152 -15
  650. package/deps/rocksdb/rocksdb/trace_replay/trace_record.cc +206 -0
  651. package/deps/rocksdb/rocksdb/trace_replay/trace_record_handler.cc +190 -0
  652. package/deps/rocksdb/rocksdb/trace_replay/trace_record_handler.h +46 -0
  653. package/deps/rocksdb/rocksdb/trace_replay/trace_record_result.cc +146 -0
  654. package/deps/rocksdb/rocksdb/trace_replay/trace_replay.cc +475 -344
  655. package/deps/rocksdb/rocksdb/trace_replay/trace_replay.h +83 -95
  656. package/deps/rocksdb/rocksdb/util/autovector.h +38 -18
  657. package/deps/rocksdb/rocksdb/util/autovector_test.cc +1 -1
  658. package/deps/rocksdb/rocksdb/util/bloom_impl.h +4 -0
  659. package/deps/rocksdb/rocksdb/util/bloom_test.cc +276 -94
  660. package/deps/rocksdb/rocksdb/util/build_version.cc.in +81 -4
  661. package/deps/rocksdb/rocksdb/util/cast_util.h +22 -0
  662. package/deps/rocksdb/rocksdb/util/channel.h +2 -0
  663. package/deps/rocksdb/rocksdb/util/coding.h +1 -33
  664. package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +8 -0
  665. package/deps/rocksdb/rocksdb/util/comparator.cc +163 -3
  666. package/deps/rocksdb/rocksdb/util/compression.cc +122 -0
  667. package/deps/rocksdb/rocksdb/util/compression.h +212 -7
  668. package/deps/rocksdb/rocksdb/util/compression_context_cache.cc +1 -3
  669. package/deps/rocksdb/rocksdb/util/crc32c.cc +165 -2
  670. package/deps/rocksdb/rocksdb/util/crc32c.h +6 -0
  671. package/deps/rocksdb/rocksdb/util/crc32c_arm64.cc +14 -0
  672. package/deps/rocksdb/rocksdb/util/crc32c_ppc.h +3 -0
  673. package/deps/rocksdb/rocksdb/util/crc32c_test.cc +47 -0
  674. package/deps/rocksdb/rocksdb/util/defer.h +30 -1
  675. package/deps/rocksdb/rocksdb/util/defer_test.cc +11 -0
  676. package/deps/rocksdb/rocksdb/util/duplicate_detector.h +3 -1
  677. package/deps/rocksdb/rocksdb/util/dynamic_bloom.h +3 -3
  678. package/deps/rocksdb/rocksdb/util/dynamic_bloom_test.cc +5 -4
  679. package/deps/rocksdb/rocksdb/util/fastrange.h +2 -0
  680. package/deps/rocksdb/rocksdb/util/file_checksum_helper.cc +36 -0
  681. package/deps/rocksdb/rocksdb/util/file_checksum_helper.h +3 -1
  682. package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +512 -52
  683. package/deps/rocksdb/rocksdb/util/filter_bench.cc +65 -10
  684. package/deps/rocksdb/rocksdb/util/gflags_compat.h +6 -1
  685. package/deps/rocksdb/rocksdb/util/hash.cc +121 -3
  686. package/deps/rocksdb/rocksdb/util/hash.h +31 -1
  687. package/deps/rocksdb/rocksdb/util/hash128.h +26 -0
  688. package/deps/rocksdb/rocksdb/util/hash_containers.h +51 -0
  689. package/deps/rocksdb/rocksdb/util/hash_test.cc +194 -2
  690. package/deps/rocksdb/rocksdb/util/heap.h +6 -1
  691. package/deps/rocksdb/rocksdb/util/kv_map.h +1 -1
  692. package/deps/rocksdb/rocksdb/util/log_write_bench.cc +8 -6
  693. package/deps/rocksdb/rocksdb/util/math.h +74 -7
  694. package/deps/rocksdb/rocksdb/util/math128.h +13 -1
  695. package/deps/rocksdb/rocksdb/util/murmurhash.h +3 -3
  696. package/deps/rocksdb/rocksdb/util/random.cc +9 -0
  697. package/deps/rocksdb/rocksdb/util/random.h +6 -0
  698. package/deps/rocksdb/rocksdb/util/rate_limiter.cc +298 -144
  699. package/deps/rocksdb/rocksdb/util/rate_limiter.h +68 -19
  700. package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +335 -23
  701. package/deps/rocksdb/rocksdb/util/repeatable_thread.h +10 -12
  702. package/deps/rocksdb/rocksdb/util/repeatable_thread_test.cc +18 -15
  703. package/deps/rocksdb/rocksdb/util/ribbon_alg.h +98 -74
  704. package/deps/rocksdb/rocksdb/util/ribbon_config.cc +506 -0
  705. package/deps/rocksdb/rocksdb/util/ribbon_config.h +182 -0
  706. package/deps/rocksdb/rocksdb/util/ribbon_impl.h +154 -79
  707. package/deps/rocksdb/rocksdb/util/ribbon_test.cc +742 -365
  708. package/deps/rocksdb/rocksdb/util/set_comparator.h +2 -0
  709. package/deps/rocksdb/rocksdb/util/slice.cc +198 -35
  710. package/deps/rocksdb/rocksdb/util/slice_test.cc +30 -1
  711. package/deps/rocksdb/rocksdb/util/status.cc +32 -29
  712. package/deps/rocksdb/rocksdb/util/stop_watch.h +18 -18
  713. package/deps/rocksdb/rocksdb/util/string_util.cc +85 -6
  714. package/deps/rocksdb/rocksdb/util/string_util.h +47 -2
  715. package/deps/rocksdb/rocksdb/util/thread_guard.h +41 -0
  716. package/deps/rocksdb/rocksdb/util/thread_local.h +2 -2
  717. package/deps/rocksdb/rocksdb/util/thread_local_test.cc +22 -24
  718. package/deps/rocksdb/rocksdb/util/threadpool_imp.cc +7 -6
  719. package/deps/rocksdb/rocksdb/util/timer.h +55 -46
  720. package/deps/rocksdb/rocksdb/util/timer_test.cc +50 -48
  721. package/deps/rocksdb/rocksdb/util/user_comparator_wrapper.h +4 -0
  722. package/deps/rocksdb/rocksdb/util/vector_iterator.h +31 -15
  723. package/deps/rocksdb/rocksdb/util/work_queue.h +2 -0
  724. package/deps/rocksdb/rocksdb/util/xxhash.cc +35 -1144
  725. package/deps/rocksdb/rocksdb/util/xxhash.h +5117 -373
  726. package/deps/rocksdb/rocksdb/util/xxph3.h +1762 -0
  727. package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge.cc +238 -0
  728. package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge.h +49 -0
  729. package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge_test.cc +134 -0
  730. package/deps/rocksdb/rocksdb/utilities/agg_merge/test_agg_merge.cc +104 -0
  731. package/deps/rocksdb/rocksdb/utilities/agg_merge/test_agg_merge.h +47 -0
  732. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +3164 -0
  733. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_impl.h +29 -0
  734. package/deps/rocksdb/rocksdb/utilities/{backupable/backupable_db_test.cc → backup/backup_engine_test.cc} +1679 -485
  735. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.cc +6 -4
  736. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.h +14 -9
  737. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.cc +2 -0
  738. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.h +1 -0
  739. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_gc_stats.h +4 -0
  740. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +37 -27
  741. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +8 -4
  742. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl_filesnapshot.cc +1 -1
  743. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_iterator.h +13 -10
  744. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +5 -0
  745. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +44 -25
  746. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +3 -4
  747. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +27 -19
  748. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.h +4 -2
  749. package/deps/rocksdb/rocksdb/utilities/cache_dump_load.cc +69 -0
  750. package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +489 -0
  751. package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.h +366 -0
  752. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.cc +67 -4
  753. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.h +21 -6
  754. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_functional_test.cc +107 -7
  755. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_options.h +43 -0
  756. package/deps/rocksdb/rocksdb/utilities/cassandra/format.h +1 -1
  757. package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.cc +24 -8
  758. package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.h +7 -7
  759. package/deps/rocksdb/rocksdb/utilities/cassandra/serialize.h +5 -0
  760. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +99 -218
  761. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.h +8 -24
  762. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +114 -1
  763. package/deps/rocksdb/rocksdb/utilities/compaction_filters/layered_compaction_filter_base.h +6 -2
  764. package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc +0 -4
  765. package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.h +7 -6
  766. package/deps/rocksdb/rocksdb/utilities/compaction_filters.cc +56 -0
  767. package/deps/rocksdb/rocksdb/utilities/convenience/info_log_finder.cc +2 -2
  768. package/deps/rocksdb/rocksdb/utilities/counted_fs.cc +355 -0
  769. package/deps/rocksdb/rocksdb/utilities/counted_fs.h +152 -0
  770. package/deps/rocksdb/rocksdb/utilities/env_mirror.cc +13 -0
  771. package/deps/rocksdb/rocksdb/utilities/env_timed.cc +164 -122
  772. package/deps/rocksdb/rocksdb/utilities/env_timed.h +97 -0
  773. package/deps/rocksdb/rocksdb/utilities/fault_injection_env.cc +75 -17
  774. package/deps/rocksdb/rocksdb/utilities/fault_injection_env.h +19 -3
  775. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +539 -126
  776. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +162 -17
  777. package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.cc +110 -0
  778. package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.h +94 -0
  779. package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +5 -2
  780. package/deps/rocksdb/rocksdb/utilities/memory_allocators.h +104 -0
  781. package/deps/rocksdb/rocksdb/utilities/merge_operators/bytesxor.h +5 -3
  782. package/deps/rocksdb/rocksdb/utilities/merge_operators/max.cc +4 -1
  783. package/deps/rocksdb/rocksdb/utilities/merge_operators/put.cc +11 -3
  784. package/deps/rocksdb/rocksdb/utilities/merge_operators/sortlist.cc +0 -2
  785. package/deps/rocksdb/rocksdb/utilities/merge_operators/sortlist.h +5 -1
  786. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.cc +29 -10
  787. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.h +6 -3
  788. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend2.cc +29 -14
  789. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend2.h +6 -3
  790. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend_test.cc +71 -18
  791. package/deps/rocksdb/rocksdb/utilities/merge_operators/uint64add.cc +15 -9
  792. package/deps/rocksdb/rocksdb/utilities/merge_operators.cc +120 -0
  793. package/deps/rocksdb/rocksdb/utilities/merge_operators.h +3 -23
  794. package/deps/rocksdb/rocksdb/utilities/object_registry.cc +267 -42
  795. package/deps/rocksdb/rocksdb/utilities/object_registry_test.cc +702 -76
  796. package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration.cc +1 -1
  797. package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration_test.cc +26 -5
  798. package/deps/rocksdb/rocksdb/utilities/options/options_util.cc +1 -1
  799. package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +124 -1
  800. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.cc +2 -3
  801. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.h +8 -9
  802. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +15 -13
  803. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.h +1 -1
  804. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.h +4 -4
  805. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_evictable.h +2 -2
  806. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_bench.cc +8 -9
  807. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.cc +1 -1
  808. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.h +6 -3
  809. package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.h +2 -2
  810. package/deps/rocksdb/rocksdb/utilities/simulator_cache/cache_simulator.cc +3 -0
  811. package/deps/rocksdb/rocksdb/utilities/simulator_cache/cache_simulator_test.cc +2 -0
  812. package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache.cc +43 -35
  813. package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache_test.cc +20 -18
  814. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.cc +107 -2
  815. package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.cc +23 -15
  816. package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.h +2 -2
  817. package/deps/rocksdb/rocksdb/utilities/trace/replayer_impl.cc +316 -0
  818. package/deps/rocksdb/rocksdb/utilities/trace/replayer_impl.h +86 -0
  819. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.cc +4 -5
  820. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.h +4 -3
  821. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.h +1 -1
  822. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +119 -3
  823. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.cc +20 -3
  824. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.h +20 -0
  825. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_external_pthread.h +3 -2
  826. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +4 -0
  827. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc +38 -14
  828. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.h +17 -10
  829. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +1 -0
  830. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +1 -2
  831. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +423 -34
  832. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +82 -2
  833. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.cc +72 -40
  834. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.h +32 -1
  835. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +13 -5
  836. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +7 -3
  837. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +207 -43
  838. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +50 -7
  839. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.cc +28 -10
  840. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.h +11 -6
  841. package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +516 -0
  842. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +506 -15
  843. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +27 -13
  844. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +14 -14
  845. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.h +3 -0
  846. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +2 -2
  847. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +14 -5
  848. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +305 -27
  849. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +55 -159
  850. package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +209 -2
  851. package/deps/rocksdb/rocksdb/utilities/wal_filter.cc +23 -0
  852. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +157 -88
  853. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +501 -114
  854. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +91 -316
  855. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +1212 -672
  856. package/deps/rocksdb/rocksdb.gyp +425 -446
  857. package/index.js +5 -87
  858. package/package-lock.json +23687 -0
  859. package/package.json +8 -9
  860. package/prebuilds/darwin-arm64/node.napi.node +0 -0
  861. package/prebuilds/darwin-x64/node.napi.node +0 -0
  862. package/prebuilds/{darwin-x64+arm64 → linux-x64}/node.napi.node +0 -0
  863. package/deps/rocksdb/rocksdb/README.md +0 -32
  864. package/deps/rocksdb/rocksdb/env/env_hdfs.cc +0 -648
  865. package/deps/rocksdb/rocksdb/hdfs/README +0 -23
  866. package/deps/rocksdb/rocksdb/hdfs/env_hdfs.h +0 -386
  867. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/backupable_db.h +0 -535
  868. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/env_librados.h +0 -175
  869. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/utility_db.h +0 -34
  870. package/deps/rocksdb/rocksdb/memory/memkind_kmem_allocator_test.cc +0 -102
  871. package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.h +0 -49
  872. package/deps/rocksdb/rocksdb/memtable/hash_skiplist_rep.h +0 -44
  873. package/deps/rocksdb/rocksdb/options/customizable_helper.h +0 -216
  874. package/deps/rocksdb/rocksdb/port/README +0 -10
  875. package/deps/rocksdb/rocksdb/third-party/folly/folly/CPortability.h +0 -27
  876. package/deps/rocksdb/rocksdb/third-party/folly/folly/ConstexprMath.h +0 -45
  877. package/deps/rocksdb/rocksdb/third-party/folly/folly/Indestructible.h +0 -166
  878. package/deps/rocksdb/rocksdb/third-party/folly/folly/Optional.h +0 -570
  879. package/deps/rocksdb/rocksdb/third-party/folly/folly/Portability.h +0 -92
  880. package/deps/rocksdb/rocksdb/third-party/folly/folly/ScopeGuard.h +0 -54
  881. package/deps/rocksdb/rocksdb/third-party/folly/folly/Traits.h +0 -152
  882. package/deps/rocksdb/rocksdb/third-party/folly/folly/Unit.h +0 -59
  883. package/deps/rocksdb/rocksdb/third-party/folly/folly/Utility.h +0 -141
  884. package/deps/rocksdb/rocksdb/third-party/folly/folly/chrono/Hardware.h +0 -33
  885. package/deps/rocksdb/rocksdb/third-party/folly/folly/container/Array.h +0 -74
  886. package/deps/rocksdb/rocksdb/third-party/folly/folly/detail/Futex-inl.h +0 -117
  887. package/deps/rocksdb/rocksdb/third-party/folly/folly/detail/Futex.cpp +0 -263
  888. package/deps/rocksdb/rocksdb/third-party/folly/folly/detail/Futex.h +0 -96
  889. package/deps/rocksdb/rocksdb/third-party/folly/folly/functional/Invoke.h +0 -40
  890. package/deps/rocksdb/rocksdb/third-party/folly/folly/hash/Hash.h +0 -29
  891. package/deps/rocksdb/rocksdb/third-party/folly/folly/lang/Align.h +0 -144
  892. package/deps/rocksdb/rocksdb/third-party/folly/folly/lang/Bits.h +0 -30
  893. package/deps/rocksdb/rocksdb/third-party/folly/folly/lang/Launder.h +0 -51
  894. package/deps/rocksdb/rocksdb/third-party/folly/folly/portability/Asm.h +0 -28
  895. package/deps/rocksdb/rocksdb/third-party/folly/folly/portability/SysSyscall.h +0 -10
  896. package/deps/rocksdb/rocksdb/third-party/folly/folly/portability/SysTypes.h +0 -26
  897. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicNotification-inl.h +0 -138
  898. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicNotification.cpp +0 -23
  899. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicNotification.h +0 -57
  900. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicUtil-inl.h +0 -260
  901. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicUtil.h +0 -52
  902. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/Baton.h +0 -328
  903. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutex-inl.h +0 -1703
  904. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutex.cpp +0 -16
  905. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutex.h +0 -304
  906. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutexSpecializations.h +0 -39
  907. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/ParkingLot.cpp +0 -26
  908. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/ParkingLot.h +0 -318
  909. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/WaitOptions.h +0 -57
  910. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/InlineFunctionRef.h +0 -219
  911. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/ProxyLockable-inl.h +0 -207
  912. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/ProxyLockable.h +0 -164
  913. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/Sleeper.h +0 -57
  914. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/Spin.h +0 -77
  915. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/test/DistributedMutexTest.cpp +0 -1145
  916. package/deps/rocksdb/rocksdb/util/build_version.h +0 -15
  917. package/deps/rocksdb/rocksdb/util/xxh3p.h +0 -1392
  918. package/deps/rocksdb/rocksdb/utilities/backupable/backupable_db.cc +0 -2354
  919. package/deps/rocksdb/rocksdb/utilities/env_librados.cc +0 -1497
  920. package/deps/rocksdb/rocksdb/utilities/env_librados_test.cc +0 -1146
  921. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/README +0 -13
  922. package/deps/snappy/snappy-1.1.7/README.md +0 -149
  923. package/prebuilds/linux-x64/node.napi.glibc.node +0 -0
@@ -20,6 +20,8 @@
20
20
  #include "rocksdb/advanced_options.h"
21
21
  #include "rocksdb/comparator.h"
22
22
  #include "rocksdb/compression_type.h"
23
+ #include "rocksdb/customizable.h"
24
+ #include "rocksdb/data_structure.h"
23
25
  #include "rocksdb/env.h"
24
26
  #include "rocksdb/file_checksum.h"
25
27
  #include "rocksdb/listener.h"
@@ -58,9 +60,15 @@ class FileSystem;
58
60
  struct Options;
59
61
  struct DbPath;
60
62
 
63
+ using FileTypeSet = SmallEnumSet<FileType, FileType::kBlobFile>;
64
+
61
65
  struct ColumnFamilyOptions : public AdvancedColumnFamilyOptions {
62
66
  // The function recovers options to a previous version. Only 4.6 or later
63
67
  // versions are supported.
68
+ // NOT MAINTAINED: This function has not been and is not maintained.
69
+ // DEPRECATED: This function might be removed in a future release.
70
+ // In general, defaults are changed to suit broad interests. Opting
71
+ // out of a change on upgrade should be deliberate and considered.
64
72
  ColumnFamilyOptions* OldDefaults(int rocksdb_major_version = 4,
65
73
  int rocksdb_minor_version = 6);
66
74
 
@@ -125,9 +133,10 @@ struct ColumnFamilyOptions : public AdvancedColumnFamilyOptions {
125
133
  // Allows an application to modify/delete a key-value during background
126
134
  // compaction.
127
135
  //
128
- // If the client requires a new compaction filter to be used for different
129
- // compaction runs, it can specify compaction_filter_factory instead of this
130
- // option. The client should specify only one of the two.
136
+ // If the client requires a new `CompactionFilter` to be used for different
137
+ // compaction runs and/or requires a `CompactionFilter` for table file
138
+ // creations outside of compaction, it can specify compaction_filter_factory
139
+ // instead of this option. The client should specify only one of the two.
131
140
  // compaction_filter takes precedence over compaction_filter_factory if
132
141
  // client specifies both.
133
142
  //
@@ -138,12 +147,21 @@ struct ColumnFamilyOptions : public AdvancedColumnFamilyOptions {
138
147
  // Default: nullptr
139
148
  const CompactionFilter* compaction_filter = nullptr;
140
149
 
141
- // This is a factory that provides compaction filter objects which allow
142
- // an application to modify/delete a key-value during background compaction.
150
+ // This is a factory that provides `CompactionFilter` objects which allow
151
+ // an application to modify/delete a key-value during table file creation.
152
+ //
153
+ // Unlike the `compaction_filter` option, which is used when compaction
154
+ // creates a table file, this factory allows using a `CompactionFilter` when a
155
+ // table file is created for various reasons. The factory can decide what
156
+ // `TableFileCreationReason`s use a `CompactionFilter`. For compatibility, by
157
+ // default the decision is to use a `CompactionFilter` for
158
+ // `TableFileCreationReason::kCompaction` only.
143
159
  //
144
- // A new filter will be created on each compaction run. If multithreaded
145
- // compaction is being used, each created CompactionFilter will only be used
146
- // from a single thread and so does not need to be thread-safe.
160
+ // Each thread of work involving creating table files will create a new
161
+ // `CompactionFilter` when it will be used according to the above
162
+ // `TableFileCreationReason`-based decision. This allows the application to
163
+ // know about the different ongoing threads of work and makes it unnecessary
164
+ // for `CompactionFilter` to provide thread-safety.
147
165
  //
148
166
  // Default: nullptr
149
167
  std::shared_ptr<CompactionFilterFactory> compaction_filter_factory = nullptr;
@@ -197,14 +215,18 @@ struct ColumnFamilyOptions : public AdvancedColumnFamilyOptions {
197
215
  CompressionType compression;
198
216
 
199
217
  // Compression algorithm that will be used for the bottommost level that
200
- // contain files.
218
+ // contain files. The behavior for num_levels = 1 is not well defined.
219
+ // Right now, with num_levels = 1, all compaction outputs will use
220
+ // bottommost_compression and all flush outputs still use options.compression,
221
+ // but the behavior is subject to change.
201
222
  //
202
223
  // Default: kDisableCompressionOption (Disabled)
203
224
  CompressionType bottommost_compression = kDisableCompressionOption;
204
225
 
205
226
  // different options for compression algorithms used by bottommost_compression
206
227
  // if it is enabled. To enable it, please see the definition of
207
- // CompressionOptions.
228
+ // CompressionOptions. Behavior for num_levels = 1 is the same as
229
+ // options.bottommost_compression.
208
230
  CompressionOptions bottommost_compression_opts;
209
231
 
210
232
  // different options for compression algorithms
@@ -351,8 +373,68 @@ struct DbPath {
351
373
 
352
374
  extern const char* kHostnameForDbHostId;
353
375
 
376
+ enum class CompactionServiceJobStatus : char {
377
+ kSuccess,
378
+ kFailure,
379
+ kUseLocal,
380
+ };
381
+
382
+ struct CompactionServiceJobInfo {
383
+ std::string db_name;
384
+ std::string db_id;
385
+ std::string db_session_id;
386
+ uint64_t job_id; // job_id is only unique within the current DB and session,
387
+ // restart DB will reset the job_id. `db_id` and
388
+ // `db_session_id` could help you build unique id across
389
+ // different DBs and sessions.
390
+
391
+ Env::Priority priority;
392
+
393
+ CompactionServiceJobInfo(std::string db_name_, std::string db_id_,
394
+ std::string db_session_id_, uint64_t job_id_,
395
+ Env::Priority priority_)
396
+ : db_name(std::move(db_name_)),
397
+ db_id(std::move(db_id_)),
398
+ db_session_id(std::move(db_session_id_)),
399
+ job_id(job_id_),
400
+ priority(priority_) {}
401
+ };
402
+
403
+ // Exceptions MUST NOT propagate out of overridden functions into RocksDB,
404
+ // because RocksDB is not exception-safe. This could cause undefined behavior
405
+ // including data loss, unreported corruption, deadlocks, and more.
406
+ class CompactionService : public Customizable {
407
+ public:
408
+ static const char* Type() { return "CompactionService"; }
409
+
410
+ // Returns the name of this compaction service.
411
+ const char* Name() const override = 0;
412
+
413
+ // Start the remote compaction with `compaction_service_input`, which can be
414
+ // passed to `DB::OpenAndCompact()` on the remote side. `info` provides the
415
+ // information the user might want to know, which includes `job_id`.
416
+ virtual CompactionServiceJobStatus StartV2(
417
+ const CompactionServiceJobInfo& /*info*/,
418
+ const std::string& /*compaction_service_input*/) {
419
+ return CompactionServiceJobStatus::kUseLocal;
420
+ }
421
+
422
+ // Wait for remote compaction to finish.
423
+ virtual CompactionServiceJobStatus WaitForCompleteV2(
424
+ const CompactionServiceJobInfo& /*info*/,
425
+ std::string* /*compaction_service_result*/) {
426
+ return CompactionServiceJobStatus::kUseLocal;
427
+ }
428
+
429
+ ~CompactionService() override = default;
430
+ };
431
+
354
432
  struct DBOptions {
355
433
  // The function recovers options to the option as in version 4.6.
434
+ // NOT MAINTAINED: This function has not been and is not maintained.
435
+ // DEPRECATED: This function might be removed in a future release.
436
+ // In general, defaults are changed to suit broad interests. Opting
437
+ // out of a change on upgrade should be deliberate and considered.
356
438
  DBOptions* OldDefaults(int rocksdb_major_version = 4,
357
439
  int rocksdb_minor_version = 6);
358
440
 
@@ -393,6 +475,13 @@ struct DBOptions {
393
475
  // Default: true
394
476
  bool paranoid_checks = true;
395
477
 
478
+ // If true, during memtable flush, RocksDB will validate total entries
479
+ // read in flush, and compare with counter inserted into it.
480
+ // The option is here to turn the feature off in case this new validation
481
+ // feature has a bug.
482
+ // Default: true
483
+ bool flush_verify_memtable_count = true;
484
+
396
485
  // If true, the log numbers and sizes of the synced WALs are tracked
397
486
  // in MANIFEST, then during DB recovery, if a synced WAL is missing
398
487
  // from disk, or the WAL's size does not match the recorded size in
@@ -410,9 +499,21 @@ struct DBOptions {
410
499
  // Default: Env::Default()
411
500
  Env* env = Env::Default();
412
501
 
413
- // Use to control write rate of flush and compaction. Flush has higher
414
- // priority than compaction. Rate limiting is disabled if nullptr.
415
- // If rate limiter is enabled, bytes_per_sync is set to 1MB by default.
502
+ // Limits internal file read/write bandwidth:
503
+ //
504
+ // - Flush requests write bandwidth at `Env::IOPriority::IO_HIGH`
505
+ // - Compaction requests read and write bandwidth at
506
+ // `Env::IOPriority::IO_LOW`
507
+ // - Reads associated with a `ReadOptions` can be charged at
508
+ // `ReadOptions::rate_limiter_priority` (see that option's API doc for usage
509
+ // and limitations).
510
+ // - Writes associated with a `WriteOptions` can be charged at
511
+ // `WriteOptions::rate_limiter_priority` (see that option's API doc for
512
+ // usage and limitations).
513
+ //
514
+ // Rate limiting is disabled if nullptr. If rate limiter is enabled,
515
+ // bytes_per_sync is set to 1MB by default.
516
+ //
416
517
  // Default: nullptr
417
518
  std::shared_ptr<RateLimiter> rate_limiter = nullptr;
418
519
 
@@ -450,6 +551,10 @@ struct DBOptions {
450
551
  // on target_file_size_base and target_file_size_multiplier for level-based
451
552
  // compaction. For universal-style compaction, you can usually set it to -1.
452
553
  //
554
+ // A high value or -1 for this option can cause high memory usage.
555
+ // See BlockBasedTableOptions::reserve_table_reader_memory to constrain
556
+ // memory usage in case of block based table format.
557
+ //
453
558
  // Default: -1
454
559
  //
455
560
  // Dynamically changeable through SetDBOptions() API.
@@ -465,8 +570,18 @@ struct DBOptions {
465
570
  // (i.e. the ones that are causing all the space amplification). If set to 0
466
571
  // (default), we will dynamically choose the WAL size limit to be
467
572
  // [sum of all write_buffer_size * max_write_buffer_number] * 4
468
- // This option takes effect only when there are more than one column family as
469
- // otherwise the wal size is dictated by the write_buffer_size.
573
+ //
574
+ // For example, with 15 column families, each with
575
+ // write_buffer_size = 128 MB
576
+ // max_write_buffer_number = 6
577
+ // max_total_wal_size will be calculated to be [15 * 128MB * 6] * 4 = 45GB
578
+ //
579
+ // The RocksDB wiki has some discussion about how the WAL interacts
580
+ // with memtables and flushing of column families.
581
+ // https://github.com/facebook/rocksdb/wiki/Column-Families
582
+ //
583
+ // This option takes effect only when there are more than one column
584
+ // family as otherwise the wal size is dictated by the write_buffer_size.
470
585
  //
471
586
  // Default: 0
472
587
  //
@@ -544,13 +659,7 @@ struct DBOptions {
544
659
  // Dynamically changeable through SetDBOptions() API.
545
660
  int max_background_jobs = 2;
546
661
 
547
- // NOT SUPPORTED ANYMORE: RocksDB automatically decides this based on the
548
- // value of max_background_jobs. This option is ignored.
549
- //
550
- // Dynamically changeable through SetDBOptions() API.
551
- int base_background_compactions = -1;
552
-
553
- // NOT SUPPORTED ANYMORE: RocksDB automatically decides this based on the
662
+ // DEPRECATED: RocksDB automatically decides this based on the
554
663
  // value of max_background_jobs. For backwards compatibility we will set
555
664
  // `max_background_jobs = max_background_compactions + max_background_flushes`
556
665
  // in the case where user sets at least one of `max_background_compactions` or
@@ -576,7 +685,7 @@ struct DBOptions {
576
685
  // Dynamically changeable through SetDBOptions() API.
577
686
  uint32_t max_subcompactions = 1;
578
687
 
579
- // NOT SUPPORTED ANYMORE: RocksDB automatically decides this based on the
688
+ // DEPRECATED: RocksDB automatically decides this based on the
580
689
  // value of max_background_jobs. For backwards compatibility we will set
581
690
  // `max_background_jobs = max_background_compactions + max_background_flushes`
582
691
  // in the case where user sets at least one of `max_background_compactions` or
@@ -635,9 +744,6 @@ struct DBOptions {
635
744
  // Number of shards used for table cache.
636
745
  int table_cache_numshardbits = 6;
637
746
 
638
- // NOT SUPPORTED ANYMORE
639
- // int table_cache_remove_scan_count_limit;
640
-
641
747
  // The following two fields affect how archived logs will be deleted.
642
748
  // 1. If both set to 0, logs will be deleted asap and will not get into
643
749
  // the archive.
@@ -659,7 +765,9 @@ struct DBOptions {
659
765
  // large amounts of data (such as xfs's allocsize option).
660
766
  size_t manifest_preallocation_size = 4 * 1024 * 1024;
661
767
 
662
- // Allow the OS to mmap file for reading sst tables. Default: false
768
+ // Allow the OS to mmap file for reading sst tables.
769
+ // Not recommended for 32-bit OS.
770
+ // Default: false
663
771
  bool allow_mmap_reads = false;
664
772
 
665
773
  // Allow the OS to mmap file for writing.
@@ -676,7 +784,6 @@ struct DBOptions {
676
784
  // be used. Memory mapped files are not impacted by these parameters.
677
785
 
678
786
  // Use O_DIRECT for user and compaction reads.
679
- // When true, we also force new_table_reader_for_compaction_inputs to true.
680
787
  // Default: false
681
788
  // Not supported in ROCKSDB_LITE mode!
682
789
  bool use_direct_reads = false;
@@ -686,15 +793,20 @@ struct DBOptions {
686
793
  // Not supported in ROCKSDB_LITE mode!
687
794
  bool use_direct_io_for_flush_and_compaction = false;
688
795
 
689
- // If false, fallocate() calls are bypassed
796
+ // If false, fallocate() calls are bypassed, which disables file
797
+ // preallocation. The file space preallocation is used to increase the file
798
+ // write/append performance. By default, RocksDB preallocates space for WAL,
799
+ // SST, Manifest files, the extra space is truncated when the file is written.
800
+ // Warning: if you're using btrfs, we would recommend setting
801
+ // `allow_fallocate=false` to disable preallocation. As on btrfs, the extra
802
+ // allocated space cannot be freed, which could be significant if you have
803
+ // lots of files. More details about this limitation:
804
+ // https://github.com/btrfs/btrfs-dev-docs/blob/471c5699336e043114d4bca02adcd57d9dab9c44/data-extent-reference-counts.md
690
805
  bool allow_fallocate = true;
691
806
 
692
807
  // Disable child process inherit open files. Default: true
693
808
  bool is_fd_close_on_exec = true;
694
809
 
695
- // NOT SUPPORTED ANYMORE -- this options is no longer used
696
- bool skip_log_error_on_recovery = false;
697
-
698
810
  // if not zero, dump rocksdb.stats to LOG every stats_dump_period_sec
699
811
  //
700
812
  // Default: 600 (10 min)
@@ -728,6 +840,23 @@ struct DBOptions {
728
840
  // Default: true
729
841
  bool advise_random_on_open = true;
730
842
 
843
+ // [experimental]
844
+ // Used to activate or deactive the Mempurge feature (memtable garbage
845
+ // collection). (deactivated by default). At every flush, the total useful
846
+ // payload (total entries minus garbage entries) is estimated as a ratio
847
+ // [useful payload bytes]/[size of a memtable (in bytes)]. This ratio is then
848
+ // compared to this `threshold` value:
849
+ // - if ratio<threshold: the flush is replaced by a mempurge operation
850
+ // - else: a regular flush operation takes place.
851
+ // Threshold values:
852
+ // 0.0: mempurge deactivated (default).
853
+ // 1.0: recommended threshold value.
854
+ // >1.0 : aggressive mempurge.
855
+ // 0 < threshold < 1.0: mempurge triggered only for very low useful payload
856
+ // ratios.
857
+ // [experimental]
858
+ double experimental_mempurge_threshold = 0.0;
859
+
731
860
  // Amount of data to build up in memtables across all column
732
861
  // families before writing to disk.
733
862
  //
@@ -762,27 +891,10 @@ struct DBOptions {
762
891
  enum AccessHint { NONE, NORMAL, SEQUENTIAL, WILLNEED };
763
892
  AccessHint access_hint_on_compaction_start = NORMAL;
764
893
 
765
- // If true, always create a new file descriptor and new table reader
766
- // for compaction inputs. Turn this parameter on may introduce extra
767
- // memory usage in the table reader, if it allocates extra memory
768
- // for indexes. This will allow file descriptor prefetch options
769
- // to be set for compaction input files and not to impact file
770
- // descriptors for the same file used by user queries.
771
- // Suggest to enable BlockBasedTableOptions.cache_index_and_filter_blocks
772
- // for this mode if using block-based table.
773
- //
774
- // Default: false
775
- // This flag has no affect on the behavior of compaction and plan to delete
776
- // in the future.
777
- bool new_table_reader_for_compaction_inputs = false;
778
-
779
894
  // If non-zero, we perform bigger reads when doing compaction. If you're
780
895
  // running RocksDB on spinning disks, you should set this to at least 2MB.
781
896
  // That way RocksDB's compaction is doing sequential instead of random reads.
782
897
  //
783
- // When non-zero, we also force new_table_reader_for_compaction_inputs to
784
- // true.
785
- //
786
898
  // Default: 0
787
899
  //
788
900
  // Dynamically changeable through SetDBOptions() API.
@@ -806,7 +918,7 @@ struct DBOptions {
806
918
  size_t random_access_max_buffer_size = 1024 * 1024;
807
919
 
808
920
  // This is the maximum buffer size that is used by WritableFileWriter.
809
- // On Windows, we need to maintain an aligned buffer for writes.
921
+ // With direct IO, we need to maintain an aligned buffer for writes.
810
922
  // We allow the buffer to grow until it's size hits the limit in buffered
811
923
  // IO and fix the buffer size when using direct IO to ensure alignment of
812
924
  // write requests if the logical sector size is unusual
@@ -833,7 +945,7 @@ struct DBOptions {
833
945
  // Allows OS to incrementally sync files to disk while they are being
834
946
  // written, asynchronously, in the background. This operation can be used
835
947
  // to smooth out write I/Os over time. Users shouldn't rely on it for
836
- // persistency guarantee.
948
+ // persistence guarantee.
837
949
  // Issue one request for every bytes_per_sync written. 0 turns it off.
838
950
  //
839
951
  // You may consider using rate_limiter to regulate write rate to device.
@@ -1071,18 +1183,6 @@ struct DBOptions {
1071
1183
  // Immutable.
1072
1184
  bool allow_ingest_behind = false;
1073
1185
 
1074
- // Needed to support differential snapshots.
1075
- // If set to true then DB will only process deletes with sequence number
1076
- // less than what was set by SetPreserveDeletesSequenceNumber(uint64_t ts).
1077
- // Clients are responsible to periodically call this method to advance
1078
- // the cutoff time. If this method is never called and preserve_deletes
1079
- // is set to true NO deletes will ever be processed.
1080
- // At the moment this only keeps normal deletes, SingleDeletes will
1081
- // not be preserved.
1082
- // DEFAULT: false
1083
- // Immutable (TODO: make it dynamically changeable)
1084
- bool preserve_deletes = false;
1085
-
1086
1186
  // If enabled it uses two queues for writes, one for the ones with
1087
1187
  // disable_memtable and one for the ones that also write to memtable. This
1088
1188
  // allows the memtable writes not to lag behind other writes. It can be used
@@ -1095,6 +1195,12 @@ struct DBOptions {
1095
1195
  // file.
1096
1196
  bool manual_wal_flush = false;
1097
1197
 
1198
+ // This feature is WORK IN PROGRESS
1199
+ // If enabled WAL records will be compressed before they are written.
1200
+ // Only zstd is supported. Compressed WAL records will be read in supported
1201
+ // versions regardless of the wal_compression settings.
1202
+ CompressionType wal_compression = kNoCompression;
1203
+
1098
1204
  // If true, RocksDB supports flushing multiple column families and committing
1099
1205
  // their results atomically to MANIFEST. Note that it is not
1100
1206
  // necessary to set atomic_flush to true if WAL is always enabled since WAL
@@ -1187,11 +1293,42 @@ struct DBOptions {
1187
1293
  // writing a file, by tracing back to the writing host. These corruptions
1188
1294
  // may not be caught by the checksum since they happen before checksumming.
1189
1295
  // If left as default, the table writer will substitute it with the actual
1190
- // hostname when writing the SST file. If set to an empty stirng, the
1296
+ // hostname when writing the SST file. If set to an empty string, the
1191
1297
  // property will not be written to the SST file.
1192
1298
  //
1193
1299
  // Default: hostname
1194
1300
  std::string db_host_id = kHostnameForDbHostId;
1301
+
1302
+ // Use this if your DB want to enable checksum handoff for specific file
1303
+ // types writes. Make sure that the File_system you use support the
1304
+ // crc32c checksum verification
1305
+ // Currently supported file tyes: kWALFile, kTableFile, kDescriptorFile.
1306
+ // NOTE: currently RocksDB only generates crc32c based checksum for the
1307
+ // handoff. If the storage layer has different checksum support, user
1308
+ // should enble this set as empty. Otherwise,it may cause unexpected
1309
+ // write failures.
1310
+ FileTypeSet checksum_handoff_file_types;
1311
+
1312
+ // EXPERIMENTAL
1313
+ // CompactionService is a feature allows the user to run compactions on a
1314
+ // different host or process, which offloads the background load from the
1315
+ // primary host.
1316
+ // It's an experimental feature, the interface will be changed without
1317
+ // backward/forward compatibility support for now. Some known issues are still
1318
+ // under development.
1319
+ std::shared_ptr<CompactionService> compaction_service = nullptr;
1320
+
1321
+ // It indicates, which lowest cache tier we want to
1322
+ // use for a certain DB. Currently we support volatile_tier and
1323
+ // non_volatile_tier. They are layered. By setting it to kVolatileTier, only
1324
+ // the block cache (current implemented volatile_tier) is used. So
1325
+ // cache entries will not spill to secondary cache (current
1326
+ // implemented non_volatile_tier), and block cache lookup misses will not
1327
+ // lookup in the secondary cache. When kNonVolatileBlockTier is used, we use
1328
+ // both block cache and secondary cache.
1329
+ //
1330
+ // Default: kNonVolatileBlockTier
1331
+ CacheTier lowest_used_cache_tier = CacheTier::kNonVolatileBlockTier;
1195
1332
  };
1196
1333
 
1197
1334
  // Options to control the behavior of a database (passed to DB::Open)
@@ -1203,7 +1340,11 @@ struct Options : public DBOptions, public ColumnFamilyOptions {
1203
1340
  const ColumnFamilyOptions& column_family_options)
1204
1341
  : DBOptions(db_options), ColumnFamilyOptions(column_family_options) {}
1205
1342
 
1206
- // The function recovers options to the option as in version 4.6.
1343
+ // Change to some default settings from an older version.
1344
+ // NOT MAINTAINED: This function has not been and is not maintained.
1345
+ // DEPRECATED: This function might be removed in a future release.
1346
+ // In general, defaults are changed to suit broad interests. Opting
1347
+ // out of a change on upgrade should be deliberate and considered.
1207
1348
  Options* OldDefaults(int rocksdb_major_version = 4,
1208
1349
  int rocksdb_minor_version = 6);
1209
1350
 
@@ -1226,6 +1367,12 @@ struct Options : public DBOptions, public ColumnFamilyOptions {
1226
1367
  // Use this if your DB is very small (like under 1GB) and you don't want to
1227
1368
  // spend lots of memory for memtables.
1228
1369
  Options* OptimizeForSmallDb();
1370
+
1371
+ // Disable some checks that should not be necessary in the absence of
1372
+ // software logic errors or CPU+memory hardware errors. This can improve
1373
+ // write speeds but is only recommended for temporary use. Does not
1374
+ // change protection against corrupt storage (e.g. verify_checksums).
1375
+ Options* DisableExtraChecks();
1229
1376
  };
1230
1377
 
1231
1378
  //
@@ -1266,19 +1413,28 @@ struct ReadOptions {
1266
1413
  // Default: nullptr
1267
1414
  const Slice* iterate_lower_bound;
1268
1415
 
1269
- // "iterate_upper_bound" defines the extent upto which the forward iterator
1416
+ // "iterate_upper_bound" defines the extent up to which the forward iterator
1270
1417
  // can returns entries. Once the bound is reached, Valid() will be false.
1271
1418
  // "iterate_upper_bound" is exclusive ie the bound value is
1272
- // not a valid entry. If prefix_extractor is not null, the Seek target
1273
- // and iterate_upper_bound need to have the same prefix.
1274
- // This is because ordering is not guaranteed outside of prefix domain.
1419
+ // not a valid entry. If prefix_extractor is not null:
1420
+ // 1. If options.auto_prefix_mode = true, iterate_upper_bound will be used
1421
+ // to infer whether prefix iterating (e.g. applying prefix bloom filter)
1422
+ // can be used within RocksDB. This is done by comparing
1423
+ // iterate_upper_bound with the seek key.
1424
+ // 2. If options.auto_prefix_mode = false, iterate_upper_bound only takes
1425
+ // effect if it shares the same prefix as the seek key. If
1426
+ // iterate_upper_bound is outside the prefix of the seek key, then keys
1427
+ // returned outside the prefix range will be undefined, just as if
1428
+ // iterate_upper_bound = null.
1429
+ // If iterate_upper_bound is not null, SeekToLast() will position the iterator
1430
+ // at the first key smaller than iterate_upper_bound.
1275
1431
  //
1276
1432
  // Default: nullptr
1277
1433
  const Slice* iterate_upper_bound;
1278
1434
 
1279
1435
  // RocksDB does auto-readahead for iterators on noticing more than two reads
1280
1436
  // for a table file. The readahead starts at 8KB and doubles on every
1281
- // additional read upto 256KB.
1437
+ // additional read up to 256KB.
1282
1438
  // This option can help if most of the range scans are large, and if it is
1283
1439
  // determined that a larger readahead than that enabled by auto-readahead is
1284
1440
  // needed.
@@ -1304,7 +1460,7 @@ struct ReadOptions {
1304
1460
  // Default: true
1305
1461
  bool verify_checksums;
1306
1462
 
1307
- // Should the "data block"/"index block"" read for this iteration be placed in
1463
+ // Should the "data block"/"index block" read for this iteration be placed in
1308
1464
  // block cache?
1309
1465
  // Callers may wish to set this field to false for bulk scans.
1310
1466
  // This would help not to the change eviction order of existing items in the
@@ -1328,15 +1484,14 @@ struct ReadOptions {
1328
1484
  // used in the table. Some table format (e.g. plain table) may not support
1329
1485
  // this option.
1330
1486
  // If true when calling Get(), we also skip prefix bloom when reading from
1331
- // block based table. It provides a way to read existing data after
1332
- // changing implementation of prefix extractor.
1487
+ // block based table, which only affects Get() performance.
1333
1488
  // Default: false
1334
1489
  bool total_order_seek;
1335
1490
 
1336
1491
  // When true, by default use total_order_seek = true, and RocksDB can
1337
1492
  // selectively enable prefix seek mode if won't generate a different result
1338
1493
  // from total_order_seek, based on seek key, and iterator upper bound.
1339
- // Not suppported in ROCKSDB_LITE mode, in the way that even with value true
1494
+ // Not supported in ROCKSDB_LITE mode, in the way that even with value true
1340
1495
  // prefix mode is not used.
1341
1496
  // Default: false
1342
1497
  bool auto_prefix_mode;
@@ -1363,9 +1518,11 @@ struct ReadOptions {
1363
1518
  // Default: false
1364
1519
  bool background_purge_on_iterator_cleanup;
1365
1520
 
1366
- // If true, keys deleted using the DeleteRange() API will be visible to
1367
- // readers until they are naturally deleted during compaction. This improves
1368
- // read performance in DBs with many range deletions.
1521
+ // If true, range tombstones handling will be skipped in key lookup paths.
1522
+ // For DB instances that don't use DeleteRange() calls, this setting can
1523
+ // be used to optimize the read performance.
1524
+ // Note that, if this assumption (of no previous DeleteRange() calls) is
1525
+ // broken, stale keys could be served in read paths.
1369
1526
  // Default: false
1370
1527
  bool ignore_range_deletions;
1371
1528
 
@@ -1377,13 +1534,6 @@ struct ReadOptions {
1377
1534
  // Default: empty (every table will be scanned)
1378
1535
  std::function<bool(const TableProperties&)> table_filter;
1379
1536
 
1380
- // Needed to support differential snapshots. Has 2 effects:
1381
- // 1) Iterator will skip all internal keys with seqnum < iter_start_seqnum
1382
- // 2) if this param > 0 iterator will return INTERNAL keys instead of
1383
- // user keys; e.g. return tombstones as well.
1384
- // Default: 0 (don't filter by seqnum, return user keys)
1385
- SequenceNumber iter_start_seqnum;
1386
-
1387
1537
  // Timestamp of operation. Read should return the latest data visible to the
1388
1538
  // specified timestamp. All timestamps of the same database must be of the
1389
1539
  // same length and format. The user is responsible for providing a customized
@@ -1412,7 +1562,7 @@ struct ReadOptions {
1412
1562
  // A timeout in microseconds to be passed to the underlying FileSystem for
1413
1563
  // reads. As opposed to deadline, this determines the timeout for each
1414
1564
  // individual file read request. If a MultiGet/Get/Seek/Next etc call
1415
- // results in multiple reads, each read can last upto io_timeout us.
1565
+ // results in multiple reads, each read can last up to io_timeout us.
1416
1566
  std::chrono::microseconds io_timeout;
1417
1567
 
1418
1568
  // It limits the maximum cumulative value size of the keys in batch while
@@ -1422,6 +1572,48 @@ struct ReadOptions {
1422
1572
  // Default: std::numeric_limits<uint64_t>::max()
1423
1573
  uint64_t value_size_soft_limit;
1424
1574
 
1575
+ // For iterators, RocksDB does auto-readahead on noticing more than two
1576
+ // sequential reads for a table file if user doesn't provide readahead_size.
1577
+ // The readahead starts at 8KB and doubles on every additional read upto
1578
+ // max_auto_readahead_size only when reads are sequential. However at each
1579
+ // level, if iterator moves over next file, readahead_size starts again from
1580
+ // 8KB.
1581
+ //
1582
+ // By enabling this option, RocksDB will do some enhancements for
1583
+ // prefetching the data.
1584
+ //
1585
+ // Default: false
1586
+ bool adaptive_readahead;
1587
+
1588
+ // For file reads associated with this option, charge the internal rate
1589
+ // limiter (see `DBOptions::rate_limiter`) at the specified priority. The
1590
+ // special value `Env::IO_TOTAL` disables charging the rate limiter.
1591
+ //
1592
+ // The rate limiting is bypassed no matter this option's value for file reads
1593
+ // on plain tables (these can exist when `ColumnFamilyOptions::table_factory`
1594
+ // is a `PlainTableFactory`) and cuckoo tables (these can exist when
1595
+ // `ColumnFamilyOptions::table_factory` is a `CuckooTableFactory`).
1596
+ //
1597
+ // The new `DB::MultiGet()` APIs (i.e., the ones returning `void`) will return
1598
+ // `Status::NotSupported` when that operation requires file read(s) and
1599
+ // `rate_limiter_priority != Env::IO_TOTAL`.
1600
+ //
1601
+ // The bytes charged to rate limiter may not exactly match the file read bytes
1602
+ // since there are some seemingly insignificant reads, like for file
1603
+ // headers/footers, that we currently do not charge to rate limiter.
1604
+ //
1605
+ // Default: `Env::IO_TOTAL`.
1606
+ Env::IOPriority rate_limiter_priority = Env::IO_TOTAL;
1607
+
1608
+ // Experimental
1609
+ //
1610
+ // If async_io is enabled, RocksDB will prefetch some of data asynchronously.
1611
+ // RocksDB apply it if reads are sequential and its internal automatic
1612
+ // prefetching.
1613
+ //
1614
+ // Default: false
1615
+ bool async_io;
1616
+
1425
1617
  ReadOptions();
1426
1618
  ReadOptions(bool cksum, bool cache);
1427
1619
  };
@@ -1466,7 +1658,7 @@ struct WriteOptions {
1466
1658
  bool no_slowdown;
1467
1659
 
1468
1660
  // If true, this write request is of lower priority if compaction is
1469
- // behind. In this case, no_slowdown = true, the request will be cancelled
1661
+ // behind. In this case, no_slowdown = true, the request will be canceled
1470
1662
  // immediately with Status::Incomplete() returned. Otherwise, it will be
1471
1663
  // slowed down. The slowdown value is determined by RocksDB to guarantee
1472
1664
  // it introduces minimum impacts to high priority writes.
@@ -1483,16 +1675,20 @@ struct WriteOptions {
1483
1675
  // Default: false
1484
1676
  bool memtable_insert_hint_per_batch;
1485
1677
 
1486
- // Timestamp of write operation, e.g. Put. All timestamps of the same
1487
- // database must share the same length and format. The user is also
1488
- // responsible for providing a customized compare function via Comparator to
1489
- // order <key, timestamp> tuples. If the user wants to enable timestamp, then
1490
- // all write operations must be associated with timestamp because RocksDB, as
1491
- // a single-node storage engine currently has no knowledge of global time,
1492
- // thus has to rely on the application.
1493
- // The user-specified timestamp feature is still under active development,
1494
- // and the API is subject to change.
1495
- const Slice* timestamp;
1678
+ // For writes associated with this option, charge the internal rate
1679
+ // limiter (see `DBOptions::rate_limiter`) at the specified priority. The
1680
+ // special value `Env::IO_TOTAL` disables charging the rate limiter.
1681
+ //
1682
+ // Currently the support covers automatic WAL flushes, which happen during
1683
+ // live updates (`Put()`, `Write()`, `Delete()`, etc.)
1684
+ // when `WriteOptions::disableWAL == false`
1685
+ // and `DBOptions::manual_wal_flush == false`.
1686
+ //
1687
+ // Only `Env::IO_USER` and `Env::IO_TOTAL` are allowed
1688
+ // due to implementation constraints.
1689
+ //
1690
+ // Default: `Env::IO_TOTAL`
1691
+ Env::IOPriority rate_limiter_priority;
1496
1692
 
1497
1693
  WriteOptions()
1498
1694
  : sync(false),
@@ -1501,7 +1697,7 @@ struct WriteOptions {
1501
1697
  no_slowdown(false),
1502
1698
  low_pri(false),
1503
1699
  memtable_insert_hint_per_batch(false),
1504
- timestamp(nullptr) {}
1700
+ rate_limiter_priority(Env::IO_TOTAL) {}
1505
1701
  };
1506
1702
 
1507
1703
  // Options that control flush operations
@@ -1581,6 +1777,15 @@ struct CompactRangeOptions {
1581
1777
  bool allow_write_stall = false;
1582
1778
  // If > 0, it will replace the option in the DBOptions for this compaction.
1583
1779
  uint32_t max_subcompactions = 0;
1780
+ // Set user-defined timestamp low bound, the data with older timestamp than
1781
+ // low bound maybe GCed by compaction. Default: nullptr
1782
+ Slice* full_history_ts_low = nullptr;
1783
+
1784
+ // Allows cancellation of an in-progress manual compaction.
1785
+ //
1786
+ // Cancellation can be delayed waiting on automatic compactions when used
1787
+ // together with `exclusive_manual_compaction == true`.
1788
+ std::atomic<bool>* canceled = nullptr;
1584
1789
  };
1585
1790
 
1586
1791
  // IngestExternalFileOptions is used by IngestExternalFile()
@@ -1600,7 +1805,7 @@ struct IngestExternalFileOptions {
1600
1805
  bool allow_blocking_flush = true;
1601
1806
  // Set to true if you would like duplicate keys in the file being ingested
1602
1807
  // to be skipped rather than overwriting existing data under that key.
1603
- // Usecase: back-fill of some historical data in the database without
1808
+ // Use case: back-fill of some historical data in the database without
1604
1809
  // over-writing existing newer version of data.
1605
1810
  // This option could only be used if the DB has been running
1606
1811
  // with allow_ingest_behind=true since the dawn of time.
@@ -1640,7 +1845,7 @@ struct IngestExternalFileOptions {
1640
1845
  // will be ignored; 2) If DB enable the checksum function, we calculate the
1641
1846
  // sst file checksum after the file is moved or copied and compare the
1642
1847
  // checksum and checksum name. If checksum or checksum function name does
1643
- // not match, ingestion will be failed. If the verification is sucessful,
1848
+ // not match, ingestion will be failed. If the verification is successful,
1644
1849
  // checksum and checksum function name will be stored in Manifest.
1645
1850
  // If this option is set to FALSE, 1) if DB does not enable checksum,
1646
1851
  // the ingested checksum information will be ignored; 2) if DB enable the
@@ -1650,6 +1855,14 @@ struct IngestExternalFileOptions {
1650
1855
  // ingestion. However, if no checksum information is provided with the
1651
1856
  // ingested files, DB will generate the checksum and store in the Manifest.
1652
1857
  bool verify_file_checksum = true;
1858
+ // Set to TRUE if user wants file to be ingested to the bottommost level. An
1859
+ // error of Status::TryAgain() will be returned if a file cannot fit in the
1860
+ // bottommost level when calling
1861
+ // DB::IngestExternalFile()/DB::IngestExternalFiles(). The user should clear
1862
+ // the bottommost level in the overlapping range before re-attempt.
1863
+ //
1864
+ // ingest_behind takes precedence over fail_if_not_bottommost_level.
1865
+ bool fail_if_not_bottommost_level = false;
1653
1866
  };
1654
1867
 
1655
1868
  enum TraceFilterType : uint64_t {
@@ -1658,7 +1871,13 @@ enum TraceFilterType : uint64_t {
1658
1871
  // Do not trace the get operations
1659
1872
  kTraceFilterGet = 0x1 << 0,
1660
1873
  // Do not trace the write operations
1661
- kTraceFilterWrite = 0x1 << 1
1874
+ kTraceFilterWrite = 0x1 << 1,
1875
+ // Do not trace the `Iterator::Seek()` operations
1876
+ kTraceFilterIteratorSeek = 0x1 << 2,
1877
+ // Do not trace the `Iterator::SeekForPrev()` operations
1878
+ kTraceFilterIteratorSeekForPrev = 0x1 << 3,
1879
+ // Do not trace the `MultiGet()` operations
1880
+ kTraceFilterMultiGet = 0x1 << 4,
1662
1881
  };
1663
1882
 
1664
1883
  // TraceOptions is used for StartTrace
@@ -1671,6 +1890,13 @@ struct TraceOptions {
1671
1890
  uint64_t sampling_frequency = 1;
1672
1891
  // Note: The filtering happens before sampling.
1673
1892
  uint64_t filter = kTraceFilterNone;
1893
+ // When true, the order of write records in the trace will match the order of
1894
+ // the corresponding write records in the WAL and applied to the DB. There may
1895
+ // be a performance penalty associated with preserving this ordering.
1896
+ //
1897
+ // Default: false. This means write records in the trace may be in an order
1898
+ // different from the WAL's order.
1899
+ bool preserve_write_order = false;
1674
1900
  };
1675
1901
 
1676
1902
  // ImportColumnFamilyOptions is used by ImportColumnFamily()
@@ -1682,10 +1908,10 @@ struct ImportColumnFamilyOptions {
1682
1908
  // Options used with DB::GetApproximateSizes()
1683
1909
  struct SizeApproximationOptions {
1684
1910
  // Defines whether the returned size should include the recently written
1685
- // data in the mem-tables. If set to false, include_files must be true.
1686
- bool include_memtabtles = false;
1911
+ // data in the memtables. If set to false, include_files must be true.
1912
+ bool include_memtables = false;
1687
1913
  // Defines whether the returned size should include data serialized to disk.
1688
- // If set to false, include_memtabtles must be true.
1914
+ // If set to false, include_memtables must be true.
1689
1915
  bool include_files = true;
1690
1916
  // When approximating the files total size that is used to store a keys range
1691
1917
  // using DB::GetApproximateSizes, allow approximation with an error margin of
@@ -1699,4 +1925,48 @@ struct SizeApproximationOptions {
1699
1925
  double files_size_error_margin = -1.0;
1700
1926
  };
1701
1927
 
1928
+ struct CompactionServiceOptionsOverride {
1929
+ // Currently pointer configurations are not passed to compaction service
1930
+ // compaction so the user needs to set it. It will be removed once pointer
1931
+ // configuration passing is supported.
1932
+ Env* env = Env::Default();
1933
+ std::shared_ptr<FileChecksumGenFactory> file_checksum_gen_factory = nullptr;
1934
+
1935
+ const Comparator* comparator = BytewiseComparator();
1936
+ std::shared_ptr<MergeOperator> merge_operator = nullptr;
1937
+ const CompactionFilter* compaction_filter = nullptr;
1938
+ std::shared_ptr<CompactionFilterFactory> compaction_filter_factory = nullptr;
1939
+ std::shared_ptr<const SliceTransform> prefix_extractor = nullptr;
1940
+ std::shared_ptr<TableFactory> table_factory;
1941
+ std::shared_ptr<SstPartitionerFactory> sst_partitioner_factory = nullptr;
1942
+
1943
+ // Only subsets of events are triggered in remote compaction worker, like:
1944
+ // `OnTableFileCreated`, `OnTableFileCreationStarted`,
1945
+ // `ShouldBeNotifiedOnFileIO` `OnSubcompactionBegin`,
1946
+ // `OnSubcompactionCompleted`, etc. Worth mentioning, `OnCompactionBegin` and
1947
+ // `OnCompactionCompleted` won't be triggered. They will be triggered on the
1948
+ // primary DB side.
1949
+ std::vector<std::shared_ptr<EventListener>> listeners;
1950
+
1951
+ // statistics is used to collect DB operation metrics, the metrics won't be
1952
+ // returned to CompactionService primary host, to collect that, the user needs
1953
+ // to set it here.
1954
+ std::shared_ptr<Statistics> statistics = nullptr;
1955
+ };
1956
+
1957
+ struct OpenAndCompactOptions {
1958
+ // Allows cancellation of an in-progress compaction.
1959
+ std::atomic<bool>* canceled = nullptr;
1960
+ };
1961
+
1962
+ #ifndef ROCKSDB_LITE
1963
+ struct LiveFilesStorageInfoOptions {
1964
+ // Whether to populate FileStorageInfo::file_checksum* or leave blank
1965
+ bool include_checksum_info = false;
1966
+ // Flushes memtables if total size in bytes of live WAL files is >= this
1967
+ // number. Default: always force a flush without checking sizes.
1968
+ uint64_t wal_size_for_flush = 0;
1969
+ };
1970
+ #endif // !ROCKSDB_LITE
1971
+
1702
1972
  } // namespace ROCKSDB_NAMESPACE