@nxtedition/rocksdb 5.2.21 → 5.2.26

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