@nxtedition/rocksdb 5.2.21 → 5.2.26

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 (909) hide show
  1. package/binding.cc +216 -252
  2. package/binding.gyp +78 -72
  3. package/deps/rocksdb/build_version.cc +70 -4
  4. package/deps/rocksdb/rocksdb/CMakeLists.txt +281 -149
  5. package/deps/rocksdb/rocksdb/Makefile +459 -469
  6. package/deps/rocksdb/rocksdb/README.md +4 -4
  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/crash_test.mk +93 -0
  31. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +54 -31
  32. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +10 -6
  33. package/deps/rocksdb/rocksdb/db/blob/blob_counting_iterator.h +146 -0
  34. package/deps/rocksdb/rocksdb/db/blob/blob_counting_iterator_test.cc +326 -0
  35. package/deps/rocksdb/rocksdb/db/blob/blob_fetcher.cc +34 -0
  36. package/deps/rocksdb/rocksdb/db/blob/blob_fetcher.h +37 -0
  37. package/deps/rocksdb/rocksdb/db/blob/blob_file_addition.cc +4 -2
  38. package/deps/rocksdb/rocksdb/db/blob/blob_file_addition_test.cc +8 -4
  39. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +99 -40
  40. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.h +20 -8
  41. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +95 -83
  42. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.cc +13 -10
  43. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.h +7 -4
  44. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache_test.cc +37 -37
  45. package/deps/rocksdb/rocksdb/db/blob/blob_file_completion_callback.h +101 -0
  46. package/deps/rocksdb/rocksdb/db/blob/blob_file_meta.cc +8 -1
  47. package/deps/rocksdb/rocksdb/db/blob/blob_file_meta.h +6 -0
  48. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +209 -44
  49. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +37 -11
  50. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +382 -179
  51. package/deps/rocksdb/rocksdb/db/blob/blob_garbage_meter.cc +100 -0
  52. package/deps/rocksdb/rocksdb/db/blob/blob_garbage_meter.h +102 -0
  53. package/deps/rocksdb/rocksdb/db/blob/blob_garbage_meter_test.cc +196 -0
  54. package/deps/rocksdb/rocksdb/db/blob/blob_index.h +3 -0
  55. package/deps/rocksdb/rocksdb/db/blob/blob_log_format.h +2 -1
  56. package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.cc +7 -5
  57. package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.h +10 -3
  58. package/deps/rocksdb/rocksdb/db/blob/blob_log_writer.cc +12 -8
  59. package/deps/rocksdb/rocksdb/db/blob/blob_log_writer.h +5 -5
  60. package/deps/rocksdb/rocksdb/db/blob/db_blob_basic_test.cc +772 -9
  61. package/deps/rocksdb/rocksdb/db/blob/db_blob_compaction_test.cc +730 -0
  62. package/deps/rocksdb/rocksdb/db/blob/db_blob_corruption_test.cc +82 -0
  63. package/deps/rocksdb/rocksdb/db/blob/db_blob_index_test.cc +155 -17
  64. package/deps/rocksdb/rocksdb/db/blob/prefetch_buffer_collection.cc +21 -0
  65. package/deps/rocksdb/rocksdb/db/blob/prefetch_buffer_collection.h +38 -0
  66. package/deps/rocksdb/rocksdb/db/builder.cc +137 -89
  67. package/deps/rocksdb/rocksdb/db/builder.h +16 -37
  68. package/deps/rocksdb/rocksdb/db/c.cc +413 -208
  69. package/deps/rocksdb/rocksdb/db/c_test.c +227 -138
  70. package/deps/rocksdb/rocksdb/db/column_family.cc +118 -103
  71. package/deps/rocksdb/rocksdb/db/column_family.h +86 -44
  72. package/deps/rocksdb/rocksdb/db/column_family_test.cc +38 -24
  73. package/deps/rocksdb/rocksdb/db/compact_files_test.cc +81 -0
  74. package/deps/rocksdb/rocksdb/db/compaction/clipping_iterator.h +275 -0
  75. package/deps/rocksdb/rocksdb/db/compaction/clipping_iterator_test.cc +258 -0
  76. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +81 -28
  77. package/deps/rocksdb/rocksdb/db/compaction/compaction.h +43 -12
  78. package/deps/rocksdb/rocksdb/db/compaction/compaction_iteration_stats.h +12 -0
  79. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +406 -215
  80. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +147 -50
  81. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +167 -61
  82. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +1321 -156
  83. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +197 -28
  84. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +2 -3
  85. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +246 -43
  86. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +65 -26
  87. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +7 -7
  88. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +122 -9
  89. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +8 -2
  90. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +18 -6
  91. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +1 -1
  92. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +536 -44
  93. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +311 -30
  94. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +1 -1
  95. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +849 -0
  96. package/deps/rocksdb/rocksdb/db/compaction/file_pri.h +92 -0
  97. package/deps/rocksdb/rocksdb/db/compaction/sst_partitioner.cc +46 -0
  98. package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +1 -1
  99. package/deps/rocksdb/rocksdb/db/convenience.cc +6 -3
  100. package/deps/rocksdb/rocksdb/db/corruption_test.cc +383 -28
  101. package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +7 -2
  102. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +154 -45
  103. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +1095 -33
  104. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +1249 -203
  105. package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +135 -9
  106. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +1348 -166
  107. package/deps/rocksdb/rocksdb/db/db_dynamic_level_test.cc +3 -5
  108. package/deps/rocksdb/rocksdb/db/db_encryption_test.cc +1 -1
  109. package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +312 -45
  110. package/deps/rocksdb/rocksdb/db/db_flush_test.cc +1734 -48
  111. package/deps/rocksdb/rocksdb/db/{compacted_db_impl.cc → db_impl/compacted_db_impl.cc} +24 -7
  112. package/deps/rocksdb/rocksdb/db/{compacted_db_impl.h → db_impl/compacted_db_impl.h} +1 -1
  113. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +644 -333
  114. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +365 -92
  115. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +578 -210
  116. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +38 -16
  117. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +17 -10
  118. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +75 -74
  119. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +450 -183
  120. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +42 -9
  121. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +232 -15
  122. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +42 -4
  123. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +297 -100
  124. package/deps/rocksdb/rocksdb/db/db_info_dumper.cc +16 -15
  125. package/deps/rocksdb/rocksdb/db/db_inplace_update_test.cc +31 -1
  126. package/deps/rocksdb/rocksdb/db/db_io_failure_test.cc +6 -5
  127. package/deps/rocksdb/rocksdb/db/db_iter.cc +218 -153
  128. package/deps/rocksdb/rocksdb/db/db_iter.h +14 -12
  129. package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +1 -1
  130. package/deps/rocksdb/rocksdb/db/db_iter_test.cc +84 -160
  131. package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +47 -6
  132. package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +204 -0
  133. package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +21 -13
  134. package/deps/rocksdb/rocksdb/db/db_logical_block_size_cache_test.cc +17 -10
  135. package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +38 -24
  136. package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +184 -19
  137. package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +1 -1
  138. package/deps/rocksdb/rocksdb/db/db_options_test.cc +183 -3
  139. package/deps/rocksdb/rocksdb/db/db_properties_test.cc +409 -9
  140. package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +92 -23
  141. package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +446 -0
  142. package/deps/rocksdb/rocksdb/db/{db_impl/db_secondary_test.cc → db_secondary_test.cc} +363 -35
  143. package/deps/rocksdb/rocksdb/db/db_sst_test.cc +520 -15
  144. package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +50 -1
  145. package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +139 -4
  146. package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +1 -1
  147. package/deps/rocksdb/rocksdb/db/db_test.cc +669 -359
  148. package/deps/rocksdb/rocksdb/db/db_test2.cc +2110 -304
  149. package/deps/rocksdb/rocksdb/db/db_test_util.cc +76 -43
  150. package/deps/rocksdb/rocksdb/db/db_test_util.h +231 -103
  151. package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +19 -11
  152. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +490 -71
  153. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +980 -349
  154. package/deps/rocksdb/rocksdb/db/db_with_timestamp_compaction_test.cc +11 -12
  155. package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +793 -0
  156. package/deps/rocksdb/rocksdb/db/db_write_test.cc +2 -1
  157. package/deps/rocksdb/rocksdb/db/dbformat.cc +4 -12
  158. package/deps/rocksdb/rocksdb/db/dbformat.h +28 -18
  159. package/deps/rocksdb/rocksdb/db/dbformat_test.cc +3 -0
  160. package/deps/rocksdb/rocksdb/db/deletefile_test.cc +50 -15
  161. package/deps/rocksdb/rocksdb/db/error_handler.cc +127 -41
  162. package/deps/rocksdb/rocksdb/db/error_handler.h +12 -5
  163. package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +524 -255
  164. package/deps/rocksdb/rocksdb/db/event_helpers.cc +136 -11
  165. package/deps/rocksdb/rocksdb/db/event_helpers.h +27 -2
  166. package/deps/rocksdb/rocksdb/db/experimental.cc +100 -0
  167. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +307 -4
  168. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +137 -60
  169. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +12 -8
  170. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +86 -55
  171. package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +86 -5
  172. package/deps/rocksdb/rocksdb/db/filename_test.cc +63 -0
  173. package/deps/rocksdb/rocksdb/db/flush_job.cc +619 -64
  174. package/deps/rocksdb/rocksdb/db/flush_job.h +30 -7
  175. package/deps/rocksdb/rocksdb/db/flush_job_test.cc +33 -16
  176. package/deps/rocksdb/rocksdb/db/flush_scheduler.h +2 -1
  177. package/deps/rocksdb/rocksdb/db/forward_iterator.cc +18 -17
  178. package/deps/rocksdb/rocksdb/db/forward_iterator.h +5 -4
  179. package/deps/rocksdb/rocksdb/db/forward_iterator_bench.cc +0 -1
  180. package/deps/rocksdb/rocksdb/db/history_trimming_iterator.h +91 -0
  181. package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +25 -14
  182. package/deps/rocksdb/rocksdb/db/import_column_family_job.h +6 -5
  183. package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +1 -1
  184. package/deps/rocksdb/rocksdb/db/internal_stats.cc +471 -50
  185. package/deps/rocksdb/rocksdb/db/internal_stats.h +129 -25
  186. package/deps/rocksdb/rocksdb/db/job_context.h +22 -9
  187. package/deps/rocksdb/rocksdb/db/kv_checksum.h +394 -0
  188. package/deps/rocksdb/rocksdb/db/listener_test.cc +518 -41
  189. package/deps/rocksdb/rocksdb/db/log_format.h +4 -1
  190. package/deps/rocksdb/rocksdb/db/log_reader.cc +129 -6
  191. package/deps/rocksdb/rocksdb/db/log_reader.h +17 -1
  192. package/deps/rocksdb/rocksdb/db/log_test.cc +161 -11
  193. package/deps/rocksdb/rocksdb/db/log_writer.cc +92 -13
  194. package/deps/rocksdb/rocksdb/db/log_writer.h +18 -5
  195. package/deps/rocksdb/rocksdb/db/logs_with_prep_tracker.h +1 -1
  196. package/deps/rocksdb/rocksdb/db/lookup_key.h +0 -1
  197. package/deps/rocksdb/rocksdb/db/malloc_stats.cc +2 -2
  198. package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +21 -8
  199. package/deps/rocksdb/rocksdb/db/memtable.cc +144 -54
  200. package/deps/rocksdb/rocksdb/db/memtable.h +72 -15
  201. package/deps/rocksdb/rocksdb/db/memtable_list.cc +95 -47
  202. package/deps/rocksdb/rocksdb/db/memtable_list.h +33 -13
  203. package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +61 -31
  204. package/deps/rocksdb/rocksdb/db/merge_context.h +20 -8
  205. package/deps/rocksdb/rocksdb/db/merge_helper.cc +54 -11
  206. package/deps/rocksdb/rocksdb/db/merge_helper.h +17 -6
  207. package/deps/rocksdb/rocksdb/db/merge_helper_test.cc +13 -7
  208. package/deps/rocksdb/rocksdb/db/merge_test.cc +40 -19
  209. package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +14 -25
  210. package/deps/rocksdb/rocksdb/db/output_validator.cc +3 -0
  211. package/deps/rocksdb/rocksdb/db/output_validator.h +5 -4
  212. package/deps/rocksdb/rocksdb/db/perf_context_test.cc +32 -28
  213. package/deps/rocksdb/rocksdb/db/periodic_work_scheduler.cc +43 -29
  214. package/deps/rocksdb/rocksdb/db/periodic_work_scheduler.h +9 -7
  215. package/deps/rocksdb/rocksdb/db/periodic_work_scheduler_test.cc +21 -16
  216. package/deps/rocksdb/rocksdb/db/pinned_iterators_manager.h +1 -1
  217. package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +29 -36
  218. package/deps/rocksdb/rocksdb/db/pre_release_callback.h +1 -2
  219. package/deps/rocksdb/rocksdb/db/prefix_test.cc +4 -4
  220. package/deps/rocksdb/rocksdb/db/range_del_aggregator.h +2 -2
  221. package/deps/rocksdb/rocksdb/db/range_del_aggregator_bench.cc +11 -11
  222. package/deps/rocksdb/rocksdb/db/range_del_aggregator_test.cc +3 -2
  223. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.cc +14 -8
  224. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +17 -0
  225. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter_test.cc +4 -2
  226. package/deps/rocksdb/rocksdb/db/read_callback.h +1 -0
  227. package/deps/rocksdb/rocksdb/db/repair.cc +87 -58
  228. package/deps/rocksdb/rocksdb/db/repair_test.cc +35 -5
  229. package/deps/rocksdb/rocksdb/db/snapshot_impl.h +2 -1
  230. package/deps/rocksdb/rocksdb/db/table_cache.cc +95 -69
  231. package/deps/rocksdb/rocksdb/db/table_cache.h +63 -53
  232. package/deps/rocksdb/rocksdb/db/table_properties_collector.cc +4 -4
  233. package/deps/rocksdb/rocksdb/db/table_properties_collector.h +78 -10
  234. package/deps/rocksdb/rocksdb/db/table_properties_collector_test.cc +28 -33
  235. package/deps/rocksdb/rocksdb/db/transaction_log_impl.cc +30 -51
  236. package/deps/rocksdb/rocksdb/db/transaction_log_impl.h +12 -8
  237. package/deps/rocksdb/rocksdb/db/version_builder.cc +564 -341
  238. package/deps/rocksdb/rocksdb/db/version_builder.h +8 -8
  239. package/deps/rocksdb/rocksdb/db/version_builder_test.cc +327 -155
  240. package/deps/rocksdb/rocksdb/db/version_edit.cc +89 -27
  241. package/deps/rocksdb/rocksdb/db/version_edit.h +42 -17
  242. package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +324 -43
  243. package/deps/rocksdb/rocksdb/db/version_edit_handler.h +79 -22
  244. package/deps/rocksdb/rocksdb/db/version_edit_test.cc +165 -20
  245. package/deps/rocksdb/rocksdb/db/version_set.cc +935 -1034
  246. package/deps/rocksdb/rocksdb/db/version_set.h +183 -122
  247. package/deps/rocksdb/rocksdb/db/version_set_test.cc +556 -138
  248. package/deps/rocksdb/rocksdb/db/version_util.h +68 -0
  249. package/deps/rocksdb/rocksdb/db/wal_manager.cc +23 -21
  250. package/deps/rocksdb/rocksdb/db/wal_manager.h +5 -2
  251. package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +30 -27
  252. package/deps/rocksdb/rocksdb/db/write_batch.cc +704 -209
  253. package/deps/rocksdb/rocksdb/db/write_batch_internal.h +135 -2
  254. package/deps/rocksdb/rocksdb/db/write_batch_test.cc +209 -5
  255. package/deps/rocksdb/rocksdb/db/write_callback_test.cc +2 -0
  256. package/deps/rocksdb/rocksdb/db/write_controller.cc +47 -54
  257. package/deps/rocksdb/rocksdb/db/write_controller.h +12 -9
  258. package/deps/rocksdb/rocksdb/db/write_controller_test.cc +215 -103
  259. package/deps/rocksdb/rocksdb/db/write_thread.cc +11 -0
  260. package/deps/rocksdb/rocksdb/db/write_thread.h +14 -8
  261. package/deps/rocksdb/rocksdb/db_stress_tool/CMakeLists.txt +7 -4
  262. package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +10 -3
  263. package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +6 -0
  264. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress.cc +1 -1
  265. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +19 -2
  266. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +78 -25
  267. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compaction_filter.h +13 -2
  268. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +29 -12
  269. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +5 -1
  270. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +199 -32
  271. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.cc +188 -0
  272. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +59 -10
  273. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +77 -109
  274. package/deps/rocksdb/rocksdb/{third-party/folly/folly/synchronization/WaitOptions.cpp → db_stress_tool/db_stress_stat.cc} +9 -4
  275. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_stat.h +7 -6
  276. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_table_properties_collector.h +1 -0
  277. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +699 -143
  278. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +20 -2
  279. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +49 -39
  280. package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +631 -0
  281. package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.h +287 -0
  282. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +1565 -0
  283. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.h +374 -0
  284. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +149 -18
  285. package/deps/rocksdb/rocksdb/env/composite_env.cc +464 -0
  286. package/deps/rocksdb/rocksdb/env/composite_env_wrapper.h +98 -646
  287. package/deps/rocksdb/rocksdb/env/emulated_clock.h +114 -0
  288. package/deps/rocksdb/rocksdb/env/env.cc +632 -42
  289. package/deps/rocksdb/rocksdb/env/env_basic_test.cc +84 -36
  290. package/deps/rocksdb/rocksdb/env/env_chroot.cc +88 -286
  291. package/deps/rocksdb/rocksdb/env/env_chroot.h +34 -1
  292. package/deps/rocksdb/rocksdb/env/env_encryption.cc +469 -277
  293. package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +9 -30
  294. package/deps/rocksdb/rocksdb/env/env_posix.cc +110 -119
  295. package/deps/rocksdb/rocksdb/env/env_test.cc +1128 -39
  296. package/deps/rocksdb/rocksdb/env/file_system.cc +147 -8
  297. package/deps/rocksdb/rocksdb/env/file_system_tracer.cc +207 -136
  298. package/deps/rocksdb/rocksdb/env/file_system_tracer.h +86 -54
  299. package/deps/rocksdb/rocksdb/env/fs_posix.cc +192 -64
  300. package/deps/rocksdb/rocksdb/env/fs_readonly.h +107 -0
  301. package/deps/rocksdb/rocksdb/env/fs_remap.cc +339 -0
  302. package/deps/rocksdb/rocksdb/env/fs_remap.h +139 -0
  303. package/deps/rocksdb/rocksdb/env/io_posix.cc +245 -41
  304. package/deps/rocksdb/rocksdb/env/io_posix.h +66 -1
  305. package/deps/rocksdb/rocksdb/env/mock_env.cc +147 -149
  306. package/deps/rocksdb/rocksdb/env/mock_env.h +113 -11
  307. package/deps/rocksdb/rocksdb/env/mock_env_test.cc +2 -4
  308. package/deps/rocksdb/rocksdb/env/unique_id_gen.cc +164 -0
  309. package/deps/rocksdb/rocksdb/env/unique_id_gen.h +71 -0
  310. package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +9 -5
  311. package/deps/rocksdb/rocksdb/file/delete_scheduler.h +6 -4
  312. package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +19 -12
  313. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +459 -70
  314. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +205 -28
  315. package/deps/rocksdb/rocksdb/file/file_util.cc +39 -28
  316. package/deps/rocksdb/rocksdb/file/file_util.h +18 -27
  317. package/deps/rocksdb/rocksdb/file/filename.cc +59 -22
  318. package/deps/rocksdb/rocksdb/file/filename.h +13 -8
  319. package/deps/rocksdb/rocksdb/file/line_file_reader.cc +68 -0
  320. package/deps/rocksdb/rocksdb/file/line_file_reader.h +59 -0
  321. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +1130 -6
  322. package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +220 -36
  323. package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +69 -17
  324. package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +13 -12
  325. package/deps/rocksdb/rocksdb/file/read_write_util.cc +3 -38
  326. package/deps/rocksdb/rocksdb/file/read_write_util.h +0 -4
  327. package/deps/rocksdb/rocksdb/file/readahead_file_info.h +33 -0
  328. package/deps/rocksdb/rocksdb/file/sequence_file_reader.cc +57 -9
  329. package/deps/rocksdb/rocksdb/file/sequence_file_reader.h +58 -6
  330. package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.cc +29 -54
  331. package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.h +22 -29
  332. package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +424 -50
  333. package/deps/rocksdb/rocksdb/file/writable_file_writer.h +66 -19
  334. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +157 -66
  335. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +224 -121
  336. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +333 -30
  337. package/deps/rocksdb/rocksdb/include/rocksdb/cache_bench_tool.h +14 -0
  338. package/deps/rocksdb/rocksdb/include/rocksdb/cleanable.h +1 -1
  339. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +90 -50
  340. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +13 -5
  341. package/deps/rocksdb/rocksdb/include/rocksdb/comparator.h +20 -4
  342. package/deps/rocksdb/rocksdb/include/rocksdb/concurrent_task_limiter.h +8 -3
  343. package/deps/rocksdb/rocksdb/include/rocksdb/configurable.h +53 -12
  344. package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +31 -6
  345. package/deps/rocksdb/rocksdb/include/rocksdb/customizable.h +102 -7
  346. package/deps/rocksdb/rocksdb/include/rocksdb/data_structure.h +51 -0
  347. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +370 -262
  348. package/deps/rocksdb/rocksdb/include/rocksdb/env.h +286 -87
  349. package/deps/rocksdb/rocksdb/include/rocksdb/env_encryption.h +124 -64
  350. package/deps/rocksdb/rocksdb/include/rocksdb/experimental.h +27 -0
  351. package/deps/rocksdb/rocksdb/include/rocksdb/file_checksum.h +21 -4
  352. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +384 -41
  353. package/deps/rocksdb/rocksdb/include/rocksdb/filter_policy.h +111 -143
  354. package/deps/rocksdb/rocksdb/include/rocksdb/flush_block_policy.h +20 -6
  355. package/deps/rocksdb/rocksdb/include/rocksdb/functor_wrapper.h +56 -0
  356. package/deps/rocksdb/rocksdb/include/rocksdb/io_status.h +15 -33
  357. package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +37 -1
  358. package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +1 -3
  359. package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +314 -26
  360. package/deps/rocksdb/rocksdb/include/rocksdb/memory_allocator.h +11 -7
  361. package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +50 -15
  362. package/deps/rocksdb/rocksdb/include/rocksdb/merge_operator.h +10 -3
  363. package/deps/rocksdb/rocksdb/include/rocksdb/metadata.h +186 -96
  364. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +373 -103
  365. package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +13 -3
  366. package/deps/rocksdb/rocksdb/include/rocksdb/persistent_cache.h +2 -2
  367. package/deps/rocksdb/rocksdb/include/rocksdb/rate_limiter.h +37 -7
  368. package/deps/rocksdb/rocksdb/include/rocksdb/rocksdb_namespace.h +6 -0
  369. package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +87 -0
  370. package/deps/rocksdb/rocksdb/include/rocksdb/slice.h +5 -12
  371. package/deps/rocksdb/rocksdb/include/rocksdb/slice_transform.h +59 -30
  372. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_manager.h +11 -11
  373. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +22 -0
  374. package/deps/rocksdb/rocksdb/include/rocksdb/sst_partitioner.h +17 -10
  375. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +121 -41
  376. package/deps/rocksdb/rocksdb/include/rocksdb/stats_history.h +1 -0
  377. package/deps/rocksdb/rocksdb/include/rocksdb/status.h +114 -136
  378. package/deps/rocksdb/rocksdb/include/rocksdb/system_clock.h +116 -0
  379. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +160 -18
  380. package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +57 -15
  381. package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +3 -1
  382. package/deps/rocksdb/rocksdb/include/rocksdb/trace_reader_writer.h +10 -6
  383. package/deps/rocksdb/rocksdb/include/rocksdb/trace_record.h +247 -0
  384. package/deps/rocksdb/rocksdb/include/rocksdb/trace_record_result.h +187 -0
  385. package/deps/rocksdb/rocksdb/include/rocksdb/transaction_log.h +1 -1
  386. package/deps/rocksdb/rocksdb/include/rocksdb/types.h +14 -24
  387. package/deps/rocksdb/rocksdb/include/rocksdb/unique_id.h +46 -0
  388. package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +14 -4
  389. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/agg_merge.h +138 -0
  390. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/backup_engine.h +631 -0
  391. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/cache_dump_load.h +142 -0
  392. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/checkpoint.h +12 -9
  393. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/customizable_util.h +368 -0
  394. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +24 -0
  395. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd_execute_result.h +4 -0
  396. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/object_registry.h +418 -63
  397. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +143 -73
  398. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_util.h +2 -2
  399. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/replayer.h +87 -0
  400. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/sim_cache.h +2 -2
  401. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +43 -5
  402. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/table_properties_collectors.h +18 -23
  403. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +26 -0
  404. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +32 -6
  405. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db_mutex.h +1 -2
  406. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +20 -1
  407. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +30 -3
  408. package/deps/rocksdb/rocksdb/include/rocksdb/wal_filter.h +11 -2
  409. package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +89 -11
  410. package/deps/rocksdb/rocksdb/include/rocksdb/write_batch_base.h +11 -0
  411. package/deps/rocksdb/rocksdb/include/rocksdb/write_buffer_manager.h +108 -38
  412. package/deps/rocksdb/rocksdb/logging/auto_roll_logger.cc +40 -23
  413. package/deps/rocksdb/rocksdb/logging/auto_roll_logger.h +12 -5
  414. package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +100 -49
  415. package/deps/rocksdb/rocksdb/logging/env_logger.h +7 -5
  416. package/deps/rocksdb/rocksdb/logging/env_logger_test.cc +0 -1
  417. package/deps/rocksdb/rocksdb/logging/posix_logger.h +3 -9
  418. package/deps/rocksdb/rocksdb/memory/arena.cc +3 -1
  419. package/deps/rocksdb/rocksdb/memory/arena.h +1 -1
  420. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +171 -106
  421. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.h +31 -15
  422. package/deps/rocksdb/rocksdb/memory/memkind_kmem_allocator.cc +15 -4
  423. package/deps/rocksdb/rocksdb/memory/memkind_kmem_allocator.h +24 -8
  424. package/deps/rocksdb/rocksdb/memory/memory_allocator.cc +91 -0
  425. package/deps/rocksdb/rocksdb/memory/memory_allocator_test.cc +239 -0
  426. package/deps/rocksdb/rocksdb/memory/memory_usage.h +14 -1
  427. package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.cc +72 -9
  428. package/deps/rocksdb/rocksdb/memtable/hash_skiplist_rep.cc +52 -6
  429. package/deps/rocksdb/rocksdb/memtable/inlineskiplist.h +53 -0
  430. package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +5 -5
  431. package/deps/rocksdb/rocksdb/memtable/memtablerep_bench.cc +17 -5
  432. package/deps/rocksdb/rocksdb/memtable/skiplist_test.cc +1 -1
  433. package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +87 -0
  434. package/deps/rocksdb/rocksdb/memtable/vectorrep.cc +20 -10
  435. package/deps/rocksdb/rocksdb/memtable/write_buffer_manager.cc +148 -94
  436. package/deps/rocksdb/rocksdb/memtable/write_buffer_manager_test.cc +160 -62
  437. package/deps/rocksdb/rocksdb/microbench/CMakeLists.txt +17 -0
  438. package/deps/rocksdb/rocksdb/microbench/README.md +60 -0
  439. package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +1360 -0
  440. package/deps/rocksdb/rocksdb/microbench/ribbon_bench.cc +153 -0
  441. package/deps/rocksdb/rocksdb/monitoring/histogram.cc +8 -15
  442. package/deps/rocksdb/rocksdb/monitoring/histogram.h +0 -1
  443. package/deps/rocksdb/rocksdb/monitoring/histogram_test.cc +18 -16
  444. package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.cc +9 -7
  445. package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.h +5 -3
  446. package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.cc +7 -5
  447. package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.h +37 -12
  448. package/deps/rocksdb/rocksdb/monitoring/iostats_context.cc +26 -6
  449. package/deps/rocksdb/rocksdb/monitoring/iostats_context_imp.h +6 -10
  450. package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +14 -13
  451. package/deps/rocksdb/rocksdb/monitoring/perf_context_imp.h +19 -20
  452. package/deps/rocksdb/rocksdb/monitoring/perf_step_timer.h +18 -18
  453. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +84 -2
  454. package/deps/rocksdb/rocksdb/monitoring/statistics.h +6 -0
  455. package/deps/rocksdb/rocksdb/monitoring/statistics_test.cc +47 -2
  456. package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +67 -54
  457. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.cc +4 -1
  458. package/deps/rocksdb/rocksdb/monitoring/thread_status_util.cc +2 -1
  459. package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +2 -2
  460. package/deps/rocksdb/rocksdb/options/cf_options.cc +280 -212
  461. package/deps/rocksdb/rocksdb/options/cf_options.h +51 -57
  462. package/deps/rocksdb/rocksdb/options/configurable.cc +242 -138
  463. package/deps/rocksdb/rocksdb/options/configurable_helper.h +4 -68
  464. package/deps/rocksdb/rocksdb/options/configurable_test.cc +144 -21
  465. package/deps/rocksdb/rocksdb/options/configurable_test.h +2 -3
  466. package/deps/rocksdb/rocksdb/options/customizable.cc +67 -7
  467. package/deps/rocksdb/rocksdb/options/customizable_test.cc +1773 -151
  468. package/deps/rocksdb/rocksdb/options/db_options.cc +275 -47
  469. package/deps/rocksdb/rocksdb/options/db_options.h +36 -7
  470. package/deps/rocksdb/rocksdb/options/options.cc +49 -17
  471. package/deps/rocksdb/rocksdb/options/options_helper.cc +369 -352
  472. package/deps/rocksdb/rocksdb/options/options_helper.h +23 -23
  473. package/deps/rocksdb/rocksdb/options/options_parser.cc +18 -13
  474. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +67 -54
  475. package/deps/rocksdb/rocksdb/options/options_test.cc +1162 -187
  476. package/deps/rocksdb/rocksdb/plugin/README.md +43 -0
  477. package/deps/rocksdb/rocksdb/port/jemalloc_helper.h +1 -1
  478. package/deps/rocksdb/rocksdb/port/lang.h +52 -0
  479. package/deps/rocksdb/rocksdb/port/port_example.h +1 -1
  480. package/deps/rocksdb/rocksdb/port/port_posix.cc +31 -2
  481. package/deps/rocksdb/rocksdb/port/port_posix.h +20 -2
  482. package/deps/rocksdb/rocksdb/port/stack_trace.cc +20 -4
  483. package/deps/rocksdb/rocksdb/port/sys_time.h +2 -2
  484. package/deps/rocksdb/rocksdb/port/win/env_default.cc +7 -7
  485. package/deps/rocksdb/rocksdb/port/win/env_win.cc +44 -74
  486. package/deps/rocksdb/rocksdb/port/win/env_win.h +25 -23
  487. package/deps/rocksdb/rocksdb/port/win/io_win.cc +32 -34
  488. package/deps/rocksdb/rocksdb/port/win/io_win.h +12 -6
  489. package/deps/rocksdb/rocksdb/port/win/port_win.cc +55 -35
  490. package/deps/rocksdb/rocksdb/port/win/port_win.h +22 -5
  491. package/deps/rocksdb/rocksdb/port/win/win_logger.cc +3 -3
  492. package/deps/rocksdb/rocksdb/port/win/win_logger.h +3 -5
  493. package/deps/rocksdb/rocksdb/port/win/win_thread.cc +7 -1
  494. package/deps/rocksdb/rocksdb/port/win/win_thread.h +12 -17
  495. package/deps/rocksdb/rocksdb/python.mk +9 -0
  496. package/deps/rocksdb/rocksdb/src.mk +82 -34
  497. package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.cc +3 -4
  498. package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.h +1 -1
  499. package/deps/rocksdb/rocksdb/table/block_based/block.cc +158 -80
  500. package/deps/rocksdb/rocksdb/table/block_based/block.h +64 -36
  501. package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.cc +23 -14
  502. package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.h +13 -5
  503. package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block_test.cc +3 -218
  504. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +603 -328
  505. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +28 -22
  506. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +220 -82
  507. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +8 -2
  508. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +3 -4
  509. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +28 -4
  510. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +598 -492
  511. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +151 -96
  512. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +31 -58
  513. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +330 -92
  514. package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +50 -19
  515. package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +23 -0
  516. package/deps/rocksdb/rocksdb/table/block_based/block_like_traits.h +226 -0
  517. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +56 -22
  518. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +42 -4
  519. package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +5 -2
  520. package/deps/rocksdb/rocksdb/table/block_based/block_type.h +2 -0
  521. package/deps/rocksdb/rocksdb/table/block_based/cachable_entry.h +34 -20
  522. package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +9 -10
  523. package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +26 -3
  524. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +2 -1
  525. package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +844 -202
  526. package/deps/rocksdb/rocksdb/table/block_based/filter_policy_internal.h +281 -81
  527. package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.cc +62 -2
  528. package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.h +2 -3
  529. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +28 -7
  530. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +22 -6
  531. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block_test.cc +28 -26
  532. package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +1 -1
  533. package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +1 -2
  534. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +2 -1
  535. package/deps/rocksdb/rocksdb/table/block_based/mock_block_based_table.h +11 -4
  536. package/deps/rocksdb/rocksdb/table/block_based/parsed_full_filter_block.cc +2 -1
  537. package/deps/rocksdb/rocksdb/table/block_based/parsed_full_filter_block.h +2 -0
  538. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +68 -26
  539. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +44 -9
  540. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +12 -10
  541. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +3 -4
  542. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.h +23 -4
  543. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +44 -19
  544. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.h +5 -1
  545. package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +16 -28
  546. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +7 -4
  547. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +2 -2
  548. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +77 -57
  549. package/deps/rocksdb/rocksdb/table/block_fetcher.h +23 -12
  550. package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +43 -56
  551. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +8 -8
  552. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.h +2 -1
  553. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +52 -70
  554. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_factory.cc +5 -8
  555. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_factory.h +1 -1
  556. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.cc +17 -11
  557. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.h +2 -3
  558. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +42 -51
  559. package/deps/rocksdb/rocksdb/table/format.cc +258 -104
  560. package/deps/rocksdb/rocksdb/table/format.h +120 -109
  561. package/deps/rocksdb/rocksdb/table/get_context.cc +97 -65
  562. package/deps/rocksdb/rocksdb/table/get_context.h +19 -12
  563. package/deps/rocksdb/rocksdb/table/internal_iterator.h +14 -0
  564. package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +8 -0
  565. package/deps/rocksdb/rocksdb/table/merger_test.cc +3 -2
  566. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +11 -21
  567. package/deps/rocksdb/rocksdb/table/merging_iterator.h +3 -3
  568. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +176 -171
  569. package/deps/rocksdb/rocksdb/table/meta_blocks.h +47 -33
  570. package/deps/rocksdb/rocksdb/table/mock_table.cc +7 -9
  571. package/deps/rocksdb/rocksdb/table/mock_table.h +3 -2
  572. package/deps/rocksdb/rocksdb/table/multiget_context.h +15 -8
  573. package/deps/rocksdb/rocksdb/table/persistent_cache_helper.cc +22 -29
  574. package/deps/rocksdb/rocksdb/table/persistent_cache_options.h +6 -3
  575. package/deps/rocksdb/rocksdb/table/plain/plain_table_bloom.h +5 -8
  576. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +29 -26
  577. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.h +12 -16
  578. package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.cc +145 -69
  579. package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.h +1 -1
  580. package/deps/rocksdb/rocksdb/table/plain/plain_table_index.cc +7 -6
  581. package/deps/rocksdb/rocksdb/table/plain/plain_table_index.h +3 -4
  582. package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.cc +3 -1
  583. package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.h +1 -1
  584. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +13 -18
  585. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.h +4 -9
  586. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +55 -37
  587. package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +10 -5
  588. package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +11 -8
  589. package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +222 -16
  590. package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +106 -58
  591. package/deps/rocksdb/rocksdb/table/sst_file_writer_collectors.h +6 -5
  592. package/deps/rocksdb/rocksdb/table/table_builder.h +68 -44
  593. package/deps/rocksdb/rocksdb/table/table_factory.cc +37 -10
  594. package/deps/rocksdb/rocksdb/table/table_properties.cc +109 -54
  595. package/deps/rocksdb/rocksdb/table/table_properties_internal.h +4 -20
  596. package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +33 -32
  597. package/deps/rocksdb/rocksdb/table/table_reader_caller.h +2 -0
  598. package/deps/rocksdb/rocksdb/table/table_test.cc +989 -326
  599. package/deps/rocksdb/rocksdb/table/two_level_iterator.cc +4 -0
  600. package/deps/rocksdb/rocksdb/table/unique_id.cc +166 -0
  601. package/deps/rocksdb/rocksdb/table/unique_id_impl.h +59 -0
  602. package/deps/rocksdb/rocksdb/test_util/mock_time_env.cc +1 -1
  603. package/deps/rocksdb/rocksdb/test_util/mock_time_env.h +13 -10
  604. package/deps/rocksdb/rocksdb/test_util/sync_point.cc +1 -2
  605. package/deps/rocksdb/rocksdb/test_util/sync_point.h +35 -16
  606. package/deps/rocksdb/rocksdb/test_util/sync_point_impl.cc +32 -10
  607. package/deps/rocksdb/rocksdb/test_util/sync_point_impl.h +31 -4
  608. package/deps/rocksdb/rocksdb/test_util/testharness.cc +53 -1
  609. package/deps/rocksdb/rocksdb/test_util/testharness.h +67 -3
  610. package/deps/rocksdb/rocksdb/test_util/testutil.cc +236 -66
  611. package/deps/rocksdb/rocksdb/test_util/testutil.h +63 -100
  612. package/deps/rocksdb/rocksdb/test_util/transaction_test_util.cc +12 -1
  613. package/deps/rocksdb/rocksdb/tools/blob_dump.cc +2 -2
  614. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.cc +6 -3
  615. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.h +1 -0
  616. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +9 -3
  617. package/deps/rocksdb/rocksdb/tools/db_bench.cc +1 -1
  618. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +1420 -611
  619. package/deps/rocksdb/rocksdb/tools/db_bench_tool_test.cc +11 -8
  620. package/deps/rocksdb/rocksdb/tools/db_repl_stress.cc +11 -1
  621. package/deps/rocksdb/rocksdb/tools/io_tracer_parser_test.cc +4 -2
  622. package/deps/rocksdb/rocksdb/tools/io_tracer_parser_tool.cc +46 -22
  623. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +655 -179
  624. package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +58 -6
  625. package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +472 -29
  626. package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +23 -2
  627. package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +2 -2
  628. package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.cc +246 -0
  629. package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.h +126 -0
  630. package/deps/rocksdb/rocksdb/tools/sst_dump_test.cc +83 -29
  631. package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +38 -17
  632. package/deps/rocksdb/rocksdb/tools/trace_analyzer_test.cc +191 -55
  633. package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +219 -296
  634. package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.h +87 -53
  635. package/deps/rocksdb/rocksdb/tools/write_stress.cc +8 -7
  636. package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.cc +6 -5
  637. package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.h +5 -4
  638. package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer_test.cc +14 -9
  639. package/deps/rocksdb/rocksdb/trace_replay/io_tracer.cc +134 -60
  640. package/deps/rocksdb/rocksdb/trace_replay/io_tracer.h +49 -38
  641. package/deps/rocksdb/rocksdb/trace_replay/io_tracer_test.cc +152 -15
  642. package/deps/rocksdb/rocksdb/trace_replay/trace_record.cc +206 -0
  643. package/deps/rocksdb/rocksdb/trace_replay/trace_record_handler.cc +190 -0
  644. package/deps/rocksdb/rocksdb/trace_replay/trace_record_handler.h +46 -0
  645. package/deps/rocksdb/rocksdb/trace_replay/trace_record_result.cc +146 -0
  646. package/deps/rocksdb/rocksdb/trace_replay/trace_replay.cc +475 -344
  647. package/deps/rocksdb/rocksdb/trace_replay/trace_replay.h +83 -95
  648. package/deps/rocksdb/rocksdb/util/autovector.h +38 -18
  649. package/deps/rocksdb/rocksdb/util/autovector_test.cc +1 -1
  650. package/deps/rocksdb/rocksdb/util/bloom_impl.h +4 -0
  651. package/deps/rocksdb/rocksdb/util/bloom_test.cc +276 -94
  652. package/deps/rocksdb/rocksdb/util/build_version.cc.in +81 -4
  653. package/deps/rocksdb/rocksdb/util/cast_util.h +22 -0
  654. package/deps/rocksdb/rocksdb/util/channel.h +2 -0
  655. package/deps/rocksdb/rocksdb/util/coding.h +1 -33
  656. package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +8 -0
  657. package/deps/rocksdb/rocksdb/util/comparator.cc +163 -3
  658. package/deps/rocksdb/rocksdb/util/compression.cc +122 -0
  659. package/deps/rocksdb/rocksdb/util/compression.h +212 -7
  660. package/deps/rocksdb/rocksdb/util/compression_context_cache.cc +1 -3
  661. package/deps/rocksdb/rocksdb/util/crc32c.cc +165 -2
  662. package/deps/rocksdb/rocksdb/util/crc32c.h +6 -0
  663. package/deps/rocksdb/rocksdb/util/crc32c_arm64.cc +14 -0
  664. package/deps/rocksdb/rocksdb/util/crc32c_ppc.h +3 -0
  665. package/deps/rocksdb/rocksdb/util/crc32c_test.cc +47 -0
  666. package/deps/rocksdb/rocksdb/util/defer.h +30 -1
  667. package/deps/rocksdb/rocksdb/util/defer_test.cc +11 -0
  668. package/deps/rocksdb/rocksdb/util/duplicate_detector.h +3 -1
  669. package/deps/rocksdb/rocksdb/util/dynamic_bloom.h +3 -3
  670. package/deps/rocksdb/rocksdb/util/dynamic_bloom_test.cc +5 -4
  671. package/deps/rocksdb/rocksdb/util/fastrange.h +2 -0
  672. package/deps/rocksdb/rocksdb/util/file_checksum_helper.cc +36 -0
  673. package/deps/rocksdb/rocksdb/util/file_checksum_helper.h +3 -1
  674. package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +512 -52
  675. package/deps/rocksdb/rocksdb/util/filter_bench.cc +65 -10
  676. package/deps/rocksdb/rocksdb/util/gflags_compat.h +6 -1
  677. package/deps/rocksdb/rocksdb/util/hash.cc +121 -3
  678. package/deps/rocksdb/rocksdb/util/hash.h +31 -1
  679. package/deps/rocksdb/rocksdb/util/hash128.h +26 -0
  680. package/deps/rocksdb/rocksdb/util/hash_containers.h +51 -0
  681. package/deps/rocksdb/rocksdb/util/hash_test.cc +194 -2
  682. package/deps/rocksdb/rocksdb/util/heap.h +6 -1
  683. package/deps/rocksdb/rocksdb/util/kv_map.h +1 -1
  684. package/deps/rocksdb/rocksdb/util/log_write_bench.cc +8 -6
  685. package/deps/rocksdb/rocksdb/util/math.h +74 -7
  686. package/deps/rocksdb/rocksdb/util/math128.h +13 -1
  687. package/deps/rocksdb/rocksdb/util/murmurhash.h +3 -3
  688. package/deps/rocksdb/rocksdb/util/random.cc +9 -0
  689. package/deps/rocksdb/rocksdb/util/random.h +6 -0
  690. package/deps/rocksdb/rocksdb/util/rate_limiter.cc +298 -144
  691. package/deps/rocksdb/rocksdb/util/rate_limiter.h +68 -19
  692. package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +335 -23
  693. package/deps/rocksdb/rocksdb/util/repeatable_thread.h +10 -12
  694. package/deps/rocksdb/rocksdb/util/repeatable_thread_test.cc +18 -15
  695. package/deps/rocksdb/rocksdb/util/ribbon_alg.h +98 -74
  696. package/deps/rocksdb/rocksdb/util/ribbon_config.cc +506 -0
  697. package/deps/rocksdb/rocksdb/util/ribbon_config.h +182 -0
  698. package/deps/rocksdb/rocksdb/util/ribbon_impl.h +154 -79
  699. package/deps/rocksdb/rocksdb/util/ribbon_test.cc +742 -365
  700. package/deps/rocksdb/rocksdb/util/set_comparator.h +2 -0
  701. package/deps/rocksdb/rocksdb/util/slice.cc +198 -35
  702. package/deps/rocksdb/rocksdb/util/slice_test.cc +30 -1
  703. package/deps/rocksdb/rocksdb/util/status.cc +32 -29
  704. package/deps/rocksdb/rocksdb/util/stop_watch.h +18 -18
  705. package/deps/rocksdb/rocksdb/util/string_util.cc +85 -6
  706. package/deps/rocksdb/rocksdb/util/string_util.h +47 -2
  707. package/deps/rocksdb/rocksdb/util/thread_guard.h +41 -0
  708. package/deps/rocksdb/rocksdb/util/thread_local.h +2 -2
  709. package/deps/rocksdb/rocksdb/util/thread_local_test.cc +22 -24
  710. package/deps/rocksdb/rocksdb/util/threadpool_imp.cc +7 -6
  711. package/deps/rocksdb/rocksdb/util/timer.h +55 -46
  712. package/deps/rocksdb/rocksdb/util/timer_test.cc +50 -48
  713. package/deps/rocksdb/rocksdb/util/user_comparator_wrapper.h +4 -0
  714. package/deps/rocksdb/rocksdb/util/vector_iterator.h +31 -15
  715. package/deps/rocksdb/rocksdb/util/work_queue.h +2 -0
  716. package/deps/rocksdb/rocksdb/util/xxhash.cc +35 -1144
  717. package/deps/rocksdb/rocksdb/util/xxhash.h +5117 -373
  718. package/deps/rocksdb/rocksdb/util/xxph3.h +1762 -0
  719. package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge.cc +238 -0
  720. package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge.h +49 -0
  721. package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge_test.cc +134 -0
  722. package/deps/rocksdb/rocksdb/utilities/agg_merge/test_agg_merge.cc +104 -0
  723. package/deps/rocksdb/rocksdb/utilities/agg_merge/test_agg_merge.h +47 -0
  724. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +3164 -0
  725. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_impl.h +29 -0
  726. package/deps/rocksdb/rocksdb/utilities/{backupable/backupable_db_test.cc → backup/backup_engine_test.cc} +1679 -485
  727. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.cc +6 -4
  728. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.h +14 -9
  729. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.cc +2 -0
  730. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.h +1 -0
  731. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_gc_stats.h +4 -0
  732. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +37 -27
  733. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +8 -4
  734. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl_filesnapshot.cc +1 -1
  735. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_iterator.h +13 -10
  736. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +5 -0
  737. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +44 -25
  738. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +3 -4
  739. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +27 -19
  740. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.h +4 -2
  741. package/deps/rocksdb/rocksdb/utilities/cache_dump_load.cc +69 -0
  742. package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +489 -0
  743. package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.h +366 -0
  744. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.cc +67 -4
  745. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.h +21 -6
  746. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_functional_test.cc +107 -7
  747. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_options.h +43 -0
  748. package/deps/rocksdb/rocksdb/utilities/cassandra/format.h +1 -1
  749. package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.cc +24 -8
  750. package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.h +7 -7
  751. package/deps/rocksdb/rocksdb/utilities/cassandra/serialize.h +5 -0
  752. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +99 -218
  753. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.h +8 -24
  754. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +114 -1
  755. package/deps/rocksdb/rocksdb/utilities/compaction_filters/layered_compaction_filter_base.h +6 -2
  756. package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc +0 -4
  757. package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.h +7 -6
  758. package/deps/rocksdb/rocksdb/utilities/compaction_filters.cc +56 -0
  759. package/deps/rocksdb/rocksdb/utilities/convenience/info_log_finder.cc +2 -2
  760. package/deps/rocksdb/rocksdb/utilities/counted_fs.cc +355 -0
  761. package/deps/rocksdb/rocksdb/utilities/counted_fs.h +152 -0
  762. package/deps/rocksdb/rocksdb/utilities/env_mirror.cc +13 -0
  763. package/deps/rocksdb/rocksdb/utilities/env_timed.cc +164 -122
  764. package/deps/rocksdb/rocksdb/utilities/env_timed.h +97 -0
  765. package/deps/rocksdb/rocksdb/utilities/fault_injection_env.cc +75 -17
  766. package/deps/rocksdb/rocksdb/utilities/fault_injection_env.h +19 -3
  767. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +539 -126
  768. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +162 -17
  769. package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.cc +110 -0
  770. package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.h +94 -0
  771. package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +5 -2
  772. package/deps/rocksdb/rocksdb/utilities/memory_allocators.h +104 -0
  773. package/deps/rocksdb/rocksdb/utilities/merge_operators/bytesxor.h +5 -3
  774. package/deps/rocksdb/rocksdb/utilities/merge_operators/max.cc +4 -1
  775. package/deps/rocksdb/rocksdb/utilities/merge_operators/put.cc +11 -3
  776. package/deps/rocksdb/rocksdb/utilities/merge_operators/sortlist.cc +0 -2
  777. package/deps/rocksdb/rocksdb/utilities/merge_operators/sortlist.h +5 -1
  778. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.cc +29 -10
  779. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.h +6 -3
  780. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend2.cc +29 -14
  781. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend2.h +6 -3
  782. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend_test.cc +71 -18
  783. package/deps/rocksdb/rocksdb/utilities/merge_operators/uint64add.cc +15 -9
  784. package/deps/rocksdb/rocksdb/utilities/merge_operators.cc +120 -0
  785. package/deps/rocksdb/rocksdb/utilities/merge_operators.h +3 -23
  786. package/deps/rocksdb/rocksdb/utilities/object_registry.cc +267 -42
  787. package/deps/rocksdb/rocksdb/utilities/object_registry_test.cc +702 -76
  788. package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration.cc +1 -1
  789. package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration_test.cc +26 -5
  790. package/deps/rocksdb/rocksdb/utilities/options/options_util.cc +1 -1
  791. package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +124 -1
  792. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.cc +2 -3
  793. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.h +8 -9
  794. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +15 -13
  795. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.h +1 -1
  796. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.h +4 -4
  797. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_evictable.h +2 -2
  798. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_bench.cc +8 -9
  799. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.cc +1 -1
  800. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.h +6 -3
  801. package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.h +2 -2
  802. package/deps/rocksdb/rocksdb/utilities/simulator_cache/cache_simulator.cc +3 -0
  803. package/deps/rocksdb/rocksdb/utilities/simulator_cache/cache_simulator_test.cc +2 -0
  804. package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache.cc +43 -35
  805. package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache_test.cc +20 -18
  806. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.cc +107 -2
  807. package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.cc +23 -15
  808. package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.h +2 -2
  809. package/deps/rocksdb/rocksdb/utilities/trace/replayer_impl.cc +316 -0
  810. package/deps/rocksdb/rocksdb/utilities/trace/replayer_impl.h +86 -0
  811. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.cc +4 -5
  812. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.h +4 -3
  813. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.h +1 -1
  814. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +119 -3
  815. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.cc +20 -3
  816. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.h +20 -0
  817. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_external_pthread.h +3 -2
  818. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +4 -0
  819. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc +38 -14
  820. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.h +17 -10
  821. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +1 -0
  822. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +1 -2
  823. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +423 -34
  824. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +82 -2
  825. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.cc +72 -40
  826. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.h +32 -1
  827. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +13 -5
  828. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +7 -3
  829. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +207 -43
  830. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +50 -7
  831. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.cc +28 -10
  832. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.h +11 -6
  833. package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +516 -0
  834. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +506 -15
  835. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +27 -13
  836. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +14 -14
  837. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.h +3 -0
  838. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +2 -2
  839. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +14 -5
  840. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +305 -27
  841. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +55 -159
  842. package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +209 -2
  843. package/deps/rocksdb/rocksdb/utilities/wal_filter.cc +23 -0
  844. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +157 -88
  845. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +501 -114
  846. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +91 -316
  847. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +1212 -672
  848. package/deps/rocksdb/rocksdb.gyp +425 -446
  849. package/package.json +8 -8
  850. package/prebuilds/darwin-arm64/node.napi.node +0 -0
  851. package/prebuilds/darwin-x86/node.napi.node +0 -0
  852. package/prebuilds/{darwin-x64+arm64 → linux-x64}/node.napi.node +0 -0
  853. package/deps/rocksdb/rocksdb/env/env_hdfs.cc +0 -648
  854. package/deps/rocksdb/rocksdb/hdfs/README +0 -23
  855. package/deps/rocksdb/rocksdb/hdfs/env_hdfs.h +0 -386
  856. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/backupable_db.h +0 -535
  857. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/env_librados.h +0 -175
  858. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/utility_db.h +0 -34
  859. package/deps/rocksdb/rocksdb/memory/memkind_kmem_allocator_test.cc +0 -102
  860. package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.h +0 -49
  861. package/deps/rocksdb/rocksdb/memtable/hash_skiplist_rep.h +0 -44
  862. package/deps/rocksdb/rocksdb/options/customizable_helper.h +0 -216
  863. package/deps/rocksdb/rocksdb/third-party/folly/folly/CPortability.h +0 -27
  864. package/deps/rocksdb/rocksdb/third-party/folly/folly/ConstexprMath.h +0 -45
  865. package/deps/rocksdb/rocksdb/third-party/folly/folly/Indestructible.h +0 -166
  866. package/deps/rocksdb/rocksdb/third-party/folly/folly/Optional.h +0 -570
  867. package/deps/rocksdb/rocksdb/third-party/folly/folly/Portability.h +0 -92
  868. package/deps/rocksdb/rocksdb/third-party/folly/folly/ScopeGuard.h +0 -54
  869. package/deps/rocksdb/rocksdb/third-party/folly/folly/Traits.h +0 -152
  870. package/deps/rocksdb/rocksdb/third-party/folly/folly/Unit.h +0 -59
  871. package/deps/rocksdb/rocksdb/third-party/folly/folly/Utility.h +0 -141
  872. package/deps/rocksdb/rocksdb/third-party/folly/folly/chrono/Hardware.h +0 -33
  873. package/deps/rocksdb/rocksdb/third-party/folly/folly/container/Array.h +0 -74
  874. package/deps/rocksdb/rocksdb/third-party/folly/folly/detail/Futex-inl.h +0 -117
  875. package/deps/rocksdb/rocksdb/third-party/folly/folly/detail/Futex.cpp +0 -263
  876. package/deps/rocksdb/rocksdb/third-party/folly/folly/detail/Futex.h +0 -96
  877. package/deps/rocksdb/rocksdb/third-party/folly/folly/functional/Invoke.h +0 -40
  878. package/deps/rocksdb/rocksdb/third-party/folly/folly/hash/Hash.h +0 -29
  879. package/deps/rocksdb/rocksdb/third-party/folly/folly/lang/Align.h +0 -144
  880. package/deps/rocksdb/rocksdb/third-party/folly/folly/lang/Bits.h +0 -30
  881. package/deps/rocksdb/rocksdb/third-party/folly/folly/lang/Launder.h +0 -51
  882. package/deps/rocksdb/rocksdb/third-party/folly/folly/portability/Asm.h +0 -28
  883. package/deps/rocksdb/rocksdb/third-party/folly/folly/portability/SysSyscall.h +0 -10
  884. package/deps/rocksdb/rocksdb/third-party/folly/folly/portability/SysTypes.h +0 -26
  885. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicNotification-inl.h +0 -138
  886. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicNotification.cpp +0 -23
  887. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicNotification.h +0 -57
  888. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicUtil-inl.h +0 -260
  889. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicUtil.h +0 -52
  890. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/Baton.h +0 -328
  891. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutex-inl.h +0 -1703
  892. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutex.cpp +0 -16
  893. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutex.h +0 -304
  894. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutexSpecializations.h +0 -39
  895. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/ParkingLot.cpp +0 -26
  896. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/ParkingLot.h +0 -318
  897. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/WaitOptions.h +0 -57
  898. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/InlineFunctionRef.h +0 -219
  899. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/ProxyLockable-inl.h +0 -207
  900. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/ProxyLockable.h +0 -164
  901. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/Sleeper.h +0 -57
  902. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/Spin.h +0 -77
  903. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/test/DistributedMutexTest.cpp +0 -1145
  904. package/deps/rocksdb/rocksdb/util/build_version.h +0 -15
  905. package/deps/rocksdb/rocksdb/util/xxh3p.h +0 -1392
  906. package/deps/rocksdb/rocksdb/utilities/backupable/backupable_db.cc +0 -2354
  907. package/deps/rocksdb/rocksdb/utilities/env_librados.cc +0 -1497
  908. package/deps/rocksdb/rocksdb/utilities/env_librados_test.cc +0 -1146
  909. package/prebuilds/linux-x64/node.napi.glibc.node +0 -0
@@ -20,8 +20,8 @@
20
20
  #include <vector>
21
21
 
22
22
  #include "db/column_family.h"
23
+ #include "db/compaction/compaction_iterator.h"
23
24
  #include "db/compaction/compaction_job.h"
24
- #include "db/dbformat.h"
25
25
  #include "db/error_handler.h"
26
26
  #include "db/event_helpers.h"
27
27
  #include "db/external_sst_file_ingestion_job.h"
@@ -50,13 +50,16 @@
50
50
  #include "rocksdb/env.h"
51
51
  #include "rocksdb/memtablerep.h"
52
52
  #include "rocksdb/status.h"
53
+ #ifndef ROCKSDB_LITE
53
54
  #include "rocksdb/trace_reader_writer.h"
55
+ #endif // ROCKSDB_LITE
54
56
  #include "rocksdb/transaction_log.h"
57
+ #ifndef ROCKSDB_LITE
58
+ #include "rocksdb/utilities/replayer.h"
59
+ #endif // ROCKSDB_LITE
55
60
  #include "rocksdb/write_buffer_manager.h"
61
+ #include "table/merging_iterator.h"
56
62
  #include "table/scoped_arena_iterator.h"
57
- #include "trace_replay/block_cache_tracer.h"
58
- #include "trace_replay/io_tracer.h"
59
- #include "trace_replay/trace_replay.h"
60
63
  #include "util/autovector.h"
61
64
  #include "util/hash.h"
62
65
  #include "util/repeatable_thread.h"
@@ -132,7 +135,8 @@ class Directories {
132
135
  class DBImpl : public DB {
133
136
  public:
134
137
  DBImpl(const DBOptions& options, const std::string& dbname,
135
- const bool seq_per_batch = false, const bool batch_per_txn = true);
138
+ const bool seq_per_batch = false, const bool batch_per_txn = true,
139
+ bool read_only = false);
136
140
  // No copying allowed
137
141
  DBImpl(const DBImpl&) = delete;
138
142
  void operator=(const DBImpl&) = delete;
@@ -142,24 +146,36 @@ class DBImpl : public DB {
142
146
  // ---- Implementations of the DB interface ----
143
147
 
144
148
  using DB::Resume;
145
- virtual Status Resume() override;
149
+ Status Resume() override;
146
150
 
147
151
  using DB::Put;
148
- virtual Status Put(const WriteOptions& options,
149
- ColumnFamilyHandle* column_family, const Slice& key,
150
- const Slice& value) override;
152
+ Status Put(const WriteOptions& options, ColumnFamilyHandle* column_family,
153
+ const Slice& key, const Slice& value) override;
154
+ Status Put(const WriteOptions& options, ColumnFamilyHandle* column_family,
155
+ const Slice& key, const Slice& ts, const Slice& value) override;
156
+
151
157
  using DB::Merge;
152
- virtual Status Merge(const WriteOptions& options,
153
- ColumnFamilyHandle* column_family, const Slice& key,
154
- const Slice& value) override;
158
+ Status Merge(const WriteOptions& options, ColumnFamilyHandle* column_family,
159
+ const Slice& key, const Slice& value) override;
155
160
  using DB::Delete;
156
- virtual Status Delete(const WriteOptions& options,
157
- ColumnFamilyHandle* column_family,
158
- const Slice& key) override;
161
+ Status Delete(const WriteOptions& options, ColumnFamilyHandle* column_family,
162
+ const Slice& key) override;
163
+ Status Delete(const WriteOptions& options, ColumnFamilyHandle* column_family,
164
+ const Slice& key, const Slice& ts) override;
165
+
159
166
  using DB::SingleDelete;
160
- virtual Status SingleDelete(const WriteOptions& options,
161
- ColumnFamilyHandle* column_family,
162
- const Slice& key) override;
167
+ Status SingleDelete(const WriteOptions& options,
168
+ ColumnFamilyHandle* column_family,
169
+ const Slice& key) override;
170
+ Status SingleDelete(const WriteOptions& options,
171
+ ColumnFamilyHandle* column_family, const Slice& key,
172
+ const Slice& ts) override;
173
+
174
+ using DB::DeleteRange;
175
+ Status DeleteRange(const WriteOptions& options,
176
+ ColumnFamilyHandle* column_family, const Slice& begin_key,
177
+ const Slice& end_key) override;
178
+
163
179
  using DB::Write;
164
180
  virtual Status Write(const WriteOptions& options,
165
181
  WriteBatch* updates) override;
@@ -349,7 +365,15 @@ class DBImpl : public DB {
349
365
 
350
366
  virtual SequenceNumber GetLatestSequenceNumber() const override;
351
367
 
352
- virtual bool SetPreserveDeletesSequenceNumber(SequenceNumber seqnum) override;
368
+ // IncreaseFullHistoryTsLow(ColumnFamilyHandle*, std::string) will acquire
369
+ // and release db_mutex
370
+ Status IncreaseFullHistoryTsLow(ColumnFamilyHandle* column_family,
371
+ std::string ts_low) override;
372
+
373
+ // GetFullHistoryTsLow(ColumnFamilyHandle*, std::string*) will acquire and
374
+ // release db_mutex
375
+ Status GetFullHistoryTsLow(ColumnFamilyHandle* column_family,
376
+ std::string* ts_low) override;
353
377
 
354
378
  virtual Status GetDbIdentity(std::string& identity) const override;
355
379
 
@@ -401,13 +425,18 @@ class DBImpl : public DB {
401
425
  virtual Status GetLiveFilesChecksumInfo(
402
426
  FileChecksumList* checksum_list) override;
403
427
 
428
+ virtual Status GetLiveFilesStorageInfo(
429
+ const LiveFilesStorageInfoOptions& opts,
430
+ std::vector<LiveFileStorageInfo>* files) override;
431
+
404
432
  // Obtains the meta data of the specified column family of the DB.
405
- // Status::NotFound() will be returned if the current DB does not have
406
- // any column family match the specified name.
407
433
  // TODO(yhchiang): output parameter is placed in the end in this codebase.
408
434
  virtual void GetColumnFamilyMetaData(ColumnFamilyHandle* column_family,
409
435
  ColumnFamilyMetaData* metadata) override;
410
436
 
437
+ void GetAllColumnFamilyMetaData(
438
+ std::vector<ColumnFamilyMetaData>* metadata) override;
439
+
411
440
  Status SuggestCompactRange(ColumnFamilyHandle* column_family,
412
441
  const Slice* begin, const Slice* end) override;
413
442
 
@@ -450,9 +479,10 @@ class DBImpl : public DB {
450
479
  Status VerifyChecksumInternal(const ReadOptions& read_options,
451
480
  bool use_file_checksum);
452
481
 
453
- Status VerifySstFileChecksum(const FileMetaData& fmeta,
454
- const std::string& fpath,
455
- const ReadOptions& read_options);
482
+ Status VerifyFullFileChecksum(const std::string& file_checksum_expected,
483
+ const std::string& func_name_expected,
484
+ const std::string& fpath,
485
+ const ReadOptions& read_options);
456
486
 
457
487
  using DB::StartTrace;
458
488
  virtual Status StartTrace(
@@ -462,6 +492,12 @@ class DBImpl : public DB {
462
492
  using DB::EndTrace;
463
493
  virtual Status EndTrace() override;
464
494
 
495
+ using DB::NewDefaultReplayer;
496
+ virtual Status NewDefaultReplayer(
497
+ const std::vector<ColumnFamilyHandle*>& handles,
498
+ std::unique_ptr<TraceReader>&& reader,
499
+ std::unique_ptr<Replayer>* replayer) override;
500
+
465
501
  using DB::StartBlockCacheTrace;
466
502
  Status StartBlockCacheTrace(
467
503
  const TraceOptions& options,
@@ -471,7 +507,7 @@ class DBImpl : public DB {
471
507
  Status EndBlockCacheTrace() override;
472
508
 
473
509
  using DB::StartIOTrace;
474
- Status StartIOTrace(Env* env, const TraceOptions& options,
510
+ Status StartIOTrace(const TraceOptions& options,
475
511
  std::unique_ptr<TraceWriter>&& trace_writer) override;
476
512
 
477
513
  using DB::EndIOTrace;
@@ -488,6 +524,7 @@ class DBImpl : public DB {
488
524
  #endif // ROCKSDB_LITE
489
525
 
490
526
  // ---- End of implementations of the DB interface ----
527
+ SystemClock* GetSystemClock() const;
491
528
 
492
529
  struct GetImplOptions {
493
530
  ColumnFamilyHandle* column_family = nullptr;
@@ -565,9 +602,15 @@ class DBImpl : public DB {
565
602
  // in the memtables, including memtable history. If cache_only is false,
566
603
  // SST files will also be checked.
567
604
  //
605
+ // `key` should NOT have user-defined timestamp appended to user key even if
606
+ // timestamp is enabled.
607
+ //
568
608
  // If a key is found, *found_record_for_key will be set to true and
569
609
  // *seq will be set to the stored sequence number for the latest
570
- // operation on this key or kMaxSequenceNumber if unknown.
610
+ // operation on this key or kMaxSequenceNumber if unknown. If user-defined
611
+ // timestamp is enabled for this column family and timestamp is not nullptr,
612
+ // then *timestamp will be set to the stored timestamp for the latest
613
+ // operation on this key.
571
614
  // If no key is found, *found_record_for_key will be set to false.
572
615
  //
573
616
  // Note: If cache_only=false, it is possible for *seq to be set to 0 if
@@ -591,12 +634,15 @@ class DBImpl : public DB {
591
634
  Status GetLatestSequenceForKey(SuperVersion* sv, const Slice& key,
592
635
  bool cache_only,
593
636
  SequenceNumber lower_bound_seq,
594
- SequenceNumber* seq,
637
+ SequenceNumber* seq, std::string* timestamp,
595
638
  bool* found_record_for_key,
596
- bool* is_blob_index = nullptr);
639
+ bool* is_blob_index);
597
640
 
598
- Status TraceIteratorSeek(const uint32_t& cf_id, const Slice& key);
599
- Status TraceIteratorSeekForPrev(const uint32_t& cf_id, const Slice& key);
641
+ Status TraceIteratorSeek(const uint32_t& cf_id, const Slice& key,
642
+ const Slice& lower_bound, const Slice upper_bound);
643
+ Status TraceIteratorSeekForPrev(const uint32_t& cf_id, const Slice& key,
644
+ const Slice& lower_bound,
645
+ const Slice upper_bound);
600
646
  #endif // ROCKSDB_LITE
601
647
 
602
648
  // Similar to GetSnapshot(), but also lets the db know that this snapshot
@@ -617,7 +663,8 @@ class DBImpl : public DB {
617
663
  const CompactRangeOptions& compact_range_options,
618
664
  const Slice* begin, const Slice* end,
619
665
  bool exclusive, bool disallow_trivial_move,
620
- uint64_t max_file_num_to_ignore);
666
+ uint64_t max_file_num_to_ignore,
667
+ const std::string& trim_ts);
621
668
 
622
669
  // Return an internal iterator over the current state of the database.
623
670
  // The keys of this iterator are internal keys (see format.h).
@@ -916,6 +963,13 @@ class DBImpl : public DB {
916
963
  int max_entries_to_print,
917
964
  std::string* out_str);
918
965
 
966
+ VersionSet* GetVersionSet() const { return versions_.get(); }
967
+
968
+ // Wait for any compaction
969
+ // We add a bool parameter to wait for unscheduledCompactions_ == 0, but this
970
+ // is only for the special test of CancelledCompactions
971
+ Status WaitForCompact(bool waitUnscheduled = false);
972
+
919
973
  #ifndef NDEBUG
920
974
  // Compact any files in the named level that overlap [*begin, *end]
921
975
  Status TEST_CompactRange(int level, const Slice* begin, const Slice* end,
@@ -946,6 +1000,9 @@ class DBImpl : public DB {
946
1000
  Status TEST_AtomicFlushMemTables(const autovector<ColumnFamilyData*>& cfds,
947
1001
  const FlushOptions& flush_opts);
948
1002
 
1003
+ // Wait for background threads to complete scheduled work.
1004
+ Status TEST_WaitForBackgroundWork();
1005
+
949
1006
  // Wait for memtable compaction
950
1007
  Status TEST_WaitForFlushMemTable(ColumnFamilyHandle* column_family = nullptr);
951
1008
 
@@ -954,12 +1011,15 @@ class DBImpl : public DB {
954
1011
  // is only for the special test of CancelledCompactions
955
1012
  Status TEST_WaitForCompact(bool waitUnscheduled = false);
956
1013
 
1014
+ // Wait for any background purge
1015
+ Status TEST_WaitForPurge();
1016
+
957
1017
  // Get the background error status
958
1018
  Status TEST_GetBGError();
959
1019
 
960
1020
  // Return the maximum overlapping data (in bytes) at next level for any
961
1021
  // file at a level >= 1.
962
- int64_t TEST_MaxNextLevelOverlappingBytes(
1022
+ uint64_t TEST_MaxNextLevelOverlappingBytes(
963
1023
  ColumnFamilyHandle* column_family = nullptr);
964
1024
 
965
1025
  // Return the current manifest file no.
@@ -971,8 +1031,10 @@ class DBImpl : public DB {
971
1031
  // get total level0 file size. Only for testing.
972
1032
  uint64_t TEST_GetLevel0TotalSize();
973
1033
 
974
- void TEST_GetFilesMetaData(ColumnFamilyHandle* column_family,
975
- std::vector<std::vector<FileMetaData>>* metadata);
1034
+ void TEST_GetFilesMetaData(
1035
+ ColumnFamilyHandle* column_family,
1036
+ std::vector<std::vector<FileMetaData>>* metadata,
1037
+ std::vector<std::shared_ptr<BlobFileMetaData>>* blob_metadata = nullptr);
976
1038
 
977
1039
  void TEST_LockMutex();
978
1040
 
@@ -1018,8 +1080,6 @@ class DBImpl : public DB {
1018
1080
  void TEST_WaitForStatsDumpRun(std::function<void()> callback) const;
1019
1081
  size_t TEST_EstimateInMemoryStatsHistorySize() const;
1020
1082
 
1021
- VersionSet* TEST_GetVersionSet() const { return versions_.get(); }
1022
-
1023
1083
  uint64_t TEST_GetCurrentLogNumber() const {
1024
1084
  InstrumentedMutexLock l(mutex());
1025
1085
  assert(!logs_.empty());
@@ -1045,8 +1105,64 @@ class DBImpl : public DB {
1045
1105
  // flush LOG out of application buffer
1046
1106
  void FlushInfoLog();
1047
1107
 
1108
+ // Interface to block and signal the DB in case of stalling writes by
1109
+ // WriteBufferManager. Each DBImpl object contains ptr to WBMStallInterface.
1110
+ // When DB needs to be blocked or signalled by WriteBufferManager,
1111
+ // state_ is changed accordingly.
1112
+ class WBMStallInterface : public StallInterface {
1113
+ public:
1114
+ enum State {
1115
+ BLOCKED = 0,
1116
+ RUNNING,
1117
+ };
1118
+
1119
+ WBMStallInterface() : state_cv_(&state_mutex_) {
1120
+ MutexLock lock(&state_mutex_);
1121
+ state_ = State::RUNNING;
1122
+ }
1123
+
1124
+ void SetState(State state) {
1125
+ MutexLock lock(&state_mutex_);
1126
+ state_ = state;
1127
+ }
1128
+
1129
+ // Change the state_ to State::BLOCKED and wait until its state is
1130
+ // changed by WriteBufferManager. When stall is cleared, Signal() is
1131
+ // called to change the state and unblock the DB.
1132
+ void Block() override {
1133
+ MutexLock lock(&state_mutex_);
1134
+ while (state_ == State::BLOCKED) {
1135
+ TEST_SYNC_POINT("WBMStallInterface::BlockDB");
1136
+ state_cv_.Wait();
1137
+ }
1138
+ }
1139
+
1140
+ // Called from WriteBufferManager. This function changes the state_
1141
+ // to State::RUNNING indicating the stall is cleared and DB can proceed.
1142
+ void Signal() override {
1143
+ {
1144
+ MutexLock lock(&state_mutex_);
1145
+ state_ = State::RUNNING;
1146
+ }
1147
+ state_cv_.Signal();
1148
+ }
1149
+
1150
+ private:
1151
+ // Conditional variable and mutex to block and
1152
+ // signal the DB during stalling process.
1153
+ port::Mutex state_mutex_;
1154
+ port::CondVar state_cv_;
1155
+ // state represting whether DB is running or blocked because of stall by
1156
+ // WriteBufferManager.
1157
+ State state_;
1158
+ };
1159
+
1160
+ static void TEST_ResetDbSessionIdGen();
1161
+ static std::string GenerateDbSessionId(Env* env);
1162
+
1048
1163
  protected:
1049
1164
  const std::string dbname_;
1165
+ // TODO(peterd): unify with VersionSet::db_id_
1050
1166
  std::string db_id_;
1051
1167
  // db_session_id_ is an identifier that gets reset
1052
1168
  // every time the DB is opened
@@ -1072,11 +1188,22 @@ class DBImpl : public DB {
1072
1188
  // WriteToWAL need different synchronization: log_empty_, alive_log_files_,
1073
1189
  // logs_, logfile_number_. Refer to the definition of each variable below for
1074
1190
  // more description.
1075
- mutable InstrumentedMutex mutex_;
1191
+ //
1192
+ // `mutex_` can be a hot lock in some workloads, so it deserves dedicated
1193
+ // cachelines.
1194
+ mutable CacheAlignedInstrumentedMutex mutex_;
1076
1195
 
1077
1196
  ColumnFamilyHandleImpl* default_cf_handle_;
1078
1197
  InternalStats* default_cf_internal_stats_;
1079
1198
 
1199
+ // table_cache_ provides its own synchronization
1200
+ std::shared_ptr<Cache> table_cache_;
1201
+
1202
+ ErrorHandler error_handler_;
1203
+
1204
+ // Unified interface for logging events
1205
+ EventLogger event_logger_;
1206
+
1080
1207
  // only used for dynamically adjusting max_total_wal_size. it is a sum of
1081
1208
  // [write_buffer_size * max_write_buffer_number] over all column families
1082
1209
  uint64_t max_total_in_memory_state_;
@@ -1107,6 +1234,49 @@ class DBImpl : public DB {
1107
1234
  // Default: true
1108
1235
  const bool batch_per_txn_;
1109
1236
 
1237
+ // Each flush or compaction gets its own job id. this counter makes sure
1238
+ // they're unique
1239
+ std::atomic<int> next_job_id_;
1240
+
1241
+ std::atomic<bool> shutting_down_;
1242
+
1243
+ // RecoveryContext struct stores the context about version edits along
1244
+ // with corresponding column_family_data and column_family_options.
1245
+ class RecoveryContext {
1246
+ public:
1247
+ ~RecoveryContext() {
1248
+ for (auto& edit_list : edit_lists_) {
1249
+ for (auto* edit : edit_list) {
1250
+ delete edit;
1251
+ }
1252
+ edit_list.clear();
1253
+ }
1254
+ cfds_.clear();
1255
+ mutable_cf_opts_.clear();
1256
+ edit_lists_.clear();
1257
+ files_to_delete_.clear();
1258
+ }
1259
+
1260
+ void UpdateVersionEdits(ColumnFamilyData* cfd, const VersionEdit& edit) {
1261
+ if (map_.find(cfd->GetID()) == map_.end()) {
1262
+ uint32_t size = static_cast<uint32_t>(map_.size());
1263
+ map_.emplace(cfd->GetID(), size);
1264
+ cfds_.emplace_back(cfd);
1265
+ mutable_cf_opts_.emplace_back(cfd->GetLatestMutableCFOptions());
1266
+ edit_lists_.emplace_back(autovector<VersionEdit*>());
1267
+ }
1268
+ uint32_t i = map_[cfd->GetID()];
1269
+ edit_lists_[i].emplace_back(new VersionEdit(edit));
1270
+ }
1271
+
1272
+ std::unordered_map<uint32_t, uint32_t> map_; // cf_id to index;
1273
+ autovector<ColumnFamilyData*> cfds_;
1274
+ autovector<const MutableCFOptions*> mutable_cf_opts_;
1275
+ autovector<autovector<VersionEdit*>> edit_lists_;
1276
+ // files_to_delete_ contains sst files
1277
+ std::set<std::string> files_to_delete_;
1278
+ };
1279
+
1110
1280
  // Except in DB::Open(), WriteOptionsFile can only be called when:
1111
1281
  // Persist options to options file.
1112
1282
  // If need_mutex_lock = false, the method will lock DB mutex.
@@ -1115,12 +1285,8 @@ class DBImpl : public DB {
1115
1285
 
1116
1286
  Status CompactRangeInternal(const CompactRangeOptions& options,
1117
1287
  ColumnFamilyHandle* column_family,
1118
- const Slice* begin, const Slice* end);
1119
-
1120
- Status GetApproximateSizesInternal(const SizeApproximationOptions& options,
1121
- ColumnFamilyHandle* column_family,
1122
- const Range* range, int n,
1123
- uint64_t* sizes);
1288
+ const Slice* begin, const Slice* end,
1289
+ const std::string& trim_ts);
1124
1290
 
1125
1291
  // The following two functions can only be called when:
1126
1292
  // 1. WriteThread::Writer::EnterUnbatched() is used.
@@ -1150,6 +1316,8 @@ class DBImpl : public DB {
1150
1316
  #ifndef ROCKSDB_LITE
1151
1317
  void NotifyOnExternalFileIngested(
1152
1318
  ColumnFamilyData* cfd, const ExternalSstFileIngestionJob& ingestion_job);
1319
+
1320
+ Status FlushForGetLiveFiles();
1153
1321
  #endif // !ROCKSDB_LITE
1154
1322
 
1155
1323
  void NewThreadStatusCfInfo(ColumnFamilyData* cfd) const;
@@ -1225,16 +1393,19 @@ class DBImpl : public DB {
1225
1393
  // be made to the descriptor are added to *edit.
1226
1394
  // recovered_seq is set to less than kMaxSequenceNumber if the log's tail is
1227
1395
  // skipped.
1396
+ // recovery_ctx stores the context about version edits and all those
1397
+ // edits are persisted to new Manifest after successfully syncing the new WAL.
1228
1398
  virtual Status Recover(
1229
1399
  const std::vector<ColumnFamilyDescriptor>& column_families,
1230
1400
  bool read_only = false, bool error_if_wal_file_exists = false,
1231
1401
  bool error_if_data_exists_in_wals = false,
1232
- uint64_t* recovered_seq = nullptr);
1402
+ uint64_t* recovered_seq = nullptr,
1403
+ RecoveryContext* recovery_ctx = nullptr);
1233
1404
 
1234
1405
  virtual bool OwnTablesAndLogs() const { return true; }
1235
1406
 
1236
1407
  // Set DB identity file, and write DB ID to manifest if necessary.
1237
- Status SetDBId();
1408
+ Status SetDBId(bool read_only, RecoveryContext* recovery_ctx);
1238
1409
 
1239
1410
  // REQUIRES: db mutex held when calling this function, but the db mutex can
1240
1411
  // be released and re-acquired. Db mutex will be held when the function
@@ -1243,17 +1414,29 @@ class DBImpl : public DB {
1243
1414
  // not referenced in the MANIFEST (e.g.
1244
1415
  // 1. It's best effort recovery;
1245
1416
  // 2. The VersionEdits referencing the SST files are appended to
1246
- // MANIFEST, DB crashes when syncing the MANIFEST, the VersionEdits are
1417
+ // RecoveryContext, DB crashes when syncing the MANIFEST, the VersionEdits are
1247
1418
  // still not synced to MANIFEST during recovery.)
1248
- // We delete these SST files. In the
1419
+ // It stores the SST files to be deleted in RecoveryContext. In the
1249
1420
  // meantime, we find out the largest file number present in the paths, and
1250
1421
  // bump up the version set's next_file_number_ to be 1 + largest_file_number.
1251
- Status DeleteUnreferencedSstFiles();
1422
+ // recovery_ctx stores the context about version edits and files to be
1423
+ // deleted. All those edits are persisted to new Manifest after successfully
1424
+ // syncing the new WAL.
1425
+ Status DeleteUnreferencedSstFiles(RecoveryContext* recovery_ctx);
1252
1426
 
1253
1427
  // SetDbSessionId() should be called in the constuctor DBImpl()
1254
1428
  // to ensure that db_session_id_ gets updated every time the DB is opened
1255
1429
  void SetDbSessionId();
1256
1430
 
1431
+ Status FailIfCfHasTs(const ColumnFamilyHandle* column_family) const;
1432
+ Status FailIfTsSizesMismatch(const ColumnFamilyHandle* column_family,
1433
+ const Slice& ts) const;
1434
+
1435
+ // recovery_ctx stores the context about version edits and
1436
+ // LogAndApplyForRecovery persist all those edits to new Manifest after
1437
+ // successfully syncing new WAL.
1438
+ Status LogAndApplyForRecovery(const RecoveryContext& recovery_ctx);
1439
+
1257
1440
  private:
1258
1441
  friend class DB;
1259
1442
  friend class ErrorHandler;
@@ -1306,6 +1489,7 @@ class DBImpl : public DB {
1306
1489
 
1307
1490
  struct LogFileNumberSize {
1308
1491
  explicit LogFileNumberSize(uint64_t _number) : number(_number) {}
1492
+ LogFileNumberSize() {}
1309
1493
  void AddSize(uint64_t new_size) { size += new_size; }
1310
1494
  uint64_t number;
1311
1495
  uint64_t size = 0;
@@ -1380,21 +1564,34 @@ class DBImpl : public DB {
1380
1564
 
1381
1565
  // Information for a manual compaction
1382
1566
  struct ManualCompactionState {
1567
+ ManualCompactionState(ColumnFamilyData* _cfd, int _input_level,
1568
+ int _output_level, uint32_t _output_path_id,
1569
+ bool _exclusive, bool _disallow_trivial_move,
1570
+ std::atomic<bool>* _canceled)
1571
+ : cfd(_cfd),
1572
+ input_level(_input_level),
1573
+ output_level(_output_level),
1574
+ output_path_id(_output_path_id),
1575
+ exclusive(_exclusive),
1576
+ disallow_trivial_move(_disallow_trivial_move),
1577
+ canceled(_canceled) {}
1578
+
1383
1579
  ColumnFamilyData* cfd;
1384
1580
  int input_level;
1385
1581
  int output_level;
1386
1582
  uint32_t output_path_id;
1387
1583
  Status status;
1388
- bool done;
1389
- bool in_progress; // compaction request being processed?
1390
- bool incomplete; // only part of requested range compacted
1584
+ bool done = false;
1585
+ bool in_progress = false; // compaction request being processed?
1586
+ bool incomplete = false; // only part of requested range compacted
1391
1587
  bool exclusive; // current behavior of only one manual
1392
1588
  bool disallow_trivial_move; // Force actual compaction to run
1393
- const InternalKey* begin; // nullptr means beginning of key range
1394
- const InternalKey* end; // nullptr means end of key range
1395
- InternalKey* manual_end; // how far we are compacting
1396
- InternalKey tmp_storage; // Used to keep track of compaction progress
1397
- InternalKey tmp_storage1; // Used to keep track of compaction progress
1589
+ const InternalKey* begin = nullptr; // nullptr means beginning of key range
1590
+ const InternalKey* end = nullptr; // nullptr means end of key range
1591
+ InternalKey* manual_end = nullptr; // how far we are compacting
1592
+ InternalKey tmp_storage; // Used to keep track of compaction progress
1593
+ InternalKey tmp_storage1; // Used to keep track of compaction progress
1594
+ std::atomic<bool>* canceled; // Compaction canceled by the user?
1398
1595
  };
1399
1596
  struct PrepickedCompaction {
1400
1597
  // background compaction takes ownership of `compaction`.
@@ -1411,6 +1608,7 @@ class DBImpl : public DB {
1411
1608
  DBImpl* db;
1412
1609
  // background compaction takes ownership of `prepicked_compaction`.
1413
1610
  PrepickedCompaction* prepicked_compaction;
1611
+ Env::Priority compaction_pri_;
1414
1612
  };
1415
1613
 
1416
1614
  // Initialize the built-in column family for persistent stats. Depending on
@@ -1493,9 +1691,10 @@ class DBImpl : public DB {
1493
1691
 
1494
1692
  // REQUIRES: log_numbers are sorted in ascending order
1495
1693
  // corrupted_log_found is set to true if we recover from a corrupted log file.
1496
- Status RecoverLogFiles(const std::vector<uint64_t>& log_numbers,
1694
+ Status RecoverLogFiles(std::vector<uint64_t>& log_numbers,
1497
1695
  SequenceNumber* next_sequence, bool read_only,
1498
- bool* corrupted_log_found);
1696
+ bool* corrupted_log_found,
1697
+ RecoveryContext* recovery_ctx);
1499
1698
 
1500
1699
  // The following two methods are used to flush a memtable to
1501
1700
  // storage. The first one is used at database RecoveryTime (when the
@@ -1505,6 +1704,18 @@ class DBImpl : public DB {
1505
1704
  Status WriteLevel0TableForRecovery(int job_id, ColumnFamilyData* cfd,
1506
1705
  MemTable* mem, VersionEdit* edit);
1507
1706
 
1707
+ // Move all the WAL files starting from corrupted WAL found to
1708
+ // max_wal_number to avoid column family inconsistency error on recovery. It
1709
+ // also removes the deleted file from the vector wal_numbers.
1710
+ void MoveCorruptedWalFiles(std::vector<uint64_t>& wal_numbers,
1711
+ uint64_t corrupted_wal_number);
1712
+
1713
+ // Get the size of a log file and, if truncate is true, truncate the
1714
+ // log file to its actual size, thereby freeing preallocated space.
1715
+ // Return success even if truncate fails
1716
+ Status GetLogSizeAndMaybeTruncate(uint64_t wal_number, bool truncate,
1717
+ LogFileNumberSize* log);
1718
+
1508
1719
  // Restore alive_log_files_ and total_log_size_ after recovery.
1509
1720
  // It needs to run only when there's no flush during recovery
1510
1721
  // (e.g. avoid_flush_during_recovery=true). May also trigger flush
@@ -1515,6 +1726,10 @@ class DBImpl : public DB {
1515
1726
  // `num_bytes` going through.
1516
1727
  Status DelayWrite(uint64_t num_bytes, const WriteOptions& write_options);
1517
1728
 
1729
+ // Begin stalling of writes when memory usage increases beyond a certain
1730
+ // threshold.
1731
+ void WriteBufferManagerStallWrites();
1732
+
1518
1733
  Status ThrottleLowPriWritesIfNeeded(const WriteOptions& write_options,
1519
1734
  WriteBatch* my_batch);
1520
1735
 
@@ -1587,6 +1802,25 @@ class DBImpl : public DB {
1587
1802
  }
1588
1803
  }
1589
1804
 
1805
+ // TaskType is used to identify tasks in thread-pool, currently only
1806
+ // differentiate manual compaction, which could be unscheduled from the
1807
+ // thread-pool.
1808
+ enum class TaskType : uint8_t {
1809
+ kDefault = 0,
1810
+ kManualCompaction = 1,
1811
+ kCount = 2,
1812
+ };
1813
+
1814
+ // Task tag is used to identity tasks in thread-pool, which is
1815
+ // dbImpl obj address + type
1816
+ inline void* GetTaskTag(TaskType type) {
1817
+ return GetTaskTag(static_cast<uint8_t>(type));
1818
+ }
1819
+
1820
+ inline void* GetTaskTag(uint8_t type) {
1821
+ return static_cast<uint8_t*>(static_cast<void*>(this)) + type;
1822
+ }
1823
+
1590
1824
  // REQUIRES: mutex locked and in write thread.
1591
1825
  void AssignAtomicFlushSeq(const autovector<ColumnFamilyData*>& cfds);
1592
1826
 
@@ -1594,7 +1828,7 @@ class DBImpl : public DB {
1594
1828
  Status SwitchWAL(WriteContext* write_context);
1595
1829
 
1596
1830
  // REQUIRES: mutex locked and in write thread.
1597
- Status HandleWriteBufferFull(WriteContext* write_context);
1831
+ Status HandleWriteBufferManagerFlush(WriteContext* write_context);
1598
1832
 
1599
1833
  // REQUIRES: mutex locked
1600
1834
  Status PreprocessWrite(const WriteOptions& write_options, bool* need_log_sync,
@@ -1604,8 +1838,13 @@ class DBImpl : public DB {
1604
1838
  WriteBatch* tmp_batch, size_t* write_with_wal,
1605
1839
  WriteBatch** to_be_cached_state);
1606
1840
 
1841
+ // rate_limiter_priority is used to charge `DBOptions::rate_limiter`
1842
+ // for automatic WAL flush (`Options::manual_wal_flush` == false)
1843
+ // associated with this WriteToWAL
1607
1844
  IOStatus WriteToWAL(const WriteBatch& merged_batch, log::Writer* log_writer,
1608
- uint64_t* log_used, uint64_t* log_size);
1845
+ uint64_t* log_used, uint64_t* log_size,
1846
+ Env::IOPriority rate_limiter_priority,
1847
+ bool with_db_mutex = false, bool with_log_mutex = false);
1609
1848
 
1610
1849
  IOStatus WriteToWAL(const WriteThread::WriteGroup& write_group,
1611
1850
  log::Writer* log_writer, uint64_t* log_used,
@@ -1660,7 +1899,7 @@ class DBImpl : public DB {
1660
1899
  // specified value, this flush request is considered to have completed its
1661
1900
  // work of flushing this column family. After completing the work for all
1662
1901
  // column families in this request, this flush is considered complete.
1663
- typedef std::vector<std::pair<ColumnFamilyData*, uint64_t>> FlushRequest;
1902
+ using FlushRequest = std::vector<std::pair<ColumnFamilyData*, uint64_t>>;
1664
1903
 
1665
1904
  void GenerateFlushRequest(const autovector<ColumnFamilyData*>& cfds,
1666
1905
  FlushRequest* req);
@@ -1701,7 +1940,7 @@ class DBImpl : public DB {
1701
1940
  LogBuffer* log_buffer);
1702
1941
 
1703
1942
  // Schedule background tasks
1704
- void StartPeriodicWorkScheduler();
1943
+ Status StartPeriodicWorkScheduler();
1705
1944
 
1706
1945
  void PrintStatistics();
1707
1946
 
@@ -1873,8 +2112,8 @@ class DBImpl : public DB {
1873
2112
 
1874
2113
  Status DisableFileDeletionsWithLock();
1875
2114
 
1876
- // table_cache_ provides its own synchronization
1877
- std::shared_ptr<Cache> table_cache_;
2115
+ Status IncreaseFullHistoryTsLowImpl(ColumnFamilyData* cfd,
2116
+ std::string ts_low);
1878
2117
 
1879
2118
  // Lock over the persistent DB state. Non-nullptr iff successfully acquired.
1880
2119
  FileLock* db_lock_;
@@ -1889,8 +2128,6 @@ class DBImpl : public DB {
1889
2128
  // mutex_, the order should be first mutex_ and then log_write_mutex_.
1890
2129
  InstrumentedMutex log_write_mutex_;
1891
2130
 
1892
- std::atomic<bool> shutting_down_;
1893
-
1894
2131
  // If zero, manual compactions are allowed to proceed. If non-zero, manual
1895
2132
  // compactions may still be running, but will quickly fail with
1896
2133
  // `Status::Incomplete`. The value indicates how many threads have paused
@@ -1925,7 +2162,7 @@ class DBImpl : public DB {
1925
2162
  // accessed from the same write_thread_ without any locks. With
1926
2163
  // two_write_queues writes, where it can be updated in different threads,
1927
2164
  // read and writes are protected by log_write_mutex_ instead. This is to avoid
1928
- // expesnive mutex_ lock during WAL write, which update log_empty_.
2165
+ // expensive mutex_ lock during WAL write, which update log_empty_.
1929
2166
  bool log_empty_;
1930
2167
 
1931
2168
  ColumnFamilyHandleImpl* persist_stats_cf_handle_;
@@ -1933,12 +2170,15 @@ class DBImpl : public DB {
1933
2170
  bool persistent_stats_cfd_exists_ = true;
1934
2171
 
1935
2172
  // Without two_write_queues, read and writes to alive_log_files_ are
1936
- // protected by mutex_. However since back() is never popped, and push_back()
1937
- // is done only from write_thread_, the same thread can access the item
1938
- // reffered by back() without mutex_. With two_write_queues_, writes
2173
+ // protected by mutex_. With two_write_queues_, writes
1939
2174
  // are protected by locking both mutex_ and log_write_mutex_, and reads must
1940
2175
  // be under either mutex_ or log_write_mutex_.
1941
2176
  std::deque<LogFileNumberSize> alive_log_files_;
2177
+ // Caching the result of `alive_log_files_.back()` so that we do not have to
2178
+ // call `alive_log_files_.back()` in the write thread (WriteToWAL()) which
2179
+ // requires locking db mutex if log_mutex_ is not already held in
2180
+ // two-write-queues mode.
2181
+ std::deque<LogFileNumberSize>::reverse_iterator alive_log_files_tail_;
1942
2182
  // Log files that aren't fully synced, and the current log file.
1943
2183
  // Synchronization:
1944
2184
  // - push_back() is done from write_thread_ with locked mutex_ and
@@ -1959,7 +2199,7 @@ class DBImpl : public DB {
1959
2199
  // only during recovery. Using this feature enables not writing the state to
1960
2200
  // memtable on normal writes and hence improving the throughput. Each new
1961
2201
  // write of the state will replace the previous state entirely even if the
1962
- // keys in the two consecuitive states do not overlap.
2202
+ // keys in the two consecutive states do not overlap.
1963
2203
  // It is protected by log_write_mutex_ when two_write_queues_ is enabled.
1964
2204
  // Otherwise only the heaad of write_thread_ can access it.
1965
2205
  WriteBatch cached_recoverable_state_;
@@ -2099,10 +2339,6 @@ class DBImpl : public DB {
2099
2339
  // Number of threads intending to write to memtable
2100
2340
  std::atomic<size_t> pending_memtable_writes_ = {};
2101
2341
 
2102
- // Each flush or compaction gets its own job id. this counter makes sure
2103
- // they're unique
2104
- std::atomic<int> next_job_id_;
2105
-
2106
2342
  // A flag indicating whether the current rocksdb database has any
2107
2343
  // data that is not yet persisted into either WAL or SST file.
2108
2344
  // Used when disableWAL is true.
@@ -2131,9 +2367,6 @@ class DBImpl : public DB {
2131
2367
  WalManager wal_manager_;
2132
2368
  #endif // ROCKSDB_LITE
2133
2369
 
2134
- // Unified interface for logging events
2135
- EventLogger event_logger_;
2136
-
2137
2370
  // A value of > 0 temporarily disables scheduling of background work
2138
2371
  int bg_work_paused_;
2139
2372
 
@@ -2191,17 +2424,12 @@ class DBImpl : public DB {
2191
2424
  // DB::Open() or passed to us
2192
2425
  bool own_sfm_;
2193
2426
 
2194
- // Clients must periodically call SetPreserveDeletesSequenceNumber()
2195
- // to advance this seqnum. Default value is 0 which means ALL deletes are
2196
- // preserved. Note that this has no effect if DBOptions.preserve_deletes
2197
- // is set to false.
2198
- std::atomic<SequenceNumber> preserve_deletes_seqnum_;
2199
- const bool preserve_deletes_;
2200
-
2201
2427
  // Flag to check whether Close() has been called on this DB
2202
2428
  bool closed_;
2203
-
2204
- ErrorHandler error_handler_;
2429
+ // save the closing status, for re-calling the close()
2430
+ Status closing_status_;
2431
+ // mutex for DB::Close()
2432
+ InstrumentedMutex closing_mutex_;
2205
2433
 
2206
2434
  // Conditional variable to coordinate installation of atomic flush results.
2207
2435
  // With atomic flush, each bg thread installs the result of flushing multiple
@@ -2215,11 +2443,18 @@ class DBImpl : public DB {
2215
2443
  InstrumentedCondVar atomic_flush_install_cv_;
2216
2444
 
2217
2445
  bool wal_in_db_path_;
2446
+
2447
+ BlobFileCompletionCallback blob_callback_;
2448
+
2449
+ // Pointer to WriteBufferManager stalling interface.
2450
+ std::unique_ptr<StallInterface> wbm_stall_;
2218
2451
  };
2219
2452
 
2220
- extern Options SanitizeOptions(const std::string& db, const Options& src);
2453
+ extern Options SanitizeOptions(const std::string& db, const Options& src,
2454
+ bool read_only = false);
2221
2455
 
2222
- extern DBOptions SanitizeOptions(const std::string& db, const DBOptions& src);
2456
+ extern DBOptions SanitizeOptions(const std::string& db, const DBOptions& src,
2457
+ bool read_only = false);
2223
2458
 
2224
2459
  extern CompressionType GetCompressionFlush(
2225
2460
  const ImmutableCFOptions& ioptions,
@@ -2257,11 +2492,10 @@ extern uint64_t PrecomputeMinLogNumberToKeepNon2PC(
2257
2492
  // will not depend on any WAL file. nullptr means no memtable is being flushed.
2258
2493
  // The function is only applicable to 2pc mode.
2259
2494
  extern uint64_t FindMinPrepLogReferencedByMemTable(
2260
- VersionSet* vset, const ColumnFamilyData* cfd_to_flush,
2261
- const autovector<MemTable*>& memtables_to_flush);
2495
+ VersionSet* vset, const autovector<MemTable*>& memtables_to_flush);
2262
2496
  // For atomic flush.
2263
2497
  extern uint64_t FindMinPrepLogReferencedByMemTable(
2264
- VersionSet* vset, const autovector<ColumnFamilyData*>& cfds_to_flush,
2498
+ VersionSet* vset,
2265
2499
  const autovector<const autovector<MemTable*>*>& memtables_to_flush);
2266
2500
 
2267
2501
  // Fix user-supplied options to be reasonable
@@ -2271,4 +2505,43 @@ static void ClipToRange(T* ptr, V minvalue, V maxvalue) {
2271
2505
  if (static_cast<V>(*ptr) < minvalue) *ptr = minvalue;
2272
2506
  }
2273
2507
 
2508
+ inline Status DBImpl::FailIfCfHasTs(
2509
+ const ColumnFamilyHandle* column_family) const {
2510
+ column_family = column_family ? column_family : DefaultColumnFamily();
2511
+ assert(column_family);
2512
+ const Comparator* const ucmp = column_family->GetComparator();
2513
+ assert(ucmp);
2514
+ if (ucmp->timestamp_size() > 0) {
2515
+ std::ostringstream oss;
2516
+ oss << "cannot call this method on column family "
2517
+ << column_family->GetName() << " that enables timestamp";
2518
+ return Status::InvalidArgument(oss.str());
2519
+ }
2520
+ return Status::OK();
2521
+ }
2522
+
2523
+ inline Status DBImpl::FailIfTsSizesMismatch(
2524
+ const ColumnFamilyHandle* column_family, const Slice& ts) const {
2525
+ if (!column_family) {
2526
+ return Status::InvalidArgument("column family handle cannot be null");
2527
+ }
2528
+ assert(column_family);
2529
+ const Comparator* const ucmp = column_family->GetComparator();
2530
+ assert(ucmp);
2531
+ if (0 == ucmp->timestamp_size()) {
2532
+ std::stringstream oss;
2533
+ oss << "cannot call this method on column family "
2534
+ << column_family->GetName() << " that does not enable timestamp";
2535
+ return Status::InvalidArgument(oss.str());
2536
+ }
2537
+ const size_t ts_sz = ts.size();
2538
+ if (ts_sz != ucmp->timestamp_size()) {
2539
+ std::stringstream oss;
2540
+ oss << "Timestamp sizes mismatch: expect " << ucmp->timestamp_size() << ", "
2541
+ << ts_sz << " given";
2542
+ return Status::InvalidArgument(oss.str());
2543
+ }
2544
+ return Status::OK();
2545
+ }
2546
+
2274
2547
  } // namespace ROCKSDB_NAMESPACE