@nxtedition/rocksdb 5.2.21 → 5.2.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (909) hide show
  1. package/binding.cc +216 -252
  2. package/binding.gyp +78 -72
  3. package/deps/rocksdb/build_version.cc +70 -4
  4. package/deps/rocksdb/rocksdb/CMakeLists.txt +281 -149
  5. package/deps/rocksdb/rocksdb/Makefile +459 -469
  6. package/deps/rocksdb/rocksdb/README.md +4 -4
  7. package/deps/rocksdb/rocksdb/TARGETS +5244 -1500
  8. package/deps/rocksdb/rocksdb/cache/cache.cc +12 -3
  9. package/deps/rocksdb/rocksdb/cache/cache_bench.cc +7 -368
  10. package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +924 -0
  11. package/deps/rocksdb/rocksdb/cache/cache_entry_roles.cc +128 -0
  12. package/deps/rocksdb/rocksdb/cache/cache_entry_roles.h +103 -0
  13. package/deps/rocksdb/rocksdb/cache/cache_entry_stats.h +183 -0
  14. package/deps/rocksdb/rocksdb/cache/cache_helpers.h +11 -0
  15. package/deps/rocksdb/rocksdb/cache/cache_key.cc +344 -0
  16. package/deps/rocksdb/rocksdb/cache/cache_key.h +132 -0
  17. package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.cc +183 -0
  18. package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.h +288 -0
  19. package/deps/rocksdb/rocksdb/cache/cache_reservation_manager_test.cc +468 -0
  20. package/deps/rocksdb/rocksdb/cache/cache_test.cc +85 -8
  21. package/deps/rocksdb/rocksdb/cache/clock_cache.cc +121 -51
  22. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +171 -0
  23. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +86 -0
  24. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +607 -0
  25. package/deps/rocksdb/rocksdb/cache/lru_cache.cc +381 -154
  26. package/deps/rocksdb/rocksdb/cache/lru_cache.h +176 -33
  27. package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +1659 -3
  28. package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +94 -23
  29. package/deps/rocksdb/rocksdb/cache/sharded_cache.h +49 -28
  30. package/deps/rocksdb/rocksdb/crash_test.mk +93 -0
  31. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +54 -31
  32. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +10 -6
  33. package/deps/rocksdb/rocksdb/db/blob/blob_counting_iterator.h +146 -0
  34. package/deps/rocksdb/rocksdb/db/blob/blob_counting_iterator_test.cc +326 -0
  35. package/deps/rocksdb/rocksdb/db/blob/blob_fetcher.cc +34 -0
  36. package/deps/rocksdb/rocksdb/db/blob/blob_fetcher.h +37 -0
  37. package/deps/rocksdb/rocksdb/db/blob/blob_file_addition.cc +4 -2
  38. package/deps/rocksdb/rocksdb/db/blob/blob_file_addition_test.cc +8 -4
  39. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +99 -40
  40. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.h +20 -8
  41. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +95 -83
  42. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.cc +13 -10
  43. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.h +7 -4
  44. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache_test.cc +37 -37
  45. package/deps/rocksdb/rocksdb/db/blob/blob_file_completion_callback.h +101 -0
  46. package/deps/rocksdb/rocksdb/db/blob/blob_file_meta.cc +8 -1
  47. package/deps/rocksdb/rocksdb/db/blob/blob_file_meta.h +6 -0
  48. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +209 -44
  49. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +37 -11
  50. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +382 -179
  51. package/deps/rocksdb/rocksdb/db/blob/blob_garbage_meter.cc +100 -0
  52. package/deps/rocksdb/rocksdb/db/blob/blob_garbage_meter.h +102 -0
  53. package/deps/rocksdb/rocksdb/db/blob/blob_garbage_meter_test.cc +196 -0
  54. package/deps/rocksdb/rocksdb/db/blob/blob_index.h +3 -0
  55. package/deps/rocksdb/rocksdb/db/blob/blob_log_format.h +2 -1
  56. package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.cc +7 -5
  57. package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.h +10 -3
  58. package/deps/rocksdb/rocksdb/db/blob/blob_log_writer.cc +12 -8
  59. package/deps/rocksdb/rocksdb/db/blob/blob_log_writer.h +5 -5
  60. package/deps/rocksdb/rocksdb/db/blob/db_blob_basic_test.cc +772 -9
  61. package/deps/rocksdb/rocksdb/db/blob/db_blob_compaction_test.cc +730 -0
  62. package/deps/rocksdb/rocksdb/db/blob/db_blob_corruption_test.cc +82 -0
  63. package/deps/rocksdb/rocksdb/db/blob/db_blob_index_test.cc +155 -17
  64. package/deps/rocksdb/rocksdb/db/blob/prefetch_buffer_collection.cc +21 -0
  65. package/deps/rocksdb/rocksdb/db/blob/prefetch_buffer_collection.h +38 -0
  66. package/deps/rocksdb/rocksdb/db/builder.cc +137 -89
  67. package/deps/rocksdb/rocksdb/db/builder.h +16 -37
  68. package/deps/rocksdb/rocksdb/db/c.cc +413 -208
  69. package/deps/rocksdb/rocksdb/db/c_test.c +227 -138
  70. package/deps/rocksdb/rocksdb/db/column_family.cc +118 -103
  71. package/deps/rocksdb/rocksdb/db/column_family.h +86 -44
  72. package/deps/rocksdb/rocksdb/db/column_family_test.cc +38 -24
  73. package/deps/rocksdb/rocksdb/db/compact_files_test.cc +81 -0
  74. package/deps/rocksdb/rocksdb/db/compaction/clipping_iterator.h +275 -0
  75. package/deps/rocksdb/rocksdb/db/compaction/clipping_iterator_test.cc +258 -0
  76. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +81 -28
  77. package/deps/rocksdb/rocksdb/db/compaction/compaction.h +43 -12
  78. package/deps/rocksdb/rocksdb/db/compaction/compaction_iteration_stats.h +12 -0
  79. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +406 -215
  80. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +147 -50
  81. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +167 -61
  82. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +1321 -156
  83. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +197 -28
  84. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +2 -3
  85. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +246 -43
  86. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +65 -26
  87. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +7 -7
  88. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +122 -9
  89. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +8 -2
  90. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +18 -6
  91. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +1 -1
  92. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +536 -44
  93. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +311 -30
  94. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +1 -1
  95. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +849 -0
  96. package/deps/rocksdb/rocksdb/db/compaction/file_pri.h +92 -0
  97. package/deps/rocksdb/rocksdb/db/compaction/sst_partitioner.cc +46 -0
  98. package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +1 -1
  99. package/deps/rocksdb/rocksdb/db/convenience.cc +6 -3
  100. package/deps/rocksdb/rocksdb/db/corruption_test.cc +383 -28
  101. package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +7 -2
  102. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +154 -45
  103. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +1095 -33
  104. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +1249 -203
  105. package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +135 -9
  106. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +1348 -166
  107. package/deps/rocksdb/rocksdb/db/db_dynamic_level_test.cc +3 -5
  108. package/deps/rocksdb/rocksdb/db/db_encryption_test.cc +1 -1
  109. package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +312 -45
  110. package/deps/rocksdb/rocksdb/db/db_flush_test.cc +1734 -48
  111. package/deps/rocksdb/rocksdb/db/{compacted_db_impl.cc → db_impl/compacted_db_impl.cc} +24 -7
  112. package/deps/rocksdb/rocksdb/db/{compacted_db_impl.h → db_impl/compacted_db_impl.h} +1 -1
  113. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +644 -333
  114. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +365 -92
  115. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +578 -210
  116. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +38 -16
  117. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +17 -10
  118. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +75 -74
  119. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +450 -183
  120. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +42 -9
  121. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +232 -15
  122. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +42 -4
  123. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +297 -100
  124. package/deps/rocksdb/rocksdb/db/db_info_dumper.cc +16 -15
  125. package/deps/rocksdb/rocksdb/db/db_inplace_update_test.cc +31 -1
  126. package/deps/rocksdb/rocksdb/db/db_io_failure_test.cc +6 -5
  127. package/deps/rocksdb/rocksdb/db/db_iter.cc +218 -153
  128. package/deps/rocksdb/rocksdb/db/db_iter.h +14 -12
  129. package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +1 -1
  130. package/deps/rocksdb/rocksdb/db/db_iter_test.cc +84 -160
  131. package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +47 -6
  132. package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +204 -0
  133. package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +21 -13
  134. package/deps/rocksdb/rocksdb/db/db_logical_block_size_cache_test.cc +17 -10
  135. package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +38 -24
  136. package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +184 -19
  137. package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +1 -1
  138. package/deps/rocksdb/rocksdb/db/db_options_test.cc +183 -3
  139. package/deps/rocksdb/rocksdb/db/db_properties_test.cc +409 -9
  140. package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +92 -23
  141. package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +446 -0
  142. package/deps/rocksdb/rocksdb/db/{db_impl/db_secondary_test.cc → db_secondary_test.cc} +363 -35
  143. package/deps/rocksdb/rocksdb/db/db_sst_test.cc +520 -15
  144. package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +50 -1
  145. package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +139 -4
  146. package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +1 -1
  147. package/deps/rocksdb/rocksdb/db/db_test.cc +669 -359
  148. package/deps/rocksdb/rocksdb/db/db_test2.cc +2110 -304
  149. package/deps/rocksdb/rocksdb/db/db_test_util.cc +76 -43
  150. package/deps/rocksdb/rocksdb/db/db_test_util.h +231 -103
  151. package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +19 -11
  152. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +490 -71
  153. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +980 -349
  154. package/deps/rocksdb/rocksdb/db/db_with_timestamp_compaction_test.cc +11 -12
  155. package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +793 -0
  156. package/deps/rocksdb/rocksdb/db/db_write_test.cc +2 -1
  157. package/deps/rocksdb/rocksdb/db/dbformat.cc +4 -12
  158. package/deps/rocksdb/rocksdb/db/dbformat.h +28 -18
  159. package/deps/rocksdb/rocksdb/db/dbformat_test.cc +3 -0
  160. package/deps/rocksdb/rocksdb/db/deletefile_test.cc +50 -15
  161. package/deps/rocksdb/rocksdb/db/error_handler.cc +127 -41
  162. package/deps/rocksdb/rocksdb/db/error_handler.h +12 -5
  163. package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +524 -255
  164. package/deps/rocksdb/rocksdb/db/event_helpers.cc +136 -11
  165. package/deps/rocksdb/rocksdb/db/event_helpers.h +27 -2
  166. package/deps/rocksdb/rocksdb/db/experimental.cc +100 -0
  167. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +307 -4
  168. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +137 -60
  169. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +12 -8
  170. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +86 -55
  171. package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +86 -5
  172. package/deps/rocksdb/rocksdb/db/filename_test.cc +63 -0
  173. package/deps/rocksdb/rocksdb/db/flush_job.cc +619 -64
  174. package/deps/rocksdb/rocksdb/db/flush_job.h +30 -7
  175. package/deps/rocksdb/rocksdb/db/flush_job_test.cc +33 -16
  176. package/deps/rocksdb/rocksdb/db/flush_scheduler.h +2 -1
  177. package/deps/rocksdb/rocksdb/db/forward_iterator.cc +18 -17
  178. package/deps/rocksdb/rocksdb/db/forward_iterator.h +5 -4
  179. package/deps/rocksdb/rocksdb/db/forward_iterator_bench.cc +0 -1
  180. package/deps/rocksdb/rocksdb/db/history_trimming_iterator.h +91 -0
  181. package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +25 -14
  182. package/deps/rocksdb/rocksdb/db/import_column_family_job.h +6 -5
  183. package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +1 -1
  184. package/deps/rocksdb/rocksdb/db/internal_stats.cc +471 -50
  185. package/deps/rocksdb/rocksdb/db/internal_stats.h +129 -25
  186. package/deps/rocksdb/rocksdb/db/job_context.h +22 -9
  187. package/deps/rocksdb/rocksdb/db/kv_checksum.h +394 -0
  188. package/deps/rocksdb/rocksdb/db/listener_test.cc +518 -41
  189. package/deps/rocksdb/rocksdb/db/log_format.h +4 -1
  190. package/deps/rocksdb/rocksdb/db/log_reader.cc +129 -6
  191. package/deps/rocksdb/rocksdb/db/log_reader.h +17 -1
  192. package/deps/rocksdb/rocksdb/db/log_test.cc +161 -11
  193. package/deps/rocksdb/rocksdb/db/log_writer.cc +92 -13
  194. package/deps/rocksdb/rocksdb/db/log_writer.h +18 -5
  195. package/deps/rocksdb/rocksdb/db/logs_with_prep_tracker.h +1 -1
  196. package/deps/rocksdb/rocksdb/db/lookup_key.h +0 -1
  197. package/deps/rocksdb/rocksdb/db/malloc_stats.cc +2 -2
  198. package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +21 -8
  199. package/deps/rocksdb/rocksdb/db/memtable.cc +144 -54
  200. package/deps/rocksdb/rocksdb/db/memtable.h +72 -15
  201. package/deps/rocksdb/rocksdb/db/memtable_list.cc +95 -47
  202. package/deps/rocksdb/rocksdb/db/memtable_list.h +33 -13
  203. package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +61 -31
  204. package/deps/rocksdb/rocksdb/db/merge_context.h +20 -8
  205. package/deps/rocksdb/rocksdb/db/merge_helper.cc +54 -11
  206. package/deps/rocksdb/rocksdb/db/merge_helper.h +17 -6
  207. package/deps/rocksdb/rocksdb/db/merge_helper_test.cc +13 -7
  208. package/deps/rocksdb/rocksdb/db/merge_test.cc +40 -19
  209. package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +14 -25
  210. package/deps/rocksdb/rocksdb/db/output_validator.cc +3 -0
  211. package/deps/rocksdb/rocksdb/db/output_validator.h +5 -4
  212. package/deps/rocksdb/rocksdb/db/perf_context_test.cc +32 -28
  213. package/deps/rocksdb/rocksdb/db/periodic_work_scheduler.cc +43 -29
  214. package/deps/rocksdb/rocksdb/db/periodic_work_scheduler.h +9 -7
  215. package/deps/rocksdb/rocksdb/db/periodic_work_scheduler_test.cc +21 -16
  216. package/deps/rocksdb/rocksdb/db/pinned_iterators_manager.h +1 -1
  217. package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +29 -36
  218. package/deps/rocksdb/rocksdb/db/pre_release_callback.h +1 -2
  219. package/deps/rocksdb/rocksdb/db/prefix_test.cc +4 -4
  220. package/deps/rocksdb/rocksdb/db/range_del_aggregator.h +2 -2
  221. package/deps/rocksdb/rocksdb/db/range_del_aggregator_bench.cc +11 -11
  222. package/deps/rocksdb/rocksdb/db/range_del_aggregator_test.cc +3 -2
  223. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.cc +14 -8
  224. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +17 -0
  225. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter_test.cc +4 -2
  226. package/deps/rocksdb/rocksdb/db/read_callback.h +1 -0
  227. package/deps/rocksdb/rocksdb/db/repair.cc +87 -58
  228. package/deps/rocksdb/rocksdb/db/repair_test.cc +35 -5
  229. package/deps/rocksdb/rocksdb/db/snapshot_impl.h +2 -1
  230. package/deps/rocksdb/rocksdb/db/table_cache.cc +95 -69
  231. package/deps/rocksdb/rocksdb/db/table_cache.h +63 -53
  232. package/deps/rocksdb/rocksdb/db/table_properties_collector.cc +4 -4
  233. package/deps/rocksdb/rocksdb/db/table_properties_collector.h +78 -10
  234. package/deps/rocksdb/rocksdb/db/table_properties_collector_test.cc +28 -33
  235. package/deps/rocksdb/rocksdb/db/transaction_log_impl.cc +30 -51
  236. package/deps/rocksdb/rocksdb/db/transaction_log_impl.h +12 -8
  237. package/deps/rocksdb/rocksdb/db/version_builder.cc +564 -341
  238. package/deps/rocksdb/rocksdb/db/version_builder.h +8 -8
  239. package/deps/rocksdb/rocksdb/db/version_builder_test.cc +327 -155
  240. package/deps/rocksdb/rocksdb/db/version_edit.cc +89 -27
  241. package/deps/rocksdb/rocksdb/db/version_edit.h +42 -17
  242. package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +324 -43
  243. package/deps/rocksdb/rocksdb/db/version_edit_handler.h +79 -22
  244. package/deps/rocksdb/rocksdb/db/version_edit_test.cc +165 -20
  245. package/deps/rocksdb/rocksdb/db/version_set.cc +935 -1034
  246. package/deps/rocksdb/rocksdb/db/version_set.h +183 -122
  247. package/deps/rocksdb/rocksdb/db/version_set_test.cc +556 -138
  248. package/deps/rocksdb/rocksdb/db/version_util.h +68 -0
  249. package/deps/rocksdb/rocksdb/db/wal_manager.cc +23 -21
  250. package/deps/rocksdb/rocksdb/db/wal_manager.h +5 -2
  251. package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +30 -27
  252. package/deps/rocksdb/rocksdb/db/write_batch.cc +704 -209
  253. package/deps/rocksdb/rocksdb/db/write_batch_internal.h +135 -2
  254. package/deps/rocksdb/rocksdb/db/write_batch_test.cc +209 -5
  255. package/deps/rocksdb/rocksdb/db/write_callback_test.cc +2 -0
  256. package/deps/rocksdb/rocksdb/db/write_controller.cc +47 -54
  257. package/deps/rocksdb/rocksdb/db/write_controller.h +12 -9
  258. package/deps/rocksdb/rocksdb/db/write_controller_test.cc +215 -103
  259. package/deps/rocksdb/rocksdb/db/write_thread.cc +11 -0
  260. package/deps/rocksdb/rocksdb/db/write_thread.h +14 -8
  261. package/deps/rocksdb/rocksdb/db_stress_tool/CMakeLists.txt +7 -4
  262. package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +10 -3
  263. package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +6 -0
  264. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress.cc +1 -1
  265. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +19 -2
  266. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +78 -25
  267. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compaction_filter.h +13 -2
  268. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +29 -12
  269. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +5 -1
  270. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +199 -32
  271. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.cc +188 -0
  272. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +59 -10
  273. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +77 -109
  274. package/deps/rocksdb/rocksdb/{third-party/folly/folly/synchronization/WaitOptions.cpp → db_stress_tool/db_stress_stat.cc} +9 -4
  275. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_stat.h +7 -6
  276. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_table_properties_collector.h +1 -0
  277. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +699 -143
  278. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +20 -2
  279. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +49 -39
  280. package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +631 -0
  281. package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.h +287 -0
  282. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +1565 -0
  283. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.h +374 -0
  284. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +149 -18
  285. package/deps/rocksdb/rocksdb/env/composite_env.cc +464 -0
  286. package/deps/rocksdb/rocksdb/env/composite_env_wrapper.h +98 -646
  287. package/deps/rocksdb/rocksdb/env/emulated_clock.h +114 -0
  288. package/deps/rocksdb/rocksdb/env/env.cc +632 -42
  289. package/deps/rocksdb/rocksdb/env/env_basic_test.cc +84 -36
  290. package/deps/rocksdb/rocksdb/env/env_chroot.cc +88 -286
  291. package/deps/rocksdb/rocksdb/env/env_chroot.h +34 -1
  292. package/deps/rocksdb/rocksdb/env/env_encryption.cc +469 -277
  293. package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +9 -30
  294. package/deps/rocksdb/rocksdb/env/env_posix.cc +110 -119
  295. package/deps/rocksdb/rocksdb/env/env_test.cc +1128 -39
  296. package/deps/rocksdb/rocksdb/env/file_system.cc +147 -8
  297. package/deps/rocksdb/rocksdb/env/file_system_tracer.cc +207 -136
  298. package/deps/rocksdb/rocksdb/env/file_system_tracer.h +86 -54
  299. package/deps/rocksdb/rocksdb/env/fs_posix.cc +192 -64
  300. package/deps/rocksdb/rocksdb/env/fs_readonly.h +107 -0
  301. package/deps/rocksdb/rocksdb/env/fs_remap.cc +339 -0
  302. package/deps/rocksdb/rocksdb/env/fs_remap.h +139 -0
  303. package/deps/rocksdb/rocksdb/env/io_posix.cc +245 -41
  304. package/deps/rocksdb/rocksdb/env/io_posix.h +66 -1
  305. package/deps/rocksdb/rocksdb/env/mock_env.cc +147 -149
  306. package/deps/rocksdb/rocksdb/env/mock_env.h +113 -11
  307. package/deps/rocksdb/rocksdb/env/mock_env_test.cc +2 -4
  308. package/deps/rocksdb/rocksdb/env/unique_id_gen.cc +164 -0
  309. package/deps/rocksdb/rocksdb/env/unique_id_gen.h +71 -0
  310. package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +9 -5
  311. package/deps/rocksdb/rocksdb/file/delete_scheduler.h +6 -4
  312. package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +19 -12
  313. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +459 -70
  314. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +205 -28
  315. package/deps/rocksdb/rocksdb/file/file_util.cc +39 -28
  316. package/deps/rocksdb/rocksdb/file/file_util.h +18 -27
  317. package/deps/rocksdb/rocksdb/file/filename.cc +59 -22
  318. package/deps/rocksdb/rocksdb/file/filename.h +13 -8
  319. package/deps/rocksdb/rocksdb/file/line_file_reader.cc +68 -0
  320. package/deps/rocksdb/rocksdb/file/line_file_reader.h +59 -0
  321. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +1130 -6
  322. package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +220 -36
  323. package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +69 -17
  324. package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +13 -12
  325. package/deps/rocksdb/rocksdb/file/read_write_util.cc +3 -38
  326. package/deps/rocksdb/rocksdb/file/read_write_util.h +0 -4
  327. package/deps/rocksdb/rocksdb/file/readahead_file_info.h +33 -0
  328. package/deps/rocksdb/rocksdb/file/sequence_file_reader.cc +57 -9
  329. package/deps/rocksdb/rocksdb/file/sequence_file_reader.h +58 -6
  330. package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.cc +29 -54
  331. package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.h +22 -29
  332. package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +424 -50
  333. package/deps/rocksdb/rocksdb/file/writable_file_writer.h +66 -19
  334. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +157 -66
  335. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +224 -121
  336. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +333 -30
  337. package/deps/rocksdb/rocksdb/include/rocksdb/cache_bench_tool.h +14 -0
  338. package/deps/rocksdb/rocksdb/include/rocksdb/cleanable.h +1 -1
  339. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +90 -50
  340. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +13 -5
  341. package/deps/rocksdb/rocksdb/include/rocksdb/comparator.h +20 -4
  342. package/deps/rocksdb/rocksdb/include/rocksdb/concurrent_task_limiter.h +8 -3
  343. package/deps/rocksdb/rocksdb/include/rocksdb/configurable.h +53 -12
  344. package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +31 -6
  345. package/deps/rocksdb/rocksdb/include/rocksdb/customizable.h +102 -7
  346. package/deps/rocksdb/rocksdb/include/rocksdb/data_structure.h +51 -0
  347. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +370 -262
  348. package/deps/rocksdb/rocksdb/include/rocksdb/env.h +286 -87
  349. package/deps/rocksdb/rocksdb/include/rocksdb/env_encryption.h +124 -64
  350. package/deps/rocksdb/rocksdb/include/rocksdb/experimental.h +27 -0
  351. package/deps/rocksdb/rocksdb/include/rocksdb/file_checksum.h +21 -4
  352. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +384 -41
  353. package/deps/rocksdb/rocksdb/include/rocksdb/filter_policy.h +111 -143
  354. package/deps/rocksdb/rocksdb/include/rocksdb/flush_block_policy.h +20 -6
  355. package/deps/rocksdb/rocksdb/include/rocksdb/functor_wrapper.h +56 -0
  356. package/deps/rocksdb/rocksdb/include/rocksdb/io_status.h +15 -33
  357. package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +37 -1
  358. package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +1 -3
  359. package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +314 -26
  360. package/deps/rocksdb/rocksdb/include/rocksdb/memory_allocator.h +11 -7
  361. package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +50 -15
  362. package/deps/rocksdb/rocksdb/include/rocksdb/merge_operator.h +10 -3
  363. package/deps/rocksdb/rocksdb/include/rocksdb/metadata.h +186 -96
  364. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +373 -103
  365. package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +13 -3
  366. package/deps/rocksdb/rocksdb/include/rocksdb/persistent_cache.h +2 -2
  367. package/deps/rocksdb/rocksdb/include/rocksdb/rate_limiter.h +37 -7
  368. package/deps/rocksdb/rocksdb/include/rocksdb/rocksdb_namespace.h +6 -0
  369. package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +87 -0
  370. package/deps/rocksdb/rocksdb/include/rocksdb/slice.h +5 -12
  371. package/deps/rocksdb/rocksdb/include/rocksdb/slice_transform.h +59 -30
  372. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_manager.h +11 -11
  373. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +22 -0
  374. package/deps/rocksdb/rocksdb/include/rocksdb/sst_partitioner.h +17 -10
  375. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +121 -41
  376. package/deps/rocksdb/rocksdb/include/rocksdb/stats_history.h +1 -0
  377. package/deps/rocksdb/rocksdb/include/rocksdb/status.h +114 -136
  378. package/deps/rocksdb/rocksdb/include/rocksdb/system_clock.h +116 -0
  379. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +160 -18
  380. package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +57 -15
  381. package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +3 -1
  382. package/deps/rocksdb/rocksdb/include/rocksdb/trace_reader_writer.h +10 -6
  383. package/deps/rocksdb/rocksdb/include/rocksdb/trace_record.h +247 -0
  384. package/deps/rocksdb/rocksdb/include/rocksdb/trace_record_result.h +187 -0
  385. package/deps/rocksdb/rocksdb/include/rocksdb/transaction_log.h +1 -1
  386. package/deps/rocksdb/rocksdb/include/rocksdb/types.h +14 -24
  387. package/deps/rocksdb/rocksdb/include/rocksdb/unique_id.h +46 -0
  388. package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +14 -4
  389. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/agg_merge.h +138 -0
  390. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/backup_engine.h +631 -0
  391. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/cache_dump_load.h +142 -0
  392. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/checkpoint.h +12 -9
  393. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/customizable_util.h +368 -0
  394. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +24 -0
  395. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd_execute_result.h +4 -0
  396. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/object_registry.h +418 -63
  397. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +143 -73
  398. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_util.h +2 -2
  399. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/replayer.h +87 -0
  400. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/sim_cache.h +2 -2
  401. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +43 -5
  402. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/table_properties_collectors.h +18 -23
  403. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +26 -0
  404. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +32 -6
  405. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db_mutex.h +1 -2
  406. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +20 -1
  407. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +30 -3
  408. package/deps/rocksdb/rocksdb/include/rocksdb/wal_filter.h +11 -2
  409. package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +89 -11
  410. package/deps/rocksdb/rocksdb/include/rocksdb/write_batch_base.h +11 -0
  411. package/deps/rocksdb/rocksdb/include/rocksdb/write_buffer_manager.h +108 -38
  412. package/deps/rocksdb/rocksdb/logging/auto_roll_logger.cc +40 -23
  413. package/deps/rocksdb/rocksdb/logging/auto_roll_logger.h +12 -5
  414. package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +100 -49
  415. package/deps/rocksdb/rocksdb/logging/env_logger.h +7 -5
  416. package/deps/rocksdb/rocksdb/logging/env_logger_test.cc +0 -1
  417. package/deps/rocksdb/rocksdb/logging/posix_logger.h +3 -9
  418. package/deps/rocksdb/rocksdb/memory/arena.cc +3 -1
  419. package/deps/rocksdb/rocksdb/memory/arena.h +1 -1
  420. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +171 -106
  421. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.h +31 -15
  422. package/deps/rocksdb/rocksdb/memory/memkind_kmem_allocator.cc +15 -4
  423. package/deps/rocksdb/rocksdb/memory/memkind_kmem_allocator.h +24 -8
  424. package/deps/rocksdb/rocksdb/memory/memory_allocator.cc +91 -0
  425. package/deps/rocksdb/rocksdb/memory/memory_allocator_test.cc +239 -0
  426. package/deps/rocksdb/rocksdb/memory/memory_usage.h +14 -1
  427. package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.cc +72 -9
  428. package/deps/rocksdb/rocksdb/memtable/hash_skiplist_rep.cc +52 -6
  429. package/deps/rocksdb/rocksdb/memtable/inlineskiplist.h +53 -0
  430. package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +5 -5
  431. package/deps/rocksdb/rocksdb/memtable/memtablerep_bench.cc +17 -5
  432. package/deps/rocksdb/rocksdb/memtable/skiplist_test.cc +1 -1
  433. package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +87 -0
  434. package/deps/rocksdb/rocksdb/memtable/vectorrep.cc +20 -10
  435. package/deps/rocksdb/rocksdb/memtable/write_buffer_manager.cc +148 -94
  436. package/deps/rocksdb/rocksdb/memtable/write_buffer_manager_test.cc +160 -62
  437. package/deps/rocksdb/rocksdb/microbench/CMakeLists.txt +17 -0
  438. package/deps/rocksdb/rocksdb/microbench/README.md +60 -0
  439. package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +1360 -0
  440. package/deps/rocksdb/rocksdb/microbench/ribbon_bench.cc +153 -0
  441. package/deps/rocksdb/rocksdb/monitoring/histogram.cc +8 -15
  442. package/deps/rocksdb/rocksdb/monitoring/histogram.h +0 -1
  443. package/deps/rocksdb/rocksdb/monitoring/histogram_test.cc +18 -16
  444. package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.cc +9 -7
  445. package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.h +5 -3
  446. package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.cc +7 -5
  447. package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.h +37 -12
  448. package/deps/rocksdb/rocksdb/monitoring/iostats_context.cc +26 -6
  449. package/deps/rocksdb/rocksdb/monitoring/iostats_context_imp.h +6 -10
  450. package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +14 -13
  451. package/deps/rocksdb/rocksdb/monitoring/perf_context_imp.h +19 -20
  452. package/deps/rocksdb/rocksdb/monitoring/perf_step_timer.h +18 -18
  453. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +84 -2
  454. package/deps/rocksdb/rocksdb/monitoring/statistics.h +6 -0
  455. package/deps/rocksdb/rocksdb/monitoring/statistics_test.cc +47 -2
  456. package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +67 -54
  457. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.cc +4 -1
  458. package/deps/rocksdb/rocksdb/monitoring/thread_status_util.cc +2 -1
  459. package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +2 -2
  460. package/deps/rocksdb/rocksdb/options/cf_options.cc +280 -212
  461. package/deps/rocksdb/rocksdb/options/cf_options.h +51 -57
  462. package/deps/rocksdb/rocksdb/options/configurable.cc +242 -138
  463. package/deps/rocksdb/rocksdb/options/configurable_helper.h +4 -68
  464. package/deps/rocksdb/rocksdb/options/configurable_test.cc +144 -21
  465. package/deps/rocksdb/rocksdb/options/configurable_test.h +2 -3
  466. package/deps/rocksdb/rocksdb/options/customizable.cc +67 -7
  467. package/deps/rocksdb/rocksdb/options/customizable_test.cc +1773 -151
  468. package/deps/rocksdb/rocksdb/options/db_options.cc +275 -47
  469. package/deps/rocksdb/rocksdb/options/db_options.h +36 -7
  470. package/deps/rocksdb/rocksdb/options/options.cc +49 -17
  471. package/deps/rocksdb/rocksdb/options/options_helper.cc +369 -352
  472. package/deps/rocksdb/rocksdb/options/options_helper.h +23 -23
  473. package/deps/rocksdb/rocksdb/options/options_parser.cc +18 -13
  474. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +67 -54
  475. package/deps/rocksdb/rocksdb/options/options_test.cc +1162 -187
  476. package/deps/rocksdb/rocksdb/plugin/README.md +43 -0
  477. package/deps/rocksdb/rocksdb/port/jemalloc_helper.h +1 -1
  478. package/deps/rocksdb/rocksdb/port/lang.h +52 -0
  479. package/deps/rocksdb/rocksdb/port/port_example.h +1 -1
  480. package/deps/rocksdb/rocksdb/port/port_posix.cc +31 -2
  481. package/deps/rocksdb/rocksdb/port/port_posix.h +20 -2
  482. package/deps/rocksdb/rocksdb/port/stack_trace.cc +20 -4
  483. package/deps/rocksdb/rocksdb/port/sys_time.h +2 -2
  484. package/deps/rocksdb/rocksdb/port/win/env_default.cc +7 -7
  485. package/deps/rocksdb/rocksdb/port/win/env_win.cc +44 -74
  486. package/deps/rocksdb/rocksdb/port/win/env_win.h +25 -23
  487. package/deps/rocksdb/rocksdb/port/win/io_win.cc +32 -34
  488. package/deps/rocksdb/rocksdb/port/win/io_win.h +12 -6
  489. package/deps/rocksdb/rocksdb/port/win/port_win.cc +55 -35
  490. package/deps/rocksdb/rocksdb/port/win/port_win.h +22 -5
  491. package/deps/rocksdb/rocksdb/port/win/win_logger.cc +3 -3
  492. package/deps/rocksdb/rocksdb/port/win/win_logger.h +3 -5
  493. package/deps/rocksdb/rocksdb/port/win/win_thread.cc +7 -1
  494. package/deps/rocksdb/rocksdb/port/win/win_thread.h +12 -17
  495. package/deps/rocksdb/rocksdb/python.mk +9 -0
  496. package/deps/rocksdb/rocksdb/src.mk +82 -34
  497. package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.cc +3 -4
  498. package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.h +1 -1
  499. package/deps/rocksdb/rocksdb/table/block_based/block.cc +158 -80
  500. package/deps/rocksdb/rocksdb/table/block_based/block.h +64 -36
  501. package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.cc +23 -14
  502. package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.h +13 -5
  503. package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block_test.cc +3 -218
  504. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +603 -328
  505. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +28 -22
  506. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +220 -82
  507. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +8 -2
  508. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +3 -4
  509. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +28 -4
  510. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +598 -492
  511. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +151 -96
  512. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +31 -58
  513. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +330 -92
  514. package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +50 -19
  515. package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +23 -0
  516. package/deps/rocksdb/rocksdb/table/block_based/block_like_traits.h +226 -0
  517. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +56 -22
  518. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +42 -4
  519. package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +5 -2
  520. package/deps/rocksdb/rocksdb/table/block_based/block_type.h +2 -0
  521. package/deps/rocksdb/rocksdb/table/block_based/cachable_entry.h +34 -20
  522. package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +9 -10
  523. package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +26 -3
  524. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +2 -1
  525. package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +844 -202
  526. package/deps/rocksdb/rocksdb/table/block_based/filter_policy_internal.h +281 -81
  527. package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.cc +62 -2
  528. package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.h +2 -3
  529. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +28 -7
  530. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +22 -6
  531. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block_test.cc +28 -26
  532. package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +1 -1
  533. package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +1 -2
  534. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +2 -1
  535. package/deps/rocksdb/rocksdb/table/block_based/mock_block_based_table.h +11 -4
  536. package/deps/rocksdb/rocksdb/table/block_based/parsed_full_filter_block.cc +2 -1
  537. package/deps/rocksdb/rocksdb/table/block_based/parsed_full_filter_block.h +2 -0
  538. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +68 -26
  539. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +44 -9
  540. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +12 -10
  541. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +3 -4
  542. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.h +23 -4
  543. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +44 -19
  544. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.h +5 -1
  545. package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +16 -28
  546. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +7 -4
  547. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +2 -2
  548. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +77 -57
  549. package/deps/rocksdb/rocksdb/table/block_fetcher.h +23 -12
  550. package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +43 -56
  551. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +8 -8
  552. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.h +2 -1
  553. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +52 -70
  554. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_factory.cc +5 -8
  555. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_factory.h +1 -1
  556. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.cc +17 -11
  557. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.h +2 -3
  558. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +42 -51
  559. package/deps/rocksdb/rocksdb/table/format.cc +258 -104
  560. package/deps/rocksdb/rocksdb/table/format.h +120 -109
  561. package/deps/rocksdb/rocksdb/table/get_context.cc +97 -65
  562. package/deps/rocksdb/rocksdb/table/get_context.h +19 -12
  563. package/deps/rocksdb/rocksdb/table/internal_iterator.h +14 -0
  564. package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +8 -0
  565. package/deps/rocksdb/rocksdb/table/merger_test.cc +3 -2
  566. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +11 -21
  567. package/deps/rocksdb/rocksdb/table/merging_iterator.h +3 -3
  568. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +176 -171
  569. package/deps/rocksdb/rocksdb/table/meta_blocks.h +47 -33
  570. package/deps/rocksdb/rocksdb/table/mock_table.cc +7 -9
  571. package/deps/rocksdb/rocksdb/table/mock_table.h +3 -2
  572. package/deps/rocksdb/rocksdb/table/multiget_context.h +15 -8
  573. package/deps/rocksdb/rocksdb/table/persistent_cache_helper.cc +22 -29
  574. package/deps/rocksdb/rocksdb/table/persistent_cache_options.h +6 -3
  575. package/deps/rocksdb/rocksdb/table/plain/plain_table_bloom.h +5 -8
  576. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +29 -26
  577. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.h +12 -16
  578. package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.cc +145 -69
  579. package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.h +1 -1
  580. package/deps/rocksdb/rocksdb/table/plain/plain_table_index.cc +7 -6
  581. package/deps/rocksdb/rocksdb/table/plain/plain_table_index.h +3 -4
  582. package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.cc +3 -1
  583. package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.h +1 -1
  584. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +13 -18
  585. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.h +4 -9
  586. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +55 -37
  587. package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +10 -5
  588. package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +11 -8
  589. package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +222 -16
  590. package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +106 -58
  591. package/deps/rocksdb/rocksdb/table/sst_file_writer_collectors.h +6 -5
  592. package/deps/rocksdb/rocksdb/table/table_builder.h +68 -44
  593. package/deps/rocksdb/rocksdb/table/table_factory.cc +37 -10
  594. package/deps/rocksdb/rocksdb/table/table_properties.cc +109 -54
  595. package/deps/rocksdb/rocksdb/table/table_properties_internal.h +4 -20
  596. package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +33 -32
  597. package/deps/rocksdb/rocksdb/table/table_reader_caller.h +2 -0
  598. package/deps/rocksdb/rocksdb/table/table_test.cc +989 -326
  599. package/deps/rocksdb/rocksdb/table/two_level_iterator.cc +4 -0
  600. package/deps/rocksdb/rocksdb/table/unique_id.cc +166 -0
  601. package/deps/rocksdb/rocksdb/table/unique_id_impl.h +59 -0
  602. package/deps/rocksdb/rocksdb/test_util/mock_time_env.cc +1 -1
  603. package/deps/rocksdb/rocksdb/test_util/mock_time_env.h +13 -10
  604. package/deps/rocksdb/rocksdb/test_util/sync_point.cc +1 -2
  605. package/deps/rocksdb/rocksdb/test_util/sync_point.h +35 -16
  606. package/deps/rocksdb/rocksdb/test_util/sync_point_impl.cc +32 -10
  607. package/deps/rocksdb/rocksdb/test_util/sync_point_impl.h +31 -4
  608. package/deps/rocksdb/rocksdb/test_util/testharness.cc +53 -1
  609. package/deps/rocksdb/rocksdb/test_util/testharness.h +67 -3
  610. package/deps/rocksdb/rocksdb/test_util/testutil.cc +236 -66
  611. package/deps/rocksdb/rocksdb/test_util/testutil.h +63 -100
  612. package/deps/rocksdb/rocksdb/test_util/transaction_test_util.cc +12 -1
  613. package/deps/rocksdb/rocksdb/tools/blob_dump.cc +2 -2
  614. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.cc +6 -3
  615. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.h +1 -0
  616. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +9 -3
  617. package/deps/rocksdb/rocksdb/tools/db_bench.cc +1 -1
  618. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +1420 -611
  619. package/deps/rocksdb/rocksdb/tools/db_bench_tool_test.cc +11 -8
  620. package/deps/rocksdb/rocksdb/tools/db_repl_stress.cc +11 -1
  621. package/deps/rocksdb/rocksdb/tools/io_tracer_parser_test.cc +4 -2
  622. package/deps/rocksdb/rocksdb/tools/io_tracer_parser_tool.cc +46 -22
  623. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +655 -179
  624. package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +58 -6
  625. package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +472 -29
  626. package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +23 -2
  627. package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +2 -2
  628. package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.cc +246 -0
  629. package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.h +126 -0
  630. package/deps/rocksdb/rocksdb/tools/sst_dump_test.cc +83 -29
  631. package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +38 -17
  632. package/deps/rocksdb/rocksdb/tools/trace_analyzer_test.cc +191 -55
  633. package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +219 -296
  634. package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.h +87 -53
  635. package/deps/rocksdb/rocksdb/tools/write_stress.cc +8 -7
  636. package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.cc +6 -5
  637. package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.h +5 -4
  638. package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer_test.cc +14 -9
  639. package/deps/rocksdb/rocksdb/trace_replay/io_tracer.cc +134 -60
  640. package/deps/rocksdb/rocksdb/trace_replay/io_tracer.h +49 -38
  641. package/deps/rocksdb/rocksdb/trace_replay/io_tracer_test.cc +152 -15
  642. package/deps/rocksdb/rocksdb/trace_replay/trace_record.cc +206 -0
  643. package/deps/rocksdb/rocksdb/trace_replay/trace_record_handler.cc +190 -0
  644. package/deps/rocksdb/rocksdb/trace_replay/trace_record_handler.h +46 -0
  645. package/deps/rocksdb/rocksdb/trace_replay/trace_record_result.cc +146 -0
  646. package/deps/rocksdb/rocksdb/trace_replay/trace_replay.cc +475 -344
  647. package/deps/rocksdb/rocksdb/trace_replay/trace_replay.h +83 -95
  648. package/deps/rocksdb/rocksdb/util/autovector.h +38 -18
  649. package/deps/rocksdb/rocksdb/util/autovector_test.cc +1 -1
  650. package/deps/rocksdb/rocksdb/util/bloom_impl.h +4 -0
  651. package/deps/rocksdb/rocksdb/util/bloom_test.cc +276 -94
  652. package/deps/rocksdb/rocksdb/util/build_version.cc.in +81 -4
  653. package/deps/rocksdb/rocksdb/util/cast_util.h +22 -0
  654. package/deps/rocksdb/rocksdb/util/channel.h +2 -0
  655. package/deps/rocksdb/rocksdb/util/coding.h +1 -33
  656. package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +8 -0
  657. package/deps/rocksdb/rocksdb/util/comparator.cc +163 -3
  658. package/deps/rocksdb/rocksdb/util/compression.cc +122 -0
  659. package/deps/rocksdb/rocksdb/util/compression.h +212 -7
  660. package/deps/rocksdb/rocksdb/util/compression_context_cache.cc +1 -3
  661. package/deps/rocksdb/rocksdb/util/crc32c.cc +165 -2
  662. package/deps/rocksdb/rocksdb/util/crc32c.h +6 -0
  663. package/deps/rocksdb/rocksdb/util/crc32c_arm64.cc +14 -0
  664. package/deps/rocksdb/rocksdb/util/crc32c_ppc.h +3 -0
  665. package/deps/rocksdb/rocksdb/util/crc32c_test.cc +47 -0
  666. package/deps/rocksdb/rocksdb/util/defer.h +30 -1
  667. package/deps/rocksdb/rocksdb/util/defer_test.cc +11 -0
  668. package/deps/rocksdb/rocksdb/util/duplicate_detector.h +3 -1
  669. package/deps/rocksdb/rocksdb/util/dynamic_bloom.h +3 -3
  670. package/deps/rocksdb/rocksdb/util/dynamic_bloom_test.cc +5 -4
  671. package/deps/rocksdb/rocksdb/util/fastrange.h +2 -0
  672. package/deps/rocksdb/rocksdb/util/file_checksum_helper.cc +36 -0
  673. package/deps/rocksdb/rocksdb/util/file_checksum_helper.h +3 -1
  674. package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +512 -52
  675. package/deps/rocksdb/rocksdb/util/filter_bench.cc +65 -10
  676. package/deps/rocksdb/rocksdb/util/gflags_compat.h +6 -1
  677. package/deps/rocksdb/rocksdb/util/hash.cc +121 -3
  678. package/deps/rocksdb/rocksdb/util/hash.h +31 -1
  679. package/deps/rocksdb/rocksdb/util/hash128.h +26 -0
  680. package/deps/rocksdb/rocksdb/util/hash_containers.h +51 -0
  681. package/deps/rocksdb/rocksdb/util/hash_test.cc +194 -2
  682. package/deps/rocksdb/rocksdb/util/heap.h +6 -1
  683. package/deps/rocksdb/rocksdb/util/kv_map.h +1 -1
  684. package/deps/rocksdb/rocksdb/util/log_write_bench.cc +8 -6
  685. package/deps/rocksdb/rocksdb/util/math.h +74 -7
  686. package/deps/rocksdb/rocksdb/util/math128.h +13 -1
  687. package/deps/rocksdb/rocksdb/util/murmurhash.h +3 -3
  688. package/deps/rocksdb/rocksdb/util/random.cc +9 -0
  689. package/deps/rocksdb/rocksdb/util/random.h +6 -0
  690. package/deps/rocksdb/rocksdb/util/rate_limiter.cc +298 -144
  691. package/deps/rocksdb/rocksdb/util/rate_limiter.h +68 -19
  692. package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +335 -23
  693. package/deps/rocksdb/rocksdb/util/repeatable_thread.h +10 -12
  694. package/deps/rocksdb/rocksdb/util/repeatable_thread_test.cc +18 -15
  695. package/deps/rocksdb/rocksdb/util/ribbon_alg.h +98 -74
  696. package/deps/rocksdb/rocksdb/util/ribbon_config.cc +506 -0
  697. package/deps/rocksdb/rocksdb/util/ribbon_config.h +182 -0
  698. package/deps/rocksdb/rocksdb/util/ribbon_impl.h +154 -79
  699. package/deps/rocksdb/rocksdb/util/ribbon_test.cc +742 -365
  700. package/deps/rocksdb/rocksdb/util/set_comparator.h +2 -0
  701. package/deps/rocksdb/rocksdb/util/slice.cc +198 -35
  702. package/deps/rocksdb/rocksdb/util/slice_test.cc +30 -1
  703. package/deps/rocksdb/rocksdb/util/status.cc +32 -29
  704. package/deps/rocksdb/rocksdb/util/stop_watch.h +18 -18
  705. package/deps/rocksdb/rocksdb/util/string_util.cc +85 -6
  706. package/deps/rocksdb/rocksdb/util/string_util.h +47 -2
  707. package/deps/rocksdb/rocksdb/util/thread_guard.h +41 -0
  708. package/deps/rocksdb/rocksdb/util/thread_local.h +2 -2
  709. package/deps/rocksdb/rocksdb/util/thread_local_test.cc +22 -24
  710. package/deps/rocksdb/rocksdb/util/threadpool_imp.cc +7 -6
  711. package/deps/rocksdb/rocksdb/util/timer.h +55 -46
  712. package/deps/rocksdb/rocksdb/util/timer_test.cc +50 -48
  713. package/deps/rocksdb/rocksdb/util/user_comparator_wrapper.h +4 -0
  714. package/deps/rocksdb/rocksdb/util/vector_iterator.h +31 -15
  715. package/deps/rocksdb/rocksdb/util/work_queue.h +2 -0
  716. package/deps/rocksdb/rocksdb/util/xxhash.cc +35 -1144
  717. package/deps/rocksdb/rocksdb/util/xxhash.h +5117 -373
  718. package/deps/rocksdb/rocksdb/util/xxph3.h +1762 -0
  719. package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge.cc +238 -0
  720. package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge.h +49 -0
  721. package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge_test.cc +134 -0
  722. package/deps/rocksdb/rocksdb/utilities/agg_merge/test_agg_merge.cc +104 -0
  723. package/deps/rocksdb/rocksdb/utilities/agg_merge/test_agg_merge.h +47 -0
  724. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +3164 -0
  725. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_impl.h +29 -0
  726. package/deps/rocksdb/rocksdb/utilities/{backupable/backupable_db_test.cc → backup/backup_engine_test.cc} +1679 -485
  727. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.cc +6 -4
  728. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.h +14 -9
  729. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.cc +2 -0
  730. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.h +1 -0
  731. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_gc_stats.h +4 -0
  732. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +37 -27
  733. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +8 -4
  734. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl_filesnapshot.cc +1 -1
  735. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_iterator.h +13 -10
  736. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +5 -0
  737. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +44 -25
  738. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +3 -4
  739. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +27 -19
  740. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.h +4 -2
  741. package/deps/rocksdb/rocksdb/utilities/cache_dump_load.cc +69 -0
  742. package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +489 -0
  743. package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.h +366 -0
  744. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.cc +67 -4
  745. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.h +21 -6
  746. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_functional_test.cc +107 -7
  747. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_options.h +43 -0
  748. package/deps/rocksdb/rocksdb/utilities/cassandra/format.h +1 -1
  749. package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.cc +24 -8
  750. package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.h +7 -7
  751. package/deps/rocksdb/rocksdb/utilities/cassandra/serialize.h +5 -0
  752. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +99 -218
  753. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.h +8 -24
  754. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +114 -1
  755. package/deps/rocksdb/rocksdb/utilities/compaction_filters/layered_compaction_filter_base.h +6 -2
  756. package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc +0 -4
  757. package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.h +7 -6
  758. package/deps/rocksdb/rocksdb/utilities/compaction_filters.cc +56 -0
  759. package/deps/rocksdb/rocksdb/utilities/convenience/info_log_finder.cc +2 -2
  760. package/deps/rocksdb/rocksdb/utilities/counted_fs.cc +355 -0
  761. package/deps/rocksdb/rocksdb/utilities/counted_fs.h +152 -0
  762. package/deps/rocksdb/rocksdb/utilities/env_mirror.cc +13 -0
  763. package/deps/rocksdb/rocksdb/utilities/env_timed.cc +164 -122
  764. package/deps/rocksdb/rocksdb/utilities/env_timed.h +97 -0
  765. package/deps/rocksdb/rocksdb/utilities/fault_injection_env.cc +75 -17
  766. package/deps/rocksdb/rocksdb/utilities/fault_injection_env.h +19 -3
  767. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +539 -126
  768. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +162 -17
  769. package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.cc +110 -0
  770. package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.h +94 -0
  771. package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +5 -2
  772. package/deps/rocksdb/rocksdb/utilities/memory_allocators.h +104 -0
  773. package/deps/rocksdb/rocksdb/utilities/merge_operators/bytesxor.h +5 -3
  774. package/deps/rocksdb/rocksdb/utilities/merge_operators/max.cc +4 -1
  775. package/deps/rocksdb/rocksdb/utilities/merge_operators/put.cc +11 -3
  776. package/deps/rocksdb/rocksdb/utilities/merge_operators/sortlist.cc +0 -2
  777. package/deps/rocksdb/rocksdb/utilities/merge_operators/sortlist.h +5 -1
  778. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.cc +29 -10
  779. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.h +6 -3
  780. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend2.cc +29 -14
  781. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend2.h +6 -3
  782. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend_test.cc +71 -18
  783. package/deps/rocksdb/rocksdb/utilities/merge_operators/uint64add.cc +15 -9
  784. package/deps/rocksdb/rocksdb/utilities/merge_operators.cc +120 -0
  785. package/deps/rocksdb/rocksdb/utilities/merge_operators.h +3 -23
  786. package/deps/rocksdb/rocksdb/utilities/object_registry.cc +267 -42
  787. package/deps/rocksdb/rocksdb/utilities/object_registry_test.cc +702 -76
  788. package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration.cc +1 -1
  789. package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration_test.cc +26 -5
  790. package/deps/rocksdb/rocksdb/utilities/options/options_util.cc +1 -1
  791. package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +124 -1
  792. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.cc +2 -3
  793. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.h +8 -9
  794. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +15 -13
  795. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.h +1 -1
  796. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.h +4 -4
  797. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_evictable.h +2 -2
  798. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_bench.cc +8 -9
  799. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.cc +1 -1
  800. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.h +6 -3
  801. package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.h +2 -2
  802. package/deps/rocksdb/rocksdb/utilities/simulator_cache/cache_simulator.cc +3 -0
  803. package/deps/rocksdb/rocksdb/utilities/simulator_cache/cache_simulator_test.cc +2 -0
  804. package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache.cc +43 -35
  805. package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache_test.cc +20 -18
  806. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.cc +107 -2
  807. package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.cc +23 -15
  808. package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.h +2 -2
  809. package/deps/rocksdb/rocksdb/utilities/trace/replayer_impl.cc +316 -0
  810. package/deps/rocksdb/rocksdb/utilities/trace/replayer_impl.h +86 -0
  811. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.cc +4 -5
  812. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.h +4 -3
  813. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.h +1 -1
  814. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +119 -3
  815. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.cc +20 -3
  816. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.h +20 -0
  817. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_external_pthread.h +3 -2
  818. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +4 -0
  819. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc +38 -14
  820. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.h +17 -10
  821. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +1 -0
  822. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +1 -2
  823. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +423 -34
  824. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +82 -2
  825. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.cc +72 -40
  826. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.h +32 -1
  827. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +13 -5
  828. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +7 -3
  829. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +207 -43
  830. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +50 -7
  831. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.cc +28 -10
  832. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.h +11 -6
  833. package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +516 -0
  834. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +506 -15
  835. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +27 -13
  836. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +14 -14
  837. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.h +3 -0
  838. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +2 -2
  839. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +14 -5
  840. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +305 -27
  841. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +55 -159
  842. package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +209 -2
  843. package/deps/rocksdb/rocksdb/utilities/wal_filter.cc +23 -0
  844. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +157 -88
  845. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +501 -114
  846. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +91 -316
  847. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +1212 -672
  848. package/deps/rocksdb/rocksdb.gyp +425 -446
  849. package/package.json +8 -8
  850. package/prebuilds/darwin-arm64/node.napi.node +0 -0
  851. package/prebuilds/darwin-x86/node.napi.node +0 -0
  852. package/prebuilds/{darwin-x64+arm64 → linux-x64}/node.napi.node +0 -0
  853. package/deps/rocksdb/rocksdb/env/env_hdfs.cc +0 -648
  854. package/deps/rocksdb/rocksdb/hdfs/README +0 -23
  855. package/deps/rocksdb/rocksdb/hdfs/env_hdfs.h +0 -386
  856. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/backupable_db.h +0 -535
  857. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/env_librados.h +0 -175
  858. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/utility_db.h +0 -34
  859. package/deps/rocksdb/rocksdb/memory/memkind_kmem_allocator_test.cc +0 -102
  860. package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.h +0 -49
  861. package/deps/rocksdb/rocksdb/memtable/hash_skiplist_rep.h +0 -44
  862. package/deps/rocksdb/rocksdb/options/customizable_helper.h +0 -216
  863. package/deps/rocksdb/rocksdb/third-party/folly/folly/CPortability.h +0 -27
  864. package/deps/rocksdb/rocksdb/third-party/folly/folly/ConstexprMath.h +0 -45
  865. package/deps/rocksdb/rocksdb/third-party/folly/folly/Indestructible.h +0 -166
  866. package/deps/rocksdb/rocksdb/third-party/folly/folly/Optional.h +0 -570
  867. package/deps/rocksdb/rocksdb/third-party/folly/folly/Portability.h +0 -92
  868. package/deps/rocksdb/rocksdb/third-party/folly/folly/ScopeGuard.h +0 -54
  869. package/deps/rocksdb/rocksdb/third-party/folly/folly/Traits.h +0 -152
  870. package/deps/rocksdb/rocksdb/third-party/folly/folly/Unit.h +0 -59
  871. package/deps/rocksdb/rocksdb/third-party/folly/folly/Utility.h +0 -141
  872. package/deps/rocksdb/rocksdb/third-party/folly/folly/chrono/Hardware.h +0 -33
  873. package/deps/rocksdb/rocksdb/third-party/folly/folly/container/Array.h +0 -74
  874. package/deps/rocksdb/rocksdb/third-party/folly/folly/detail/Futex-inl.h +0 -117
  875. package/deps/rocksdb/rocksdb/third-party/folly/folly/detail/Futex.cpp +0 -263
  876. package/deps/rocksdb/rocksdb/third-party/folly/folly/detail/Futex.h +0 -96
  877. package/deps/rocksdb/rocksdb/third-party/folly/folly/functional/Invoke.h +0 -40
  878. package/deps/rocksdb/rocksdb/third-party/folly/folly/hash/Hash.h +0 -29
  879. package/deps/rocksdb/rocksdb/third-party/folly/folly/lang/Align.h +0 -144
  880. package/deps/rocksdb/rocksdb/third-party/folly/folly/lang/Bits.h +0 -30
  881. package/deps/rocksdb/rocksdb/third-party/folly/folly/lang/Launder.h +0 -51
  882. package/deps/rocksdb/rocksdb/third-party/folly/folly/portability/Asm.h +0 -28
  883. package/deps/rocksdb/rocksdb/third-party/folly/folly/portability/SysSyscall.h +0 -10
  884. package/deps/rocksdb/rocksdb/third-party/folly/folly/portability/SysTypes.h +0 -26
  885. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicNotification-inl.h +0 -138
  886. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicNotification.cpp +0 -23
  887. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicNotification.h +0 -57
  888. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicUtil-inl.h +0 -260
  889. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicUtil.h +0 -52
  890. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/Baton.h +0 -328
  891. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutex-inl.h +0 -1703
  892. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutex.cpp +0 -16
  893. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutex.h +0 -304
  894. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutexSpecializations.h +0 -39
  895. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/ParkingLot.cpp +0 -26
  896. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/ParkingLot.h +0 -318
  897. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/WaitOptions.h +0 -57
  898. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/InlineFunctionRef.h +0 -219
  899. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/ProxyLockable-inl.h +0 -207
  900. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/ProxyLockable.h +0 -164
  901. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/Sleeper.h +0 -57
  902. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/Spin.h +0 -77
  903. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/test/DistributedMutexTest.cpp +0 -1145
  904. package/deps/rocksdb/rocksdb/util/build_version.h +0 -15
  905. package/deps/rocksdb/rocksdb/util/xxh3p.h +0 -1392
  906. package/deps/rocksdb/rocksdb/utilities/backupable/backupable_db.cc +0 -2354
  907. package/deps/rocksdb/rocksdb/utilities/env_librados.cc +0 -1497
  908. package/deps/rocksdb/rocksdb/utilities/env_librados_test.cc +0 -1146
  909. package/prebuilds/linux-x64/node.napi.glibc.node +0 -0
@@ -9,8 +9,13 @@
9
9
 
10
10
  #include "db/version_set.h"
11
11
 
12
+ #include <algorithm>
13
+
12
14
  #include "db/db_impl/db_impl.h"
13
15
  #include "db/log_writer.h"
16
+ #include "rocksdb/advanced_options.h"
17
+ #include "rocksdb/convenience.h"
18
+ #include "rocksdb/file_system.h"
14
19
  #include "table/block_based/block_based_table_factory.h"
15
20
  #include "table/mock_table.h"
16
21
  #include "test_util/testharness.h"
@@ -40,9 +45,11 @@ class GenerateLevelFilesBriefTest : public testing::Test {
40
45
  files_.size() + 1, 0, 0,
41
46
  InternalKey(smallest, smallest_seq, kTypeValue),
42
47
  InternalKey(largest, largest_seq, kTypeValue), smallest_seq,
43
- largest_seq, /* marked_for_compact */ false, kInvalidBlobFileNumber,
44
- kUnknownOldestAncesterTime, kUnknownFileCreationTime,
45
- kUnknownFileChecksum, kUnknownFileChecksumFuncName);
48
+ largest_seq, /* marked_for_compact */ false, Temperature::kUnknown,
49
+ kInvalidBlobFileNumber, kUnknownOldestAncesterTime,
50
+ kUnknownFileCreationTime, kUnknownFileChecksum,
51
+ kUnknownFileChecksumFuncName, kDisableUserTimestamp,
52
+ kDisableUserTimestamp);
46
53
  files_.push_back(f);
47
54
  }
48
55
 
@@ -102,7 +109,7 @@ class VersionStorageInfoTestBase : public testing::Test {
102
109
  InternalKeyComparator icmp_;
103
110
  std::shared_ptr<CountingLogger> logger_;
104
111
  Options options_;
105
- ImmutableCFOptions ioptions_;
112
+ ImmutableOptions ioptions_;
106
113
  MutableCFOptions mutable_cf_options_;
107
114
  VersionStorageInfo vstorage_;
108
115
 
@@ -133,31 +140,49 @@ class VersionStorageInfoTestBase : public testing::Test {
133
140
  }
134
141
 
135
142
  void Add(int level, uint32_t file_number, const char* smallest,
136
- const char* largest, uint64_t file_size = 0) {
137
- assert(level < vstorage_.num_levels());
138
- FileMetaData* f = new FileMetaData(
139
- file_number, 0, file_size, GetInternalKey(smallest, 0),
140
- GetInternalKey(largest, 0), /* smallest_seq */ 0, /* largest_seq */ 0,
141
- /* marked_for_compact */ false, kInvalidBlobFileNumber,
142
- kUnknownOldestAncesterTime, kUnknownFileCreationTime,
143
- kUnknownFileChecksum, kUnknownFileChecksumFuncName);
144
- f->compensated_file_size = file_size;
145
- vstorage_.AddFile(level, f);
143
+ const char* largest, uint64_t file_size = 0,
144
+ uint64_t oldest_blob_file_number = kInvalidBlobFileNumber) {
145
+ constexpr SequenceNumber dummy_seq = 0;
146
+
147
+ Add(level, file_number, GetInternalKey(smallest, dummy_seq),
148
+ GetInternalKey(largest, dummy_seq), file_size, oldest_blob_file_number);
146
149
  }
147
150
 
148
151
  void Add(int level, uint32_t file_number, const InternalKey& smallest,
149
- const InternalKey& largest, uint64_t file_size = 0) {
152
+ const InternalKey& largest, uint64_t file_size = 0,
153
+ uint64_t oldest_blob_file_number = kInvalidBlobFileNumber) {
150
154
  assert(level < vstorage_.num_levels());
151
155
  FileMetaData* f = new FileMetaData(
152
156
  file_number, 0, file_size, smallest, largest, /* smallest_seq */ 0,
153
157
  /* largest_seq */ 0, /* marked_for_compact */ false,
154
- kInvalidBlobFileNumber, kUnknownOldestAncesterTime,
155
- kUnknownFileCreationTime, kUnknownFileChecksum,
156
- kUnknownFileChecksumFuncName);
158
+ Temperature::kUnknown, oldest_blob_file_number,
159
+ kUnknownOldestAncesterTime, kUnknownFileCreationTime,
160
+ kUnknownFileChecksum, kUnknownFileChecksumFuncName,
161
+ kDisableUserTimestamp, kDisableUserTimestamp);
157
162
  f->compensated_file_size = file_size;
158
163
  vstorage_.AddFile(level, f);
159
164
  }
160
165
 
166
+ void AddBlob(uint64_t blob_file_number, uint64_t total_blob_count,
167
+ uint64_t total_blob_bytes,
168
+ BlobFileMetaData::LinkedSsts linked_ssts,
169
+ uint64_t garbage_blob_count, uint64_t garbage_blob_bytes) {
170
+ auto shared_meta = SharedBlobFileMetaData::Create(
171
+ blob_file_number, total_blob_count, total_blob_bytes,
172
+ /* checksum_method */ std::string(),
173
+ /* checksum_value */ std::string());
174
+ auto meta =
175
+ BlobFileMetaData::Create(std::move(shared_meta), std::move(linked_ssts),
176
+ garbage_blob_count, garbage_blob_bytes);
177
+
178
+ vstorage_.AddBlobFile(std::move(meta));
179
+ }
180
+
181
+ void UpdateVersionStorageInfo() {
182
+ vstorage_.PrepareForVersionAppend(ioptions_, mutable_cf_options_);
183
+ vstorage_.SetFinalized();
184
+ }
185
+
161
186
  std::string GetOverlappingFiles(int level, const InternalKey& begin,
162
187
  const InternalKey& end) {
163
188
  std::vector<FileMetaData*> inputs;
@@ -185,10 +210,12 @@ TEST_F(VersionStorageInfoTest, MaxBytesForLevelStatic) {
185
210
  ioptions_.level_compaction_dynamic_level_bytes = false;
186
211
  mutable_cf_options_.max_bytes_for_level_base = 10;
187
212
  mutable_cf_options_.max_bytes_for_level_multiplier = 5;
188
- Add(4, 100U, "1", "2");
189
- Add(5, 101U, "1", "2");
190
213
 
191
- vstorage_.CalculateBaseBytes(ioptions_, mutable_cf_options_);
214
+ Add(4, 100U, "1", "2", 100U);
215
+ Add(5, 101U, "1", "2", 100U);
216
+
217
+ UpdateVersionStorageInfo();
218
+
192
219
  ASSERT_EQ(vstorage_.MaxBytesForLevel(1), 10U);
193
220
  ASSERT_EQ(vstorage_.MaxBytesForLevel(2), 50U);
194
221
  ASSERT_EQ(vstorage_.MaxBytesForLevel(3), 250U);
@@ -197,40 +224,84 @@ TEST_F(VersionStorageInfoTest, MaxBytesForLevelStatic) {
197
224
  ASSERT_EQ(0, logger_->log_count);
198
225
  }
199
226
 
200
- TEST_F(VersionStorageInfoTest, MaxBytesForLevelDynamic) {
227
+ TEST_F(VersionStorageInfoTest, MaxBytesForLevelDynamic_1) {
201
228
  ioptions_.level_compaction_dynamic_level_bytes = true;
202
229
  mutable_cf_options_.max_bytes_for_level_base = 1000;
203
230
  mutable_cf_options_.max_bytes_for_level_multiplier = 5;
231
+
204
232
  Add(5, 1U, "1", "2", 500U);
205
233
 
206
- vstorage_.CalculateBaseBytes(ioptions_, mutable_cf_options_);
234
+ UpdateVersionStorageInfo();
235
+
207
236
  ASSERT_EQ(0, logger_->log_count);
208
237
  ASSERT_EQ(vstorage_.base_level(), 5);
238
+ }
239
+
240
+ TEST_F(VersionStorageInfoTest, MaxBytesForLevelDynamic_2) {
241
+ ioptions_.level_compaction_dynamic_level_bytes = true;
242
+ mutable_cf_options_.max_bytes_for_level_base = 1000;
243
+ mutable_cf_options_.max_bytes_for_level_multiplier = 5;
209
244
 
245
+ Add(5, 1U, "1", "2", 500U);
210
246
  Add(5, 2U, "3", "4", 550U);
211
- vstorage_.CalculateBaseBytes(ioptions_, mutable_cf_options_);
247
+
248
+ UpdateVersionStorageInfo();
249
+
212
250
  ASSERT_EQ(0, logger_->log_count);
213
251
  ASSERT_EQ(vstorage_.MaxBytesForLevel(4), 1000U);
214
252
  ASSERT_EQ(vstorage_.base_level(), 4);
253
+ }
254
+
255
+ TEST_F(VersionStorageInfoTest, MaxBytesForLevelDynamic_3) {
256
+ ioptions_.level_compaction_dynamic_level_bytes = true;
257
+ mutable_cf_options_.max_bytes_for_level_base = 1000;
258
+ mutable_cf_options_.max_bytes_for_level_multiplier = 5;
215
259
 
260
+ Add(5, 1U, "1", "2", 500U);
261
+ Add(5, 2U, "3", "4", 550U);
216
262
  Add(4, 3U, "3", "4", 550U);
217
- vstorage_.CalculateBaseBytes(ioptions_, mutable_cf_options_);
263
+
264
+ UpdateVersionStorageInfo();
265
+
218
266
  ASSERT_EQ(0, logger_->log_count);
219
267
  ASSERT_EQ(vstorage_.MaxBytesForLevel(4), 1000U);
220
268
  ASSERT_EQ(vstorage_.base_level(), 4);
269
+ }
221
270
 
271
+ TEST_F(VersionStorageInfoTest, MaxBytesForLevelDynamic_4) {
272
+ ioptions_.level_compaction_dynamic_level_bytes = true;
273
+ mutable_cf_options_.max_bytes_for_level_base = 1000;
274
+ mutable_cf_options_.max_bytes_for_level_multiplier = 5;
275
+
276
+ Add(5, 1U, "1", "2", 500U);
277
+ Add(5, 2U, "3", "4", 550U);
278
+ Add(4, 3U, "3", "4", 550U);
222
279
  Add(3, 4U, "3", "4", 250U);
223
280
  Add(3, 5U, "5", "7", 300U);
224
- vstorage_.CalculateBaseBytes(ioptions_, mutable_cf_options_);
281
+
282
+ UpdateVersionStorageInfo();
283
+
225
284
  ASSERT_EQ(1, logger_->log_count);
226
285
  ASSERT_EQ(vstorage_.MaxBytesForLevel(4), 1005U);
227
286
  ASSERT_EQ(vstorage_.MaxBytesForLevel(3), 1000U);
228
287
  ASSERT_EQ(vstorage_.base_level(), 3);
288
+ }
229
289
 
290
+ TEST_F(VersionStorageInfoTest, MaxBytesForLevelDynamic_5) {
291
+ ioptions_.level_compaction_dynamic_level_bytes = true;
292
+ mutable_cf_options_.max_bytes_for_level_base = 1000;
293
+ mutable_cf_options_.max_bytes_for_level_multiplier = 5;
294
+
295
+ Add(5, 1U, "1", "2", 500U);
296
+ Add(5, 2U, "3", "4", 550U);
297
+ Add(4, 3U, "3", "4", 550U);
298
+ Add(3, 4U, "3", "4", 250U);
299
+ Add(3, 5U, "5", "7", 300U);
230
300
  Add(1, 6U, "3", "4", 5U);
231
301
  Add(1, 7U, "8", "9", 5U);
232
- logger_->log_count = 0;
233
- vstorage_.CalculateBaseBytes(ioptions_, mutable_cf_options_);
302
+
303
+ UpdateVersionStorageInfo();
304
+
234
305
  ASSERT_EQ(1, logger_->log_count);
235
306
  ASSERT_GT(vstorage_.MaxBytesForLevel(4), 1005U);
236
307
  ASSERT_GT(vstorage_.MaxBytesForLevel(3), 1005U);
@@ -243,6 +314,7 @@ TEST_F(VersionStorageInfoTest, MaxBytesForLevelDynamicLotsOfData) {
243
314
  ioptions_.level_compaction_dynamic_level_bytes = true;
244
315
  mutable_cf_options_.max_bytes_for_level_base = 100;
245
316
  mutable_cf_options_.max_bytes_for_level_multiplier = 2;
317
+
246
318
  Add(0, 1U, "1", "2", 50U);
247
319
  Add(1, 2U, "1", "2", 50U);
248
320
  Add(2, 3U, "1", "2", 500U);
@@ -250,7 +322,8 @@ TEST_F(VersionStorageInfoTest, MaxBytesForLevelDynamicLotsOfData) {
250
322
  Add(4, 5U, "1", "2", 1700U);
251
323
  Add(5, 6U, "1", "2", 500U);
252
324
 
253
- vstorage_.CalculateBaseBytes(ioptions_, mutable_cf_options_);
325
+ UpdateVersionStorageInfo();
326
+
254
327
  ASSERT_EQ(vstorage_.MaxBytesForLevel(4), 800U);
255
328
  ASSERT_EQ(vstorage_.MaxBytesForLevel(3), 400U);
256
329
  ASSERT_EQ(vstorage_.MaxBytesForLevel(2), 200U);
@@ -264,12 +337,14 @@ TEST_F(VersionStorageInfoTest, MaxBytesForLevelDynamicLargeLevel) {
264
337
  ioptions_.level_compaction_dynamic_level_bytes = true;
265
338
  mutable_cf_options_.max_bytes_for_level_base = 10U * kOneGB;
266
339
  mutable_cf_options_.max_bytes_for_level_multiplier = 10;
340
+
267
341
  Add(0, 1U, "1", "2", 50U);
268
342
  Add(3, 4U, "1", "2", 32U * kOneGB);
269
343
  Add(4, 5U, "1", "2", 500U * kOneGB);
270
344
  Add(5, 6U, "1", "2", 3000U * kOneGB);
271
345
 
272
- vstorage_.CalculateBaseBytes(ioptions_, mutable_cf_options_);
346
+ UpdateVersionStorageInfo();
347
+
273
348
  ASSERT_EQ(vstorage_.MaxBytesForLevel(5), 3000U * kOneGB);
274
349
  ASSERT_EQ(vstorage_.MaxBytesForLevel(4), 300U * kOneGB);
275
350
  ASSERT_EQ(vstorage_.MaxBytesForLevel(3), 30U * kOneGB);
@@ -293,7 +368,8 @@ TEST_F(VersionStorageInfoTest, MaxBytesForLevelDynamicWithLargeL0_1) {
293
368
  Add(3, 6U, "1", "2", 40000U);
294
369
  Add(2, 7U, "1", "2", 8000U);
295
370
 
296
- vstorage_.CalculateBaseBytes(ioptions_, mutable_cf_options_);
371
+ UpdateVersionStorageInfo();
372
+
297
373
  ASSERT_EQ(0, logger_->log_count);
298
374
  ASSERT_EQ(2, vstorage_.base_level());
299
375
  // level multiplier should be 3.5
@@ -319,7 +395,8 @@ TEST_F(VersionStorageInfoTest, MaxBytesForLevelDynamicWithLargeL0_2) {
319
395
  Add(3, 6U, "1", "2", 40000U);
320
396
  Add(2, 7U, "1", "2", 8000U);
321
397
 
322
- vstorage_.CalculateBaseBytes(ioptions_, mutable_cf_options_);
398
+ UpdateVersionStorageInfo();
399
+
323
400
  ASSERT_EQ(0, logger_->log_count);
324
401
  ASSERT_EQ(2, vstorage_.base_level());
325
402
  // level multiplier should be 3.5
@@ -351,7 +428,8 @@ TEST_F(VersionStorageInfoTest, MaxBytesForLevelDynamicWithLargeL0_3) {
351
428
  Add(3, 6U, "1", "2", 40000U);
352
429
  Add(2, 7U, "1", "2", 8000U);
353
430
 
354
- vstorage_.CalculateBaseBytes(ioptions_, mutable_cf_options_);
431
+ UpdateVersionStorageInfo();
432
+
355
433
  ASSERT_EQ(0, logger_->log_count);
356
434
  ASSERT_EQ(2, vstorage_.base_level());
357
435
  // level multiplier should be 3.5
@@ -374,6 +452,9 @@ TEST_F(VersionStorageInfoTest, EstimateLiveDataSize) {
374
452
  Add(4, 5U, "4", "5", 1U); // Inside range of last level
375
453
  Add(4, 6U, "6", "7", 1U); // Inside range of last level
376
454
  Add(5, 7U, "4", "7", 10U);
455
+
456
+ UpdateVersionStorageInfo();
457
+
377
458
  ASSERT_EQ(10U, vstorage_.EstimateLiveDataSize());
378
459
  }
379
460
 
@@ -385,6 +466,9 @@ TEST_F(VersionStorageInfoTest, EstimateLiveDataSize2) {
385
466
  Add(1, 5U, "5", "6", 1U);
386
467
  Add(2, 6U, "2", "3", 1U);
387
468
  Add(3, 7U, "7", "8", 1U);
469
+
470
+ UpdateVersionStorageInfo();
471
+
388
472
  ASSERT_EQ(4U, vstorage_.EstimateLiveDataSize());
389
473
  }
390
474
 
@@ -398,8 +482,8 @@ TEST_F(VersionStorageInfoTest, GetOverlappingInputs) {
398
482
  // Two files that do not overlap.
399
483
  Add(1, 5U, {"g", 0, kTypeValue}, {"h", 0, kTypeValue}, 1);
400
484
  Add(1, 6U, {"i", 0, kTypeValue}, {"j", 0, kTypeValue}, 1);
401
- vstorage_.UpdateNumNonEmptyLevels();
402
- vstorage_.GenerateLevelFilesBrief();
485
+
486
+ UpdateVersionStorageInfo();
403
487
 
404
488
  ASSERT_EQ("1,2", GetOverlappingFiles(
405
489
  1, {"a", 0, kTypeValue}, {"b", 0, kTypeValue}));
@@ -427,6 +511,8 @@ TEST_F(VersionStorageInfoTest, FileLocationAndMetaDataByNumber) {
427
511
 
428
512
  Add(2, 7U, "1", "2", 8000U);
429
513
 
514
+ UpdateVersionStorageInfo();
515
+
430
516
  ASSERT_EQ(vstorage_.GetFileLocation(11U),
431
517
  VersionStorageInfo::FileLocation(0, 0));
432
518
  ASSERT_NE(vstorage_.GetFileMetaDataByNumber(11U), nullptr);
@@ -443,10 +529,343 @@ TEST_F(VersionStorageInfoTest, FileLocationAndMetaDataByNumber) {
443
529
  ASSERT_EQ(vstorage_.GetFileMetaDataByNumber(999U), nullptr);
444
530
  }
445
531
 
532
+ TEST_F(VersionStorageInfoTest, ForcedBlobGCEmpty) {
533
+ // No SST or blob files in VersionStorageInfo
534
+ UpdateVersionStorageInfo();
535
+
536
+ constexpr double age_cutoff = 0.5;
537
+ constexpr double force_threshold = 0.75;
538
+ vstorage_.ComputeFilesMarkedForForcedBlobGC(age_cutoff, force_threshold);
539
+
540
+ ASSERT_TRUE(vstorage_.FilesMarkedForForcedBlobGC().empty());
541
+ }
542
+
543
+ TEST_F(VersionStorageInfoTest, ForcedBlobGCSingleBatch) {
544
+ // Test the edge case when all blob files are part of the oldest batch.
545
+ // We have one L0 SST file #1, and four blob files #10, #11, #12, and #13.
546
+ // The oldest blob file used by SST #1 is blob file #10.
547
+
548
+ constexpr int level = 0;
549
+
550
+ constexpr uint64_t sst = 1;
551
+
552
+ constexpr uint64_t first_blob = 10;
553
+ constexpr uint64_t second_blob = 11;
554
+ constexpr uint64_t third_blob = 12;
555
+ constexpr uint64_t fourth_blob = 13;
556
+
557
+ {
558
+ constexpr char smallest[] = "bar1";
559
+ constexpr char largest[] = "foo1";
560
+ constexpr uint64_t file_size = 1000;
561
+
562
+ Add(level, sst, smallest, largest, file_size, first_blob);
563
+ }
564
+
565
+ {
566
+ constexpr uint64_t total_blob_count = 10;
567
+ constexpr uint64_t total_blob_bytes = 100000;
568
+ constexpr uint64_t garbage_blob_count = 2;
569
+ constexpr uint64_t garbage_blob_bytes = 15000;
570
+
571
+ AddBlob(first_blob, total_blob_count, total_blob_bytes,
572
+ BlobFileMetaData::LinkedSsts{sst}, garbage_blob_count,
573
+ garbage_blob_bytes);
574
+ }
575
+
576
+ {
577
+ constexpr uint64_t total_blob_count = 4;
578
+ constexpr uint64_t total_blob_bytes = 400000;
579
+ constexpr uint64_t garbage_blob_count = 3;
580
+ constexpr uint64_t garbage_blob_bytes = 235000;
581
+
582
+ AddBlob(second_blob, total_blob_count, total_blob_bytes,
583
+ BlobFileMetaData::LinkedSsts{}, garbage_blob_count,
584
+ garbage_blob_bytes);
585
+ }
586
+
587
+ {
588
+ constexpr uint64_t total_blob_count = 20;
589
+ constexpr uint64_t total_blob_bytes = 1000000;
590
+ constexpr uint64_t garbage_blob_count = 8;
591
+ constexpr uint64_t garbage_blob_bytes = 400000;
592
+
593
+ AddBlob(third_blob, total_blob_count, total_blob_bytes,
594
+ BlobFileMetaData::LinkedSsts{}, garbage_blob_count,
595
+ garbage_blob_bytes);
596
+ }
597
+
598
+ {
599
+ constexpr uint64_t total_blob_count = 128;
600
+ constexpr uint64_t total_blob_bytes = 1000000;
601
+ constexpr uint64_t garbage_blob_count = 67;
602
+ constexpr uint64_t garbage_blob_bytes = 600000;
603
+
604
+ AddBlob(fourth_blob, total_blob_count, total_blob_bytes,
605
+ BlobFileMetaData::LinkedSsts{}, garbage_blob_count,
606
+ garbage_blob_bytes);
607
+ }
608
+
609
+ UpdateVersionStorageInfo();
610
+
611
+ assert(vstorage_.num_levels() > 0);
612
+ const auto& level_files = vstorage_.LevelFiles(level);
613
+
614
+ assert(level_files.size() == 1);
615
+ assert(level_files[0] && level_files[0]->fd.GetNumber() == sst);
616
+
617
+ // No blob files eligible for GC due to the age cutoff
618
+
619
+ {
620
+ constexpr double age_cutoff = 0.1;
621
+ constexpr double force_threshold = 0.0;
622
+ vstorage_.ComputeFilesMarkedForForcedBlobGC(age_cutoff, force_threshold);
623
+
624
+ ASSERT_TRUE(vstorage_.FilesMarkedForForcedBlobGC().empty());
625
+ }
626
+
627
+ // Part of the oldest batch of blob files (specifically, #12 and #13) is
628
+ // ineligible for GC due to the age cutoff
629
+
630
+ {
631
+ constexpr double age_cutoff = 0.5;
632
+ constexpr double force_threshold = 0.0;
633
+ vstorage_.ComputeFilesMarkedForForcedBlobGC(age_cutoff, force_threshold);
634
+
635
+ ASSERT_TRUE(vstorage_.FilesMarkedForForcedBlobGC().empty());
636
+ }
637
+
638
+ // Oldest batch is eligible based on age cutoff but its overall garbage ratio
639
+ // is below threshold
640
+
641
+ {
642
+ constexpr double age_cutoff = 1.0;
643
+ constexpr double force_threshold = 0.6;
644
+ vstorage_.ComputeFilesMarkedForForcedBlobGC(age_cutoff, force_threshold);
645
+
646
+ ASSERT_TRUE(vstorage_.FilesMarkedForForcedBlobGC().empty());
647
+ }
648
+
649
+ // Oldest batch is eligible based on age cutoff and its overall garbage ratio
650
+ // meets threshold
651
+
652
+ {
653
+ constexpr double age_cutoff = 1.0;
654
+ constexpr double force_threshold = 0.5;
655
+ vstorage_.ComputeFilesMarkedForForcedBlobGC(age_cutoff, force_threshold);
656
+
657
+ auto ssts_to_be_compacted = vstorage_.FilesMarkedForForcedBlobGC();
658
+ ASSERT_EQ(ssts_to_be_compacted.size(), 1);
659
+
660
+ const autovector<std::pair<int, FileMetaData*>>
661
+ expected_ssts_to_be_compacted{{level, level_files[0]}};
662
+
663
+ ASSERT_EQ(ssts_to_be_compacted[0], expected_ssts_to_be_compacted[0]);
664
+ }
665
+ }
666
+
667
+ TEST_F(VersionStorageInfoTest, ForcedBlobGCMultipleBatches) {
668
+ // Add three L0 SSTs (1, 2, and 3) and four blob files (10, 11, 12, and 13).
669
+ // The first two SSTs have the same oldest blob file, namely, the very oldest
670
+ // one (10), while the third SST's oldest blob file reference points to the
671
+ // third blob file (12). Thus, the oldest batch of blob files contains the
672
+ // first two blob files 10 and 11, and assuming they are eligible for GC based
673
+ // on the age cutoff, compacting away the SSTs 1 and 2 will eliminate them.
674
+
675
+ constexpr int level = 0;
676
+
677
+ constexpr uint64_t first_sst = 1;
678
+ constexpr uint64_t second_sst = 2;
679
+ constexpr uint64_t third_sst = 3;
680
+
681
+ constexpr uint64_t first_blob = 10;
682
+ constexpr uint64_t second_blob = 11;
683
+ constexpr uint64_t third_blob = 12;
684
+ constexpr uint64_t fourth_blob = 13;
685
+
686
+ {
687
+ constexpr char smallest[] = "bar1";
688
+ constexpr char largest[] = "foo1";
689
+ constexpr uint64_t file_size = 1000;
690
+
691
+ Add(level, first_sst, smallest, largest, file_size, first_blob);
692
+ }
693
+
694
+ {
695
+ constexpr char smallest[] = "bar2";
696
+ constexpr char largest[] = "foo2";
697
+ constexpr uint64_t file_size = 2000;
698
+
699
+ Add(level, second_sst, smallest, largest, file_size, first_blob);
700
+ }
701
+
702
+ {
703
+ constexpr char smallest[] = "bar3";
704
+ constexpr char largest[] = "foo3";
705
+ constexpr uint64_t file_size = 3000;
706
+
707
+ Add(level, third_sst, smallest, largest, file_size, third_blob);
708
+ }
709
+
710
+ {
711
+ constexpr uint64_t total_blob_count = 10;
712
+ constexpr uint64_t total_blob_bytes = 100000;
713
+ constexpr uint64_t garbage_blob_count = 2;
714
+ constexpr uint64_t garbage_blob_bytes = 15000;
715
+
716
+ AddBlob(first_blob, total_blob_count, total_blob_bytes,
717
+ BlobFileMetaData::LinkedSsts{first_sst, second_sst},
718
+ garbage_blob_count, garbage_blob_bytes);
719
+ }
720
+
721
+ {
722
+ constexpr uint64_t total_blob_count = 4;
723
+ constexpr uint64_t total_blob_bytes = 400000;
724
+ constexpr uint64_t garbage_blob_count = 3;
725
+ constexpr uint64_t garbage_blob_bytes = 235000;
726
+
727
+ AddBlob(second_blob, total_blob_count, total_blob_bytes,
728
+ BlobFileMetaData::LinkedSsts{}, garbage_blob_count,
729
+ garbage_blob_bytes);
730
+ }
731
+
732
+ {
733
+ constexpr uint64_t total_blob_count = 20;
734
+ constexpr uint64_t total_blob_bytes = 1000000;
735
+ constexpr uint64_t garbage_blob_count = 8;
736
+ constexpr uint64_t garbage_blob_bytes = 123456;
737
+
738
+ AddBlob(third_blob, total_blob_count, total_blob_bytes,
739
+ BlobFileMetaData::LinkedSsts{third_sst}, garbage_blob_count,
740
+ garbage_blob_bytes);
741
+ }
742
+
743
+ {
744
+ constexpr uint64_t total_blob_count = 128;
745
+ constexpr uint64_t total_blob_bytes = 789012345;
746
+ constexpr uint64_t garbage_blob_count = 67;
747
+ constexpr uint64_t garbage_blob_bytes = 88888888;
748
+
749
+ AddBlob(fourth_blob, total_blob_count, total_blob_bytes,
750
+ BlobFileMetaData::LinkedSsts{}, garbage_blob_count,
751
+ garbage_blob_bytes);
752
+ }
753
+
754
+ UpdateVersionStorageInfo();
755
+
756
+ assert(vstorage_.num_levels() > 0);
757
+ const auto& level_files = vstorage_.LevelFiles(level);
758
+
759
+ assert(level_files.size() == 3);
760
+ assert(level_files[0] && level_files[0]->fd.GetNumber() == first_sst);
761
+ assert(level_files[1] && level_files[1]->fd.GetNumber() == second_sst);
762
+ assert(level_files[2] && level_files[2]->fd.GetNumber() == third_sst);
763
+
764
+ // No blob files eligible for GC due to the age cutoff
765
+
766
+ {
767
+ constexpr double age_cutoff = 0.1;
768
+ constexpr double force_threshold = 0.0;
769
+ vstorage_.ComputeFilesMarkedForForcedBlobGC(age_cutoff, force_threshold);
770
+
771
+ ASSERT_TRUE(vstorage_.FilesMarkedForForcedBlobGC().empty());
772
+ }
773
+
774
+ // Part of the oldest batch of blob files (specifically, the second file) is
775
+ // ineligible for GC due to the age cutoff
776
+
777
+ {
778
+ constexpr double age_cutoff = 0.25;
779
+ constexpr double force_threshold = 0.0;
780
+ vstorage_.ComputeFilesMarkedForForcedBlobGC(age_cutoff, force_threshold);
781
+
782
+ ASSERT_TRUE(vstorage_.FilesMarkedForForcedBlobGC().empty());
783
+ }
784
+
785
+ // Oldest batch is eligible based on age cutoff but its overall garbage ratio
786
+ // is below threshold
787
+
788
+ {
789
+ constexpr double age_cutoff = 0.5;
790
+ constexpr double force_threshold = 0.6;
791
+ vstorage_.ComputeFilesMarkedForForcedBlobGC(age_cutoff, force_threshold);
792
+
793
+ ASSERT_TRUE(vstorage_.FilesMarkedForForcedBlobGC().empty());
794
+ }
795
+
796
+ // Oldest batch is eligible based on age cutoff and its overall garbage ratio
797
+ // meets threshold
798
+
799
+ {
800
+ constexpr double age_cutoff = 0.5;
801
+ constexpr double force_threshold = 0.5;
802
+ vstorage_.ComputeFilesMarkedForForcedBlobGC(age_cutoff, force_threshold);
803
+
804
+ auto ssts_to_be_compacted = vstorage_.FilesMarkedForForcedBlobGC();
805
+ ASSERT_EQ(ssts_to_be_compacted.size(), 2);
806
+
807
+ std::sort(ssts_to_be_compacted.begin(), ssts_to_be_compacted.end(),
808
+ [](const std::pair<int, FileMetaData*>& lhs,
809
+ const std::pair<int, FileMetaData*>& rhs) {
810
+ assert(lhs.second);
811
+ assert(rhs.second);
812
+ return lhs.second->fd.GetNumber() < rhs.second->fd.GetNumber();
813
+ });
814
+
815
+ const autovector<std::pair<int, FileMetaData*>>
816
+ expected_ssts_to_be_compacted{{level, level_files[0]},
817
+ {level, level_files[1]}};
818
+
819
+ ASSERT_EQ(ssts_to_be_compacted[0], expected_ssts_to_be_compacted[0]);
820
+ ASSERT_EQ(ssts_to_be_compacted[1], expected_ssts_to_be_compacted[1]);
821
+ }
822
+
823
+ // Now try the last two cases again with a greater than necessary age cutoff
824
+
825
+ // Oldest batch is eligible based on age cutoff but its overall garbage ratio
826
+ // is below threshold
827
+
828
+ {
829
+ constexpr double age_cutoff = 0.75;
830
+ constexpr double force_threshold = 0.6;
831
+ vstorage_.ComputeFilesMarkedForForcedBlobGC(age_cutoff, force_threshold);
832
+
833
+ ASSERT_TRUE(vstorage_.FilesMarkedForForcedBlobGC().empty());
834
+ }
835
+
836
+ // Oldest batch is eligible based on age cutoff and its overall garbage ratio
837
+ // meets threshold
838
+
839
+ {
840
+ constexpr double age_cutoff = 0.75;
841
+ constexpr double force_threshold = 0.5;
842
+ vstorage_.ComputeFilesMarkedForForcedBlobGC(age_cutoff, force_threshold);
843
+
844
+ auto ssts_to_be_compacted = vstorage_.FilesMarkedForForcedBlobGC();
845
+ ASSERT_EQ(ssts_to_be_compacted.size(), 2);
846
+
847
+ std::sort(ssts_to_be_compacted.begin(), ssts_to_be_compacted.end(),
848
+ [](const std::pair<int, FileMetaData*>& lhs,
849
+ const std::pair<int, FileMetaData*>& rhs) {
850
+ assert(lhs.second);
851
+ assert(rhs.second);
852
+ return lhs.second->fd.GetNumber() < rhs.second->fd.GetNumber();
853
+ });
854
+
855
+ const autovector<std::pair<int, FileMetaData*>>
856
+ expected_ssts_to_be_compacted{{level, level_files[0]},
857
+ {level, level_files[1]}};
858
+
859
+ ASSERT_EQ(ssts_to_be_compacted[0], expected_ssts_to_be_compacted[0]);
860
+ ASSERT_EQ(ssts_to_be_compacted[1], expected_ssts_to_be_compacted[1]);
861
+ }
862
+ }
863
+
446
864
  class VersionStorageInfoTimestampTest : public VersionStorageInfoTestBase {
447
865
  public:
448
866
  VersionStorageInfoTimestampTest()
449
- : VersionStorageInfoTestBase(test::ComparatorWithU64Ts()) {}
867
+ : VersionStorageInfoTestBase(test::BytewiseComparatorWithU64TsWrapper()) {
868
+ }
450
869
  ~VersionStorageInfoTimestampTest() override {}
451
870
  std::string Timestamp(uint64_t ts) const {
452
871
  std::string ret;
@@ -477,8 +896,9 @@ TEST_F(VersionStorageInfoTimestampTest, GetOverlappingInputs) {
477
896
  /*largest=*/
478
897
  {PackUserKeyAndTimestamp("d", /*ts=*/1), /*s=*/0, kTypeValue},
479
898
  /*file_size=*/100);
480
- vstorage_.UpdateNumNonEmptyLevels();
481
- vstorage_.GenerateLevelFilesBrief();
899
+
900
+ UpdateVersionStorageInfo();
901
+
482
902
  ASSERT_EQ(
483
903
  "1,2",
484
904
  GetOverlappingFiles(
@@ -697,21 +1117,16 @@ class VersionSetTestBase {
697
1117
  options_(),
698
1118
  db_options_(options_),
699
1119
  cf_options_(options_),
700
- immutable_cf_options_(db_options_, cf_options_),
1120
+ immutable_options_(db_options_, cf_options_),
701
1121
  mutable_cf_options_(cf_options_),
702
1122
  table_cache_(NewLRUCache(50000, 16)),
703
1123
  write_buffer_manager_(db_options_.db_write_buffer_size),
704
1124
  shutting_down_(false),
705
1125
  mock_table_factory_(std::make_shared<mock::MockTableFactory>()) {
706
- const char* test_env_uri = getenv("TEST_ENV_URI");
707
- if (test_env_uri) {
708
- Status s = Env::LoadEnv(test_env_uri, &env_, &env_guard_);
709
- EXPECT_OK(s);
710
- } else if (getenv("MEM_ENV")) {
1126
+ EXPECT_OK(test::CreateEnvFromSystem(ConfigOptions(), &env_, &env_guard_));
1127
+ if (env_ == Env::Default() && getenv("MEM_ENV")) {
711
1128
  env_guard_.reset(NewMemEnv(Env::Default()));
712
1129
  env_ = env_guard_.get();
713
- } else {
714
- env_ = Env::Default();
715
1130
  }
716
1131
  EXPECT_NE(nullptr, env_);
717
1132
 
@@ -721,13 +1136,15 @@ class VersionSetTestBase {
721
1136
  options_.env = env_;
722
1137
  db_options_.env = env_;
723
1138
  db_options_.fs = fs_;
724
- immutable_cf_options_.env = env_;
725
- immutable_cf_options_.fs = fs_.get();
1139
+ immutable_options_.env = env_;
1140
+ immutable_options_.fs = fs_;
1141
+ immutable_options_.clock = env_->GetSystemClock().get();
726
1142
 
727
1143
  versions_.reset(
728
1144
  new VersionSet(dbname_, &db_options_, env_options_, table_cache_.get(),
729
1145
  &write_buffer_manager_, &write_controller_,
730
- /*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr));
1146
+ /*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr,
1147
+ /*db_session_id*/ ""));
731
1148
  reactive_versions_ = std::make_shared<ReactiveVersionSet>(
732
1149
  dbname_, &db_options_, env_options_, table_cache_.get(),
733
1150
  &write_buffer_manager_, &write_controller_, nullptr);
@@ -783,13 +1200,13 @@ class VersionSetTestBase {
783
1200
  }
784
1201
  *last_seqno = last_seq;
785
1202
  num_initial_edits_ = static_cast<int>(new_cfs.size() + 1);
1203
+ std::unique_ptr<WritableFileWriter> file_writer;
786
1204
  const std::string manifest = DescriptorFileName(dbname_, 1);
787
- std::unique_ptr<WritableFile> file;
788
- Status s = env_->NewWritableFile(
789
- manifest, &file, env_->OptimizeForManifestWrite(env_options_));
1205
+ const auto& fs = env_->GetFileSystem();
1206
+ Status s = WritableFileWriter::Create(
1207
+ fs, manifest, fs->OptimizeForManifestWrite(env_options_), &file_writer,
1208
+ nullptr);
790
1209
  ASSERT_OK(s);
791
- std::unique_ptr<WritableFileWriter> file_writer(new WritableFileWriter(
792
- NewLegacyWritableFileWrapper(std::move(file)), manifest, env_options_));
793
1210
  {
794
1211
  log_writer->reset(new log::Writer(std::move(file_writer), 0, false));
795
1212
  std::string record;
@@ -830,7 +1247,8 @@ class VersionSetTestBase {
830
1247
  versions_.reset(
831
1248
  new VersionSet(dbname_, &db_options_, env_options_, table_cache_.get(),
832
1249
  &write_buffer_manager_, &write_controller_,
833
- /*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr));
1250
+ /*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr,
1251
+ /*db_session_id*/ ""));
834
1252
  EXPECT_OK(versions_->Recover(column_families_, false));
835
1253
  }
836
1254
 
@@ -908,7 +1326,7 @@ class VersionSetTestBase {
908
1326
  Options options_;
909
1327
  ImmutableDBOptions db_options_;
910
1328
  ColumnFamilyOptions cf_options_;
911
- ImmutableCFOptions immutable_cf_options_;
1329
+ ImmutableOptions immutable_options_;
912
1330
  MutableCFOptions mutable_cf_options_;
913
1331
  std::shared_ptr<Cache> table_cache_;
914
1332
  WriteController write_controller_;
@@ -989,7 +1407,8 @@ TEST_F(VersionSetTest, PersistBlobFileStateInNewManifest) {
989
1407
  constexpr uint64_t total_blob_bytes = 77777777;
990
1408
  constexpr char checksum_method[] = "SHA1";
991
1409
  constexpr char checksum_value[] =
992
- "bdb7f34a59dfa1592ce7f52e99f98c570c525cbd";
1410
+ "\xbd\xb7\xf3\x4a\x59\xdf\xa1\x59\x2c\xe7\xf5\x2e\x99\xf9\x8c\x57\x0c"
1411
+ "\x52\x5c\xbd";
993
1412
 
994
1413
  auto shared_meta = SharedBlobFileMetaData::Create(
995
1414
  blob_file_number, total_blob_count, total_blob_bytes, checksum_method,
@@ -1010,7 +1429,7 @@ TEST_F(VersionSetTest, PersistBlobFileStateInNewManifest) {
1010
1429
  constexpr uint64_t total_blob_count = 555;
1011
1430
  constexpr uint64_t total_blob_bytes = 66666;
1012
1431
  constexpr char checksum_method[] = "CRC32";
1013
- constexpr char checksum_value[] = "3d87ff57";
1432
+ constexpr char checksum_value[] = "\x3d\x87\xff\x57";
1014
1433
 
1015
1434
  auto shared_meta = SharedBlobFileMetaData::Create(
1016
1435
  blob_file_number, total_blob_count, total_blob_bytes, checksum_method,
@@ -1068,7 +1487,7 @@ TEST_F(VersionSetTest, AddLiveBlobFiles) {
1068
1487
  constexpr uint64_t first_total_blob_count = 555;
1069
1488
  constexpr uint64_t first_total_blob_bytes = 66666;
1070
1489
  constexpr char first_checksum_method[] = "CRC32";
1071
- constexpr char first_checksum_value[] = "3d87ff57";
1490
+ constexpr char first_checksum_value[] = "\x3d\x87\xff\x57";
1072
1491
 
1073
1492
  auto first_shared_meta = SharedBlobFileMetaData::Create(
1074
1493
  first_blob_file_number, first_total_blob_count, first_total_blob_bytes,
@@ -1111,7 +1530,7 @@ TEST_F(VersionSetTest, AddLiveBlobFiles) {
1111
1530
  constexpr uint64_t second_total_blob_count = 100;
1112
1531
  constexpr uint64_t second_total_blob_bytes = 2000000;
1113
1532
  constexpr char second_checksum_method[] = "CRC32B";
1114
- constexpr char second_checksum_value[] = "6dbdf23a";
1533
+ constexpr char second_checksum_value[] = "\x6d\xbd\xf2\x3a";
1115
1534
 
1116
1535
  auto second_shared_meta = SharedBlobFileMetaData::Create(
1117
1536
  second_blob_file_number, second_total_blob_count, second_total_blob_bytes,
@@ -1151,7 +1570,7 @@ TEST_F(VersionSetTest, ObsoleteBlobFile) {
1151
1570
  constexpr uint64_t total_blob_count = 555;
1152
1571
  constexpr uint64_t total_blob_bytes = 66666;
1153
1572
  constexpr char checksum_method[] = "CRC32";
1154
- constexpr char checksum_value[] = "3d87ff57";
1573
+ constexpr char checksum_value[] = "\x3d\x87\xff\x57";
1155
1574
 
1156
1575
  edit.AddBlobFile(blob_file_number, total_blob_count, total_blob_bytes,
1157
1576
  checksum_method, checksum_value);
@@ -1334,7 +1753,8 @@ TEST_F(VersionSetTest, WalAddition) {
1334
1753
  std::unique_ptr<VersionSet> new_versions(
1335
1754
  new VersionSet(dbname_, &db_options_, env_options_, table_cache_.get(),
1336
1755
  &write_buffer_manager_, &write_controller_,
1337
- /*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr));
1756
+ /*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr,
1757
+ /*db_session_id*/ ""));
1338
1758
  ASSERT_OK(new_versions->Recover(column_families_, /*read_only=*/false));
1339
1759
  const auto& wals = new_versions->GetWalSet().GetWals();
1340
1760
  ASSERT_EQ(wals.size(), 1);
@@ -1400,7 +1820,8 @@ TEST_F(VersionSetTest, WalCloseWithoutSync) {
1400
1820
  std::unique_ptr<VersionSet> new_versions(
1401
1821
  new VersionSet(dbname_, &db_options_, env_options_, table_cache_.get(),
1402
1822
  &write_buffer_manager_, &write_controller_,
1403
- /*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr));
1823
+ /*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr,
1824
+ /*db_session_id*/ ""));
1404
1825
  ASSERT_OK(new_versions->Recover(column_families_, false));
1405
1826
  const auto& wals = new_versions->GetWalSet().GetWals();
1406
1827
  ASSERT_EQ(wals.size(), 2);
@@ -1452,7 +1873,8 @@ TEST_F(VersionSetTest, WalDeletion) {
1452
1873
  std::unique_ptr<VersionSet> new_versions(
1453
1874
  new VersionSet(dbname_, &db_options_, env_options_, table_cache_.get(),
1454
1875
  &write_buffer_manager_, &write_controller_,
1455
- /*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr));
1876
+ /*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr,
1877
+ /*db_session_id*/ ""));
1456
1878
  ASSERT_OK(new_versions->Recover(column_families_, false));
1457
1879
  const auto& wals = new_versions->GetWalSet().GetWals();
1458
1880
  ASSERT_EQ(wals.size(), 1);
@@ -1489,7 +1911,8 @@ TEST_F(VersionSetTest, WalDeletion) {
1489
1911
  std::unique_ptr<VersionSet> new_versions(
1490
1912
  new VersionSet(dbname_, &db_options_, env_options_, table_cache_.get(),
1491
1913
  &write_buffer_manager_, &write_controller_,
1492
- /*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr));
1914
+ /*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr,
1915
+ /*db_session_id*/ ""));
1493
1916
  ASSERT_OK(new_versions->Recover(column_families_, false));
1494
1917
  const auto& wals = new_versions->GetWalSet().GetWals();
1495
1918
  ASSERT_EQ(wals.size(), 1);
@@ -1606,7 +2029,8 @@ TEST_F(VersionSetTest, DeleteWalsBeforeNonExistingWalNumber) {
1606
2029
  std::unique_ptr<VersionSet> new_versions(
1607
2030
  new VersionSet(dbname_, &db_options_, env_options_, table_cache_.get(),
1608
2031
  &write_buffer_manager_, &write_controller_,
1609
- /*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr));
2032
+ /*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr,
2033
+ /*db_session_id*/ ""));
1610
2034
  ASSERT_OK(new_versions->Recover(column_families_, false));
1611
2035
  const auto& wals = new_versions->GetWalSet().GetWals();
1612
2036
  ASSERT_EQ(wals.size(), 1);
@@ -1641,7 +2065,8 @@ TEST_F(VersionSetTest, DeleteAllWals) {
1641
2065
  std::unique_ptr<VersionSet> new_versions(
1642
2066
  new VersionSet(dbname_, &db_options_, env_options_, table_cache_.get(),
1643
2067
  &write_buffer_manager_, &write_controller_,
1644
- /*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr));
2068
+ /*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr,
2069
+ /*db_session_id*/ ""));
1645
2070
  ASSERT_OK(new_versions->Recover(column_families_, false));
1646
2071
  const auto& wals = new_versions->GetWalSet().GetWals();
1647
2072
  ASSERT_EQ(wals.size(), 0);
@@ -1682,7 +2107,8 @@ TEST_F(VersionSetTest, AtomicGroupWithWalEdits) {
1682
2107
  std::unique_ptr<VersionSet> new_versions(
1683
2108
  new VersionSet(dbname_, &db_options_, env_options_, table_cache_.get(),
1684
2109
  &write_buffer_manager_, &write_controller_,
1685
- /*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr));
2110
+ /*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr,
2111
+ /*db_session_id*/ ""));
1686
2112
  std::string db_id;
1687
2113
  ASSERT_OK(
1688
2114
  new_versions->Recover(column_families_, /*read_only=*/false, &db_id));
@@ -1706,7 +2132,7 @@ class VersionSetWithTimestampTest : public VersionSetTest {
1706
2132
  void SetUp() override {
1707
2133
  NewDB();
1708
2134
  Options options;
1709
- options.comparator = test::ComparatorWithU64Ts();
2135
+ options.comparator = test::BytewiseComparatorWithU64TsWrapper();
1710
2136
  cfd_ = CreateColumnFamily(kNewCfName, options);
1711
2137
  EXPECT_NE(nullptr, cfd_);
1712
2138
  EXPECT_NE(nullptr, cfd_->GetLatestMutableCFOptions());
@@ -1735,7 +2161,8 @@ class VersionSetWithTimestampTest : public VersionSetTest {
1735
2161
  std::unique_ptr<VersionSet> vset(
1736
2162
  new VersionSet(dbname_, &db_options_, env_options_, table_cache_.get(),
1737
2163
  &write_buffer_manager_, &write_controller_,
1738
- /*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr));
2164
+ /*block_cache_tracer=*/nullptr, /*io_tracer=*/nullptr,
2165
+ /*db_session_id*/ ""));
1739
2166
  ASSERT_OK(vset->Recover(column_families_, /*read_only=*/false,
1740
2167
  /*db_id=*/nullptr));
1741
2168
  for (auto* cfd : *(vset->GetColumnFamilySet())) {
@@ -1880,15 +2307,8 @@ class VersionSetAtomicGroupTest : public VersionSetTestBase,
1880
2307
  });
1881
2308
  SyncPoint::GetInstance()->SetCallBack(
1882
2309
  "VersionEditHandlerBase::Iterate:Finish", [&](void* arg) {
1883
- num_recovered_edits_ = *reinterpret_cast<int*>(arg);
2310
+ num_recovered_edits_ = *reinterpret_cast<size_t*>(arg);
1884
2311
  });
1885
- SyncPoint::GetInstance()->SetCallBack(
1886
- "VersionSet::ReadAndRecover:RecoveredEdits", [&](void* arg) {
1887
- num_recovered_edits_ = *reinterpret_cast<int*>(arg);
1888
- });
1889
- SyncPoint::GetInstance()->SetCallBack(
1890
- "ReactiveVersionSet::ReadAndApply:AppliedEdits",
1891
- [&](void* arg) { num_applied_edits_ = *reinterpret_cast<int*>(arg); });
1892
2312
  SyncPoint::GetInstance()->SetCallBack(
1893
2313
  "AtomicGroupReadBuffer::AddEdit:AtomicGroup",
1894
2314
  [&](void* /* arg */) { ++num_edits_in_atomic_group_; });
@@ -1927,8 +2347,7 @@ class VersionSetAtomicGroupTest : public VersionSetTestBase,
1927
2347
  bool first_in_atomic_group_ = false;
1928
2348
  bool last_in_atomic_group_ = false;
1929
2349
  int num_edits_in_atomic_group_ = 0;
1930
- int num_recovered_edits_ = 0;
1931
- int num_applied_edits_ = 0;
2350
+ size_t num_recovered_edits_ = 0;
1932
2351
  VersionEdit corrupted_edit_;
1933
2352
  VersionEdit edit_with_incorrect_group_size_;
1934
2353
  std::unique_ptr<log::Writer> log_writer_;
@@ -1944,7 +2363,6 @@ TEST_F(VersionSetAtomicGroupTest, HandleValidAtomicGroupWithVersionSetRecover) {
1944
2363
  EXPECT_TRUE(first_in_atomic_group_);
1945
2364
  EXPECT_TRUE(last_in_atomic_group_);
1946
2365
  EXPECT_EQ(num_initial_edits_ + kAtomicGroupSize, num_recovered_edits_);
1947
- EXPECT_EQ(0, num_applied_edits_);
1948
2366
  }
1949
2367
 
1950
2368
  TEST_F(VersionSetAtomicGroupTest,
@@ -1966,7 +2384,6 @@ TEST_F(VersionSetAtomicGroupTest,
1966
2384
  EXPECT_TRUE(reactive_versions_->TEST_read_edits_in_atomic_group() == 0);
1967
2385
  EXPECT_TRUE(reactive_versions_->replay_buffer().size() == 0);
1968
2386
  EXPECT_EQ(num_initial_edits_ + kAtomicGroupSize, num_recovered_edits_);
1969
- EXPECT_EQ(0, num_applied_edits_);
1970
2387
  }
1971
2388
 
1972
2389
  TEST_F(VersionSetAtomicGroupTest,
@@ -1979,20 +2396,20 @@ TEST_F(VersionSetAtomicGroupTest,
1979
2396
  EXPECT_OK(reactive_versions_->Recover(column_families_, &manifest_reader,
1980
2397
  &manifest_reporter,
1981
2398
  &manifest_reader_status));
2399
+ EXPECT_EQ(num_initial_edits_, num_recovered_edits_);
1982
2400
  AddNewEditsToLog(kAtomicGroupSize);
1983
2401
  InstrumentedMutex mu;
1984
2402
  std::unordered_set<ColumnFamilyData*> cfds_changed;
1985
2403
  mu.Lock();
1986
- EXPECT_OK(
1987
- reactive_versions_->ReadAndApply(&mu, &manifest_reader, &cfds_changed));
2404
+ EXPECT_OK(reactive_versions_->ReadAndApply(
2405
+ &mu, &manifest_reader, manifest_reader_status.get(), &cfds_changed));
1988
2406
  mu.Unlock();
1989
2407
  EXPECT_TRUE(first_in_atomic_group_);
1990
2408
  EXPECT_TRUE(last_in_atomic_group_);
1991
2409
  // The recover should clean up the replay buffer.
1992
2410
  EXPECT_TRUE(reactive_versions_->TEST_read_edits_in_atomic_group() == 0);
1993
2411
  EXPECT_TRUE(reactive_versions_->replay_buffer().size() == 0);
1994
- EXPECT_EQ(num_initial_edits_, num_recovered_edits_);
1995
- EXPECT_EQ(kAtomicGroupSize, num_applied_edits_);
2412
+ EXPECT_EQ(kAtomicGroupSize, num_recovered_edits_);
1996
2413
  }
1997
2414
 
1998
2415
  TEST_F(VersionSetAtomicGroupTest,
@@ -2008,7 +2425,6 @@ TEST_F(VersionSetAtomicGroupTest,
2008
2425
  EXPECT_FALSE(last_in_atomic_group_);
2009
2426
  EXPECT_EQ(kNumberOfPersistedVersionEdits, num_edits_in_atomic_group_);
2010
2427
  EXPECT_EQ(num_initial_edits_, num_recovered_edits_);
2011
- EXPECT_EQ(0, num_applied_edits_);
2012
2428
  }
2013
2429
 
2014
2430
  TEST_F(VersionSetAtomicGroupTest,
@@ -2040,14 +2456,13 @@ TEST_F(VersionSetAtomicGroupTest,
2040
2456
  InstrumentedMutex mu;
2041
2457
  std::unordered_set<ColumnFamilyData*> cfds_changed;
2042
2458
  mu.Lock();
2043
- EXPECT_OK(
2044
- reactive_versions_->ReadAndApply(&mu, &manifest_reader, &cfds_changed));
2459
+ EXPECT_OK(reactive_versions_->ReadAndApply(
2460
+ &mu, &manifest_reader, manifest_reader_status.get(), &cfds_changed));
2045
2461
  mu.Unlock();
2046
2462
  // Reactive version set should be empty now.
2047
2463
  EXPECT_TRUE(reactive_versions_->TEST_read_edits_in_atomic_group() == 0);
2048
2464
  EXPECT_TRUE(reactive_versions_->replay_buffer().size() == 0);
2049
2465
  EXPECT_EQ(num_initial_edits_, num_recovered_edits_);
2050
- EXPECT_EQ(kAtomicGroupSize, num_applied_edits_);
2051
2466
  }
2052
2467
 
2053
2468
  TEST_F(VersionSetAtomicGroupTest,
@@ -2064,13 +2479,14 @@ TEST_F(VersionSetAtomicGroupTest,
2064
2479
  &manifest_reader_status));
2065
2480
  EXPECT_EQ(column_families_.size(),
2066
2481
  reactive_versions_->GetColumnFamilySet()->NumberOfColumnFamilies());
2482
+ EXPECT_EQ(num_initial_edits_, num_recovered_edits_);
2067
2483
  // Write a few edits in an atomic group.
2068
2484
  AddNewEditsToLog(kNumberOfPersistedVersionEdits);
2069
2485
  InstrumentedMutex mu;
2070
2486
  std::unordered_set<ColumnFamilyData*> cfds_changed;
2071
2487
  mu.Lock();
2072
- EXPECT_OK(
2073
- reactive_versions_->ReadAndApply(&mu, &manifest_reader, &cfds_changed));
2488
+ EXPECT_OK(reactive_versions_->ReadAndApply(
2489
+ &mu, &manifest_reader, manifest_reader_status.get(), &cfds_changed));
2074
2490
  mu.Unlock();
2075
2491
  EXPECT_TRUE(first_in_atomic_group_);
2076
2492
  EXPECT_FALSE(last_in_atomic_group_);
@@ -2079,8 +2495,6 @@ TEST_F(VersionSetAtomicGroupTest,
2079
2495
  EXPECT_TRUE(reactive_versions_->TEST_read_edits_in_atomic_group() ==
2080
2496
  kNumberOfPersistedVersionEdits);
2081
2497
  EXPECT_TRUE(reactive_versions_->replay_buffer().size() == kAtomicGroupSize);
2082
- EXPECT_EQ(num_initial_edits_, num_recovered_edits_);
2083
- EXPECT_EQ(0, num_applied_edits_);
2084
2498
  }
2085
2499
 
2086
2500
  TEST_F(VersionSetAtomicGroupTest,
@@ -2127,8 +2541,8 @@ TEST_F(VersionSetAtomicGroupTest,
2127
2541
  // Write the corrupted edits.
2128
2542
  AddNewEditsToLog(kAtomicGroupSize);
2129
2543
  mu.Lock();
2130
- EXPECT_NOK(
2131
- reactive_versions_->ReadAndApply(&mu, &manifest_reader, &cfds_changed));
2544
+ EXPECT_NOK(reactive_versions_->ReadAndApply(
2545
+ &mu, &manifest_reader, manifest_reader_status.get(), &cfds_changed));
2132
2546
  mu.Unlock();
2133
2547
  EXPECT_EQ(edits_[kAtomicGroupSize / 2].DebugString(),
2134
2548
  corrupted_edit_.DebugString());
@@ -2177,8 +2591,8 @@ TEST_F(VersionSetAtomicGroupTest,
2177
2591
  &manifest_reader_status));
2178
2592
  AddNewEditsToLog(kAtomicGroupSize);
2179
2593
  mu.Lock();
2180
- EXPECT_NOK(
2181
- reactive_versions_->ReadAndApply(&mu, &manifest_reader, &cfds_changed));
2594
+ EXPECT_NOK(reactive_versions_->ReadAndApply(
2595
+ &mu, &manifest_reader, manifest_reader_status.get(), &cfds_changed));
2182
2596
  mu.Unlock();
2183
2597
  EXPECT_EQ(edits_[1].DebugString(),
2184
2598
  edit_with_incorrect_group_size_.DebugString());
@@ -2312,14 +2726,13 @@ class EmptyDefaultCfNewManifest : public VersionSetTestBase,
2312
2726
  assert(log_writer != nullptr);
2313
2727
  VersionEdit new_db;
2314
2728
  new_db.SetLogNumber(0);
2315
- std::unique_ptr<WritableFile> file;
2316
2729
  const std::string manifest_path = DescriptorFileName(dbname_, 1);
2317
- Status s = env_->NewWritableFile(
2318
- manifest_path, &file, env_->OptimizeForManifestWrite(env_options_));
2730
+ const auto& fs = env_->GetFileSystem();
2731
+ std::unique_ptr<WritableFileWriter> file_writer;
2732
+ Status s = WritableFileWriter::Create(
2733
+ fs, manifest_path, fs->OptimizeForManifestWrite(env_options_),
2734
+ &file_writer, nullptr);
2319
2735
  ASSERT_OK(s);
2320
- std::unique_ptr<WritableFileWriter> file_writer(
2321
- new WritableFileWriter(NewLegacyWritableFileWrapper(std::move(file)),
2322
- manifest_path, env_options_));
2323
2736
  log_writer->reset(new log::Writer(std::move(file_writer), 0, true));
2324
2737
  std::string record;
2325
2738
  ASSERT_TRUE(new_db.EncodeTo(&record));
@@ -2387,13 +2800,12 @@ class VersionSetTestEmptyDb
2387
2800
  new_db.SetDBId(db_id);
2388
2801
  }
2389
2802
  const std::string manifest_path = DescriptorFileName(dbname_, 1);
2390
- std::unique_ptr<WritableFile> file;
2391
- Status s = env_->NewWritableFile(
2392
- manifest_path, &file, env_->OptimizeForManifestWrite(env_options_));
2803
+ const auto& fs = env_->GetFileSystem();
2804
+ std::unique_ptr<WritableFileWriter> file_writer;
2805
+ Status s = WritableFileWriter::Create(
2806
+ fs, manifest_path, fs->OptimizeForManifestWrite(env_options_),
2807
+ &file_writer, nullptr);
2393
2808
  ASSERT_OK(s);
2394
- std::unique_ptr<WritableFileWriter> file_writer(
2395
- new WritableFileWriter(NewLegacyWritableFileWrapper(std::move(file)),
2396
- manifest_path, env_options_));
2397
2809
  {
2398
2810
  log_writer->reset(new log::Writer(std::move(file_writer), 0, false));
2399
2811
  std::string record;
@@ -2437,6 +2849,7 @@ TEST_P(VersionSetTestEmptyDb, OpenFromIncompleteManifest0) {
2437
2849
  if (iter == cf_names.end()) {
2438
2850
  ASSERT_TRUE(s.IsInvalidArgument());
2439
2851
  } else {
2852
+ ASSERT_NE(s.ToString().find(manifest_path), std::string::npos);
2440
2853
  ASSERT_TRUE(s.IsCorruption());
2441
2854
  }
2442
2855
  }
@@ -2478,6 +2891,7 @@ TEST_P(VersionSetTestEmptyDb, OpenFromIncompleteManifest1) {
2478
2891
  if (iter == cf_names.end()) {
2479
2892
  ASSERT_TRUE(s.IsInvalidArgument());
2480
2893
  } else {
2894
+ ASSERT_NE(s.ToString().find(manifest_path), std::string::npos);
2481
2895
  ASSERT_TRUE(s.IsCorruption());
2482
2896
  }
2483
2897
  }
@@ -2524,6 +2938,7 @@ TEST_P(VersionSetTestEmptyDb, OpenFromInCompleteManifest2) {
2524
2938
  if (iter == cf_names.end()) {
2525
2939
  ASSERT_TRUE(s.IsInvalidArgument());
2526
2940
  } else {
2941
+ ASSERT_NE(s.ToString().find(manifest_path), std::string::npos);
2527
2942
  ASSERT_TRUE(s.IsCorruption());
2528
2943
  }
2529
2944
  }
@@ -2581,6 +2996,7 @@ TEST_P(VersionSetTestEmptyDb, OpenManifestWithUnknownCF) {
2581
2996
  if (iter == cf_names.end()) {
2582
2997
  ASSERT_TRUE(s.IsInvalidArgument());
2583
2998
  } else {
2999
+ ASSERT_NE(s.ToString().find(manifest_path), std::string::npos);
2584
3000
  ASSERT_TRUE(s.IsCorruption());
2585
3001
  }
2586
3002
  }
@@ -2697,12 +3113,12 @@ class VersionSetTestMissingFiles : public VersionSetTestBase,
2697
3113
  assert(last_seqno != nullptr);
2698
3114
  assert(log_writer != nullptr);
2699
3115
  const std::string manifest = DescriptorFileName(dbname_, 1);
2700
- std::unique_ptr<WritableFile> file;
2701
- Status s = env_->NewWritableFile(
2702
- manifest, &file, env_->OptimizeForManifestWrite(env_options_));
3116
+ const auto& fs = env_->GetFileSystem();
3117
+ std::unique_ptr<WritableFileWriter> file_writer;
3118
+ Status s = WritableFileWriter::Create(
3119
+ fs, manifest, fs->OptimizeForManifestWrite(env_options_), &file_writer,
3120
+ nullptr);
2703
3121
  ASSERT_OK(s);
2704
- std::unique_ptr<WritableFileWriter> file_writer(new WritableFileWriter(
2705
- NewLegacyWritableFileWrapper(std::move(file)), manifest, env_options_));
2706
3122
  log_writer->reset(new log::Writer(std::move(file_writer), 0, false));
2707
3123
  VersionEdit new_db;
2708
3124
  if (db_options_.write_dbid_to_manifest) {
@@ -2786,18 +3202,17 @@ class VersionSetTestMissingFiles : public VersionSetTestBase,
2786
3202
  std::unique_ptr<FSWritableFile> file;
2787
3203
  Status s = fs_->NewWritableFile(fname, FileOptions(), &file, nullptr);
2788
3204
  ASSERT_OK(s);
2789
- std::unique_ptr<WritableFileWriter> fwriter(
2790
- new WritableFileWriter(std::move(file), fname, FileOptions(), env_));
2791
- std::vector<std::unique_ptr<IntTblPropCollectorFactory>>
2792
- int_tbl_prop_collector_factories;
3205
+ std::unique_ptr<WritableFileWriter> fwriter(new WritableFileWriter(
3206
+ std::move(file), fname, FileOptions(), env_->GetSystemClock().get()));
3207
+ IntTblPropCollectorFactories int_tbl_prop_collector_factories;
2793
3208
 
2794
3209
  std::unique_ptr<TableBuilder> builder(table_factory_->NewTableBuilder(
2795
3210
  TableBuilderOptions(
2796
- immutable_cf_options_, mutable_cf_options_, *internal_comparator_,
3211
+ immutable_options_, mutable_cf_options_, *internal_comparator_,
2797
3212
  &int_tbl_prop_collector_factories, kNoCompression,
2798
- /*_sample_for_compression=*/0, CompressionOptions(),
2799
- /*_skip_filters=*/false, info.column_family, info.level),
2800
- TablePropertiesCollectorFactory::Context::kUnknownColumnFamily,
3213
+ CompressionOptions(),
3214
+ TablePropertiesCollectorFactory::Context::kUnknownColumnFamily,
3215
+ info.column_family, info.level),
2801
3216
  fwriter.get()));
2802
3217
  InternalKey ikey(info.key, 0, ValueType::kTypeValue);
2803
3218
  builder->Add(ikey.Encode(), "value");
@@ -2807,11 +3222,11 @@ class VersionSetTestMissingFiles : public VersionSetTestBase,
2807
3222
  s = fs_->GetFileSize(fname, IOOptions(), &file_size, nullptr);
2808
3223
  ASSERT_OK(s);
2809
3224
  ASSERT_NE(0, file_size);
2810
- FileMetaData meta;
2811
- meta = FileMetaData(file_num, /*file_path_id=*/0, file_size, ikey, ikey,
2812
- 0, 0, false, 0, 0, 0, kUnknownFileChecksum,
2813
- kUnknownFileChecksumFuncName);
2814
- file_metas->emplace_back(meta);
3225
+ file_metas->emplace_back(file_num, /*file_path_id=*/0, file_size, ikey,
3226
+ ikey, 0, 0, false, Temperature::kUnknown, 0, 0,
3227
+ 0, kUnknownFileChecksum,
3228
+ kUnknownFileChecksumFuncName,
3229
+ kDisableUserTimestamp, kDisableUserTimestamp);
2815
3230
  }
2816
3231
  }
2817
3232
 
@@ -2863,10 +3278,11 @@ TEST_F(VersionSetTestMissingFiles, ManifestFarBehindSst) {
2863
3278
  std::string largest_ukey = "b";
2864
3279
  InternalKey smallest_ikey(smallest_ukey, 1, ValueType::kTypeValue);
2865
3280
  InternalKey largest_ikey(largest_ukey, 1, ValueType::kTypeValue);
2866
- FileMetaData meta =
2867
- FileMetaData(file_num, /*file_path_id=*/0, /*file_size=*/12,
2868
- smallest_ikey, largest_ikey, 0, 0, false, 0, 0, 0,
2869
- kUnknownFileChecksum, kUnknownFileChecksumFuncName);
3281
+ FileMetaData meta = FileMetaData(
3282
+ file_num, /*file_path_id=*/0, /*file_size=*/12, smallest_ikey,
3283
+ largest_ikey, 0, 0, false, Temperature::kUnknown, 0, 0, 0,
3284
+ kUnknownFileChecksum, kUnknownFileChecksumFuncName,
3285
+ kDisableUserTimestamp, kDisableUserTimestamp);
2870
3286
  added_files.emplace_back(0, meta);
2871
3287
  }
2872
3288
  WriteFileAdditionAndDeletionToManifest(
@@ -2918,10 +3334,11 @@ TEST_F(VersionSetTestMissingFiles, ManifestAheadofSst) {
2918
3334
  std::string largest_ukey = "b";
2919
3335
  InternalKey smallest_ikey(smallest_ukey, 1, ValueType::kTypeValue);
2920
3336
  InternalKey largest_ikey(largest_ukey, 1, ValueType::kTypeValue);
2921
- FileMetaData meta =
2922
- FileMetaData(file_num, /*file_path_id=*/0, /*file_size=*/12,
2923
- smallest_ikey, largest_ikey, 0, 0, false, 0, 0, 0,
2924
- kUnknownFileChecksum, kUnknownFileChecksumFuncName);
3337
+ FileMetaData meta = FileMetaData(
3338
+ file_num, /*file_path_id=*/0, /*file_size=*/12, smallest_ikey,
3339
+ largest_ikey, 0, 0, false, Temperature::kUnknown, 0, 0, 0,
3340
+ kUnknownFileChecksum, kUnknownFileChecksumFuncName,
3341
+ kDisableUserTimestamp, kDisableUserTimestamp);
2925
3342
  added_files.emplace_back(0, meta);
2926
3343
  }
2927
3344
  WriteFileAdditionAndDeletionToManifest(
@@ -3007,6 +3424,7 @@ TEST_F(VersionSetTestMissingFiles, NoFileMissing) {
3007
3424
  }
3008
3425
 
3009
3426
  TEST_F(VersionSetTestMissingFiles, MinLogNumberToKeep2PC) {
3427
+ db_options_.allow_2pc = true;
3010
3428
  NewDB();
3011
3429
 
3012
3430
  SstInfo sst(100, kDefaultColumnFamilyName, "a");
@@ -3018,12 +3436,12 @@ TEST_F(VersionSetTestMissingFiles, MinLogNumberToKeep2PC) {
3018
3436
  edit.AddFile(0, file_metas[0]);
3019
3437
  edit.SetMinLogNumberToKeep(kMinWalNumberToKeep2PC);
3020
3438
  ASSERT_OK(LogAndApplyToDefaultCF(edit));
3021
- ASSERT_EQ(versions_->min_log_number_to_keep_2pc(), kMinWalNumberToKeep2PC);
3439
+ ASSERT_EQ(versions_->min_log_number_to_keep(), kMinWalNumberToKeep2PC);
3022
3440
 
3023
3441
  for (int i = 0; i < 3; i++) {
3024
3442
  CreateNewManifest();
3025
3443
  ReopenDB();
3026
- ASSERT_EQ(versions_->min_log_number_to_keep_2pc(), kMinWalNumberToKeep2PC);
3444
+ ASSERT_EQ(versions_->min_log_number_to_keep(), kMinWalNumberToKeep2PC);
3027
3445
  }
3028
3446
  }
3029
3447