@nxtedition/rocksdb 5.2.21 → 5.2.28

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