@nxtedition/rocksdb 5.2.21 → 5.2.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (923) hide show
  1. package/binding.cc +510 -967
  2. package/binding.gyp +78 -72
  3. package/chained-batch.js +1 -2
  4. package/deps/rocksdb/build_version.cc +70 -4
  5. package/deps/rocksdb/rocksdb/CMakeLists.txt +281 -149
  6. package/deps/rocksdb/rocksdb/Makefile +459 -469
  7. package/deps/rocksdb/rocksdb/TARGETS +5244 -1500
  8. package/deps/rocksdb/rocksdb/cache/cache.cc +12 -3
  9. package/deps/rocksdb/rocksdb/cache/cache_bench.cc +7 -368
  10. package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +924 -0
  11. package/deps/rocksdb/rocksdb/cache/cache_entry_roles.cc +128 -0
  12. package/deps/rocksdb/rocksdb/cache/cache_entry_roles.h +103 -0
  13. package/deps/rocksdb/rocksdb/cache/cache_entry_stats.h +183 -0
  14. package/deps/rocksdb/rocksdb/cache/cache_helpers.h +11 -0
  15. package/deps/rocksdb/rocksdb/cache/cache_key.cc +344 -0
  16. package/deps/rocksdb/rocksdb/cache/cache_key.h +132 -0
  17. package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.cc +183 -0
  18. package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.h +288 -0
  19. package/deps/rocksdb/rocksdb/cache/cache_reservation_manager_test.cc +468 -0
  20. package/deps/rocksdb/rocksdb/cache/cache_test.cc +85 -8
  21. package/deps/rocksdb/rocksdb/cache/clock_cache.cc +121 -51
  22. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +171 -0
  23. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +86 -0
  24. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +607 -0
  25. package/deps/rocksdb/rocksdb/cache/lru_cache.cc +381 -154
  26. package/deps/rocksdb/rocksdb/cache/lru_cache.h +176 -33
  27. package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +1659 -3
  28. package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +94 -23
  29. package/deps/rocksdb/rocksdb/cache/sharded_cache.h +49 -28
  30. package/deps/rocksdb/rocksdb/cmake/modules/CxxFlags.cmake +7 -0
  31. package/deps/rocksdb/rocksdb/cmake/modules/FindJeMalloc.cmake +29 -0
  32. package/deps/rocksdb/rocksdb/cmake/modules/FindNUMA.cmake +29 -0
  33. package/deps/rocksdb/rocksdb/cmake/modules/FindSnappy.cmake +29 -0
  34. package/deps/rocksdb/rocksdb/cmake/modules/FindTBB.cmake +33 -0
  35. package/deps/rocksdb/rocksdb/cmake/modules/Findgflags.cmake +29 -0
  36. package/deps/rocksdb/rocksdb/cmake/modules/Findlz4.cmake +29 -0
  37. package/deps/rocksdb/rocksdb/cmake/modules/Finduring.cmake +26 -0
  38. package/deps/rocksdb/rocksdb/cmake/modules/Findzstd.cmake +29 -0
  39. package/deps/rocksdb/rocksdb/cmake/modules/ReadVersion.cmake +10 -0
  40. package/deps/rocksdb/rocksdb/crash_test.mk +93 -0
  41. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +54 -31
  42. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +10 -6
  43. package/deps/rocksdb/rocksdb/db/blob/blob_counting_iterator.h +146 -0
  44. package/deps/rocksdb/rocksdb/db/blob/blob_counting_iterator_test.cc +326 -0
  45. package/deps/rocksdb/rocksdb/db/blob/blob_fetcher.cc +34 -0
  46. package/deps/rocksdb/rocksdb/db/blob/blob_fetcher.h +37 -0
  47. package/deps/rocksdb/rocksdb/db/blob/blob_file_addition.cc +4 -2
  48. package/deps/rocksdb/rocksdb/db/blob/blob_file_addition_test.cc +8 -4
  49. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +99 -40
  50. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.h +20 -8
  51. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +95 -83
  52. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.cc +13 -10
  53. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.h +7 -4
  54. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache_test.cc +37 -37
  55. package/deps/rocksdb/rocksdb/db/blob/blob_file_completion_callback.h +101 -0
  56. package/deps/rocksdb/rocksdb/db/blob/blob_file_meta.cc +8 -1
  57. package/deps/rocksdb/rocksdb/db/blob/blob_file_meta.h +6 -0
  58. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +209 -44
  59. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +37 -11
  60. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +382 -179
  61. package/deps/rocksdb/rocksdb/db/blob/blob_garbage_meter.cc +100 -0
  62. package/deps/rocksdb/rocksdb/db/blob/blob_garbage_meter.h +102 -0
  63. package/deps/rocksdb/rocksdb/db/blob/blob_garbage_meter_test.cc +196 -0
  64. package/deps/rocksdb/rocksdb/db/blob/blob_index.h +3 -0
  65. package/deps/rocksdb/rocksdb/db/blob/blob_log_format.h +2 -1
  66. package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.cc +7 -5
  67. package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.h +10 -3
  68. package/deps/rocksdb/rocksdb/db/blob/blob_log_writer.cc +12 -8
  69. package/deps/rocksdb/rocksdb/db/blob/blob_log_writer.h +5 -5
  70. package/deps/rocksdb/rocksdb/db/blob/db_blob_basic_test.cc +772 -9
  71. package/deps/rocksdb/rocksdb/db/blob/db_blob_compaction_test.cc +730 -0
  72. package/deps/rocksdb/rocksdb/db/blob/db_blob_corruption_test.cc +82 -0
  73. package/deps/rocksdb/rocksdb/db/blob/db_blob_index_test.cc +155 -17
  74. package/deps/rocksdb/rocksdb/db/blob/prefetch_buffer_collection.cc +21 -0
  75. package/deps/rocksdb/rocksdb/db/blob/prefetch_buffer_collection.h +38 -0
  76. package/deps/rocksdb/rocksdb/db/builder.cc +137 -89
  77. package/deps/rocksdb/rocksdb/db/builder.h +16 -37
  78. package/deps/rocksdb/rocksdb/db/c.cc +413 -208
  79. package/deps/rocksdb/rocksdb/db/c_test.c +227 -138
  80. package/deps/rocksdb/rocksdb/db/column_family.cc +118 -103
  81. package/deps/rocksdb/rocksdb/db/column_family.h +86 -44
  82. package/deps/rocksdb/rocksdb/db/column_family_test.cc +38 -24
  83. package/deps/rocksdb/rocksdb/db/compact_files_test.cc +81 -0
  84. package/deps/rocksdb/rocksdb/db/compaction/clipping_iterator.h +275 -0
  85. package/deps/rocksdb/rocksdb/db/compaction/clipping_iterator_test.cc +258 -0
  86. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +81 -28
  87. package/deps/rocksdb/rocksdb/db/compaction/compaction.h +43 -12
  88. package/deps/rocksdb/rocksdb/db/compaction/compaction_iteration_stats.h +12 -0
  89. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +406 -215
  90. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +147 -50
  91. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +167 -61
  92. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +1321 -156
  93. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +197 -28
  94. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +2 -3
  95. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +246 -43
  96. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +65 -26
  97. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +7 -7
  98. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +122 -9
  99. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +8 -2
  100. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +18 -6
  101. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +1 -1
  102. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +536 -44
  103. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +311 -30
  104. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +1 -1
  105. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +849 -0
  106. package/deps/rocksdb/rocksdb/db/compaction/file_pri.h +92 -0
  107. package/deps/rocksdb/rocksdb/db/compaction/sst_partitioner.cc +46 -0
  108. package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +1 -1
  109. package/deps/rocksdb/rocksdb/db/convenience.cc +6 -3
  110. package/deps/rocksdb/rocksdb/db/corruption_test.cc +383 -28
  111. package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +7 -2
  112. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +154 -45
  113. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +1095 -33
  114. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +1249 -203
  115. package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +135 -9
  116. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +1348 -166
  117. package/deps/rocksdb/rocksdb/db/db_dynamic_level_test.cc +3 -5
  118. package/deps/rocksdb/rocksdb/db/db_encryption_test.cc +1 -1
  119. package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +312 -45
  120. package/deps/rocksdb/rocksdb/db/db_flush_test.cc +1734 -48
  121. package/deps/rocksdb/rocksdb/db/{compacted_db_impl.cc → db_impl/compacted_db_impl.cc} +24 -7
  122. package/deps/rocksdb/rocksdb/db/{compacted_db_impl.h → db_impl/compacted_db_impl.h} +1 -1
  123. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +644 -333
  124. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +365 -92
  125. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +578 -210
  126. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +38 -16
  127. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +17 -10
  128. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +75 -74
  129. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +450 -183
  130. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +42 -9
  131. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +232 -15
  132. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +42 -4
  133. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +297 -100
  134. package/deps/rocksdb/rocksdb/db/db_info_dumper.cc +16 -15
  135. package/deps/rocksdb/rocksdb/db/db_inplace_update_test.cc +31 -1
  136. package/deps/rocksdb/rocksdb/db/db_io_failure_test.cc +6 -5
  137. package/deps/rocksdb/rocksdb/db/db_iter.cc +218 -153
  138. package/deps/rocksdb/rocksdb/db/db_iter.h +14 -12
  139. package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +1 -1
  140. package/deps/rocksdb/rocksdb/db/db_iter_test.cc +84 -160
  141. package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +47 -6
  142. package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +204 -0
  143. package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +21 -13
  144. package/deps/rocksdb/rocksdb/db/db_logical_block_size_cache_test.cc +17 -10
  145. package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +38 -24
  146. package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +184 -19
  147. package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +1 -1
  148. package/deps/rocksdb/rocksdb/db/db_options_test.cc +183 -3
  149. package/deps/rocksdb/rocksdb/db/db_properties_test.cc +409 -9
  150. package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +92 -23
  151. package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +446 -0
  152. package/deps/rocksdb/rocksdb/db/{db_impl/db_secondary_test.cc → db_secondary_test.cc} +363 -35
  153. package/deps/rocksdb/rocksdb/db/db_sst_test.cc +520 -15
  154. package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +50 -1
  155. package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +139 -4
  156. package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +1 -1
  157. package/deps/rocksdb/rocksdb/db/db_test.cc +669 -359
  158. package/deps/rocksdb/rocksdb/db/db_test2.cc +2110 -304
  159. package/deps/rocksdb/rocksdb/db/db_test_util.cc +76 -43
  160. package/deps/rocksdb/rocksdb/db/db_test_util.h +231 -103
  161. package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +19 -11
  162. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +490 -71
  163. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +980 -349
  164. package/deps/rocksdb/rocksdb/db/db_with_timestamp_compaction_test.cc +11 -12
  165. package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +793 -0
  166. package/deps/rocksdb/rocksdb/db/db_write_test.cc +2 -1
  167. package/deps/rocksdb/rocksdb/db/dbformat.cc +4 -12
  168. package/deps/rocksdb/rocksdb/db/dbformat.h +28 -18
  169. package/deps/rocksdb/rocksdb/db/dbformat_test.cc +3 -0
  170. package/deps/rocksdb/rocksdb/db/deletefile_test.cc +50 -15
  171. package/deps/rocksdb/rocksdb/db/error_handler.cc +127 -41
  172. package/deps/rocksdb/rocksdb/db/error_handler.h +12 -5
  173. package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +524 -255
  174. package/deps/rocksdb/rocksdb/db/event_helpers.cc +136 -11
  175. package/deps/rocksdb/rocksdb/db/event_helpers.h +27 -2
  176. package/deps/rocksdb/rocksdb/db/experimental.cc +100 -0
  177. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +307 -4
  178. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +137 -60
  179. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +12 -8
  180. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +86 -55
  181. package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +86 -5
  182. package/deps/rocksdb/rocksdb/db/filename_test.cc +63 -0
  183. package/deps/rocksdb/rocksdb/db/flush_job.cc +619 -64
  184. package/deps/rocksdb/rocksdb/db/flush_job.h +30 -7
  185. package/deps/rocksdb/rocksdb/db/flush_job_test.cc +33 -16
  186. package/deps/rocksdb/rocksdb/db/flush_scheduler.h +2 -1
  187. package/deps/rocksdb/rocksdb/db/forward_iterator.cc +18 -17
  188. package/deps/rocksdb/rocksdb/db/forward_iterator.h +5 -4
  189. package/deps/rocksdb/rocksdb/db/forward_iterator_bench.cc +0 -1
  190. package/deps/rocksdb/rocksdb/db/history_trimming_iterator.h +91 -0
  191. package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +25 -14
  192. package/deps/rocksdb/rocksdb/db/import_column_family_job.h +6 -5
  193. package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +1 -1
  194. package/deps/rocksdb/rocksdb/db/internal_stats.cc +471 -50
  195. package/deps/rocksdb/rocksdb/db/internal_stats.h +129 -25
  196. package/deps/rocksdb/rocksdb/db/job_context.h +22 -9
  197. package/deps/rocksdb/rocksdb/db/kv_checksum.h +394 -0
  198. package/deps/rocksdb/rocksdb/db/listener_test.cc +518 -41
  199. package/deps/rocksdb/rocksdb/db/log_format.h +4 -1
  200. package/deps/rocksdb/rocksdb/db/log_reader.cc +129 -6
  201. package/deps/rocksdb/rocksdb/db/log_reader.h +17 -1
  202. package/deps/rocksdb/rocksdb/db/log_test.cc +161 -11
  203. package/deps/rocksdb/rocksdb/db/log_writer.cc +92 -13
  204. package/deps/rocksdb/rocksdb/db/log_writer.h +18 -5
  205. package/deps/rocksdb/rocksdb/db/logs_with_prep_tracker.h +1 -1
  206. package/deps/rocksdb/rocksdb/db/lookup_key.h +0 -1
  207. package/deps/rocksdb/rocksdb/db/malloc_stats.cc +2 -2
  208. package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +21 -8
  209. package/deps/rocksdb/rocksdb/db/memtable.cc +144 -54
  210. package/deps/rocksdb/rocksdb/db/memtable.h +72 -15
  211. package/deps/rocksdb/rocksdb/db/memtable_list.cc +95 -47
  212. package/deps/rocksdb/rocksdb/db/memtable_list.h +33 -13
  213. package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +61 -31
  214. package/deps/rocksdb/rocksdb/db/merge_context.h +20 -8
  215. package/deps/rocksdb/rocksdb/db/merge_helper.cc +54 -11
  216. package/deps/rocksdb/rocksdb/db/merge_helper.h +17 -6
  217. package/deps/rocksdb/rocksdb/db/merge_helper_test.cc +13 -7
  218. package/deps/rocksdb/rocksdb/db/merge_test.cc +40 -19
  219. package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +14 -25
  220. package/deps/rocksdb/rocksdb/db/output_validator.cc +3 -0
  221. package/deps/rocksdb/rocksdb/db/output_validator.h +5 -4
  222. package/deps/rocksdb/rocksdb/db/perf_context_test.cc +32 -28
  223. package/deps/rocksdb/rocksdb/db/periodic_work_scheduler.cc +43 -29
  224. package/deps/rocksdb/rocksdb/db/periodic_work_scheduler.h +9 -7
  225. package/deps/rocksdb/rocksdb/db/periodic_work_scheduler_test.cc +21 -16
  226. package/deps/rocksdb/rocksdb/db/pinned_iterators_manager.h +1 -1
  227. package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +29 -36
  228. package/deps/rocksdb/rocksdb/db/pre_release_callback.h +1 -2
  229. package/deps/rocksdb/rocksdb/db/prefix_test.cc +4 -4
  230. package/deps/rocksdb/rocksdb/db/range_del_aggregator.h +2 -2
  231. package/deps/rocksdb/rocksdb/db/range_del_aggregator_bench.cc +11 -11
  232. package/deps/rocksdb/rocksdb/db/range_del_aggregator_test.cc +3 -2
  233. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.cc +14 -8
  234. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +17 -0
  235. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter_test.cc +4 -2
  236. package/deps/rocksdb/rocksdb/db/read_callback.h +1 -0
  237. package/deps/rocksdb/rocksdb/db/repair.cc +87 -58
  238. package/deps/rocksdb/rocksdb/db/repair_test.cc +35 -5
  239. package/deps/rocksdb/rocksdb/db/snapshot_impl.h +2 -1
  240. package/deps/rocksdb/rocksdb/db/table_cache.cc +95 -69
  241. package/deps/rocksdb/rocksdb/db/table_cache.h +63 -53
  242. package/deps/rocksdb/rocksdb/db/table_properties_collector.cc +4 -4
  243. package/deps/rocksdb/rocksdb/db/table_properties_collector.h +78 -10
  244. package/deps/rocksdb/rocksdb/db/table_properties_collector_test.cc +28 -33
  245. package/deps/rocksdb/rocksdb/db/transaction_log_impl.cc +30 -51
  246. package/deps/rocksdb/rocksdb/db/transaction_log_impl.h +12 -8
  247. package/deps/rocksdb/rocksdb/db/version_builder.cc +564 -341
  248. package/deps/rocksdb/rocksdb/db/version_builder.h +8 -8
  249. package/deps/rocksdb/rocksdb/db/version_builder_test.cc +327 -155
  250. package/deps/rocksdb/rocksdb/db/version_edit.cc +89 -27
  251. package/deps/rocksdb/rocksdb/db/version_edit.h +42 -17
  252. package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +324 -43
  253. package/deps/rocksdb/rocksdb/db/version_edit_handler.h +79 -22
  254. package/deps/rocksdb/rocksdb/db/version_edit_test.cc +165 -20
  255. package/deps/rocksdb/rocksdb/db/version_set.cc +935 -1034
  256. package/deps/rocksdb/rocksdb/db/version_set.h +183 -122
  257. package/deps/rocksdb/rocksdb/db/version_set_test.cc +556 -138
  258. package/deps/rocksdb/rocksdb/db/version_util.h +68 -0
  259. package/deps/rocksdb/rocksdb/db/wal_manager.cc +23 -21
  260. package/deps/rocksdb/rocksdb/db/wal_manager.h +5 -2
  261. package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +30 -27
  262. package/deps/rocksdb/rocksdb/db/write_batch.cc +704 -209
  263. package/deps/rocksdb/rocksdb/db/write_batch_internal.h +135 -2
  264. package/deps/rocksdb/rocksdb/db/write_batch_test.cc +209 -5
  265. package/deps/rocksdb/rocksdb/db/write_callback_test.cc +2 -0
  266. package/deps/rocksdb/rocksdb/db/write_controller.cc +47 -54
  267. package/deps/rocksdb/rocksdb/db/write_controller.h +12 -9
  268. package/deps/rocksdb/rocksdb/db/write_controller_test.cc +215 -103
  269. package/deps/rocksdb/rocksdb/db/write_thread.cc +11 -0
  270. package/deps/rocksdb/rocksdb/db/write_thread.h +14 -8
  271. package/deps/rocksdb/rocksdb/db_stress_tool/CMakeLists.txt +7 -4
  272. package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +10 -3
  273. package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +6 -0
  274. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress.cc +1 -1
  275. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +19 -2
  276. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +78 -25
  277. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compaction_filter.h +13 -2
  278. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +29 -12
  279. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +5 -1
  280. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +199 -32
  281. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.cc +188 -0
  282. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +59 -10
  283. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +77 -109
  284. package/deps/rocksdb/rocksdb/{third-party/folly/folly/synchronization/WaitOptions.cpp → db_stress_tool/db_stress_stat.cc} +9 -4
  285. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_stat.h +7 -6
  286. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_table_properties_collector.h +1 -0
  287. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +699 -143
  288. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +20 -2
  289. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +49 -39
  290. package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +631 -0
  291. package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.h +287 -0
  292. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +1565 -0
  293. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.h +374 -0
  294. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +149 -18
  295. package/deps/rocksdb/rocksdb/env/composite_env.cc +464 -0
  296. package/deps/rocksdb/rocksdb/env/composite_env_wrapper.h +98 -646
  297. package/deps/rocksdb/rocksdb/env/emulated_clock.h +114 -0
  298. package/deps/rocksdb/rocksdb/env/env.cc +632 -42
  299. package/deps/rocksdb/rocksdb/env/env_basic_test.cc +84 -36
  300. package/deps/rocksdb/rocksdb/env/env_chroot.cc +88 -286
  301. package/deps/rocksdb/rocksdb/env/env_chroot.h +34 -1
  302. package/deps/rocksdb/rocksdb/env/env_encryption.cc +469 -277
  303. package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +9 -30
  304. package/deps/rocksdb/rocksdb/env/env_posix.cc +110 -119
  305. package/deps/rocksdb/rocksdb/env/env_test.cc +1128 -39
  306. package/deps/rocksdb/rocksdb/env/file_system.cc +147 -8
  307. package/deps/rocksdb/rocksdb/env/file_system_tracer.cc +207 -136
  308. package/deps/rocksdb/rocksdb/env/file_system_tracer.h +86 -54
  309. package/deps/rocksdb/rocksdb/env/fs_posix.cc +192 -64
  310. package/deps/rocksdb/rocksdb/env/fs_readonly.h +107 -0
  311. package/deps/rocksdb/rocksdb/env/fs_remap.cc +339 -0
  312. package/deps/rocksdb/rocksdb/env/fs_remap.h +139 -0
  313. package/deps/rocksdb/rocksdb/env/io_posix.cc +245 -41
  314. package/deps/rocksdb/rocksdb/env/io_posix.h +66 -1
  315. package/deps/rocksdb/rocksdb/env/mock_env.cc +147 -149
  316. package/deps/rocksdb/rocksdb/env/mock_env.h +113 -11
  317. package/deps/rocksdb/rocksdb/env/mock_env_test.cc +2 -4
  318. package/deps/rocksdb/rocksdb/env/unique_id_gen.cc +164 -0
  319. package/deps/rocksdb/rocksdb/env/unique_id_gen.h +71 -0
  320. package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +9 -5
  321. package/deps/rocksdb/rocksdb/file/delete_scheduler.h +6 -4
  322. package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +19 -12
  323. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +459 -70
  324. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +205 -28
  325. package/deps/rocksdb/rocksdb/file/file_util.cc +39 -28
  326. package/deps/rocksdb/rocksdb/file/file_util.h +18 -27
  327. package/deps/rocksdb/rocksdb/file/filename.cc +59 -22
  328. package/deps/rocksdb/rocksdb/file/filename.h +13 -8
  329. package/deps/rocksdb/rocksdb/file/line_file_reader.cc +68 -0
  330. package/deps/rocksdb/rocksdb/file/line_file_reader.h +59 -0
  331. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +1130 -6
  332. package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +220 -36
  333. package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +69 -17
  334. package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +13 -12
  335. package/deps/rocksdb/rocksdb/file/read_write_util.cc +3 -38
  336. package/deps/rocksdb/rocksdb/file/read_write_util.h +0 -4
  337. package/deps/rocksdb/rocksdb/file/readahead_file_info.h +33 -0
  338. package/deps/rocksdb/rocksdb/file/sequence_file_reader.cc +57 -9
  339. package/deps/rocksdb/rocksdb/file/sequence_file_reader.h +58 -6
  340. package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.cc +29 -54
  341. package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.h +22 -29
  342. package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +424 -50
  343. package/deps/rocksdb/rocksdb/file/writable_file_writer.h +66 -19
  344. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +157 -66
  345. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +224 -121
  346. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +333 -30
  347. package/deps/rocksdb/rocksdb/include/rocksdb/cache_bench_tool.h +14 -0
  348. package/deps/rocksdb/rocksdb/include/rocksdb/cleanable.h +1 -1
  349. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +90 -50
  350. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +13 -5
  351. package/deps/rocksdb/rocksdb/include/rocksdb/comparator.h +20 -4
  352. package/deps/rocksdb/rocksdb/include/rocksdb/concurrent_task_limiter.h +8 -3
  353. package/deps/rocksdb/rocksdb/include/rocksdb/configurable.h +53 -12
  354. package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +31 -6
  355. package/deps/rocksdb/rocksdb/include/rocksdb/customizable.h +102 -7
  356. package/deps/rocksdb/rocksdb/include/rocksdb/data_structure.h +51 -0
  357. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +370 -262
  358. package/deps/rocksdb/rocksdb/include/rocksdb/env.h +286 -87
  359. package/deps/rocksdb/rocksdb/include/rocksdb/env_encryption.h +124 -64
  360. package/deps/rocksdb/rocksdb/include/rocksdb/experimental.h +27 -0
  361. package/deps/rocksdb/rocksdb/include/rocksdb/file_checksum.h +21 -4
  362. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +384 -41
  363. package/deps/rocksdb/rocksdb/include/rocksdb/filter_policy.h +111 -143
  364. package/deps/rocksdb/rocksdb/include/rocksdb/flush_block_policy.h +20 -6
  365. package/deps/rocksdb/rocksdb/include/rocksdb/functor_wrapper.h +56 -0
  366. package/deps/rocksdb/rocksdb/include/rocksdb/io_status.h +15 -33
  367. package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +37 -1
  368. package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +1 -3
  369. package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +314 -26
  370. package/deps/rocksdb/rocksdb/include/rocksdb/memory_allocator.h +11 -7
  371. package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +50 -15
  372. package/deps/rocksdb/rocksdb/include/rocksdb/merge_operator.h +10 -3
  373. package/deps/rocksdb/rocksdb/include/rocksdb/metadata.h +186 -96
  374. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +373 -103
  375. package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +13 -3
  376. package/deps/rocksdb/rocksdb/include/rocksdb/persistent_cache.h +2 -2
  377. package/deps/rocksdb/rocksdb/include/rocksdb/rate_limiter.h +37 -7
  378. package/deps/rocksdb/rocksdb/include/rocksdb/rocksdb_namespace.h +6 -0
  379. package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +87 -0
  380. package/deps/rocksdb/rocksdb/include/rocksdb/slice.h +5 -12
  381. package/deps/rocksdb/rocksdb/include/rocksdb/slice_transform.h +59 -30
  382. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_manager.h +11 -11
  383. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +22 -0
  384. package/deps/rocksdb/rocksdb/include/rocksdb/sst_partitioner.h +17 -10
  385. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +121 -41
  386. package/deps/rocksdb/rocksdb/include/rocksdb/stats_history.h +1 -0
  387. package/deps/rocksdb/rocksdb/include/rocksdb/status.h +114 -136
  388. package/deps/rocksdb/rocksdb/include/rocksdb/system_clock.h +116 -0
  389. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +160 -18
  390. package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +57 -15
  391. package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +3 -1
  392. package/deps/rocksdb/rocksdb/include/rocksdb/trace_reader_writer.h +10 -6
  393. package/deps/rocksdb/rocksdb/include/rocksdb/trace_record.h +247 -0
  394. package/deps/rocksdb/rocksdb/include/rocksdb/trace_record_result.h +187 -0
  395. package/deps/rocksdb/rocksdb/include/rocksdb/transaction_log.h +1 -1
  396. package/deps/rocksdb/rocksdb/include/rocksdb/types.h +14 -24
  397. package/deps/rocksdb/rocksdb/include/rocksdb/unique_id.h +46 -0
  398. package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +14 -4
  399. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/agg_merge.h +138 -0
  400. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/backup_engine.h +631 -0
  401. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/cache_dump_load.h +142 -0
  402. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/checkpoint.h +12 -9
  403. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/customizable_util.h +368 -0
  404. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +24 -0
  405. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd_execute_result.h +4 -0
  406. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/object_registry.h +418 -63
  407. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +143 -73
  408. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_util.h +2 -2
  409. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/replayer.h +87 -0
  410. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/sim_cache.h +2 -2
  411. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +43 -5
  412. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/table_properties_collectors.h +18 -23
  413. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +26 -0
  414. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +32 -6
  415. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db_mutex.h +1 -2
  416. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +20 -1
  417. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +30 -3
  418. package/deps/rocksdb/rocksdb/include/rocksdb/wal_filter.h +11 -2
  419. package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +89 -11
  420. package/deps/rocksdb/rocksdb/include/rocksdb/write_batch_base.h +11 -0
  421. package/deps/rocksdb/rocksdb/include/rocksdb/write_buffer_manager.h +108 -38
  422. package/deps/rocksdb/rocksdb/logging/auto_roll_logger.cc +40 -23
  423. package/deps/rocksdb/rocksdb/logging/auto_roll_logger.h +12 -5
  424. package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +100 -49
  425. package/deps/rocksdb/rocksdb/logging/env_logger.h +7 -5
  426. package/deps/rocksdb/rocksdb/logging/env_logger_test.cc +0 -1
  427. package/deps/rocksdb/rocksdb/logging/posix_logger.h +3 -9
  428. package/deps/rocksdb/rocksdb/memory/arena.cc +3 -1
  429. package/deps/rocksdb/rocksdb/memory/arena.h +1 -1
  430. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +171 -106
  431. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.h +31 -15
  432. package/deps/rocksdb/rocksdb/memory/memkind_kmem_allocator.cc +15 -4
  433. package/deps/rocksdb/rocksdb/memory/memkind_kmem_allocator.h +24 -8
  434. package/deps/rocksdb/rocksdb/memory/memory_allocator.cc +91 -0
  435. package/deps/rocksdb/rocksdb/memory/memory_allocator_test.cc +239 -0
  436. package/deps/rocksdb/rocksdb/memory/memory_usage.h +14 -1
  437. package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.cc +72 -9
  438. package/deps/rocksdb/rocksdb/memtable/hash_skiplist_rep.cc +52 -6
  439. package/deps/rocksdb/rocksdb/memtable/inlineskiplist.h +53 -0
  440. package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +5 -5
  441. package/deps/rocksdb/rocksdb/memtable/memtablerep_bench.cc +17 -5
  442. package/deps/rocksdb/rocksdb/memtable/skiplist_test.cc +1 -1
  443. package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +87 -0
  444. package/deps/rocksdb/rocksdb/memtable/vectorrep.cc +20 -10
  445. package/deps/rocksdb/rocksdb/memtable/write_buffer_manager.cc +148 -94
  446. package/deps/rocksdb/rocksdb/memtable/write_buffer_manager_test.cc +160 -62
  447. package/deps/rocksdb/rocksdb/microbench/CMakeLists.txt +17 -0
  448. package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +1360 -0
  449. package/deps/rocksdb/rocksdb/microbench/ribbon_bench.cc +153 -0
  450. package/deps/rocksdb/rocksdb/monitoring/histogram.cc +8 -15
  451. package/deps/rocksdb/rocksdb/monitoring/histogram.h +0 -1
  452. package/deps/rocksdb/rocksdb/monitoring/histogram_test.cc +18 -16
  453. package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.cc +9 -7
  454. package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.h +5 -3
  455. package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.cc +7 -5
  456. package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.h +37 -12
  457. package/deps/rocksdb/rocksdb/monitoring/iostats_context.cc +26 -6
  458. package/deps/rocksdb/rocksdb/monitoring/iostats_context_imp.h +6 -10
  459. package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +14 -13
  460. package/deps/rocksdb/rocksdb/monitoring/perf_context_imp.h +19 -20
  461. package/deps/rocksdb/rocksdb/monitoring/perf_step_timer.h +18 -18
  462. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +84 -2
  463. package/deps/rocksdb/rocksdb/monitoring/statistics.h +6 -0
  464. package/deps/rocksdb/rocksdb/monitoring/statistics_test.cc +47 -2
  465. package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +67 -54
  466. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.cc +4 -1
  467. package/deps/rocksdb/rocksdb/monitoring/thread_status_util.cc +2 -1
  468. package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +2 -2
  469. package/deps/rocksdb/rocksdb/options/cf_options.cc +280 -212
  470. package/deps/rocksdb/rocksdb/options/cf_options.h +51 -57
  471. package/deps/rocksdb/rocksdb/options/configurable.cc +242 -138
  472. package/deps/rocksdb/rocksdb/options/configurable_helper.h +4 -68
  473. package/deps/rocksdb/rocksdb/options/configurable_test.cc +144 -21
  474. package/deps/rocksdb/rocksdb/options/configurable_test.h +2 -3
  475. package/deps/rocksdb/rocksdb/options/customizable.cc +67 -7
  476. package/deps/rocksdb/rocksdb/options/customizable_test.cc +1773 -151
  477. package/deps/rocksdb/rocksdb/options/db_options.cc +275 -47
  478. package/deps/rocksdb/rocksdb/options/db_options.h +36 -7
  479. package/deps/rocksdb/rocksdb/options/options.cc +49 -17
  480. package/deps/rocksdb/rocksdb/options/options_helper.cc +369 -352
  481. package/deps/rocksdb/rocksdb/options/options_helper.h +23 -23
  482. package/deps/rocksdb/rocksdb/options/options_parser.cc +18 -13
  483. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +67 -54
  484. package/deps/rocksdb/rocksdb/options/options_test.cc +1162 -187
  485. package/deps/rocksdb/rocksdb/port/jemalloc_helper.h +1 -1
  486. package/deps/rocksdb/rocksdb/port/lang.h +52 -0
  487. package/deps/rocksdb/rocksdb/port/port_example.h +1 -1
  488. package/deps/rocksdb/rocksdb/port/port_posix.cc +31 -2
  489. package/deps/rocksdb/rocksdb/port/port_posix.h +20 -2
  490. package/deps/rocksdb/rocksdb/port/stack_trace.cc +20 -4
  491. package/deps/rocksdb/rocksdb/port/sys_time.h +2 -2
  492. package/deps/rocksdb/rocksdb/port/win/env_default.cc +7 -7
  493. package/deps/rocksdb/rocksdb/port/win/env_win.cc +44 -74
  494. package/deps/rocksdb/rocksdb/port/win/env_win.h +25 -23
  495. package/deps/rocksdb/rocksdb/port/win/io_win.cc +32 -34
  496. package/deps/rocksdb/rocksdb/port/win/io_win.h +12 -6
  497. package/deps/rocksdb/rocksdb/port/win/port_win.cc +55 -35
  498. package/deps/rocksdb/rocksdb/port/win/port_win.h +22 -5
  499. package/deps/rocksdb/rocksdb/port/win/win_logger.cc +3 -3
  500. package/deps/rocksdb/rocksdb/port/win/win_logger.h +3 -5
  501. package/deps/rocksdb/rocksdb/port/win/win_thread.cc +7 -1
  502. package/deps/rocksdb/rocksdb/port/win/win_thread.h +12 -17
  503. package/deps/rocksdb/rocksdb/python.mk +9 -0
  504. package/deps/rocksdb/rocksdb/src.mk +82 -34
  505. package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.cc +3 -4
  506. package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.h +1 -1
  507. package/deps/rocksdb/rocksdb/table/block_based/block.cc +158 -80
  508. package/deps/rocksdb/rocksdb/table/block_based/block.h +64 -36
  509. package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.cc +23 -14
  510. package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.h +13 -5
  511. package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block_test.cc +3 -218
  512. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +603 -328
  513. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +28 -22
  514. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +220 -82
  515. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +8 -2
  516. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +3 -4
  517. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +28 -4
  518. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +598 -492
  519. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +151 -96
  520. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +31 -58
  521. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +330 -92
  522. package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +50 -19
  523. package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +23 -0
  524. package/deps/rocksdb/rocksdb/table/block_based/block_like_traits.h +226 -0
  525. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +56 -22
  526. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +42 -4
  527. package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +5 -2
  528. package/deps/rocksdb/rocksdb/table/block_based/block_type.h +2 -0
  529. package/deps/rocksdb/rocksdb/table/block_based/cachable_entry.h +34 -20
  530. package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +9 -10
  531. package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +26 -3
  532. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +2 -1
  533. package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +844 -202
  534. package/deps/rocksdb/rocksdb/table/block_based/filter_policy_internal.h +281 -81
  535. package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.cc +62 -2
  536. package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.h +2 -3
  537. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +28 -7
  538. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +22 -6
  539. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block_test.cc +28 -26
  540. package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +1 -1
  541. package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +1 -2
  542. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +2 -1
  543. package/deps/rocksdb/rocksdb/table/block_based/mock_block_based_table.h +11 -4
  544. package/deps/rocksdb/rocksdb/table/block_based/parsed_full_filter_block.cc +2 -1
  545. package/deps/rocksdb/rocksdb/table/block_based/parsed_full_filter_block.h +2 -0
  546. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +68 -26
  547. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +44 -9
  548. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +12 -10
  549. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +3 -4
  550. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.h +23 -4
  551. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +44 -19
  552. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.h +5 -1
  553. package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +16 -28
  554. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +7 -4
  555. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +2 -2
  556. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +77 -57
  557. package/deps/rocksdb/rocksdb/table/block_fetcher.h +23 -12
  558. package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +43 -56
  559. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +8 -8
  560. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.h +2 -1
  561. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +52 -70
  562. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_factory.cc +5 -8
  563. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_factory.h +1 -1
  564. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.cc +17 -11
  565. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.h +2 -3
  566. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +42 -51
  567. package/deps/rocksdb/rocksdb/table/format.cc +258 -104
  568. package/deps/rocksdb/rocksdb/table/format.h +120 -109
  569. package/deps/rocksdb/rocksdb/table/get_context.cc +97 -65
  570. package/deps/rocksdb/rocksdb/table/get_context.h +19 -12
  571. package/deps/rocksdb/rocksdb/table/internal_iterator.h +14 -0
  572. package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +8 -0
  573. package/deps/rocksdb/rocksdb/table/merger_test.cc +3 -2
  574. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +11 -21
  575. package/deps/rocksdb/rocksdb/table/merging_iterator.h +3 -3
  576. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +176 -171
  577. package/deps/rocksdb/rocksdb/table/meta_blocks.h +47 -33
  578. package/deps/rocksdb/rocksdb/table/mock_table.cc +7 -9
  579. package/deps/rocksdb/rocksdb/table/mock_table.h +3 -2
  580. package/deps/rocksdb/rocksdb/table/multiget_context.h +15 -8
  581. package/deps/rocksdb/rocksdb/table/persistent_cache_helper.cc +22 -29
  582. package/deps/rocksdb/rocksdb/table/persistent_cache_options.h +6 -3
  583. package/deps/rocksdb/rocksdb/table/plain/plain_table_bloom.h +5 -8
  584. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +29 -26
  585. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.h +12 -16
  586. package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.cc +145 -69
  587. package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.h +1 -1
  588. package/deps/rocksdb/rocksdb/table/plain/plain_table_index.cc +7 -6
  589. package/deps/rocksdb/rocksdb/table/plain/plain_table_index.h +3 -4
  590. package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.cc +3 -1
  591. package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.h +1 -1
  592. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +13 -18
  593. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.h +4 -9
  594. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +55 -37
  595. package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +10 -5
  596. package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +11 -8
  597. package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +222 -16
  598. package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +106 -58
  599. package/deps/rocksdb/rocksdb/table/sst_file_writer_collectors.h +6 -5
  600. package/deps/rocksdb/rocksdb/table/table_builder.h +68 -44
  601. package/deps/rocksdb/rocksdb/table/table_factory.cc +37 -10
  602. package/deps/rocksdb/rocksdb/table/table_properties.cc +109 -54
  603. package/deps/rocksdb/rocksdb/table/table_properties_internal.h +4 -20
  604. package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +33 -32
  605. package/deps/rocksdb/rocksdb/table/table_reader_caller.h +2 -0
  606. package/deps/rocksdb/rocksdb/table/table_test.cc +989 -326
  607. package/deps/rocksdb/rocksdb/table/two_level_iterator.cc +4 -0
  608. package/deps/rocksdb/rocksdb/table/unique_id.cc +166 -0
  609. package/deps/rocksdb/rocksdb/table/unique_id_impl.h +59 -0
  610. package/deps/rocksdb/rocksdb/test_util/mock_time_env.cc +1 -1
  611. package/deps/rocksdb/rocksdb/test_util/mock_time_env.h +13 -10
  612. package/deps/rocksdb/rocksdb/test_util/sync_point.cc +1 -2
  613. package/deps/rocksdb/rocksdb/test_util/sync_point.h +35 -16
  614. package/deps/rocksdb/rocksdb/test_util/sync_point_impl.cc +32 -10
  615. package/deps/rocksdb/rocksdb/test_util/sync_point_impl.h +31 -4
  616. package/deps/rocksdb/rocksdb/test_util/testharness.cc +53 -1
  617. package/deps/rocksdb/rocksdb/test_util/testharness.h +67 -3
  618. package/deps/rocksdb/rocksdb/test_util/testutil.cc +236 -66
  619. package/deps/rocksdb/rocksdb/test_util/testutil.h +63 -100
  620. package/deps/rocksdb/rocksdb/test_util/transaction_test_util.cc +12 -1
  621. package/deps/rocksdb/rocksdb/tools/blob_dump.cc +2 -2
  622. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.cc +6 -3
  623. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.h +1 -0
  624. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +9 -3
  625. package/deps/rocksdb/rocksdb/tools/db_bench.cc +1 -1
  626. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +1420 -611
  627. package/deps/rocksdb/rocksdb/tools/db_bench_tool_test.cc +11 -8
  628. package/deps/rocksdb/rocksdb/tools/db_repl_stress.cc +11 -1
  629. package/deps/rocksdb/rocksdb/tools/io_tracer_parser_test.cc +4 -2
  630. package/deps/rocksdb/rocksdb/tools/io_tracer_parser_tool.cc +46 -22
  631. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +655 -179
  632. package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +58 -6
  633. package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +472 -29
  634. package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +23 -2
  635. package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +2 -2
  636. package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.cc +246 -0
  637. package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.h +126 -0
  638. package/deps/rocksdb/rocksdb/tools/sst_dump_test.cc +83 -29
  639. package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +38 -17
  640. package/deps/rocksdb/rocksdb/tools/trace_analyzer_test.cc +191 -55
  641. package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +219 -296
  642. package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.h +87 -53
  643. package/deps/rocksdb/rocksdb/tools/write_stress.cc +8 -7
  644. package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.cc +6 -5
  645. package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.h +5 -4
  646. package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer_test.cc +14 -9
  647. package/deps/rocksdb/rocksdb/trace_replay/io_tracer.cc +134 -60
  648. package/deps/rocksdb/rocksdb/trace_replay/io_tracer.h +49 -38
  649. package/deps/rocksdb/rocksdb/trace_replay/io_tracer_test.cc +152 -15
  650. package/deps/rocksdb/rocksdb/trace_replay/trace_record.cc +206 -0
  651. package/deps/rocksdb/rocksdb/trace_replay/trace_record_handler.cc +190 -0
  652. package/deps/rocksdb/rocksdb/trace_replay/trace_record_handler.h +46 -0
  653. package/deps/rocksdb/rocksdb/trace_replay/trace_record_result.cc +146 -0
  654. package/deps/rocksdb/rocksdb/trace_replay/trace_replay.cc +475 -344
  655. package/deps/rocksdb/rocksdb/trace_replay/trace_replay.h +83 -95
  656. package/deps/rocksdb/rocksdb/util/autovector.h +38 -18
  657. package/deps/rocksdb/rocksdb/util/autovector_test.cc +1 -1
  658. package/deps/rocksdb/rocksdb/util/bloom_impl.h +4 -0
  659. package/deps/rocksdb/rocksdb/util/bloom_test.cc +276 -94
  660. package/deps/rocksdb/rocksdb/util/build_version.cc.in +81 -4
  661. package/deps/rocksdb/rocksdb/util/cast_util.h +22 -0
  662. package/deps/rocksdb/rocksdb/util/channel.h +2 -0
  663. package/deps/rocksdb/rocksdb/util/coding.h +1 -33
  664. package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +8 -0
  665. package/deps/rocksdb/rocksdb/util/comparator.cc +163 -3
  666. package/deps/rocksdb/rocksdb/util/compression.cc +122 -0
  667. package/deps/rocksdb/rocksdb/util/compression.h +212 -7
  668. package/deps/rocksdb/rocksdb/util/compression_context_cache.cc +1 -3
  669. package/deps/rocksdb/rocksdb/util/crc32c.cc +165 -2
  670. package/deps/rocksdb/rocksdb/util/crc32c.h +6 -0
  671. package/deps/rocksdb/rocksdb/util/crc32c_arm64.cc +14 -0
  672. package/deps/rocksdb/rocksdb/util/crc32c_ppc.h +3 -0
  673. package/deps/rocksdb/rocksdb/util/crc32c_test.cc +47 -0
  674. package/deps/rocksdb/rocksdb/util/defer.h +30 -1
  675. package/deps/rocksdb/rocksdb/util/defer_test.cc +11 -0
  676. package/deps/rocksdb/rocksdb/util/duplicate_detector.h +3 -1
  677. package/deps/rocksdb/rocksdb/util/dynamic_bloom.h +3 -3
  678. package/deps/rocksdb/rocksdb/util/dynamic_bloom_test.cc +5 -4
  679. package/deps/rocksdb/rocksdb/util/fastrange.h +2 -0
  680. package/deps/rocksdb/rocksdb/util/file_checksum_helper.cc +36 -0
  681. package/deps/rocksdb/rocksdb/util/file_checksum_helper.h +3 -1
  682. package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +512 -52
  683. package/deps/rocksdb/rocksdb/util/filter_bench.cc +65 -10
  684. package/deps/rocksdb/rocksdb/util/gflags_compat.h +6 -1
  685. package/deps/rocksdb/rocksdb/util/hash.cc +121 -3
  686. package/deps/rocksdb/rocksdb/util/hash.h +31 -1
  687. package/deps/rocksdb/rocksdb/util/hash128.h +26 -0
  688. package/deps/rocksdb/rocksdb/util/hash_containers.h +51 -0
  689. package/deps/rocksdb/rocksdb/util/hash_test.cc +194 -2
  690. package/deps/rocksdb/rocksdb/util/heap.h +6 -1
  691. package/deps/rocksdb/rocksdb/util/kv_map.h +1 -1
  692. package/deps/rocksdb/rocksdb/util/log_write_bench.cc +8 -6
  693. package/deps/rocksdb/rocksdb/util/math.h +74 -7
  694. package/deps/rocksdb/rocksdb/util/math128.h +13 -1
  695. package/deps/rocksdb/rocksdb/util/murmurhash.h +3 -3
  696. package/deps/rocksdb/rocksdb/util/random.cc +9 -0
  697. package/deps/rocksdb/rocksdb/util/random.h +6 -0
  698. package/deps/rocksdb/rocksdb/util/rate_limiter.cc +298 -144
  699. package/deps/rocksdb/rocksdb/util/rate_limiter.h +68 -19
  700. package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +335 -23
  701. package/deps/rocksdb/rocksdb/util/repeatable_thread.h +10 -12
  702. package/deps/rocksdb/rocksdb/util/repeatable_thread_test.cc +18 -15
  703. package/deps/rocksdb/rocksdb/util/ribbon_alg.h +98 -74
  704. package/deps/rocksdb/rocksdb/util/ribbon_config.cc +506 -0
  705. package/deps/rocksdb/rocksdb/util/ribbon_config.h +182 -0
  706. package/deps/rocksdb/rocksdb/util/ribbon_impl.h +154 -79
  707. package/deps/rocksdb/rocksdb/util/ribbon_test.cc +742 -365
  708. package/deps/rocksdb/rocksdb/util/set_comparator.h +2 -0
  709. package/deps/rocksdb/rocksdb/util/slice.cc +198 -35
  710. package/deps/rocksdb/rocksdb/util/slice_test.cc +30 -1
  711. package/deps/rocksdb/rocksdb/util/status.cc +32 -29
  712. package/deps/rocksdb/rocksdb/util/stop_watch.h +18 -18
  713. package/deps/rocksdb/rocksdb/util/string_util.cc +85 -6
  714. package/deps/rocksdb/rocksdb/util/string_util.h +47 -2
  715. package/deps/rocksdb/rocksdb/util/thread_guard.h +41 -0
  716. package/deps/rocksdb/rocksdb/util/thread_local.h +2 -2
  717. package/deps/rocksdb/rocksdb/util/thread_local_test.cc +22 -24
  718. package/deps/rocksdb/rocksdb/util/threadpool_imp.cc +7 -6
  719. package/deps/rocksdb/rocksdb/util/timer.h +55 -46
  720. package/deps/rocksdb/rocksdb/util/timer_test.cc +50 -48
  721. package/deps/rocksdb/rocksdb/util/user_comparator_wrapper.h +4 -0
  722. package/deps/rocksdb/rocksdb/util/vector_iterator.h +31 -15
  723. package/deps/rocksdb/rocksdb/util/work_queue.h +2 -0
  724. package/deps/rocksdb/rocksdb/util/xxhash.cc +35 -1144
  725. package/deps/rocksdb/rocksdb/util/xxhash.h +5117 -373
  726. package/deps/rocksdb/rocksdb/util/xxph3.h +1762 -0
  727. package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge.cc +238 -0
  728. package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge.h +49 -0
  729. package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge_test.cc +134 -0
  730. package/deps/rocksdb/rocksdb/utilities/agg_merge/test_agg_merge.cc +104 -0
  731. package/deps/rocksdb/rocksdb/utilities/agg_merge/test_agg_merge.h +47 -0
  732. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +3164 -0
  733. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_impl.h +29 -0
  734. package/deps/rocksdb/rocksdb/utilities/{backupable/backupable_db_test.cc → backup/backup_engine_test.cc} +1679 -485
  735. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.cc +6 -4
  736. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.h +14 -9
  737. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.cc +2 -0
  738. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.h +1 -0
  739. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_gc_stats.h +4 -0
  740. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +37 -27
  741. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +8 -4
  742. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl_filesnapshot.cc +1 -1
  743. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_iterator.h +13 -10
  744. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +5 -0
  745. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +44 -25
  746. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +3 -4
  747. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +27 -19
  748. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.h +4 -2
  749. package/deps/rocksdb/rocksdb/utilities/cache_dump_load.cc +69 -0
  750. package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +489 -0
  751. package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.h +366 -0
  752. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.cc +67 -4
  753. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.h +21 -6
  754. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_functional_test.cc +107 -7
  755. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_options.h +43 -0
  756. package/deps/rocksdb/rocksdb/utilities/cassandra/format.h +1 -1
  757. package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.cc +24 -8
  758. package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.h +7 -7
  759. package/deps/rocksdb/rocksdb/utilities/cassandra/serialize.h +5 -0
  760. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +99 -218
  761. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.h +8 -24
  762. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +114 -1
  763. package/deps/rocksdb/rocksdb/utilities/compaction_filters/layered_compaction_filter_base.h +6 -2
  764. package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc +0 -4
  765. package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.h +7 -6
  766. package/deps/rocksdb/rocksdb/utilities/compaction_filters.cc +56 -0
  767. package/deps/rocksdb/rocksdb/utilities/convenience/info_log_finder.cc +2 -2
  768. package/deps/rocksdb/rocksdb/utilities/counted_fs.cc +355 -0
  769. package/deps/rocksdb/rocksdb/utilities/counted_fs.h +152 -0
  770. package/deps/rocksdb/rocksdb/utilities/env_mirror.cc +13 -0
  771. package/deps/rocksdb/rocksdb/utilities/env_timed.cc +164 -122
  772. package/deps/rocksdb/rocksdb/utilities/env_timed.h +97 -0
  773. package/deps/rocksdb/rocksdb/utilities/fault_injection_env.cc +75 -17
  774. package/deps/rocksdb/rocksdb/utilities/fault_injection_env.h +19 -3
  775. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +539 -126
  776. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +162 -17
  777. package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.cc +110 -0
  778. package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.h +94 -0
  779. package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +5 -2
  780. package/deps/rocksdb/rocksdb/utilities/memory_allocators.h +104 -0
  781. package/deps/rocksdb/rocksdb/utilities/merge_operators/bytesxor.h +5 -3
  782. package/deps/rocksdb/rocksdb/utilities/merge_operators/max.cc +4 -1
  783. package/deps/rocksdb/rocksdb/utilities/merge_operators/put.cc +11 -3
  784. package/deps/rocksdb/rocksdb/utilities/merge_operators/sortlist.cc +0 -2
  785. package/deps/rocksdb/rocksdb/utilities/merge_operators/sortlist.h +5 -1
  786. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.cc +29 -10
  787. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.h +6 -3
  788. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend2.cc +29 -14
  789. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend2.h +6 -3
  790. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend_test.cc +71 -18
  791. package/deps/rocksdb/rocksdb/utilities/merge_operators/uint64add.cc +15 -9
  792. package/deps/rocksdb/rocksdb/utilities/merge_operators.cc +120 -0
  793. package/deps/rocksdb/rocksdb/utilities/merge_operators.h +3 -23
  794. package/deps/rocksdb/rocksdb/utilities/object_registry.cc +267 -42
  795. package/deps/rocksdb/rocksdb/utilities/object_registry_test.cc +702 -76
  796. package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration.cc +1 -1
  797. package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration_test.cc +26 -5
  798. package/deps/rocksdb/rocksdb/utilities/options/options_util.cc +1 -1
  799. package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +124 -1
  800. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.cc +2 -3
  801. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.h +8 -9
  802. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +15 -13
  803. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.h +1 -1
  804. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.h +4 -4
  805. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_evictable.h +2 -2
  806. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_bench.cc +8 -9
  807. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.cc +1 -1
  808. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.h +6 -3
  809. package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.h +2 -2
  810. package/deps/rocksdb/rocksdb/utilities/simulator_cache/cache_simulator.cc +3 -0
  811. package/deps/rocksdb/rocksdb/utilities/simulator_cache/cache_simulator_test.cc +2 -0
  812. package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache.cc +43 -35
  813. package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache_test.cc +20 -18
  814. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.cc +107 -2
  815. package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.cc +23 -15
  816. package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.h +2 -2
  817. package/deps/rocksdb/rocksdb/utilities/trace/replayer_impl.cc +316 -0
  818. package/deps/rocksdb/rocksdb/utilities/trace/replayer_impl.h +86 -0
  819. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.cc +4 -5
  820. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.h +4 -3
  821. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.h +1 -1
  822. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +119 -3
  823. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.cc +20 -3
  824. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.h +20 -0
  825. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_external_pthread.h +3 -2
  826. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +4 -0
  827. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc +38 -14
  828. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.h +17 -10
  829. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +1 -0
  830. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +1 -2
  831. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +423 -34
  832. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +82 -2
  833. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.cc +72 -40
  834. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.h +32 -1
  835. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +13 -5
  836. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +7 -3
  837. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +207 -43
  838. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +50 -7
  839. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.cc +28 -10
  840. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.h +11 -6
  841. package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +516 -0
  842. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +506 -15
  843. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +27 -13
  844. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +14 -14
  845. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.h +3 -0
  846. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +2 -2
  847. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +14 -5
  848. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +305 -27
  849. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +55 -159
  850. package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +209 -2
  851. package/deps/rocksdb/rocksdb/utilities/wal_filter.cc +23 -0
  852. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +157 -88
  853. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +501 -114
  854. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +91 -316
  855. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +1212 -672
  856. package/deps/rocksdb/rocksdb.gyp +425 -446
  857. package/index.js +5 -87
  858. package/package-lock.json +23687 -0
  859. package/package.json +8 -9
  860. package/prebuilds/darwin-arm64/node.napi.node +0 -0
  861. package/prebuilds/darwin-x64/node.napi.node +0 -0
  862. package/prebuilds/{darwin-x64+arm64 → linux-x64}/node.napi.node +0 -0
  863. package/deps/rocksdb/rocksdb/README.md +0 -32
  864. package/deps/rocksdb/rocksdb/env/env_hdfs.cc +0 -648
  865. package/deps/rocksdb/rocksdb/hdfs/README +0 -23
  866. package/deps/rocksdb/rocksdb/hdfs/env_hdfs.h +0 -386
  867. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/backupable_db.h +0 -535
  868. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/env_librados.h +0 -175
  869. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/utility_db.h +0 -34
  870. package/deps/rocksdb/rocksdb/memory/memkind_kmem_allocator_test.cc +0 -102
  871. package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.h +0 -49
  872. package/deps/rocksdb/rocksdb/memtable/hash_skiplist_rep.h +0 -44
  873. package/deps/rocksdb/rocksdb/options/customizable_helper.h +0 -216
  874. package/deps/rocksdb/rocksdb/port/README +0 -10
  875. package/deps/rocksdb/rocksdb/third-party/folly/folly/CPortability.h +0 -27
  876. package/deps/rocksdb/rocksdb/third-party/folly/folly/ConstexprMath.h +0 -45
  877. package/deps/rocksdb/rocksdb/third-party/folly/folly/Indestructible.h +0 -166
  878. package/deps/rocksdb/rocksdb/third-party/folly/folly/Optional.h +0 -570
  879. package/deps/rocksdb/rocksdb/third-party/folly/folly/Portability.h +0 -92
  880. package/deps/rocksdb/rocksdb/third-party/folly/folly/ScopeGuard.h +0 -54
  881. package/deps/rocksdb/rocksdb/third-party/folly/folly/Traits.h +0 -152
  882. package/deps/rocksdb/rocksdb/third-party/folly/folly/Unit.h +0 -59
  883. package/deps/rocksdb/rocksdb/third-party/folly/folly/Utility.h +0 -141
  884. package/deps/rocksdb/rocksdb/third-party/folly/folly/chrono/Hardware.h +0 -33
  885. package/deps/rocksdb/rocksdb/third-party/folly/folly/container/Array.h +0 -74
  886. package/deps/rocksdb/rocksdb/third-party/folly/folly/detail/Futex-inl.h +0 -117
  887. package/deps/rocksdb/rocksdb/third-party/folly/folly/detail/Futex.cpp +0 -263
  888. package/deps/rocksdb/rocksdb/third-party/folly/folly/detail/Futex.h +0 -96
  889. package/deps/rocksdb/rocksdb/third-party/folly/folly/functional/Invoke.h +0 -40
  890. package/deps/rocksdb/rocksdb/third-party/folly/folly/hash/Hash.h +0 -29
  891. package/deps/rocksdb/rocksdb/third-party/folly/folly/lang/Align.h +0 -144
  892. package/deps/rocksdb/rocksdb/third-party/folly/folly/lang/Bits.h +0 -30
  893. package/deps/rocksdb/rocksdb/third-party/folly/folly/lang/Launder.h +0 -51
  894. package/deps/rocksdb/rocksdb/third-party/folly/folly/portability/Asm.h +0 -28
  895. package/deps/rocksdb/rocksdb/third-party/folly/folly/portability/SysSyscall.h +0 -10
  896. package/deps/rocksdb/rocksdb/third-party/folly/folly/portability/SysTypes.h +0 -26
  897. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicNotification-inl.h +0 -138
  898. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicNotification.cpp +0 -23
  899. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicNotification.h +0 -57
  900. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicUtil-inl.h +0 -260
  901. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicUtil.h +0 -52
  902. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/Baton.h +0 -328
  903. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutex-inl.h +0 -1703
  904. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutex.cpp +0 -16
  905. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutex.h +0 -304
  906. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutexSpecializations.h +0 -39
  907. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/ParkingLot.cpp +0 -26
  908. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/ParkingLot.h +0 -318
  909. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/WaitOptions.h +0 -57
  910. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/InlineFunctionRef.h +0 -219
  911. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/ProxyLockable-inl.h +0 -207
  912. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/ProxyLockable.h +0 -164
  913. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/Sleeper.h +0 -57
  914. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/Spin.h +0 -77
  915. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/test/DistributedMutexTest.cpp +0 -1145
  916. package/deps/rocksdb/rocksdb/util/build_version.h +0 -15
  917. package/deps/rocksdb/rocksdb/util/xxh3p.h +0 -1392
  918. package/deps/rocksdb/rocksdb/utilities/backupable/backupable_db.cc +0 -2354
  919. package/deps/rocksdb/rocksdb/utilities/env_librados.cc +0 -1497
  920. package/deps/rocksdb/rocksdb/utilities/env_librados_test.cc +0 -1146
  921. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/README +0 -13
  922. package/deps/snappy/snappy-1.1.7/README.md +0 -149
  923. package/prebuilds/linux-x64/node.napi.glibc.node +0 -0
@@ -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) {