@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
@@ -12,15 +12,22 @@
12
12
 
13
13
  #include <algorithm>
14
14
  #include <cinttypes>
15
+ #include <cstddef>
15
16
  #include <limits>
16
17
  #include <sstream>
17
18
  #include <string>
18
19
  #include <utility>
19
20
  #include <vector>
20
21
 
22
+ #include "cache/cache_entry_roles.h"
23
+ #include "cache/cache_entry_stats.h"
21
24
  #include "db/column_family.h"
22
25
  #include "db/db_impl/db_impl.h"
26
+ #include "port/port.h"
27
+ #include "rocksdb/system_clock.h"
23
28
  #include "rocksdb/table.h"
29
+ #include "table/block_based/cachable_entry.h"
30
+ #include "util/hash_containers.h"
24
31
  #include "util/string_util.h"
25
32
 
26
33
  namespace ROCKSDB_NAMESPACE {
@@ -50,6 +57,27 @@ const std::map<LevelStatType, LevelStat> InternalStats::compaction_level_stats =
50
57
  {LevelStatType::AVG_SEC, LevelStat{"AvgSec", "Avg(sec)"}},
51
58
  {LevelStatType::KEY_IN, LevelStat{"KeyIn", "KeyIn"}},
52
59
  {LevelStatType::KEY_DROP, LevelStat{"KeyDrop", "KeyDrop"}},
60
+ {LevelStatType::R_BLOB_GB, LevelStat{"RblobGB", "Rblob(GB)"}},
61
+ {LevelStatType::W_BLOB_GB, LevelStat{"WblobGB", "Wblob(GB)"}},
62
+ };
63
+
64
+ const std::map<InternalStats::InternalDBStatsType, DBStatInfo>
65
+ InternalStats::db_stats_type_to_info = {
66
+ {InternalStats::kIntStatsWalFileBytes,
67
+ DBStatInfo{"db.wal_bytes_written"}},
68
+ {InternalStats::kIntStatsWalFileSynced, DBStatInfo{"db.wal_syncs"}},
69
+ {InternalStats::kIntStatsBytesWritten,
70
+ DBStatInfo{"db.user_bytes_written"}},
71
+ {InternalStats::kIntStatsNumKeysWritten,
72
+ DBStatInfo{"db.user_keys_written"}},
73
+ {InternalStats::kIntStatsWriteDoneByOther,
74
+ DBStatInfo{"db.user_writes_by_other"}},
75
+ {InternalStats::kIntStatsWriteDoneBySelf,
76
+ DBStatInfo{"db.user_writes_by_self"}},
77
+ {InternalStats::kIntStatsWriteWithWal,
78
+ DBStatInfo{"db.user_writes_with_wal"}},
79
+ {InternalStats::kIntStatsWriteStallMicros,
80
+ DBStatInfo{"db.user_write_stall_micros"}},
53
81
  };
54
82
 
55
83
  namespace {
@@ -67,7 +95,8 @@ void PrintLevelStatsHeader(char* buf, size_t len, const std::string& cf_name,
67
95
  };
68
96
  int line_size = snprintf(
69
97
  buf + written_size, len - written_size,
70
- "%s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s\n",
98
+ "%s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s "
99
+ "%s\n",
71
100
  // Note that we skip COMPACTED_FILES and merge it with Files column
72
101
  group_by.c_str(), hdr(LevelStatType::NUM_FILES),
73
102
  hdr(LevelStatType::SIZE_BYTES), hdr(LevelStatType::SCORE),
@@ -78,7 +107,8 @@ void PrintLevelStatsHeader(char* buf, size_t len, const std::string& cf_name,
78
107
  hdr(LevelStatType::WRITE_MBPS), hdr(LevelStatType::COMP_SEC),
79
108
  hdr(LevelStatType::COMP_CPU_SEC), hdr(LevelStatType::COMP_COUNT),
80
109
  hdr(LevelStatType::AVG_SEC), hdr(LevelStatType::KEY_IN),
81
- hdr(LevelStatType::KEY_DROP));
110
+ hdr(LevelStatType::KEY_DROP), hdr(LevelStatType::R_BLOB_GB),
111
+ hdr(LevelStatType::W_BLOB_GB));
82
112
 
83
113
  written_size += line_size;
84
114
  written_size = std::min(written_size, static_cast<int>(len));
@@ -90,10 +120,12 @@ void PrepareLevelStats(std::map<LevelStatType, double>* level_stats,
90
120
  int num_files, int being_compacted,
91
121
  double total_file_size, double score, double w_amp,
92
122
  const InternalStats::CompactionStats& stats) {
93
- uint64_t bytes_read =
94
- stats.bytes_read_non_output_levels + stats.bytes_read_output_level;
95
- int64_t bytes_new = stats.bytes_written - stats.bytes_read_output_level;
96
- double elapsed = (stats.micros + 1) / kMicrosInSec;
123
+ const uint64_t bytes_read = stats.bytes_read_non_output_levels +
124
+ stats.bytes_read_output_level +
125
+ stats.bytes_read_blob;
126
+ const uint64_t bytes_written = stats.bytes_written + stats.bytes_written_blob;
127
+ const int64_t bytes_new = stats.bytes_written - stats.bytes_read_output_level;
128
+ const double elapsed = (stats.micros + 1) / kMicrosInSec;
97
129
 
98
130
  (*level_stats)[LevelStatType::NUM_FILES] = num_files;
99
131
  (*level_stats)[LevelStatType::COMPACTED_FILES] = being_compacted;
@@ -108,8 +140,7 @@ void PrepareLevelStats(std::map<LevelStatType, double>* level_stats,
108
140
  (*level_stats)[LevelStatType::MOVED_GB] = stats.bytes_moved / kGB;
109
141
  (*level_stats)[LevelStatType::WRITE_AMP] = w_amp;
110
142
  (*level_stats)[LevelStatType::READ_MBPS] = bytes_read / kMB / elapsed;
111
- (*level_stats)[LevelStatType::WRITE_MBPS] =
112
- stats.bytes_written / kMB / elapsed;
143
+ (*level_stats)[LevelStatType::WRITE_MBPS] = bytes_written / kMB / elapsed;
113
144
  (*level_stats)[LevelStatType::COMP_SEC] = stats.micros / kMicrosInSec;
114
145
  (*level_stats)[LevelStatType::COMP_CPU_SEC] = stats.cpu_micros / kMicrosInSec;
115
146
  (*level_stats)[LevelStatType::COMP_COUNT] = stats.count;
@@ -119,6 +150,8 @@ void PrepareLevelStats(std::map<LevelStatType, double>* level_stats,
119
150
  static_cast<double>(stats.num_input_records);
120
151
  (*level_stats)[LevelStatType::KEY_DROP] =
121
152
  static_cast<double>(stats.num_dropped_records);
153
+ (*level_stats)[LevelStatType::R_BLOB_GB] = stats.bytes_read_blob / kGB;
154
+ (*level_stats)[LevelStatType::W_BLOB_GB] = stats.bytes_written_blob / kGB;
122
155
  }
123
156
 
124
157
  void PrintLevelStats(char* buf, size_t len, const std::string& name,
@@ -143,7 +176,9 @@ void PrintLevelStats(char* buf, size_t len, const std::string& name,
143
176
  "%9d " /* Comp(cnt) */
144
177
  "%8.3f " /* Avg(sec) */
145
178
  "%7s " /* KeyIn */
146
- "%6s\n", /* KeyDrop */
179
+ "%6s " /* KeyDrop */
180
+ "%9.1f " /* Rblob(GB) */
181
+ "%9.1f\n", /* Wblob(GB) */
147
182
  name.c_str(), static_cast<int>(stat_value.at(LevelStatType::NUM_FILES)),
148
183
  static_cast<int>(stat_value.at(LevelStatType::COMPACTED_FILES)),
149
184
  BytesToHumanString(
@@ -168,7 +203,9 @@ void PrintLevelStats(char* buf, size_t len, const std::string& name,
168
203
  .c_str(),
169
204
  NumberToHumanString(
170
205
  static_cast<std::int64_t>(stat_value.at(LevelStatType::KEY_DROP)))
171
- .c_str());
206
+ .c_str(),
207
+ stat_value.at(LevelStatType::R_BLOB_GB),
208
+ stat_value.at(LevelStatType::W_BLOB_GB));
172
209
  }
173
210
 
174
211
  void PrintLevelStats(char* buf, size_t len, const std::string& name,
@@ -209,6 +246,7 @@ static const std::string cfstats_no_file_histogram =
209
246
  static const std::string cf_file_histogram = "cf-file-histogram";
210
247
  static const std::string dbstats = "dbstats";
211
248
  static const std::string levelstats = "levelstats";
249
+ static const std::string block_cache_entry_stats = "block-cache-entry-stats";
212
250
  static const std::string num_immutable_mem_table = "num-immutable-mem-table";
213
251
  static const std::string num_immutable_mem_table_flushed =
214
252
  "num-immutable-mem-table-flushed";
@@ -245,6 +283,8 @@ static const std::string min_obsolete_sst_number_to_keep_str =
245
283
  static const std::string base_level_str = "base-level";
246
284
  static const std::string total_sst_files_size = "total-sst-files-size";
247
285
  static const std::string live_sst_files_size = "live-sst-files-size";
286
+ static const std::string live_sst_files_size_at_temperature =
287
+ "live-sst-files-size-at-temperature";
248
288
  static const std::string estimate_pending_comp_bytes =
249
289
  "estimate-pending-compaction-bytes";
250
290
  static const std::string aggregated_table_properties =
@@ -261,6 +301,12 @@ static const std::string block_cache_capacity = "block-cache-capacity";
261
301
  static const std::string block_cache_usage = "block-cache-usage";
262
302
  static const std::string block_cache_pinned_usage = "block-cache-pinned-usage";
263
303
  static const std::string options_statistics = "options-statistics";
304
+ static const std::string num_blob_files = "num-blob-files";
305
+ static const std::string blob_stats = "blob-stats";
306
+ static const std::string total_blob_file_size = "total-blob-file-size";
307
+ static const std::string live_blob_file_size = "live-blob-file-size";
308
+ static const std::string live_blob_file_garbage_size =
309
+ "live-blob-file-garbage-size";
264
310
 
265
311
  const std::string DB::Properties::kNumFilesAtLevelPrefix =
266
312
  rocksdb_prefix + num_files_at_level_prefix;
@@ -275,6 +321,8 @@ const std::string DB::Properties::kCFFileHistogram =
275
321
  rocksdb_prefix + cf_file_histogram;
276
322
  const std::string DB::Properties::kDBStats = rocksdb_prefix + dbstats;
277
323
  const std::string DB::Properties::kLevelStats = rocksdb_prefix + levelstats;
324
+ const std::string DB::Properties::kBlockCacheEntryStats =
325
+ rocksdb_prefix + block_cache_entry_stats;
278
326
  const std::string DB::Properties::kNumImmutableMemTable =
279
327
  rocksdb_prefix + num_immutable_mem_table;
280
328
  const std::string DB::Properties::kNumImmutableMemTableFlushed =
@@ -350,8 +398,19 @@ const std::string DB::Properties::kBlockCachePinnedUsage =
350
398
  rocksdb_prefix + block_cache_pinned_usage;
351
399
  const std::string DB::Properties::kOptionsStatistics =
352
400
  rocksdb_prefix + options_statistics;
353
-
354
- const std::unordered_map<std::string, DBPropertyInfo>
401
+ const std::string DB::Properties::kLiveSstFilesSizeAtTemperature =
402
+ rocksdb_prefix + live_sst_files_size_at_temperature;
403
+ const std::string DB::Properties::kNumBlobFiles =
404
+ rocksdb_prefix + num_blob_files;
405
+ const std::string DB::Properties::kBlobStats = rocksdb_prefix + blob_stats;
406
+ const std::string DB::Properties::kTotalBlobFileSize =
407
+ rocksdb_prefix + total_blob_file_size;
408
+ const std::string DB::Properties::kLiveBlobFileSize =
409
+ rocksdb_prefix + live_blob_file_size;
410
+ const std::string DB::Properties::kLiveBlobFileGarbageSize =
411
+ rocksdb_prefix + live_blob_file_garbage_size;
412
+
413
+ const UnorderedMap<std::string, DBPropertyInfo>
355
414
  InternalStats::ppt_name_to_info = {
356
415
  {DB::Properties::kNumFilesAtLevelPrefix,
357
416
  {false, &InternalStats::HandleNumFilesAtLevel, nullptr, nullptr,
@@ -373,7 +432,11 @@ const std::unordered_map<std::string, DBPropertyInfo>
373
432
  {false, &InternalStats::HandleCFFileHistogram, nullptr, nullptr,
374
433
  nullptr}},
375
434
  {DB::Properties::kDBStats,
376
- {false, &InternalStats::HandleDBStats, nullptr, nullptr, nullptr}},
435
+ {false, &InternalStats::HandleDBStats, nullptr,
436
+ &InternalStats::HandleDBMapStats, nullptr}},
437
+ {DB::Properties::kBlockCacheEntryStats,
438
+ {true, &InternalStats::HandleBlockCacheEntryStats, nullptr,
439
+ &InternalStats::HandleBlockCacheEntryStatsMap, nullptr}},
377
440
  {DB::Properties::kSSTables,
378
441
  {false, &InternalStats::HandleSsTables, nullptr, nullptr, nullptr}},
379
442
  {DB::Properties::kAggregatedTableProperties,
@@ -460,6 +523,9 @@ const std::unordered_map<std::string, DBPropertyInfo>
460
523
  {DB::Properties::kLiveSstFilesSize,
461
524
  {false, nullptr, &InternalStats::HandleLiveSstFilesSize, nullptr,
462
525
  nullptr}},
526
+ {DB::Properties::kLiveSstFilesSizeAtTemperature,
527
+ {false, &InternalStats::HandleLiveSstFilesSizeAtTemperature, nullptr,
528
+ nullptr, nullptr}},
463
529
  {DB::Properties::kEstimatePendingCompactionBytes,
464
530
  {false, nullptr, &InternalStats::HandleEstimatePendingCompactionBytes,
465
531
  nullptr, nullptr}},
@@ -488,10 +554,304 @@ const std::unordered_map<std::string, DBPropertyInfo>
488
554
  {false, nullptr, &InternalStats::HandleBlockCachePinnedUsage, nullptr,
489
555
  nullptr}},
490
556
  {DB::Properties::kOptionsStatistics,
491
- {false, nullptr, nullptr, nullptr,
557
+ {true, nullptr, nullptr, nullptr,
492
558
  &DBImpl::GetPropertyHandleOptionsStatistics}},
559
+ {DB::Properties::kNumBlobFiles,
560
+ {false, nullptr, &InternalStats::HandleNumBlobFiles, nullptr,
561
+ nullptr}},
562
+ {DB::Properties::kBlobStats,
563
+ {false, &InternalStats::HandleBlobStats, nullptr, nullptr, nullptr}},
564
+ {DB::Properties::kTotalBlobFileSize,
565
+ {false, nullptr, &InternalStats::HandleTotalBlobFileSize, nullptr,
566
+ nullptr}},
567
+ {DB::Properties::kLiveBlobFileSize,
568
+ {false, nullptr, &InternalStats::HandleLiveBlobFileSize, nullptr,
569
+ nullptr}},
570
+ {DB::Properties::kLiveBlobFileGarbageSize,
571
+ {false, nullptr, &InternalStats::HandleLiveBlobFileGarbageSize,
572
+ nullptr, nullptr}},
493
573
  };
494
574
 
575
+ InternalStats::InternalStats(int num_levels, SystemClock* clock,
576
+ ColumnFamilyData* cfd)
577
+ : db_stats_{},
578
+ cf_stats_value_{},
579
+ cf_stats_count_{},
580
+ comp_stats_(num_levels),
581
+ comp_stats_by_pri_(Env::Priority::TOTAL),
582
+ file_read_latency_(num_levels),
583
+ bg_error_count_(0),
584
+ number_levels_(num_levels),
585
+ clock_(clock),
586
+ cfd_(cfd),
587
+ started_at_(clock->NowMicros()) {
588
+ Cache* block_cache = nullptr;
589
+ bool ok = GetBlockCacheForStats(&block_cache);
590
+ if (ok) {
591
+ assert(block_cache);
592
+ // Extract or create stats collector. Could fail in rare cases.
593
+ Status s = CacheEntryStatsCollector<CacheEntryRoleStats>::GetShared(
594
+ block_cache, clock_, &cache_entry_stats_collector_);
595
+ if (s.ok()) {
596
+ assert(cache_entry_stats_collector_);
597
+ } else {
598
+ assert(!cache_entry_stats_collector_);
599
+ }
600
+ } else {
601
+ assert(!block_cache);
602
+ }
603
+ }
604
+
605
+ void InternalStats::TEST_GetCacheEntryRoleStats(CacheEntryRoleStats* stats,
606
+ bool foreground) {
607
+ CollectCacheEntryStats(foreground);
608
+ if (cache_entry_stats_collector_) {
609
+ cache_entry_stats_collector_->GetStats(stats);
610
+ }
611
+ }
612
+
613
+ void InternalStats::CollectCacheEntryStats(bool foreground) {
614
+ // This function is safe to call from any thread because
615
+ // cache_entry_stats_collector_ field is const after constructor
616
+ // and ->GetStats does its own synchronization, which also suffices for
617
+ // cache_entry_stats_.
618
+
619
+ if (!cache_entry_stats_collector_) {
620
+ return; // nothing to do (e.g. no block cache)
621
+ }
622
+
623
+ // For "background" collections, strictly cap the collection time by
624
+ // expanding effective cache TTL. For foreground, be more aggressive about
625
+ // getting latest data.
626
+ int min_interval_seconds = foreground ? 10 : 180;
627
+ // 1/500 = max of 0.2% of one CPU thread
628
+ int min_interval_factor = foreground ? 10 : 500;
629
+ cache_entry_stats_collector_->CollectStats(min_interval_seconds,
630
+ min_interval_factor);
631
+ }
632
+
633
+ std::function<void(const Slice&, void*, size_t, Cache::DeleterFn)>
634
+ InternalStats::CacheEntryRoleStats::GetEntryCallback() {
635
+ return [&](const Slice& /*key*/, void* /*value*/, size_t charge,
636
+ Cache::DeleterFn deleter) {
637
+ auto e = role_map_.find(deleter);
638
+ size_t role_idx;
639
+ if (e == role_map_.end()) {
640
+ role_idx = static_cast<size_t>(CacheEntryRole::kMisc);
641
+ } else {
642
+ role_idx = static_cast<size_t>(e->second);
643
+ }
644
+ entry_counts[role_idx]++;
645
+ total_charges[role_idx] += charge;
646
+ };
647
+ }
648
+
649
+ void InternalStats::CacheEntryRoleStats::BeginCollection(
650
+ Cache* cache, SystemClock*, uint64_t start_time_micros) {
651
+ Clear();
652
+ last_start_time_micros_ = start_time_micros;
653
+ ++collection_count;
654
+ role_map_ = CopyCacheDeleterRoleMap();
655
+ std::ostringstream str;
656
+ str << cache->Name() << "@" << static_cast<void*>(cache) << "#"
657
+ << port::GetProcessID();
658
+ cache_id = str.str();
659
+ cache_capacity = cache->GetCapacity();
660
+ }
661
+
662
+ void InternalStats::CacheEntryRoleStats::EndCollection(
663
+ Cache*, SystemClock*, uint64_t end_time_micros) {
664
+ last_end_time_micros_ = end_time_micros;
665
+ }
666
+
667
+ void InternalStats::CacheEntryRoleStats::SkippedCollection() {
668
+ ++copies_of_last_collection;
669
+ }
670
+
671
+ uint64_t InternalStats::CacheEntryRoleStats::GetLastDurationMicros() const {
672
+ if (last_end_time_micros_ > last_start_time_micros_) {
673
+ return last_end_time_micros_ - last_start_time_micros_;
674
+ } else {
675
+ return 0U;
676
+ }
677
+ }
678
+
679
+ std::string InternalStats::CacheEntryRoleStats::ToString(
680
+ SystemClock* clock) const {
681
+ std::ostringstream str;
682
+ str << "Block cache " << cache_id
683
+ << " capacity: " << BytesToHumanString(cache_capacity)
684
+ << " collections: " << collection_count
685
+ << " last_copies: " << copies_of_last_collection
686
+ << " last_secs: " << (GetLastDurationMicros() / 1000000.0)
687
+ << " secs_since: "
688
+ << ((clock->NowMicros() - last_end_time_micros_) / 1000000U) << "\n";
689
+ str << "Block cache entry stats(count,size,portion):";
690
+ for (size_t i = 0; i < kNumCacheEntryRoles; ++i) {
691
+ if (entry_counts[i] > 0) {
692
+ str << " " << kCacheEntryRoleToCamelString[i] << "(" << entry_counts[i]
693
+ << "," << BytesToHumanString(total_charges[i]) << ","
694
+ << (100.0 * total_charges[i] / cache_capacity) << "%)";
695
+ }
696
+ }
697
+ str << "\n";
698
+ return str.str();
699
+ }
700
+
701
+ void InternalStats::CacheEntryRoleStats::ToMap(
702
+ std::map<std::string, std::string>* values, SystemClock* clock) const {
703
+ values->clear();
704
+ auto& v = *values;
705
+ v[BlockCacheEntryStatsMapKeys::CacheId()] = cache_id;
706
+ v[BlockCacheEntryStatsMapKeys::CacheCapacityBytes()] =
707
+ ROCKSDB_NAMESPACE::ToString(cache_capacity);
708
+ v[BlockCacheEntryStatsMapKeys::LastCollectionDurationSeconds()] =
709
+ ROCKSDB_NAMESPACE::ToString(GetLastDurationMicros() / 1000000.0);
710
+ v[BlockCacheEntryStatsMapKeys::LastCollectionAgeSeconds()] =
711
+ ROCKSDB_NAMESPACE::ToString((clock->NowMicros() - last_end_time_micros_) /
712
+ 1000000U);
713
+ for (size_t i = 0; i < kNumCacheEntryRoles; ++i) {
714
+ auto role = static_cast<CacheEntryRole>(i);
715
+ v[BlockCacheEntryStatsMapKeys::EntryCount(role)] =
716
+ ROCKSDB_NAMESPACE::ToString(entry_counts[i]);
717
+ v[BlockCacheEntryStatsMapKeys::UsedBytes(role)] =
718
+ ROCKSDB_NAMESPACE::ToString(total_charges[i]);
719
+ v[BlockCacheEntryStatsMapKeys::UsedPercent(role)] =
720
+ ROCKSDB_NAMESPACE::ToString(100.0 * total_charges[i] / cache_capacity);
721
+ }
722
+ }
723
+
724
+ bool InternalStats::HandleBlockCacheEntryStats(std::string* value,
725
+ Slice /*suffix*/) {
726
+ if (!cache_entry_stats_collector_) {
727
+ return false;
728
+ }
729
+ CollectCacheEntryStats(/*foreground*/ true);
730
+ CacheEntryRoleStats stats;
731
+ cache_entry_stats_collector_->GetStats(&stats);
732
+ *value = stats.ToString(clock_);
733
+ return true;
734
+ }
735
+
736
+ bool InternalStats::HandleBlockCacheEntryStatsMap(
737
+ std::map<std::string, std::string>* values, Slice /*suffix*/) {
738
+ if (!cache_entry_stats_collector_) {
739
+ return false;
740
+ }
741
+ CollectCacheEntryStats(/*foreground*/ true);
742
+ CacheEntryRoleStats stats;
743
+ cache_entry_stats_collector_->GetStats(&stats);
744
+ stats.ToMap(values, clock_);
745
+ return true;
746
+ }
747
+
748
+ bool InternalStats::HandleLiveSstFilesSizeAtTemperature(std::string* value,
749
+ Slice suffix) {
750
+ uint64_t temperature;
751
+ bool ok = ConsumeDecimalNumber(&suffix, &temperature) && suffix.empty();
752
+ if (!ok) {
753
+ return false;
754
+ }
755
+
756
+ uint64_t size = 0;
757
+ const auto* vstorage = cfd_->current()->storage_info();
758
+ for (int level = 0; level < vstorage->num_levels(); level++) {
759
+ for (const auto& file_meta : vstorage->LevelFiles(level)) {
760
+ if (static_cast<uint8_t>(file_meta->temperature) == temperature) {
761
+ size += file_meta->fd.GetFileSize();
762
+ }
763
+ }
764
+ }
765
+
766
+ *value = ToString(size);
767
+ return true;
768
+ }
769
+
770
+ bool InternalStats::HandleNumBlobFiles(uint64_t* value, DBImpl* /*db*/,
771
+ Version* /*version*/) {
772
+ assert(value);
773
+ assert(cfd_);
774
+
775
+ const auto* current = cfd_->current();
776
+ assert(current);
777
+
778
+ const auto* vstorage = current->storage_info();
779
+ assert(vstorage);
780
+
781
+ const auto& blob_files = vstorage->GetBlobFiles();
782
+
783
+ *value = blob_files.size();
784
+
785
+ return true;
786
+ }
787
+
788
+ bool InternalStats::HandleBlobStats(std::string* value, Slice /*suffix*/) {
789
+ assert(value);
790
+ assert(cfd_);
791
+
792
+ const auto* current = cfd_->current();
793
+ assert(current);
794
+
795
+ const auto* vstorage = current->storage_info();
796
+ assert(vstorage);
797
+
798
+ const auto blob_st = vstorage->GetBlobStats();
799
+
800
+ std::ostringstream oss;
801
+
802
+ oss << "Number of blob files: " << vstorage->GetBlobFiles().size()
803
+ << "\nTotal size of blob files: " << blob_st.total_file_size
804
+ << "\nTotal size of garbage in blob files: " << blob_st.total_garbage_size
805
+ << "\nBlob file space amplification: " << blob_st.space_amp << '\n';
806
+
807
+ value->append(oss.str());
808
+
809
+ return true;
810
+ }
811
+
812
+ bool InternalStats::HandleTotalBlobFileSize(uint64_t* value, DBImpl* /*db*/,
813
+ Version* /*version*/) {
814
+ assert(value);
815
+ assert(cfd_);
816
+
817
+ *value = cfd_->GetTotalBlobFileSize();
818
+
819
+ return true;
820
+ }
821
+
822
+ bool InternalStats::HandleLiveBlobFileSize(uint64_t* value, DBImpl* /*db*/,
823
+ Version* /*version*/) {
824
+ assert(value);
825
+ assert(cfd_);
826
+
827
+ const auto* current = cfd_->current();
828
+ assert(current);
829
+
830
+ const auto* vstorage = current->storage_info();
831
+ assert(vstorage);
832
+
833
+ *value = vstorage->GetBlobStats().total_file_size;
834
+
835
+ return true;
836
+ }
837
+
838
+ bool InternalStats::HandleLiveBlobFileGarbageSize(uint64_t* value,
839
+ DBImpl* /*db*/,
840
+ Version* /*version*/) {
841
+ assert(value);
842
+ assert(cfd_);
843
+
844
+ const auto* current = cfd_->current();
845
+ assert(current);
846
+
847
+ const auto* vstorage = current->storage_info();
848
+ assert(vstorage);
849
+
850
+ *value = vstorage->GetBlobStats().total_garbage_size;
851
+
852
+ return true;
853
+ }
854
+
495
855
  const DBPropertyInfo* GetPropertyInfo(const Slice& property) {
496
856
  std::string ppt_name = GetPropertyNameAndArg(property).first.ToString();
497
857
  auto ppt_info_iter = InternalStats::ppt_name_to_info.find(ppt_name);
@@ -614,6 +974,12 @@ bool InternalStats::HandleCFFileHistogram(std::string* value,
614
974
  return true;
615
975
  }
616
976
 
977
+ bool InternalStats::HandleDBMapStats(
978
+ std::map<std::string, std::string>* db_stats, Slice /*suffix*/) {
979
+ DumpDBMapStats(db_stats);
980
+ return true;
981
+ }
982
+
617
983
  bool InternalStats::HandleDBStats(std::string* value, Slice /*suffix*/) {
618
984
  DumpDBStats(value);
619
985
  return true;
@@ -740,21 +1106,24 @@ bool InternalStats::HandleBackgroundErrors(uint64_t* value, DBImpl* /*db*/,
740
1106
  bool InternalStats::HandleCurSizeActiveMemTable(uint64_t* value, DBImpl* /*db*/,
741
1107
  Version* /*version*/) {
742
1108
  // Current size of the active memtable
743
- *value = cfd_->mem()->ApproximateMemoryUsage();
1109
+ // Using ApproximateMemoryUsageFast to avoid the need for synchronization
1110
+ *value = cfd_->mem()->ApproximateMemoryUsageFast();
744
1111
  return true;
745
1112
  }
746
1113
 
747
1114
  bool InternalStats::HandleCurSizeAllMemTables(uint64_t* value, DBImpl* /*db*/,
748
1115
  Version* /*version*/) {
749
1116
  // Current size of the active memtable + immutable memtables
750
- *value = cfd_->mem()->ApproximateMemoryUsage() +
1117
+ // Using ApproximateMemoryUsageFast to avoid the need for synchronization
1118
+ *value = cfd_->mem()->ApproximateMemoryUsageFast() +
751
1119
  cfd_->imm()->ApproximateUnflushedMemTablesMemoryUsage();
752
1120
  return true;
753
1121
  }
754
1122
 
755
1123
  bool InternalStats::HandleSizeAllMemTables(uint64_t* value, DBImpl* /*db*/,
756
1124
  Version* /*version*/) {
757
- *value = cfd_->mem()->ApproximateMemoryUsage() +
1125
+ // Using ApproximateMemoryUsageFast to avoid the need for synchronization
1126
+ *value = cfd_->mem()->ApproximateMemoryUsageFast() +
758
1127
  cfd_->imm()->ApproximateMemoryUsage();
759
1128
  return true;
760
1129
  }
@@ -945,9 +1314,9 @@ bool InternalStats::HandleEstimateOldestKeyTime(uint64_t* value, DBImpl* /*db*/,
945
1314
  return *value > 0 && *value < std::numeric_limits<uint64_t>::max();
946
1315
  }
947
1316
 
948
- bool InternalStats::HandleBlockCacheStat(Cache** block_cache) {
1317
+ bool InternalStats::GetBlockCacheForStats(Cache** block_cache) {
949
1318
  assert(block_cache != nullptr);
950
- auto* table_factory = cfd_->ioptions()->table_factory;
1319
+ auto* table_factory = cfd_->ioptions()->table_factory.get();
951
1320
  assert(table_factory != nullptr);
952
1321
  *block_cache =
953
1322
  table_factory->GetOptions<Cache>(TableFactory::kBlockCacheOpts());
@@ -957,7 +1326,7 @@ bool InternalStats::HandleBlockCacheStat(Cache** block_cache) {
957
1326
  bool InternalStats::HandleBlockCacheCapacity(uint64_t* value, DBImpl* /*db*/,
958
1327
  Version* /*version*/) {
959
1328
  Cache* block_cache;
960
- bool ok = HandleBlockCacheStat(&block_cache);
1329
+ bool ok = GetBlockCacheForStats(&block_cache);
961
1330
  if (!ok) {
962
1331
  return false;
963
1332
  }
@@ -968,7 +1337,7 @@ bool InternalStats::HandleBlockCacheCapacity(uint64_t* value, DBImpl* /*db*/,
968
1337
  bool InternalStats::HandleBlockCacheUsage(uint64_t* value, DBImpl* /*db*/,
969
1338
  Version* /*version*/) {
970
1339
  Cache* block_cache;
971
- bool ok = HandleBlockCacheStat(&block_cache);
1340
+ bool ok = GetBlockCacheForStats(&block_cache);
972
1341
  if (!ok) {
973
1342
  return false;
974
1343
  }
@@ -979,7 +1348,7 @@ bool InternalStats::HandleBlockCacheUsage(uint64_t* value, DBImpl* /*db*/,
979
1348
  bool InternalStats::HandleBlockCachePinnedUsage(uint64_t* value, DBImpl* /*db*/,
980
1349
  Version* /*version*/) {
981
1350
  Cache* block_cache;
982
- bool ok = HandleBlockCacheStat(&block_cache);
1351
+ bool ok = GetBlockCacheForStats(&block_cache);
983
1352
  if (!ok) {
984
1353
  return false;
985
1354
  }
@@ -987,10 +1356,21 @@ bool InternalStats::HandleBlockCachePinnedUsage(uint64_t* value, DBImpl* /*db*/,
987
1356
  return true;
988
1357
  }
989
1358
 
1359
+ void InternalStats::DumpDBMapStats(
1360
+ std::map<std::string, std::string>* db_stats) {
1361
+ for (int i = 0; i < static_cast<int>(kIntStatsNumMax); ++i) {
1362
+ InternalDBStatsType type = static_cast<InternalDBStatsType>(i);
1363
+ (*db_stats)[db_stats_type_to_info.at(type).property_name] =
1364
+ std::to_string(GetDBStats(type));
1365
+ }
1366
+ double seconds_up = (clock_->NowMicros() - started_at_) / kMicrosInSec;
1367
+ (*db_stats)["db.uptime"] = std::to_string(seconds_up);
1368
+ }
1369
+
990
1370
  void InternalStats::DumpDBStats(std::string* value) {
991
1371
  char buf[1000];
992
1372
  // DB-level stats, only available from default column family
993
- double seconds_up = (env_->NowMicros() - started_at_ + 1) / kMicrosInSec;
1373
+ double seconds_up = (clock_->NowMicros() - started_at_) / kMicrosInSec;
994
1374
  double interval_seconds_up = seconds_up - db_stats_snapshot_.seconds_up;
995
1375
  snprintf(buf, sizeof(buf),
996
1376
  "\n** DB Stats **\nUptime(secs): %.1f total, %.1f interval\n",
@@ -1027,8 +1407,10 @@ void InternalStats::DumpDBStats(std::string* value) {
1027
1407
  NumberToHumanString(write_other + write_self).c_str(),
1028
1408
  NumberToHumanString(num_keys_written).c_str(),
1029
1409
  NumberToHumanString(write_self).c_str(),
1030
- (write_other + write_self) / static_cast<double>(write_self + 1),
1031
- user_bytes_written / kGB, user_bytes_written / kMB / seconds_up);
1410
+ (write_other + write_self) /
1411
+ std::max(1.0, static_cast<double>(write_self)),
1412
+ user_bytes_written / kGB,
1413
+ user_bytes_written / kMB / std::max(seconds_up, 0.001));
1032
1414
  value->append(buf);
1033
1415
  // WAL
1034
1416
  snprintf(buf, sizeof(buf),
@@ -1036,8 +1418,8 @@ void InternalStats::DumpDBStats(std::string* value) {
1036
1418
  "%.2f writes per sync, written: %.2f GB, %.2f MB/s\n",
1037
1419
  NumberToHumanString(write_with_wal).c_str(),
1038
1420
  NumberToHumanString(wal_synced).c_str(),
1039
- write_with_wal / static_cast<double>(wal_synced + 1),
1040
- wal_bytes / kGB, wal_bytes / kMB / seconds_up);
1421
+ write_with_wal / std::max(1.0, static_cast<double>(wal_synced)),
1422
+ wal_bytes / kGB, wal_bytes / kMB / std::max(seconds_up, 0.001));
1041
1423
  value->append(buf);
1042
1424
  // Stall
1043
1425
  AppendHumanMicros(write_stall_micros, human_micros, kHumanMicrosLen, true);
@@ -1060,7 +1442,7 @@ void InternalStats::DumpDBStats(std::string* value) {
1060
1442
  NumberToHumanString(interval_num_keys_written).c_str(),
1061
1443
  NumberToHumanString(interval_write_self).c_str(),
1062
1444
  static_cast<double>(interval_write_other + interval_write_self) /
1063
- (interval_write_self + 1),
1445
+ std::max(1.0, static_cast<double>(interval_write_self)),
1064
1446
  (user_bytes_written - db_stats_snapshot_.ingest_bytes) / kMB,
1065
1447
  (user_bytes_written - db_stats_snapshot_.ingest_bytes) / kMB /
1066
1448
  std::max(interval_seconds_up, 0.001)),
@@ -1071,15 +1453,15 @@ void InternalStats::DumpDBStats(std::string* value) {
1071
1453
  uint64_t interval_wal_synced = wal_synced - db_stats_snapshot_.wal_synced;
1072
1454
  uint64_t interval_wal_bytes = wal_bytes - db_stats_snapshot_.wal_bytes;
1073
1455
 
1074
- snprintf(
1075
- buf, sizeof(buf),
1076
- "Interval WAL: %s writes, %s syncs, "
1077
- "%.2f writes per sync, written: %.2f MB, %.2f MB/s\n",
1078
- NumberToHumanString(interval_write_with_wal).c_str(),
1079
- NumberToHumanString(interval_wal_synced).c_str(),
1080
- interval_write_with_wal / static_cast<double>(interval_wal_synced + 1),
1081
- interval_wal_bytes / kGB,
1082
- interval_wal_bytes / kMB / std::max(interval_seconds_up, 0.001));
1456
+ snprintf(buf, sizeof(buf),
1457
+ "Interval WAL: %s writes, %s syncs, "
1458
+ "%.2f writes per sync, written: %.2f GB, %.2f MB/s\n",
1459
+ NumberToHumanString(interval_write_with_wal).c_str(),
1460
+ NumberToHumanString(interval_wal_synced).c_str(),
1461
+ interval_write_with_wal /
1462
+ std::max(1.0, static_cast<double>(interval_wal_synced)),
1463
+ interval_wal_bytes / kGB,
1464
+ interval_wal_bytes / kMB / std::max(interval_seconds_up, 0.001));
1083
1465
  value->append(buf);
1084
1466
 
1085
1467
  // Stall
@@ -1112,9 +1494,10 @@ void InternalStats::DumpDBStats(std::string* value) {
1112
1494
  */
1113
1495
  void InternalStats::DumpCFMapStats(
1114
1496
  std::map<std::string, std::string>* cf_stats) {
1497
+ const VersionStorageInfo* vstorage = cfd_->current()->storage_info();
1115
1498
  CompactionStats compaction_stats_sum;
1116
1499
  std::map<int, std::map<LevelStatType, double>> levels_stats;
1117
- DumpCFMapStats(&levels_stats, &compaction_stats_sum);
1500
+ DumpCFMapStats(vstorage, &levels_stats, &compaction_stats_sum);
1118
1501
  for (auto const& level_ent : levels_stats) {
1119
1502
  auto level_str =
1120
1503
  level_ent.first == -1 ? "Sum" : "L" + ToString(level_ent.first);
@@ -1131,9 +1514,10 @@ void InternalStats::DumpCFMapStats(
1131
1514
  }
1132
1515
 
1133
1516
  void InternalStats::DumpCFMapStats(
1517
+ const VersionStorageInfo* vstorage,
1134
1518
  std::map<int, std::map<LevelStatType, double>>* levels_stats,
1135
1519
  CompactionStats* compaction_stats_sum) {
1136
- const VersionStorageInfo* vstorage = cfd_->current()->storage_info();
1520
+ assert(vstorage);
1137
1521
 
1138
1522
  int num_levels_to_check =
1139
1523
  (cfd_->ioptions()->compaction_style != kCompactionStyleFIFO)
@@ -1174,12 +1558,14 @@ void InternalStats::DumpCFMapStats(
1174
1558
  if (level == 0) {
1175
1559
  input_bytes = curr_ingest;
1176
1560
  } else {
1177
- input_bytes = comp_stats_[level].bytes_read_non_output_levels;
1561
+ input_bytes = comp_stats_[level].bytes_read_non_output_levels +
1562
+ comp_stats_[level].bytes_read_blob;
1178
1563
  }
1179
1564
  double w_amp =
1180
1565
  (input_bytes == 0)
1181
1566
  ? 0.0
1182
- : static_cast<double>(comp_stats_[level].bytes_written) /
1567
+ : static_cast<double>(comp_stats_[level].bytes_written +
1568
+ comp_stats_[level].bytes_written_blob) /
1183
1569
  input_bytes;
1184
1570
  std::map<LevelStatType, double> level_stats;
1185
1571
  PrepareLevelStats(&level_stats, files, files_being_compacted[level],
@@ -1189,8 +1575,11 @@ void InternalStats::DumpCFMapStats(
1189
1575
  }
1190
1576
  }
1191
1577
  // Cumulative summary
1192
- double w_amp = compaction_stats_sum->bytes_written /
1193
- static_cast<double>(curr_ingest + 1);
1578
+ double w_amp = (0 == curr_ingest)
1579
+ ? 0.0
1580
+ : (compaction_stats_sum->bytes_written +
1581
+ compaction_stats_sum->bytes_written_blob) /
1582
+ static_cast<double>(curr_ingest);
1194
1583
  // Stats summary across levels
1195
1584
  std::map<LevelStatType, double> sum_stats;
1196
1585
  PrepareLevelStats(&sum_stats, total_files, total_files_being_compacted,
@@ -1256,9 +1645,10 @@ void InternalStats::DumpCFStatsNoFileHistogram(std::string* value) {
1256
1645
  value->append(buf);
1257
1646
 
1258
1647
  // Print stats for each level
1648
+ const VersionStorageInfo* vstorage = cfd_->current()->storage_info();
1259
1649
  std::map<int, std::map<LevelStatType, double>> levels_stats;
1260
1650
  CompactionStats compaction_stats_sum;
1261
- DumpCFMapStats(&levels_stats, &compaction_stats_sum);
1651
+ DumpCFMapStats(vstorage, &levels_stats, &compaction_stats_sum);
1262
1652
  for (int l = 0; l < number_levels_; ++l) {
1263
1653
  if (levels_stats.find(l) != levels_stats.end()) {
1264
1654
  PrintLevelStats(buf, sizeof(buf), "L" + ToString(l), levels_stats[l]);
@@ -1294,7 +1684,8 @@ void InternalStats::DumpCFStatsNoFileHistogram(std::string* value) {
1294
1684
  CompactionStats interval_stats(compaction_stats_sum);
1295
1685
  interval_stats.Subtract(cf_stats_snapshot_.comp_stats);
1296
1686
  double w_amp =
1297
- interval_stats.bytes_written / static_cast<double>(interval_ingest);
1687
+ (interval_stats.bytes_written + interval_stats.bytes_written_blob) /
1688
+ static_cast<double>(interval_ingest);
1298
1689
  PrintLevelStats(buf, sizeof(buf), "Int", 0, 0, 0, 0, w_amp, interval_stats);
1299
1690
  value->append(buf);
1300
1691
 
@@ -1313,7 +1704,17 @@ void InternalStats::DumpCFStatsNoFileHistogram(std::string* value) {
1313
1704
  }
1314
1705
  }
1315
1706
 
1316
- double seconds_up = (env_->NowMicros() - started_at_ + 1) / kMicrosInSec;
1707
+ const auto blob_st = vstorage->GetBlobStats();
1708
+
1709
+ snprintf(buf, sizeof(buf),
1710
+ "\nBlob file count: %" ROCKSDB_PRIszt
1711
+ ", total size: %.1f GB, garbage size: %.1f GB, space amp: %.1f\n\n",
1712
+ vstorage->GetBlobFiles().size(), blob_st.total_file_size / kGB,
1713
+ blob_st.total_garbage_size / kGB, blob_st.space_amp);
1714
+ value->append(buf);
1715
+
1716
+ uint64_t now_micros = clock_->NowMicros();
1717
+ double seconds_up = (now_micros - started_at_) / kMicrosInSec;
1317
1718
  double interval_seconds_up = seconds_up - cf_stats_snapshot_.seconds_up;
1318
1719
  snprintf(buf, sizeof(buf), "Uptime(secs): %.1f total, %.1f interval\n",
1319
1720
  seconds_up, interval_seconds_up);
@@ -1353,16 +1754,20 @@ void InternalStats::DumpCFStatsNoFileHistogram(std::string* value) {
1353
1754
  uint64_t compact_micros = 0;
1354
1755
  for (int level = 0; level < number_levels_; level++) {
1355
1756
  compact_bytes_read += comp_stats_[level].bytes_read_output_level +
1356
- comp_stats_[level].bytes_read_non_output_levels;
1357
- compact_bytes_write += comp_stats_[level].bytes_written;
1757
+ comp_stats_[level].bytes_read_non_output_levels +
1758
+ comp_stats_[level].bytes_read_blob;
1759
+ compact_bytes_write += comp_stats_[level].bytes_written +
1760
+ comp_stats_[level].bytes_written_blob;
1358
1761
  compact_micros += comp_stats_[level].micros;
1359
1762
  }
1360
1763
 
1361
1764
  snprintf(buf, sizeof(buf),
1362
1765
  "Cumulative compaction: %.2f GB write, %.2f MB/s write, "
1363
1766
  "%.2f GB read, %.2f MB/s read, %.1f seconds\n",
1364
- compact_bytes_write / kGB, compact_bytes_write / kMB / seconds_up,
1365
- compact_bytes_read / kGB, compact_bytes_read / kMB / seconds_up,
1767
+ compact_bytes_write / kGB,
1768
+ compact_bytes_write / kMB / std::max(seconds_up, 0.001),
1769
+ compact_bytes_read / kGB,
1770
+ compact_bytes_read / kMB / std::max(seconds_up, 0.001),
1366
1771
  compact_micros / kMicrosInSec);
1367
1772
  value->append(buf);
1368
1773
 
@@ -1425,6 +1830,22 @@ void InternalStats::DumpCFStatsNoFileHistogram(std::string* value) {
1425
1830
  cf_stats_snapshot_.ingest_keys_addfile = ingest_keys_addfile;
1426
1831
  cf_stats_snapshot_.comp_stats = compaction_stats_sum;
1427
1832
  cf_stats_snapshot_.stall_count = total_stall_count;
1833
+
1834
+ // Do not gather cache entry stats during CFStats because DB
1835
+ // mutex is held. Only dump last cached collection (rely on DB
1836
+ // periodic stats dump to update)
1837
+ if (cache_entry_stats_collector_) {
1838
+ CacheEntryRoleStats stats;
1839
+ // thread safe
1840
+ cache_entry_stats_collector_->GetStats(&stats);
1841
+
1842
+ constexpr uint64_t kDayInMicros = uint64_t{86400} * 1000000U;
1843
+
1844
+ // Skip if stats are extremely old (> 1 day, incl not yet populated)
1845
+ if (now_micros - stats.last_end_time_micros_ < kDayInMicros) {
1846
+ value->append(stats.ToString(clock_));
1847
+ }
1848
+ }
1428
1849
  }
1429
1850
 
1430
1851
  void InternalStats::DumpCFFileHistogram(std::string* value) {