@nxtedition/rocksdb 10.0.13 → 10.0.15

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 (700) hide show
  1. package/.tap/coverage/213879bb-47ae-470e-bb54-f4157d9f60e2.json +162898 -0
  2. package/.tap/processinfo/{4c642b53-6895-4ef0-9391-7c6b8d484262.json → 213879bb-47ae-470e-bb54-f4157d9f60e2.json} +117 -121
  3. package/.tap/test-results/node_modules/abstract-level/test/get-test.js.tap +0 -0
  4. package/.tap/test-results/test/abstract-level-test.js.tap +1705 -0
  5. package/.tap/test-results/test/batch-test.js.tap +12 -0
  6. package/.tap/test-results/test/chained-batch-gc-test.js.tap +11 -0
  7. package/.tap/test-results/test/cleanup-hanging-iterators-test.js.tap +58 -0
  8. package/.tap/test-results/test/clear-gc-test.js.tap +13 -0
  9. package/.tap/test-results/test/column-test.js.tap +55 -0
  10. package/.tap/test-results/test/common.js.tap +0 -0
  11. package/.tap/test-results/test/compression-test.js.tap +30 -0
  12. package/.tap/test-results/test/db-identity.js.tap +12 -0
  13. package/.tap/test-results/test/electron.js.tap +0 -0
  14. package/.tap/test-results/test/env-cleanup-hook-test.js.tap +2 -0
  15. package/.tap/test-results/test/env-cleanup-hook.js.tap +0 -0
  16. package/.tap/test-results/test/gc.js.tap +0 -0
  17. package/.tap/test-results/test/getproperty-test.js.tap +29 -0
  18. package/.tap/test-results/test/iterator-gc-test.js.tap +4 -0
  19. package/.tap/test-results/test/iterator-hwm-test.js.tap +24 -0
  20. package/.tap/test-results/test/iterator-recursion-test.js.tap +12 -0
  21. package/.tap/test-results/test/iterator-starvation-test.js.tap +2 -0
  22. package/.tap/test-results/test/iterator-test.js.tap +0 -0
  23. package/.tap/test-results/test/leak-tester-batch.js.tap +0 -0
  24. package/.tap/test-results/test/leak-tester-iterator.js.tap +0 -0
  25. package/.tap/test-results/test/leak-tester.js.tap +0 -0
  26. package/.tap/test-results/test/lock-test.js.tap +0 -0
  27. package/.tap/test-results/test/lock.js.tap +0 -0
  28. package/.tap/test-results/test/make.js.tap +0 -0
  29. package/.tap/test-results/test/max-rev-merge.js.tap +0 -12
  30. package/.tap/test-results/test/merge-operator-test.js.tap +0 -0
  31. package/.tap/test-results/test/mkdir-test.js.tap +0 -0
  32. package/.tap/test-results/test/segfault-test.js.tap +0 -0
  33. package/.tap/test-results/test/stack-blower.js.tap +0 -0
  34. package/binding.cc +42 -34
  35. package/deps/rocksdb/rocksdb/CMakeLists.txt +44 -14
  36. package/deps/rocksdb/rocksdb/Makefile +34 -17
  37. package/deps/rocksdb/rocksdb/TARGETS +27 -0
  38. package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +95 -42
  39. package/deps/rocksdb/rocksdb/cache/cache_reservation_manager_test.cc +0 -1
  40. package/deps/rocksdb/rocksdb/cache/cache_test.cc +5 -3
  41. package/deps/rocksdb/rocksdb/cache/clock_cache.cc +381 -393
  42. package/deps/rocksdb/rocksdb/cache/clock_cache.h +88 -51
  43. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +14 -7
  44. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +1 -1
  45. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +21 -19
  46. package/deps/rocksdb/rocksdb/cache/lru_cache.cc +8 -7
  47. package/deps/rocksdb/rocksdb/cache/lru_cache.h +1 -1
  48. package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +89 -13
  49. package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +16 -8
  50. package/deps/rocksdb/rocksdb/cache/sharded_cache.h +6 -6
  51. package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache.cc +15 -9
  52. package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache.h +16 -13
  53. package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache_test.cc +306 -23
  54. package/deps/rocksdb/rocksdb/cache/typed_cache.h +3 -4
  55. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +30 -27
  56. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +8 -10
  57. package/deps/rocksdb/rocksdb/db/attribute_group_iterator_impl.cc +20 -0
  58. package/deps/rocksdb/rocksdb/db/attribute_group_iterator_impl.h +83 -0
  59. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +19 -16
  60. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.h +6 -5
  61. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +18 -21
  62. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache_test.cc +5 -4
  63. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +7 -6
  64. package/deps/rocksdb/rocksdb/db/blob/blob_log_writer.cc +56 -27
  65. package/deps/rocksdb/rocksdb/db/blob/blob_log_writer.h +11 -7
  66. package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +20 -19
  67. package/deps/rocksdb/rocksdb/db/blob/db_blob_basic_test.cc +106 -31
  68. package/deps/rocksdb/rocksdb/db/blob/db_blob_index_test.cc +5 -8
  69. package/deps/rocksdb/rocksdb/db/blob/prefetch_buffer_collection.cc +4 -2
  70. package/deps/rocksdb/rocksdb/db/builder.cc +89 -44
  71. package/deps/rocksdb/rocksdb/db/builder.h +4 -6
  72. package/deps/rocksdb/rocksdb/db/c.cc +205 -57
  73. package/deps/rocksdb/rocksdb/db/c_test.c +141 -20
  74. package/deps/rocksdb/rocksdb/db/coalescing_iterator.cc +47 -0
  75. package/deps/rocksdb/rocksdb/db/coalescing_iterator.h +79 -0
  76. package/deps/rocksdb/rocksdb/db/column_family.cc +100 -36
  77. package/deps/rocksdb/rocksdb/db/column_family.h +46 -28
  78. package/deps/rocksdb/rocksdb/db/column_family_test.cc +168 -46
  79. package/deps/rocksdb/rocksdb/db/compact_files_test.cc +51 -6
  80. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +72 -24
  81. package/deps/rocksdb/rocksdb/db/compaction/compaction.h +11 -14
  82. package/deps/rocksdb/rocksdb/db/compaction/compaction_iteration_stats.h +7 -0
  83. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +87 -8
  84. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +17 -3
  85. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +310 -70
  86. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +78 -62
  87. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +0 -1
  88. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +2 -3
  89. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +33 -96
  90. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +18 -10
  91. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +7 -8
  92. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +42 -22
  93. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +20 -16
  94. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +7 -3
  95. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +18 -17
  96. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +95 -10
  97. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +6 -7
  98. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +213 -34
  99. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +4 -4
  100. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +7 -8
  101. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +16 -16
  102. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +75 -142
  103. package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +577 -34
  104. package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +4 -4
  105. package/deps/rocksdb/rocksdb/db/convenience.cc +1 -1
  106. package/deps/rocksdb/rocksdb/db/corruption_test.cc +7 -38
  107. package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +5 -5
  108. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +366 -136
  109. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +9 -10
  110. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +282 -6
  111. package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +6 -6
  112. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +551 -150
  113. package/deps/rocksdb/rocksdb/db/db_dynamic_level_test.cc +1 -1
  114. package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +41 -13
  115. package/deps/rocksdb/rocksdb/db/db_flush_test.cc +54 -17
  116. package/deps/rocksdb/rocksdb/db/db_follower_test.cc +527 -0
  117. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +40 -58
  118. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +34 -45
  119. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +699 -580
  120. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +308 -230
  121. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +180 -107
  122. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +6 -2
  123. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +10 -6
  124. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +36 -61
  125. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_follower.cc +347 -0
  126. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_follower.h +54 -0
  127. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +206 -155
  128. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +5 -8
  129. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +41 -39
  130. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +26 -22
  131. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +14 -9
  132. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +126 -46
  133. package/deps/rocksdb/rocksdb/db/db_info_dumper.cc +21 -9
  134. package/deps/rocksdb/rocksdb/db/db_io_failure_test.cc +294 -0
  135. package/deps/rocksdb/rocksdb/db/db_iter.cc +116 -78
  136. package/deps/rocksdb/rocksdb/db/db_iter.h +31 -7
  137. package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +34 -14
  138. package/deps/rocksdb/rocksdb/db/db_iter_test.cc +69 -8
  139. package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +153 -18
  140. package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +9 -11
  141. package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +9 -1
  142. package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +6 -2
  143. package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +105 -0
  144. package/deps/rocksdb/rocksdb/db/db_options_test.cc +97 -111
  145. package/deps/rocksdb/rocksdb/db/db_properties_test.cc +12 -3
  146. package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +82 -30
  147. package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +5 -7
  148. package/deps/rocksdb/rocksdb/db/db_sst_test.cc +64 -22
  149. package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +74 -0
  150. package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +175 -47
  151. package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +4 -3
  152. package/deps/rocksdb/rocksdb/db/db_test.cc +133 -109
  153. package/deps/rocksdb/rocksdb/db/db_test2.cc +227 -139
  154. package/deps/rocksdb/rocksdb/db/db_test_util.cc +42 -19
  155. package/deps/rocksdb/rocksdb/db/db_test_util.h +67 -24
  156. package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +140 -2
  157. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +17 -19
  158. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +332 -87
  159. package/deps/rocksdb/rocksdb/db/db_with_timestamp_compaction_test.cc +4 -4
  160. package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +4 -4
  161. package/deps/rocksdb/rocksdb/db/db_write_test.cc +250 -30
  162. package/deps/rocksdb/rocksdb/db/dbformat.cc +41 -8
  163. package/deps/rocksdb/rocksdb/db/dbformat.h +100 -17
  164. package/deps/rocksdb/rocksdb/db/deletefile_test.cc +48 -8
  165. package/deps/rocksdb/rocksdb/db/error_handler.cc +102 -116
  166. package/deps/rocksdb/rocksdb/db/error_handler.h +28 -6
  167. package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +263 -99
  168. package/deps/rocksdb/rocksdb/db/event_helpers.cc +3 -1
  169. package/deps/rocksdb/rocksdb/db/experimental.cc +1073 -7
  170. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +261 -111
  171. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +263 -183
  172. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +31 -12
  173. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +698 -7
  174. package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +5 -3
  175. package/deps/rocksdb/rocksdb/db/flush_job.cc +41 -41
  176. package/deps/rocksdb/rocksdb/db/flush_job.h +11 -8
  177. package/deps/rocksdb/rocksdb/db/flush_job_test.cc +90 -13
  178. package/deps/rocksdb/rocksdb/db/forward_iterator.cc +19 -6
  179. package/deps/rocksdb/rocksdb/db/forward_iterator.h +12 -12
  180. package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +83 -52
  181. package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +169 -2
  182. package/deps/rocksdb/rocksdb/db/internal_stats.cc +12 -6
  183. package/deps/rocksdb/rocksdb/db/internal_stats.h +2 -2
  184. package/deps/rocksdb/rocksdb/db/job_context.h +17 -0
  185. package/deps/rocksdb/rocksdb/db/listener_test.cc +4 -4
  186. package/deps/rocksdb/rocksdb/db/log_reader.cc +44 -20
  187. package/deps/rocksdb/rocksdb/db/log_reader.h +3 -0
  188. package/deps/rocksdb/rocksdb/db/log_test.cc +81 -17
  189. package/deps/rocksdb/rocksdb/db/log_writer.cc +135 -92
  190. package/deps/rocksdb/rocksdb/db/log_writer.h +11 -10
  191. package/deps/rocksdb/rocksdb/db/malloc_stats.cc +2 -3
  192. package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +1 -1
  193. package/deps/rocksdb/rocksdb/db/memtable.cc +82 -62
  194. package/deps/rocksdb/rocksdb/db/memtable.h +17 -9
  195. package/deps/rocksdb/rocksdb/db/memtable_list.cc +19 -13
  196. package/deps/rocksdb/rocksdb/db/memtable_list.h +3 -1
  197. package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +38 -5
  198. package/deps/rocksdb/rocksdb/db/merge_context.h +3 -0
  199. package/deps/rocksdb/rocksdb/db/merge_helper.cc +34 -156
  200. package/deps/rocksdb/rocksdb/db/merge_helper.h +52 -46
  201. package/deps/rocksdb/rocksdb/db/merge_test.cc +16 -11
  202. package/deps/rocksdb/rocksdb/db/multi_cf_iterator_impl.h +289 -0
  203. package/deps/rocksdb/rocksdb/db/multi_cf_iterator_test.cc +918 -0
  204. package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +4 -6
  205. package/deps/rocksdb/rocksdb/db/options_file_test.cc +4 -4
  206. package/deps/rocksdb/rocksdb/db/output_validator.cc +8 -12
  207. package/deps/rocksdb/rocksdb/db/output_validator.h +1 -4
  208. package/deps/rocksdb/rocksdb/db/perf_context_test.cc +23 -4
  209. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.cc +2 -3
  210. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler_test.cc +1 -1
  211. package/deps/rocksdb/rocksdb/db/pinned_iterators_manager.h +2 -2
  212. package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +3 -6
  213. package/deps/rocksdb/rocksdb/db/prefix_test.cc +21 -8
  214. package/deps/rocksdb/rocksdb/db/range_del_aggregator.cc +0 -2
  215. package/deps/rocksdb/rocksdb/db/range_del_aggregator.h +0 -1
  216. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.cc +17 -4
  217. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +6 -3
  218. package/deps/rocksdb/rocksdb/db/repair.cc +35 -29
  219. package/deps/rocksdb/rocksdb/db/repair_test.cc +1 -2
  220. package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +428 -156
  221. package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.cc +393 -227
  222. package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.h +154 -82
  223. package/deps/rocksdb/rocksdb/db/snapshot_checker.h +2 -2
  224. package/deps/rocksdb/rocksdb/db/table_cache.cc +9 -11
  225. package/deps/rocksdb/rocksdb/db/table_cache.h +2 -1
  226. package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +8 -3
  227. package/deps/rocksdb/rocksdb/db/table_properties_collector.h +27 -26
  228. package/deps/rocksdb/rocksdb/db/table_properties_collector_test.cc +23 -23
  229. package/deps/rocksdb/rocksdb/db/transaction_log_impl.h +5 -5
  230. package/deps/rocksdb/rocksdb/db/version_builder.cc +6 -0
  231. package/deps/rocksdb/rocksdb/db/version_builder_test.cc +62 -29
  232. package/deps/rocksdb/rocksdb/db/version_edit.cc +1 -2
  233. package/deps/rocksdb/rocksdb/db/version_edit.h +30 -11
  234. package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +291 -116
  235. package/deps/rocksdb/rocksdb/db/version_edit_handler.h +54 -11
  236. package/deps/rocksdb/rocksdb/db/version_edit_test.cc +3 -1
  237. package/deps/rocksdb/rocksdb/db/version_set.cc +301 -141
  238. package/deps/rocksdb/rocksdb/db/version_set.h +90 -33
  239. package/deps/rocksdb/rocksdb/db/version_set_test.cc +817 -193
  240. package/deps/rocksdb/rocksdb/db/version_util.h +10 -5
  241. package/deps/rocksdb/rocksdb/db/wal_manager.cc +15 -11
  242. package/deps/rocksdb/rocksdb/db/wal_manager.h +2 -1
  243. package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +10 -9
  244. package/deps/rocksdb/rocksdb/db/wide/db_wide_basic_test.cc +403 -28
  245. package/deps/rocksdb/rocksdb/db/wide/wide_columns.cc +2 -2
  246. package/deps/rocksdb/rocksdb/db/write_batch.cc +204 -18
  247. package/deps/rocksdb/rocksdb/db/write_batch_internal.h +4 -0
  248. package/deps/rocksdb/rocksdb/db/write_batch_test.cc +149 -5
  249. package/deps/rocksdb/rocksdb/db/write_callback_test.cc +7 -7
  250. package/deps/rocksdb/rocksdb/db/write_stall_stats.h +7 -7
  251. package/deps/rocksdb/rocksdb/db/write_thread.cc +86 -47
  252. package/deps/rocksdb/rocksdb/db/write_thread.h +2 -0
  253. package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +176 -68
  254. package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +337 -125
  255. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +38 -9
  256. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +126 -34
  257. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +1 -1
  258. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.h +2 -2
  259. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +161 -1
  260. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +267 -9
  261. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.cc +13 -7
  262. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_table_properties_collector.h +9 -9
  263. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +535 -86
  264. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +27 -5
  265. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +8 -15
  266. package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +46 -21
  267. package/deps/rocksdb/rocksdb/db_stress_tool/expected_value.h +74 -4
  268. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +28 -11
  269. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +426 -151
  270. package/deps/rocksdb/rocksdb/env/composite_env.cc +1 -1
  271. package/deps/rocksdb/rocksdb/env/emulated_clock.h +6 -6
  272. package/deps/rocksdb/rocksdb/env/env.cc +21 -11
  273. package/deps/rocksdb/rocksdb/env/env_basic_test.cc +9 -9
  274. package/deps/rocksdb/rocksdb/env/env_chroot.cc +3 -2
  275. package/deps/rocksdb/rocksdb/env/env_encryption.cc +3 -3
  276. package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +2 -2
  277. package/deps/rocksdb/rocksdb/env/env_posix.cc +12 -10
  278. package/deps/rocksdb/rocksdb/env/env_test.cc +24 -18
  279. package/deps/rocksdb/rocksdb/env/file_system.cc +7 -6
  280. package/deps/rocksdb/rocksdb/env/file_system_tracer.cc +3 -3
  281. package/deps/rocksdb/rocksdb/env/file_system_tracer.h +3 -3
  282. package/deps/rocksdb/rocksdb/env/fs_on_demand.cc +331 -0
  283. package/deps/rocksdb/rocksdb/env/fs_on_demand.h +139 -0
  284. package/deps/rocksdb/rocksdb/env/fs_posix.cc +14 -15
  285. package/deps/rocksdb/rocksdb/env/io_posix.cc +15 -10
  286. package/deps/rocksdb/rocksdb/env/io_posix.h +86 -92
  287. package/deps/rocksdb/rocksdb/env/mock_env.cc +1 -1
  288. package/deps/rocksdb/rocksdb/env/mock_env_test.cc +6 -6
  289. package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +8 -6
  290. package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +1 -1
  291. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +599 -592
  292. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +312 -200
  293. package/deps/rocksdb/rocksdb/file/file_util.cc +19 -14
  294. package/deps/rocksdb/rocksdb/file/file_util.h +34 -24
  295. package/deps/rocksdb/rocksdb/file/filename.cc +32 -17
  296. package/deps/rocksdb/rocksdb/file/filename.h +51 -53
  297. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +82 -441
  298. package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +7 -6
  299. package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +5 -5
  300. package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +9 -3
  301. package/deps/rocksdb/rocksdb/file/read_write_util.h +3 -3
  302. package/deps/rocksdb/rocksdb/file/sequence_file_reader.cc +6 -2
  303. package/deps/rocksdb/rocksdb/file/sequence_file_reader.h +9 -4
  304. package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.h +8 -4
  305. package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +110 -89
  306. package/deps/rocksdb/rocksdb/file/writable_file_writer.h +34 -17
  307. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_cache.h +16 -0
  308. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +39 -189
  309. package/deps/rocksdb/rocksdb/include/rocksdb/attribute_groups.h +114 -0
  310. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +91 -6
  311. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +52 -7
  312. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +1 -1
  313. package/deps/rocksdb/rocksdb/include/rocksdb/comparator.h +27 -0
  314. package/deps/rocksdb/rocksdb/include/rocksdb/compression_type.h +146 -0
  315. package/deps/rocksdb/rocksdb/include/rocksdb/concurrent_task_limiter.h +2 -2
  316. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +254 -151
  317. package/deps/rocksdb/rocksdb/include/rocksdb/env.h +39 -36
  318. package/deps/rocksdb/rocksdb/include/rocksdb/env_encryption.h +1 -1
  319. package/deps/rocksdb/rocksdb/include/rocksdb/experimental.h +431 -0
  320. package/deps/rocksdb/rocksdb/include/rocksdb/file_checksum.h +1 -1
  321. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +57 -23
  322. package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +27 -57
  323. package/deps/rocksdb/rocksdb/include/rocksdb/iterator_base.h +74 -0
  324. package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +2 -1
  325. package/deps/rocksdb/rocksdb/include/rocksdb/memory_allocator.h +1 -1
  326. package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +11 -11
  327. package/deps/rocksdb/rocksdb/include/rocksdb/merge_operator.h +1 -1
  328. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +146 -71
  329. package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +6 -1
  330. package/deps/rocksdb/rocksdb/include/rocksdb/perf_level.h +7 -4
  331. package/deps/rocksdb/rocksdb/include/rocksdb/rate_limiter.h +17 -13
  332. package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +17 -19
  333. package/deps/rocksdb/rocksdb/include/rocksdb/slice_transform.h +5 -5
  334. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_manager.h +10 -8
  335. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_reader.h +18 -2
  336. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +12 -2
  337. package/deps/rocksdb/rocksdb/include/rocksdb/sst_partitioner.h +3 -3
  338. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +118 -116
  339. package/deps/rocksdb/rocksdb/include/rocksdb/system_clock.h +4 -4
  340. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +26 -21
  341. package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +18 -6
  342. package/deps/rocksdb/rocksdb/include/rocksdb/threadpool.h +1 -1
  343. package/deps/rocksdb/rocksdb/include/rocksdb/trace_record.h +5 -5
  344. package/deps/rocksdb/rocksdb/include/rocksdb/trace_record_result.h +8 -8
  345. package/deps/rocksdb/rocksdb/include/rocksdb/types.h +12 -0
  346. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/cache_dump_load.h +4 -0
  347. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/env_mirror.h +3 -3
  348. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +8 -0
  349. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/optimistic_transaction_db.h +1 -1
  350. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/option_change_migration.h +4 -4
  351. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +3 -3
  352. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/sim_cache.h +5 -6
  353. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +159 -167
  354. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/table_properties_collectors.h +1 -2
  355. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +52 -17
  356. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +3 -4
  357. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/types_util.h +36 -0
  358. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +118 -20
  359. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
  360. package/deps/rocksdb/rocksdb/include/rocksdb/wal_filter.h +1 -1
  361. package/deps/rocksdb/rocksdb/include/rocksdb/wide_columns.h +87 -45
  362. package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +26 -3
  363. package/deps/rocksdb/rocksdb/include/rocksdb/write_batch_base.h +22 -1
  364. package/deps/rocksdb/rocksdb/logging/auto_roll_logger.cc +7 -9
  365. package/deps/rocksdb/rocksdb/logging/auto_roll_logger.h +5 -6
  366. package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +2 -2
  367. package/deps/rocksdb/rocksdb/logging/env_logger.h +3 -3
  368. package/deps/rocksdb/rocksdb/logging/env_logger_test.cc +1 -1
  369. package/deps/rocksdb/rocksdb/logging/log_buffer.h +3 -3
  370. package/deps/rocksdb/rocksdb/memory/arena.h +11 -0
  371. package/deps/rocksdb/rocksdb/memory/arena_test.cc +17 -2
  372. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +1 -1
  373. package/deps/rocksdb/rocksdb/memory/memory_allocator.cc +1 -0
  374. package/deps/rocksdb/rocksdb/memory/memory_allocator_impl.h +1 -1
  375. package/deps/rocksdb/rocksdb/memtable/alloc_tracker.cc +1 -1
  376. package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.cc +11 -10
  377. package/deps/rocksdb/rocksdb/memtable/hash_skiplist_rep.cc +8 -7
  378. package/deps/rocksdb/rocksdb/memtable/inlineskiplist.h +2 -2
  379. package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +2 -2
  380. package/deps/rocksdb/rocksdb/memtable/skiplist_test.cc +1 -1
  381. package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +3 -3
  382. package/deps/rocksdb/rocksdb/memtable/vectorrep.cc +2 -2
  383. package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +3 -1
  384. package/deps/rocksdb/rocksdb/monitoring/file_read_sample.h +2 -2
  385. package/deps/rocksdb/rocksdb/monitoring/histogram.cc +20 -10
  386. package/deps/rocksdb/rocksdb/monitoring/histogram.h +15 -15
  387. package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.cc +7 -3
  388. package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.h +14 -14
  389. package/deps/rocksdb/rocksdb/monitoring/in_memory_stats_history.cc +1 -1
  390. package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +4 -0
  391. package/deps/rocksdb/rocksdb/monitoring/perf_context_imp.h +8 -1
  392. package/deps/rocksdb/rocksdb/monitoring/perf_level.cc +1 -1
  393. package/deps/rocksdb/rocksdb/monitoring/persistent_stats_history.cc +5 -2
  394. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +64 -58
  395. package/deps/rocksdb/rocksdb/monitoring/statistics_impl.h +11 -12
  396. package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +1 -1
  397. package/deps/rocksdb/rocksdb/monitoring/thread_status_impl.cc +1 -1
  398. package/deps/rocksdb/rocksdb/monitoring/thread_status_util.cc +7 -1
  399. package/deps/rocksdb/rocksdb/options/cf_options.cc +20 -28
  400. package/deps/rocksdb/rocksdb/options/cf_options.h +7 -14
  401. package/deps/rocksdb/rocksdb/options/configurable.cc +20 -12
  402. package/deps/rocksdb/rocksdb/options/configurable_test.cc +4 -6
  403. package/deps/rocksdb/rocksdb/options/configurable_test.h +2 -2
  404. package/deps/rocksdb/rocksdb/options/customizable.cc +1 -1
  405. package/deps/rocksdb/rocksdb/options/customizable_test.cc +3 -2
  406. package/deps/rocksdb/rocksdb/options/db_options.cc +22 -48
  407. package/deps/rocksdb/rocksdb/options/db_options.h +3 -3
  408. package/deps/rocksdb/rocksdb/options/offpeak_time_info.cc +59 -0
  409. package/deps/rocksdb/rocksdb/options/offpeak_time_info.h +37 -0
  410. package/deps/rocksdb/rocksdb/options/options.cc +14 -6
  411. package/deps/rocksdb/rocksdb/options/options_helper.cc +8 -13
  412. package/deps/rocksdb/rocksdb/options/options_helper.h +2 -3
  413. package/deps/rocksdb/rocksdb/options/options_parser.cc +35 -26
  414. package/deps/rocksdb/rocksdb/options/options_parser.h +4 -2
  415. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +3 -3
  416. package/deps/rocksdb/rocksdb/options/options_test.cc +30 -23
  417. package/deps/rocksdb/rocksdb/port/lang.h +1 -1
  418. package/deps/rocksdb/rocksdb/port/port_example.h +7 -7
  419. package/deps/rocksdb/rocksdb/port/port_posix.cc +7 -7
  420. package/deps/rocksdb/rocksdb/port/port_posix.h +7 -7
  421. package/deps/rocksdb/rocksdb/port/stack_trace.cc +85 -24
  422. package/deps/rocksdb/rocksdb/port/win/env_win.cc +1 -2
  423. package/deps/rocksdb/rocksdb/port/win/io_win.cc +4 -4
  424. package/deps/rocksdb/rocksdb/port/win/io_win.h +13 -17
  425. package/deps/rocksdb/rocksdb/port/win/port_win.cc +3 -2
  426. package/deps/rocksdb/rocksdb/port/win/port_win.h +4 -4
  427. package/deps/rocksdb/rocksdb/src.mk +16 -1
  428. package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.cc +1 -7
  429. package/deps/rocksdb/rocksdb/table/block_based/block.cc +39 -15
  430. package/deps/rocksdb/rocksdb/table/block_based/block.h +7 -7
  431. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +80 -40
  432. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +2 -3
  433. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +20 -5
  434. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +228 -122
  435. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +50 -9
  436. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +82 -25
  437. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +17 -20
  438. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +47 -13
  439. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +163 -50
  440. package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +1 -2
  441. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +23 -23
  442. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +2 -12
  443. package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +1 -2
  444. package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +6 -4
  445. package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +32 -27
  446. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +1 -1
  447. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +7 -10
  448. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block_test.cc +2 -2
  449. package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +1 -2
  450. package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +25 -7
  451. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +3 -5
  452. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +4 -6
  453. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +6 -6
  454. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +1 -1
  455. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +3 -5
  456. package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +2 -2
  457. package/deps/rocksdb/rocksdb/table/block_based/reader_common.h +4 -5
  458. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +138 -86
  459. package/deps/rocksdb/rocksdb/table/block_fetcher.h +22 -0
  460. package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +26 -13
  461. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +11 -11
  462. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +11 -11
  463. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.cc +10 -5
  464. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +6 -7
  465. package/deps/rocksdb/rocksdb/table/format.cc +15 -21
  466. package/deps/rocksdb/rocksdb/table/format.h +8 -0
  467. package/deps/rocksdb/rocksdb/table/get_context.cc +121 -78
  468. package/deps/rocksdb/rocksdb/table/get_context.h +11 -6
  469. package/deps/rocksdb/rocksdb/table/internal_iterator.h +12 -5
  470. package/deps/rocksdb/rocksdb/table/iterator.cc +4 -0
  471. package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +8 -1
  472. package/deps/rocksdb/rocksdb/table/merger_test.cc +1 -1
  473. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +5 -0
  474. package/deps/rocksdb/rocksdb/table/merging_iterator.h +4 -3
  475. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +15 -11
  476. package/deps/rocksdb/rocksdb/table/meta_blocks.h +8 -4
  477. package/deps/rocksdb/rocksdb/table/mock_table.cc +12 -8
  478. package/deps/rocksdb/rocksdb/table/mock_table.h +1 -3
  479. package/deps/rocksdb/rocksdb/table/persistent_cache_helper.cc +0 -1
  480. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +29 -21
  481. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.h +4 -14
  482. package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.cc +7 -8
  483. package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.cc +7 -5
  484. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +15 -8
  485. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.h +1 -1
  486. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +75 -30
  487. package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +7 -2
  488. package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +76 -11
  489. package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +358 -2
  490. package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +93 -16
  491. package/deps/rocksdb/rocksdb/table/sst_file_writer_collectors.h +12 -12
  492. package/deps/rocksdb/rocksdb/table/table_builder.h +12 -6
  493. package/deps/rocksdb/rocksdb/table/table_iterator.h +69 -0
  494. package/deps/rocksdb/rocksdb/table/table_properties.cc +1 -1
  495. package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +8 -6
  496. package/deps/rocksdb/rocksdb/table/table_test.cc +732 -121
  497. package/deps/rocksdb/rocksdb/table/two_level_iterator.cc +3 -1
  498. package/deps/rocksdb/rocksdb/table/two_level_iterator.h +1 -1
  499. package/deps/rocksdb/rocksdb/table/unique_id.cc +2 -2
  500. package/deps/rocksdb/rocksdb/test_util/mock_time_env.cc +2 -2
  501. package/deps/rocksdb/rocksdb/test_util/mock_time_env.h +5 -5
  502. package/deps/rocksdb/rocksdb/test_util/secondary_cache_test_util.cc +2 -6
  503. package/deps/rocksdb/rocksdb/test_util/testharness.cc +2 -4
  504. package/deps/rocksdb/rocksdb/test_util/testutil.cc +56 -32
  505. package/deps/rocksdb/rocksdb/test_util/testutil.h +57 -34
  506. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.cc +18 -1
  507. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.h +1 -0
  508. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +3 -3
  509. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +210 -112
  510. package/deps/rocksdb/rocksdb/tools/db_bench_tool_test.cc +3 -3
  511. package/deps/rocksdb/rocksdb/tools/db_repl_stress.cc +1 -1
  512. package/deps/rocksdb/rocksdb/tools/db_sanity_test.cc +22 -27
  513. package/deps/rocksdb/rocksdb/tools/dump/db_dump_tool.cc +10 -4
  514. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +328 -59
  515. package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +34 -2
  516. package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +64 -17
  517. package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +8 -1
  518. package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.cc +3 -2
  519. package/deps/rocksdb/rocksdb/tools/sst_dump_test.cc +136 -10
  520. package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +4 -2
  521. package/deps/rocksdb/rocksdb/tools/trace_analyzer_test.cc +50 -8
  522. package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +51 -45
  523. package/deps/rocksdb/rocksdb/trace_replay/trace_record.cc +1 -1
  524. package/deps/rocksdb/rocksdb/trace_replay/trace_record_handler.h +10 -10
  525. package/deps/rocksdb/rocksdb/trace_replay/trace_replay.cc +14 -4
  526. package/deps/rocksdb/rocksdb/trace_replay/trace_replay.h +2 -1
  527. package/deps/rocksdb/rocksdb/unreleased_history/README.txt +2 -2
  528. package/deps/rocksdb/rocksdb/util/async_file_reader.cc +2 -4
  529. package/deps/rocksdb/rocksdb/util/atomic.h +111 -0
  530. package/deps/rocksdb/rocksdb/util/autovector.h +5 -1
  531. package/deps/rocksdb/rocksdb/util/bloom_test.cc +12 -2
  532. package/deps/rocksdb/rocksdb/util/cast_util.h +22 -0
  533. package/deps/rocksdb/rocksdb/util/coding.h +34 -38
  534. package/deps/rocksdb/rocksdb/util/coding_test.cc +1 -1
  535. package/deps/rocksdb/rocksdb/util/comparator.cc +18 -5
  536. package/deps/rocksdb/rocksdb/util/compression_context_cache.cc +1 -1
  537. package/deps/rocksdb/rocksdb/util/concurrent_task_limiter_impl.h +4 -4
  538. package/deps/rocksdb/rocksdb/util/crc32c.cc +3 -6
  539. package/deps/rocksdb/rocksdb/util/crc32c.h +3 -3
  540. package/deps/rocksdb/rocksdb/util/crc32c_arm64.h +3 -4
  541. package/deps/rocksdb/rocksdb/util/crc32c_ppc.h +1 -2
  542. package/deps/rocksdb/rocksdb/util/crc32c_test.cc +2 -4
  543. package/deps/rocksdb/rocksdb/util/data_structure.cc +2 -4
  544. package/deps/rocksdb/rocksdb/util/dynamic_bloom_test.cc +3 -2
  545. package/deps/rocksdb/rocksdb/util/file_checksum_helper.cc +3 -3
  546. package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +83 -59
  547. package/deps/rocksdb/rocksdb/util/filelock_test.cc +3 -3
  548. package/deps/rocksdb/rocksdb/util/hash.h +4 -4
  549. package/deps/rocksdb/rocksdb/util/log_write_bench.cc +3 -3
  550. package/deps/rocksdb/rocksdb/util/murmurhash.cc +1 -1
  551. package/deps/rocksdb/rocksdb/util/random.cc +3 -4
  552. package/deps/rocksdb/rocksdb/util/rate_limiter.cc +23 -43
  553. package/deps/rocksdb/rocksdb/util/rate_limiter_impl.h +21 -16
  554. package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +44 -24
  555. package/deps/rocksdb/rocksdb/util/repeatable_thread_test.cc +2 -3
  556. package/deps/rocksdb/rocksdb/util/ribbon_config.cc +2 -10
  557. package/deps/rocksdb/rocksdb/util/ribbon_impl.h +2 -2
  558. package/deps/rocksdb/rocksdb/util/slice.cc +4 -5
  559. package/deps/rocksdb/rocksdb/util/slice_test.cc +70 -4
  560. package/deps/rocksdb/rocksdb/util/status.cc +1 -1
  561. package/deps/rocksdb/rocksdb/util/stderr_logger.cc +39 -7
  562. package/deps/rocksdb/rocksdb/util/stderr_logger.h +12 -2
  563. package/deps/rocksdb/rocksdb/util/string_util.cc +31 -18
  564. package/deps/rocksdb/rocksdb/util/string_util.h +9 -9
  565. package/deps/rocksdb/rocksdb/util/string_util_test.cc +36 -0
  566. package/deps/rocksdb/rocksdb/util/thread_list_test.cc +5 -5
  567. package/deps/rocksdb/rocksdb/util/thread_local.cc +1 -1
  568. package/deps/rocksdb/rocksdb/util/threadpool_imp.cc +3 -4
  569. package/deps/rocksdb/rocksdb/util/threadpool_imp.h +1 -1
  570. package/deps/rocksdb/rocksdb/util/udt_util_test.cc +4 -4
  571. package/deps/rocksdb/rocksdb/util/vector_iterator.h +12 -16
  572. package/deps/rocksdb/rocksdb/util/write_batch_util.h +5 -0
  573. package/deps/rocksdb/rocksdb/util/xxhash.h +116 -116
  574. package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge.cc +4 -5
  575. package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge_impl.h +2 -2
  576. package/deps/rocksdb/rocksdb/utilities/agg_merge/test_agg_merge.cc +1 -2
  577. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +33 -31
  578. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +123 -22
  579. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.cc +9 -7
  580. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.cc +3 -6
  581. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.h +22 -55
  582. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +113 -74
  583. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +36 -24
  584. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl_filesnapshot.cc +27 -11
  585. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +5 -3
  586. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +68 -54
  587. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +3 -6
  588. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +16 -16
  589. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.h +3 -2
  590. package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +29 -9
  591. package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.h +27 -14
  592. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.cc +2 -4
  593. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.h +3 -3
  594. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_format_test.cc +2 -4
  595. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_functional_test.cc +2 -4
  596. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_row_merge_test.cc +2 -4
  597. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_serialize_test.cc +2 -4
  598. package/deps/rocksdb/rocksdb/utilities/cassandra/format.cc +2 -4
  599. package/deps/rocksdb/rocksdb/utilities/cassandra/format.h +8 -8
  600. package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.cc +3 -7
  601. package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.h +7 -8
  602. package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.cc +2 -4
  603. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +9 -7
  604. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +7 -10
  605. package/deps/rocksdb/rocksdb/utilities/debug.cc +6 -2
  606. package/deps/rocksdb/rocksdb/utilities/env_mirror.cc +18 -11
  607. package/deps/rocksdb/rocksdb/utilities/fault_injection_env.cc +2 -2
  608. package/deps/rocksdb/rocksdb/utilities/fault_injection_env.h +18 -25
  609. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +32 -23
  610. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +51 -48
  611. package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.cc +5 -3
  612. package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.h +2 -2
  613. package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +1 -1
  614. package/deps/rocksdb/rocksdb/utilities/merge_operators/bytesxor.h +2 -3
  615. package/deps/rocksdb/rocksdb/utilities/merge_operators/sortlist.cc +3 -1
  616. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.cc +7 -7
  617. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.h +10 -10
  618. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend2.cc +5 -6
  619. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend2.h +5 -6
  620. package/deps/rocksdb/rocksdb/utilities/object_registry.cc +1 -1
  621. package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration.cc +1 -8
  622. package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration_test.cc +29 -21
  623. package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +14 -15
  624. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.cc +2 -2
  625. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +1 -1
  626. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_bench.cc +3 -3
  627. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_test.cc +3 -5
  628. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.cc +1 -1
  629. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.cc +2 -2
  630. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.h +8 -8
  631. package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache.cc +4 -4
  632. package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache_test.cc +1 -1
  633. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.h +6 -9
  634. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector_test.cc +2 -2
  635. package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.cc +1 -1
  636. package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.h +6 -6
  637. package/deps/rocksdb/rocksdb/utilities/trace/replayer_impl.cc +1 -2
  638. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.cc +2 -3
  639. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.h +1 -1
  640. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_tracker.h +1 -1
  641. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +1 -1
  642. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/db.h +5 -0
  643. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/manager.cc +1 -1
  644. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/range_buffer.cc +3 -3
  645. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/wfg.cc +1 -1
  646. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_assert_subst.h +4 -0
  647. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_external_pthread.h +4 -0
  648. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +1 -1
  649. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/txn_subst.h +4 -0
  650. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/standalone_port.cc +12 -3
  651. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/dbt.cc +17 -3
  652. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/growable_array.h +3 -3
  653. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/partitioned_counter.h +1 -1
  654. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc +3 -3
  655. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_tracker.cc +4 -2
  656. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_tracker.h +1 -1
  657. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.cc +1 -2
  658. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +2 -3
  659. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +3 -4
  660. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +442 -10
  661. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +27 -9
  662. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +28 -7
  663. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.cc +70 -12
  664. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.h +50 -22
  665. package/deps/rocksdb/rocksdb/utilities/transactions/snapshot_checker.cc +1 -1
  666. package/deps/rocksdb/rocksdb/utilities/transactions/timestamped_snapshot_test.cc +1 -1
  667. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +64 -3
  668. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +76 -17
  669. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_db_mutex_impl.cc +6 -6
  670. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +573 -77
  671. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +6 -2
  672. package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +65 -3
  673. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +13 -11
  674. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +1 -0
  675. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.h +14 -16
  676. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +37 -24
  677. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.h +23 -29
  678. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +4 -2
  679. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.h +31 -40
  680. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +8 -6
  681. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.h +3 -4
  682. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +34 -18
  683. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +21 -25
  684. package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +26 -5
  685. package/deps/rocksdb/rocksdb/utilities/types_util.cc +88 -0
  686. package/deps/rocksdb/rocksdb/utilities/types_util_test.cc +98 -0
  687. package/deps/rocksdb/rocksdb/utilities/util_merge_operators_test.cc +1 -1
  688. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +463 -90
  689. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +259 -76
  690. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +70 -14
  691. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +609 -10
  692. package/deps/rocksdb/rocksdb.gyp +8 -4
  693. package/index.js +18 -4
  694. package/max_rev_operator.h +2 -0
  695. package/package.json +2 -2
  696. package/prebuilds/darwin-arm64/@nxtedition+rocksdb.node +0 -0
  697. package/prebuilds/linux-x64/@nxtedition+rocksdb.node +0 -0
  698. package/util.h +29 -5
  699. package/.tap/coverage/4c642b53-6895-4ef0-9391-7c6b8d484262.json +0 -14334
  700. package/deps/rocksdb/rocksdb/table/scoped_arena_iterator.h +0 -57
@@ -15,10 +15,11 @@ namespace ROCKSDB_NAMESPACE {
15
15
 
16
16
  class TestSecondaryCache : public SecondaryCache {
17
17
  public:
18
- explicit TestSecondaryCache(size_t capacity)
18
+ explicit TestSecondaryCache(size_t capacity, bool ready_before_wait)
19
19
  : cache_(NewLRUCache(capacity, 0, false, 0.5 /* high_pri_pool_ratio */,
20
20
  nullptr, kDefaultToAdaptiveMutex,
21
21
  kDontChargeCacheMetadata)),
22
+ ready_before_wait_(ready_before_wait),
22
23
  num_insert_saved_(0),
23
24
  num_hits_(0),
24
25
  num_misses_(0) {}
@@ -61,7 +62,7 @@ class TestSecondaryCache : public SecondaryCache {
61
62
  std::unique_ptr<SecondaryCacheResultHandle> Lookup(
62
63
  const Slice& key, const Cache::CacheItemHelper* helper,
63
64
  Cache::CreateContext* create_context, bool wait, bool /*advise_erase*/,
64
- bool& kept_in_sec_cache) override {
65
+ Statistics* /*stats*/, bool& kept_in_sec_cache) override {
65
66
  std::string key_str = key.ToString();
66
67
  TEST_SYNC_POINT_CALLBACK("TestSecondaryCache::Lookup", &key_str);
67
68
 
@@ -88,7 +89,8 @@ class TestSecondaryCache : public SecondaryCache {
88
89
  /*alloc*/ nullptr, &value, &charge);
89
90
  if (s.ok()) {
90
91
  secondary_handle.reset(new TestSecondaryCacheResultHandle(
91
- cache_.get(), handle, value, charge, /*ready=*/wait));
92
+ cache_.get(), handle, value, charge,
93
+ /*ready=*/wait || ready_before_wait_));
92
94
  kept_in_sec_cache = true;
93
95
  } else {
94
96
  cache_.Release(handle);
@@ -168,6 +170,7 @@ class TestSecondaryCache : public SecondaryCache {
168
170
  BasicTypedSharedCacheInterface<char[], CacheEntryRole::kMisc>;
169
171
  using TypedHandle = SharedCache::TypedHandle;
170
172
  SharedCache cache_;
173
+ bool ready_before_wait_;
171
174
  uint32_t num_insert_saved_;
172
175
  uint32_t num_hits_;
173
176
  uint32_t num_misses_;
@@ -179,11 +182,10 @@ class DBTieredSecondaryCacheTest : public DBTestBase {
179
182
  DBTieredSecondaryCacheTest()
180
183
  : DBTestBase("db_tiered_secondary_cache_test", /*env_do_fsync=*/true) {}
181
184
 
182
- std::shared_ptr<Cache> NewCache(size_t pri_capacity,
183
- size_t compressed_capacity,
184
- size_t nvm_capacity,
185
- TieredAdmissionPolicy adm_policy =
186
- TieredAdmissionPolicy::kAdmPolicyAuto) {
185
+ std::shared_ptr<Cache> NewCache(
186
+ size_t pri_capacity, size_t compressed_capacity, size_t nvm_capacity,
187
+ TieredAdmissionPolicy adm_policy = TieredAdmissionPolicy::kAdmPolicyAuto,
188
+ bool ready_before_wait = false) {
187
189
  LRUCacheOptions lru_opts;
188
190
  TieredCacheOptions opts;
189
191
  lru_opts.capacity = 0;
@@ -194,10 +196,11 @@ class DBTieredSecondaryCacheTest : public DBTestBase {
194
196
  opts.comp_cache_opts.capacity = 0;
195
197
  opts.comp_cache_opts.num_shard_bits = 0;
196
198
  opts.total_capacity = pri_capacity + compressed_capacity;
197
- opts.compressed_secondary_ratio =
199
+ opts.compressed_secondary_ratio = compressed_secondary_ratio_ =
198
200
  (double)compressed_capacity / opts.total_capacity;
199
201
  if (nvm_capacity > 0) {
200
- nvm_sec_cache_.reset(new TestSecondaryCache(nvm_capacity));
202
+ nvm_sec_cache_.reset(
203
+ new TestSecondaryCache(nvm_capacity, ready_before_wait));
201
204
  opts.nvm_sec_cache = nvm_sec_cache_;
202
205
  }
203
206
  opts.adm_policy = adm_policy;
@@ -207,6 +210,12 @@ class DBTieredSecondaryCacheTest : public DBTestBase {
207
210
  return cache_;
208
211
  }
209
212
 
213
+ void ClearPrimaryCache() {
214
+ ASSERT_EQ(UpdateTieredCache(cache_, -1, 1.0), Status::OK());
215
+ ASSERT_EQ(UpdateTieredCache(cache_, -1, compressed_secondary_ratio_),
216
+ Status::OK());
217
+ }
218
+
210
219
  TestSecondaryCache* nvm_sec_cache() { return nvm_sec_cache_.get(); }
211
220
 
212
221
  CompressedSecondaryCache* compressed_secondary_cache() {
@@ -218,6 +227,7 @@ class DBTieredSecondaryCacheTest : public DBTestBase {
218
227
  private:
219
228
  std::shared_ptr<Cache> cache_;
220
229
  std::shared_ptr<TestSecondaryCache> nvm_sec_cache_;
230
+ double compressed_secondary_ratio_;
221
231
  };
222
232
 
223
233
  // In this test, the block size is set to 4096. Each value is 1007 bytes, so
@@ -376,7 +386,7 @@ TEST_F(DBTieredSecondaryCacheTest, BasicMultiGetTest) {
376
386
  keys.push_back(Key(8));
377
387
  values = MultiGet(keys, /*snapshot=*/nullptr, /*async=*/true);
378
388
  ASSERT_EQ(values.size(), keys.size());
379
- for (auto value : values) {
389
+ for (const auto& value : values) {
380
390
  ASSERT_EQ(1007, value.size());
381
391
  }
382
392
  ASSERT_EQ(nvm_sec_cache()->num_insert_saved(), 3u);
@@ -390,7 +400,7 @@ TEST_F(DBTieredSecondaryCacheTest, BasicMultiGetTest) {
390
400
  keys.push_back(Key(20));
391
401
  values = MultiGet(keys, /*snapshot=*/nullptr, /*async=*/true);
392
402
  ASSERT_EQ(values.size(), keys.size());
393
- for (auto value : values) {
403
+ for (const auto& value : values) {
394
404
  ASSERT_EQ(1007, value.size());
395
405
  }
396
406
  ASSERT_EQ(nvm_sec_cache()->num_insert_saved(), 6u);
@@ -404,7 +414,7 @@ TEST_F(DBTieredSecondaryCacheTest, BasicMultiGetTest) {
404
414
  keys.push_back(Key(8));
405
415
  values = MultiGet(keys, /*snapshot=*/nullptr, /*async=*/true);
406
416
  ASSERT_EQ(values.size(), keys.size());
407
- for (auto value : values) {
417
+ for (const auto& value : values) {
408
418
  ASSERT_EQ(1007, value.size());
409
419
  }
410
420
  ASSERT_EQ(nvm_sec_cache()->num_insert_saved(), 6u);
@@ -418,7 +428,7 @@ TEST_F(DBTieredSecondaryCacheTest, BasicMultiGetTest) {
418
428
  keys.push_back(Key(8));
419
429
  values = MultiGet(keys, /*snapshot=*/nullptr, /*async=*/true);
420
430
  ASSERT_EQ(values.size(), keys.size());
421
- for (auto value : values) {
431
+ for (const auto& value : values) {
422
432
  ASSERT_EQ(1007, value.size());
423
433
  }
424
434
  ASSERT_EQ(nvm_sec_cache()->num_insert_saved(), 6u);
@@ -432,7 +442,7 @@ TEST_F(DBTieredSecondaryCacheTest, BasicMultiGetTest) {
432
442
  keys.push_back(Key(8));
433
443
  values = MultiGet(keys, /*snapshot=*/nullptr, /*async=*/true);
434
444
  ASSERT_EQ(values.size(), keys.size());
435
- for (auto value : values) {
445
+ for (const auto& value : values) {
436
446
  ASSERT_EQ(1007, value.size());
437
447
  }
438
448
  ASSERT_EQ(nvm_sec_cache()->num_insert_saved(), 6u);
@@ -446,7 +456,7 @@ TEST_F(DBTieredSecondaryCacheTest, BasicMultiGetTest) {
446
456
  keys.push_back(Key(20));
447
457
  values = MultiGet(keys, /*snapshot=*/nullptr, /*async=*/true);
448
458
  ASSERT_EQ(values.size(), keys.size());
449
- for (auto value : values) {
459
+ for (const auto& value : values) {
450
460
  ASSERT_EQ(1007, value.size());
451
461
  }
452
462
  ASSERT_EQ(nvm_sec_cache()->num_insert_saved(), 6u);
@@ -460,7 +470,7 @@ TEST_F(DBTieredSecondaryCacheTest, BasicMultiGetTest) {
460
470
  keys.push_back(Key(20));
461
471
  values = MultiGet(keys, /*snapshot=*/nullptr, /*async=*/true);
462
472
  ASSERT_EQ(values.size(), keys.size());
463
- for (auto value : values) {
473
+ for (const auto& value : values) {
464
474
  ASSERT_EQ(1007, value.size());
465
475
  }
466
476
  ASSERT_EQ(nvm_sec_cache()->num_insert_saved(), 6u);
@@ -474,7 +484,7 @@ TEST_F(DBTieredSecondaryCacheTest, BasicMultiGetTest) {
474
484
  keys.push_back(Key(20));
475
485
  values = MultiGet(keys, /*snapshot=*/nullptr, /*async=*/true);
476
486
  ASSERT_EQ(values.size(), keys.size());
477
- for (auto value : values) {
487
+ for (const auto& value : values) {
478
488
  ASSERT_EQ(1007, value.size());
479
489
  }
480
490
  ASSERT_EQ(nvm_sec_cache()->num_insert_saved(), 6u);
@@ -518,7 +528,7 @@ TEST_F(DBTieredSecondaryCacheTest, WaitAllTest) {
518
528
  keys.push_back(Key(8));
519
529
  values = MultiGet(keys, /*snapshot=*/nullptr, /*async=*/true);
520
530
  ASSERT_EQ(values.size(), keys.size());
521
- for (auto value : values) {
531
+ for (const auto& value : values) {
522
532
  ASSERT_EQ(1007, value.size());
523
533
  }
524
534
  ASSERT_EQ(nvm_sec_cache()->num_insert_saved(), 3u);
@@ -532,7 +542,7 @@ TEST_F(DBTieredSecondaryCacheTest, WaitAllTest) {
532
542
  keys.push_back(Key(20));
533
543
  values = MultiGet(keys, /*snapshot=*/nullptr, /*async=*/true);
534
544
  ASSERT_EQ(values.size(), keys.size());
535
- for (auto value : values) {
545
+ for (const auto& value : values) {
536
546
  ASSERT_EQ(1007, value.size());
537
547
  }
538
548
  ASSERT_EQ(nvm_sec_cache()->num_insert_saved(), 6u);
@@ -551,7 +561,7 @@ TEST_F(DBTieredSecondaryCacheTest, WaitAllTest) {
551
561
  keys.push_back(Key(36));
552
562
  values = MultiGet(keys, /*snapshot=*/nullptr, /*async=*/true);
553
563
  ASSERT_EQ(values.size(), keys.size());
554
- for (auto value : values) {
564
+ for (const auto& value : values) {
555
565
  ASSERT_EQ(1007, value.size());
556
566
  }
557
567
  ASSERT_EQ(nvm_sec_cache()->num_insert_saved(), 10u);
@@ -572,7 +582,7 @@ TEST_F(DBTieredSecondaryCacheTest, WaitAllTest) {
572
582
  keys.push_back(Key(8));
573
583
  values = MultiGet(keys, /*snapshot=*/nullptr, /*async=*/true);
574
584
  ASSERT_EQ(values.size(), keys.size());
575
- for (auto value : values) {
585
+ for (const auto& value : values) {
576
586
  ASSERT_EQ(1007, value.size());
577
587
  }
578
588
  ASSERT_EQ(nvm_sec_cache()->num_insert_saved(), 10u);
@@ -582,6 +592,116 @@ TEST_F(DBTieredSecondaryCacheTest, WaitAllTest) {
582
592
  Destroy(options);
583
593
  }
584
594
 
595
+ TEST_F(DBTieredSecondaryCacheTest, ReadyBeforeWaitAllTest) {
596
+ if (!LZ4_Supported()) {
597
+ ROCKSDB_GTEST_SKIP("This test requires LZ4 support.");
598
+ return;
599
+ }
600
+
601
+ BlockBasedTableOptions table_options;
602
+ table_options.block_cache = NewCache(250 * 1024, 20 * 1024, 256 * 1024,
603
+ TieredAdmissionPolicy::kAdmPolicyAuto,
604
+ /*ready_before_wait=*/true);
605
+ table_options.block_size = 4 * 1024;
606
+ table_options.cache_index_and_filter_blocks = false;
607
+ Options options = GetDefaultOptions();
608
+ options.create_if_missing = true;
609
+ options.table_factory.reset(NewBlockBasedTableFactory(table_options));
610
+ options.statistics = CreateDBStatistics();
611
+
612
+ options.paranoid_file_checks = false;
613
+ DestroyAndReopen(options);
614
+ Random rnd(301);
615
+ const int N = 256;
616
+ for (int i = 0; i < N; i++) {
617
+ std::string p_v;
618
+ test::CompressibleString(&rnd, 0.5, 1007, &p_v);
619
+ ASSERT_OK(Put(Key(i), p_v));
620
+ }
621
+
622
+ ASSERT_OK(Flush());
623
+
624
+ std::vector<std::string> keys;
625
+ std::vector<std::string> values;
626
+
627
+ keys.push_back(Key(0));
628
+ keys.push_back(Key(4));
629
+ keys.push_back(Key(8));
630
+ values = MultiGet(keys, /*snapshot=*/nullptr, /*async=*/true);
631
+ ASSERT_EQ(values.size(), keys.size());
632
+ for (const auto& value : values) {
633
+ ASSERT_EQ(1007, value.size());
634
+ }
635
+ ASSERT_EQ(nvm_sec_cache()->num_insert_saved(), 3u);
636
+ ASSERT_EQ(nvm_sec_cache()->num_misses(), 3u);
637
+ ASSERT_EQ(nvm_sec_cache()->num_hits(), 0u);
638
+ ASSERT_EQ(options.statistics->getTickerCount(BLOCK_CACHE_MISS), 3u);
639
+
640
+ keys.clear();
641
+ values.clear();
642
+ keys.push_back(Key(12));
643
+ keys.push_back(Key(16));
644
+ keys.push_back(Key(20));
645
+ values = MultiGet(keys, /*snapshot=*/nullptr, /*async=*/true);
646
+ ASSERT_EQ(values.size(), keys.size());
647
+ for (const auto& value : values) {
648
+ ASSERT_EQ(1007, value.size());
649
+ }
650
+ ASSERT_EQ(nvm_sec_cache()->num_insert_saved(), 6u);
651
+ ASSERT_EQ(nvm_sec_cache()->num_misses(), 6u);
652
+ ASSERT_EQ(nvm_sec_cache()->num_hits(), 0u);
653
+ ASSERT_EQ(options.statistics->getTickerCount(BLOCK_CACHE_MISS), 6u);
654
+
655
+ keys.clear();
656
+ values.clear();
657
+ keys.push_back(Key(0));
658
+ keys.push_back(Key(4));
659
+ keys.push_back(Key(8));
660
+ values = MultiGet(keys, /*snapshot=*/nullptr, /*async=*/true);
661
+ ASSERT_EQ(values.size(), keys.size());
662
+ for (const auto& value : values) {
663
+ ASSERT_EQ(1007, value.size());
664
+ }
665
+ ASSERT_EQ(nvm_sec_cache()->num_insert_saved(), 6u);
666
+ ASSERT_EQ(nvm_sec_cache()->num_misses(), 6u);
667
+ ASSERT_EQ(nvm_sec_cache()->num_hits(), 3u);
668
+ ASSERT_EQ(options.statistics->getTickerCount(BLOCK_CACHE_MISS), 6u);
669
+
670
+ ClearPrimaryCache();
671
+
672
+ keys.clear();
673
+ values.clear();
674
+ keys.push_back(Key(0));
675
+ keys.push_back(Key(32));
676
+ keys.push_back(Key(36));
677
+ values = MultiGet(keys, /*snapshot=*/nullptr, /*async=*/true);
678
+ ASSERT_EQ(values.size(), keys.size());
679
+ for (const auto& value : values) {
680
+ ASSERT_EQ(1007, value.size());
681
+ }
682
+ ASSERT_EQ(nvm_sec_cache()->num_insert_saved(), 8u);
683
+ ASSERT_EQ(nvm_sec_cache()->num_misses(), 8u);
684
+ ASSERT_EQ(nvm_sec_cache()->num_hits(), 4u);
685
+ ASSERT_EQ(options.statistics->getTickerCount(BLOCK_CACHE_MISS), 8u);
686
+
687
+ keys.clear();
688
+ values.clear();
689
+ keys.push_back(Key(0));
690
+ keys.push_back(Key(32));
691
+ keys.push_back(Key(36));
692
+ values = MultiGet(keys, /*snapshot=*/nullptr, /*async=*/true);
693
+ ASSERT_EQ(values.size(), keys.size());
694
+ for (const auto& value : values) {
695
+ ASSERT_EQ(1007, value.size());
696
+ }
697
+ ASSERT_EQ(nvm_sec_cache()->num_insert_saved(), 8u);
698
+ ASSERT_EQ(nvm_sec_cache()->num_misses(), 8u);
699
+ ASSERT_EQ(nvm_sec_cache()->num_hits(), 4u);
700
+ ASSERT_EQ(options.statistics->getTickerCount(BLOCK_CACHE_MISS), 8u);
701
+
702
+ Destroy(options);
703
+ }
704
+
585
705
  // This test is for iteration. It iterates through a set of keys in two
586
706
  // passes. First pass loads the compressed blocks into the nvm tier, and
587
707
  // the second pass should hit all of those blocks.
@@ -696,11 +816,174 @@ TEST_P(DBTieredAdmPolicyTest, CompressedOnlyTest) {
696
816
  Destroy(options);
697
817
  }
698
818
 
819
+ TEST_P(DBTieredAdmPolicyTest, CompressedCacheAdmission) {
820
+ if (!LZ4_Supported()) {
821
+ ROCKSDB_GTEST_SKIP("This test requires LZ4 support.");
822
+ return;
823
+ }
824
+
825
+ BlockBasedTableOptions table_options;
826
+ // We want a block cache of size 5KB, and a compressed secondary cache of
827
+ // size 5KB. However, we specify a block cache size of 256KB here in order
828
+ // to take into account the cache reservation in the block cache on
829
+ // behalf of the compressed cache. The unit of cache reservation is 256KB.
830
+ // The effective block cache capacity will be calculated as 256 + 5 = 261KB,
831
+ // and 256KB will be reserved for the compressed cache, leaving 10KB for
832
+ // the primary block cache. We only have to worry about this here because
833
+ // the cache size is so small.
834
+ table_options.block_cache = NewCache(256 * 1024, 5 * 1024, 0, GetParam());
835
+ table_options.block_size = 4 * 1024;
836
+ table_options.cache_index_and_filter_blocks = false;
837
+ Options options = GetDefaultOptions();
838
+ options.create_if_missing = true;
839
+ options.table_factory.reset(NewBlockBasedTableFactory(table_options));
840
+
841
+ size_t comp_cache_usage = compressed_secondary_cache()->TEST_GetUsage();
842
+ // Disable paranoid_file_checks so that flush will not read back the newly
843
+ // written file
844
+ options.paranoid_file_checks = false;
845
+ DestroyAndReopen(options);
846
+ Random rnd(301);
847
+ const int N = 256;
848
+ for (int i = 0; i < N; i++) {
849
+ std::string p_v;
850
+ test::CompressibleString(&rnd, 0.5, 1007, &p_v);
851
+ ASSERT_OK(Put(Key(i), p_v));
852
+ }
853
+
854
+ ASSERT_OK(Flush());
855
+
856
+ // The second Get (for 5) will evict the data block loaded by the first
857
+ // Get, which will be admitted into the compressed secondary cache only
858
+ // for the kAdmPolicyAllowAll policy
859
+ std::string v = Get(Key(0));
860
+ ASSERT_EQ(1007, v.size());
861
+
862
+ v = Get(Key(5));
863
+ ASSERT_EQ(1007, v.size());
864
+
865
+ if (GetParam() == TieredAdmissionPolicy::kAdmPolicyAllowAll) {
866
+ ASSERT_GT(compressed_secondary_cache()->TEST_GetUsage(),
867
+ comp_cache_usage + 128);
868
+ } else {
869
+ ASSERT_LT(compressed_secondary_cache()->TEST_GetUsage(),
870
+ comp_cache_usage + 128);
871
+ }
872
+
873
+ Destroy(options);
874
+ }
875
+
876
+ TEST_F(DBTieredSecondaryCacheTest, FSBufferTest) {
877
+ class WrapFS : public FileSystemWrapper {
878
+ public:
879
+ explicit WrapFS(const std::shared_ptr<FileSystem>& _target)
880
+ : FileSystemWrapper(_target) {}
881
+ ~WrapFS() override {}
882
+ const char* Name() const override { return "WrapFS"; }
883
+
884
+ IOStatus NewRandomAccessFile(const std::string& fname,
885
+ const FileOptions& opts,
886
+ std::unique_ptr<FSRandomAccessFile>* result,
887
+ IODebugContext* dbg) override {
888
+ class WrappedRandomAccessFile : public FSRandomAccessFileOwnerWrapper {
889
+ public:
890
+ explicit WrappedRandomAccessFile(
891
+ std::unique_ptr<FSRandomAccessFile>& file)
892
+ : FSRandomAccessFileOwnerWrapper(std::move(file)) {}
893
+
894
+ IOStatus MultiRead(FSReadRequest* reqs, size_t num_reqs,
895
+ const IOOptions& options,
896
+ IODebugContext* dbg) override {
897
+ for (size_t i = 0; i < num_reqs; ++i) {
898
+ FSReadRequest& req = reqs[i];
899
+ FSAllocationPtr buffer(new char[req.len], [](void* ptr) {
900
+ delete[] static_cast<char*>(ptr);
901
+ });
902
+ req.fs_scratch = std::move(buffer);
903
+ req.status = Read(req.offset, req.len, options, &req.result,
904
+ static_cast<char*>(req.fs_scratch.get()), dbg);
905
+ }
906
+ return IOStatus::OK();
907
+ }
908
+ };
909
+
910
+ std::unique_ptr<FSRandomAccessFile> file;
911
+ IOStatus s = target()->NewRandomAccessFile(fname, opts, &file, dbg);
912
+ EXPECT_OK(s);
913
+ result->reset(new WrappedRandomAccessFile(file));
914
+
915
+ return s;
916
+ }
917
+
918
+ void SupportedOps(int64_t& supported_ops) override {
919
+ supported_ops = 1 << FSSupportedOps::kAsyncIO;
920
+ supported_ops |= 1 << FSSupportedOps::kFSBuffer;
921
+ }
922
+ };
923
+
924
+ if (!LZ4_Supported()) {
925
+ ROCKSDB_GTEST_SKIP("This test requires LZ4 support.");
926
+ return;
927
+ }
928
+
929
+ std::shared_ptr<WrapFS> wrap_fs =
930
+ std::make_shared<WrapFS>(env_->GetFileSystem());
931
+ std::unique_ptr<Env> wrap_env(new CompositeEnvWrapper(env_, wrap_fs));
932
+ BlockBasedTableOptions table_options;
933
+ table_options.block_cache = NewCache(250 * 1024, 20 * 1024, 256 * 1024,
934
+ TieredAdmissionPolicy::kAdmPolicyAuto,
935
+ /*ready_before_wait=*/true);
936
+ table_options.block_size = 4 * 1024;
937
+ table_options.cache_index_and_filter_blocks = false;
938
+ Options options = GetDefaultOptions();
939
+ options.create_if_missing = true;
940
+ options.table_factory.reset(NewBlockBasedTableFactory(table_options));
941
+ options.statistics = CreateDBStatistics();
942
+ options.env = wrap_env.get();
943
+
944
+ options.paranoid_file_checks = false;
945
+ DestroyAndReopen(options);
946
+ Random rnd(301);
947
+ const int N = 256;
948
+ for (int i = 0; i < N; i++) {
949
+ std::string p_v;
950
+ test::CompressibleString(&rnd, 0.5, 1007, &p_v);
951
+ ASSERT_OK(Put(Key(i), p_v));
952
+ }
953
+
954
+ ASSERT_OK(Flush());
955
+
956
+ std::vector<std::string> keys;
957
+ std::vector<std::string> values;
958
+
959
+ keys.push_back(Key(0));
960
+ keys.push_back(Key(4));
961
+ keys.push_back(Key(8));
962
+ values = MultiGet(keys, /*snapshot=*/nullptr, /*async=*/true);
963
+ ASSERT_EQ(values.size(), keys.size());
964
+ for (const auto& value : values) {
965
+ ASSERT_EQ(1007, value.size());
966
+ }
967
+ ASSERT_EQ(nvm_sec_cache()->num_insert_saved(), 3u);
968
+ ASSERT_EQ(nvm_sec_cache()->num_misses(), 3u);
969
+ ASSERT_EQ(nvm_sec_cache()->num_hits(), 0u);
970
+
971
+ std::string v = Get(Key(12));
972
+ ASSERT_EQ(1007, v.size());
973
+ ASSERT_EQ(nvm_sec_cache()->num_insert_saved(), 4u);
974
+ ASSERT_EQ(nvm_sec_cache()->num_misses(), 4u);
975
+ ASSERT_EQ(options.statistics->getTickerCount(BLOCK_CACHE_MISS), 4u);
976
+
977
+ Close();
978
+ Destroy(options);
979
+ }
980
+
699
981
  INSTANTIATE_TEST_CASE_P(
700
982
  DBTieredAdmPolicyTest, DBTieredAdmPolicyTest,
701
983
  ::testing::Values(TieredAdmissionPolicy::kAdmPolicyAuto,
702
984
  TieredAdmissionPolicy::kAdmPolicyPlaceholder,
703
- TieredAdmissionPolicy::kAdmPolicyAllowCacheHits));
985
+ TieredAdmissionPolicy::kAdmPolicyAllowCacheHits,
986
+ TieredAdmissionPolicy::kAdmPolicyAllowAll));
704
987
 
705
988
  } // namespace ROCKSDB_NAMESPACE
706
989
 
@@ -155,7 +155,7 @@ class BasicTypedCacheInterface : public BaseCacheInterface<CachePtr>,
155
155
  using BaseCacheInterface<CachePtr>::BaseCacheInterface;
156
156
  struct TypedAsyncLookupHandle : public Cache::AsyncLookupHandle {
157
157
  TypedHandle* Result() {
158
- return reinterpret_cast<TypedHandle*>(Cache::AsyncLookupHandle::Result());
158
+ return static_cast<TypedHandle*>(Cache::AsyncLookupHandle::Result());
159
159
  }
160
160
  };
161
161
 
@@ -169,8 +169,7 @@ class BasicTypedCacheInterface : public BaseCacheInterface<CachePtr>,
169
169
  }
170
170
 
171
171
  inline TypedHandle* Lookup(const Slice& key, Statistics* stats = nullptr) {
172
- return reinterpret_cast<TypedHandle*>(
173
- this->cache_->BasicLookup(key, stats));
172
+ return static_cast<TypedHandle*>(this->cache_->BasicLookup(key, stats));
174
173
  }
175
174
 
176
175
  inline void StartAsyncLookup(TypedAsyncLookupHandle& async_handle) {
@@ -347,7 +346,7 @@ class FullTypedCacheInterface
347
346
  Priority priority = Priority::LOW, Statistics* stats = nullptr,
348
347
  CacheTier lowest_used_cache_tier = CacheTier::kNonVolatileBlockTier) {
349
348
  if (lowest_used_cache_tier > CacheTier::kVolatileTier) {
350
- return reinterpret_cast<TypedHandle*>(this->cache_->Lookup(
349
+ return static_cast<TypedHandle*>(this->cache_->Lookup(
351
350
  key, GetFullHelper(), create_context, priority, stats));
352
351
  } else {
353
352
  return BasicTypedCacheInterface<TValue, kRole, CachePtr>::Lookup(key,
@@ -43,14 +43,13 @@ void ArenaWrappedDBIter::Init(
43
43
  Env* env, const ReadOptions& read_options, const ImmutableOptions& ioptions,
44
44
  const MutableCFOptions& mutable_cf_options, const Version* version,
45
45
  const SequenceNumber& sequence, uint64_t max_sequential_skip_in_iteration,
46
- uint64_t version_number, ReadCallback* read_callback, DBImpl* db_impl,
47
- ColumnFamilyData* cfd, bool expose_blob_index, bool allow_refresh) {
46
+ uint64_t version_number, ReadCallback* read_callback,
47
+ ColumnFamilyHandleImpl* cfh, bool expose_blob_index, bool allow_refresh) {
48
48
  auto mem = arena_.AllocateAligned(sizeof(DBIter));
49
- db_iter_ =
50
- new (mem) DBIter(env, read_options, ioptions, mutable_cf_options,
51
- ioptions.user_comparator, /* iter */ nullptr, version,
52
- sequence, true, max_sequential_skip_in_iteration,
53
- read_callback, db_impl, cfd, expose_blob_index);
49
+ db_iter_ = new (mem) DBIter(
50
+ env, read_options, ioptions, mutable_cf_options, ioptions.user_comparator,
51
+ /* iter */ nullptr, version, sequence, true,
52
+ max_sequential_skip_in_iteration, read_callback, cfh, expose_blob_index);
54
53
  sv_number_ = version_number;
55
54
  read_options_ = read_options;
56
55
  allow_refresh_ = allow_refresh;
@@ -65,40 +64,44 @@ void ArenaWrappedDBIter::Init(
65
64
  Status ArenaWrappedDBIter::Refresh() { return Refresh(nullptr); }
66
65
 
67
66
  Status ArenaWrappedDBIter::Refresh(const Snapshot* snapshot) {
68
- if (cfd_ == nullptr || db_impl_ == nullptr || !allow_refresh_) {
67
+ if (cfh_ == nullptr || !allow_refresh_) {
69
68
  return Status::NotSupported("Creating renew iterator is not allowed.");
70
69
  }
71
70
  assert(db_iter_ != nullptr);
71
+ auto cfd = cfh_->cfd();
72
+ auto db_impl = cfh_->db();
73
+
72
74
  // TODO(yiwu): For last_seq_same_as_publish_seq_==false, this is not the
73
75
  // correct behavior. Will be corrected automatically when we take a snapshot
74
76
  // here for the case of WritePreparedTxnDB.
75
- uint64_t cur_sv_number = cfd_->GetSuperVersionNumber();
77
+ uint64_t cur_sv_number = cfd->GetSuperVersionNumber();
76
78
  // If we recreate a new internal iterator below (NewInternalIterator()),
77
79
  // we will pass in read_options_. We need to make sure it
78
80
  // has the right snapshot.
79
81
  read_options_.snapshot = snapshot;
80
82
  TEST_SYNC_POINT("ArenaWrappedDBIter::Refresh:1");
81
83
  TEST_SYNC_POINT("ArenaWrappedDBIter::Refresh:2");
84
+
82
85
  auto reinit_internal_iter = [&]() {
83
86
  Env* env = db_iter_->env();
84
87
  db_iter_->~DBIter();
85
88
  arena_.~Arena();
86
89
  new (&arena_) Arena();
87
90
 
88
- SuperVersion* sv = cfd_->GetReferencedSuperVersion(db_impl_);
91
+ SuperVersion* sv = cfd->GetReferencedSuperVersion(db_impl);
89
92
  assert(sv->version_number >= cur_sv_number);
90
- SequenceNumber read_seq = GetSeqNum(db_impl_, snapshot);
93
+ SequenceNumber read_seq = GetSeqNum(db_impl, snapshot);
91
94
  if (read_callback_) {
92
95
  read_callback_->Refresh(read_seq);
93
96
  }
94
- Init(env, read_options_, *(cfd_->ioptions()), sv->mutable_cf_options,
97
+ Init(env, read_options_, *(cfd->ioptions()), sv->mutable_cf_options,
95
98
  sv->current, read_seq,
96
99
  sv->mutable_cf_options.max_sequential_skip_in_iterations,
97
- sv->version_number, read_callback_, db_impl_, cfd_, expose_blob_index_,
100
+ sv->version_number, read_callback_, cfh_, expose_blob_index_,
98
101
  allow_refresh_);
99
102
 
100
- InternalIterator* internal_iter = db_impl_->NewInternalIterator(
101
- read_options_, cfd_, sv, &arena_, read_seq,
103
+ InternalIterator* internal_iter = db_impl->NewInternalIterator(
104
+ read_options_, cfd, sv, &arena_, read_seq,
102
105
  /* allow_unprepared_value */ true, /* db_iter */ this);
103
106
  SetIterUnderDBIter(internal_iter);
104
107
  };
@@ -107,10 +110,10 @@ Status ArenaWrappedDBIter::Refresh(const Snapshot* snapshot) {
107
110
  reinit_internal_iter();
108
111
  break;
109
112
  } else {
110
- SequenceNumber read_seq = GetSeqNum(db_impl_, snapshot);
113
+ SequenceNumber read_seq = GetSeqNum(db_impl, snapshot);
111
114
  // Refresh range-tombstones in MemTable
112
115
  if (!read_options_.ignore_range_deletions) {
113
- SuperVersion* sv = cfd_->GetThreadLocalSuperVersion(db_impl_);
116
+ SuperVersion* sv = cfd->GetThreadLocalSuperVersion(db_impl);
114
117
  TEST_SYNC_POINT_CALLBACK("ArenaWrappedDBIter::Refresh:SV", nullptr);
115
118
  auto t = sv->mem->NewRangeTombstoneIterator(
116
119
  read_options_, read_seq, false /* immutable_memtable */);
@@ -123,13 +126,13 @@ Status ArenaWrappedDBIter::Refresh(const Snapshot* snapshot) {
123
126
  // will be freed during db_iter destruction there.
124
127
  if (memtable_range_tombstone_iter_) {
125
128
  assert(!*memtable_range_tombstone_iter_ ||
126
- sv_number_ != cfd_->GetSuperVersionNumber());
129
+ sv_number_ != cfd->GetSuperVersionNumber());
127
130
  }
128
131
  delete t;
129
132
  } else { // current mutable memtable has range tombstones
130
133
  if (!memtable_range_tombstone_iter_) {
131
134
  delete t;
132
- db_impl_->ReturnAndCleanupSuperVersion(cfd_, sv);
135
+ db_impl->ReturnAndCleanupSuperVersion(cfd, sv);
133
136
  // The memtable under DBIter did not have range tombstone before
134
137
  // refresh.
135
138
  reinit_internal_iter();
@@ -138,13 +141,13 @@ Status ArenaWrappedDBIter::Refresh(const Snapshot* snapshot) {
138
141
  delete *memtable_range_tombstone_iter_;
139
142
  *memtable_range_tombstone_iter_ = new TruncatedRangeDelIterator(
140
143
  std::unique_ptr<FragmentedRangeTombstoneIterator>(t),
141
- &cfd_->internal_comparator(), nullptr, nullptr);
144
+ &cfd->internal_comparator(), nullptr, nullptr);
142
145
  }
143
146
  }
144
- db_impl_->ReturnAndCleanupSuperVersion(cfd_, sv);
147
+ db_impl->ReturnAndCleanupSuperVersion(cfd, sv);
145
148
  }
146
149
  // Check again if the latest super version number is changed
147
- uint64_t latest_sv_number = cfd_->GetSuperVersionNumber();
150
+ uint64_t latest_sv_number = cfd->GetSuperVersionNumber();
148
151
  if (latest_sv_number != cur_sv_number) {
149
152
  // If the super version number is changed after refreshing,
150
153
  // fallback to Re-Init the InternalIterator
@@ -163,14 +166,14 @@ ArenaWrappedDBIter* NewArenaWrappedDbIterator(
163
166
  Env* env, const ReadOptions& read_options, const ImmutableOptions& ioptions,
164
167
  const MutableCFOptions& mutable_cf_options, const Version* version,
165
168
  const SequenceNumber& sequence, uint64_t max_sequential_skip_in_iterations,
166
- uint64_t version_number, ReadCallback* read_callback, DBImpl* db_impl,
167
- ColumnFamilyData* cfd, bool expose_blob_index, bool allow_refresh) {
169
+ uint64_t version_number, ReadCallback* read_callback,
170
+ ColumnFamilyHandleImpl* cfh, bool expose_blob_index, bool allow_refresh) {
168
171
  ArenaWrappedDBIter* iter = new ArenaWrappedDBIter();
169
172
  iter->Init(env, read_options, ioptions, mutable_cf_options, version, sequence,
170
173
  max_sequential_skip_in_iterations, version_number, read_callback,
171
- db_impl, cfd, expose_blob_index, allow_refresh);
172
- if (db_impl != nullptr && cfd != nullptr && allow_refresh) {
173
- iter->StoreRefreshInfo(db_impl, cfd, read_callback, expose_blob_index);
174
+ cfh, expose_blob_index, allow_refresh);
175
+ if (cfh != nullptr && allow_refresh) {
176
+ iter->StoreRefreshInfo(cfh, read_callback, expose_blob_index);
174
177
  }
175
178
 
176
179
  return iter;