@nxtedition/rocksdb 8.2.8 → 9.0.1

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 (483) hide show
  1. package/binding.cc +0 -21
  2. package/deps/rocksdb/rocksdb/CMakeLists.txt +20 -10
  3. package/deps/rocksdb/rocksdb/Makefile +37 -25
  4. package/deps/rocksdb/rocksdb/README.md +29 -0
  5. package/deps/rocksdb/rocksdb/TARGETS +25 -2
  6. package/deps/rocksdb/rocksdb/cache/cache.cc +35 -0
  7. package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +229 -74
  8. package/deps/rocksdb/rocksdb/cache/cache_helpers.cc +2 -1
  9. package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.h +4 -3
  10. package/deps/rocksdb/rocksdb/cache/cache_test.cc +58 -95
  11. package/deps/rocksdb/rocksdb/cache/charged_cache.cc +4 -2
  12. package/deps/rocksdb/rocksdb/cache/charged_cache.h +5 -3
  13. package/deps/rocksdb/rocksdb/cache/clock_cache.cc +2683 -496
  14. package/deps/rocksdb/rocksdb/cache/clock_cache.h +580 -159
  15. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +145 -42
  16. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +20 -1
  17. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +391 -17
  18. package/deps/rocksdb/rocksdb/cache/lru_cache.cc +7 -5
  19. package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +309 -212
  20. package/deps/rocksdb/rocksdb/cache/secondary_cache.cc +0 -32
  21. package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +439 -12
  22. package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.h +44 -2
  23. package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +11 -1
  24. package/deps/rocksdb/rocksdb/cache/sharded_cache.h +16 -3
  25. package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache.cc +119 -0
  26. package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache.h +155 -0
  27. package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache_test.cc +711 -0
  28. package/deps/rocksdb/rocksdb/cache/typed_cache.h +17 -11
  29. package/deps/rocksdb/rocksdb/crash_test.mk +14 -0
  30. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +28 -12
  31. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +1 -0
  32. package/deps/rocksdb/rocksdb/db/blob/blob_contents.h +2 -1
  33. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +1 -1
  34. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +1 -1
  35. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.cc +2 -2
  36. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.h +1 -1
  37. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +20 -22
  38. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +1 -2
  39. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +1 -1
  40. package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.cc +2 -3
  41. package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +1 -1
  42. package/deps/rocksdb/rocksdb/db/blob/db_blob_basic_test.cc +8 -0
  43. package/deps/rocksdb/rocksdb/db/blob/db_blob_index_test.cc +7 -3
  44. package/deps/rocksdb/rocksdb/db/builder.cc +35 -10
  45. package/deps/rocksdb/rocksdb/db/c.cc +233 -6
  46. package/deps/rocksdb/rocksdb/db/c_test.c +140 -6
  47. package/deps/rocksdb/rocksdb/db/column_family.cc +110 -51
  48. package/deps/rocksdb/rocksdb/db/column_family.h +34 -2
  49. package/deps/rocksdb/rocksdb/db/column_family_test.cc +314 -7
  50. package/deps/rocksdb/rocksdb/db/compact_files_test.cc +4 -1
  51. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +106 -23
  52. package/deps/rocksdb/rocksdb/db/compaction/compaction.h +47 -9
  53. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +10 -11
  54. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +17 -6
  55. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +2 -2
  56. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +148 -60
  57. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +22 -7
  58. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +2 -0
  59. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +8 -4
  60. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +33 -23
  61. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +14 -5
  62. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +11 -11
  63. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +3 -0
  64. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +90 -4
  65. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +170 -95
  66. package/deps/rocksdb/rocksdb/db/compaction/file_pri.h +3 -1
  67. package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +32 -58
  68. package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +3 -1
  69. package/deps/rocksdb/rocksdb/db/convenience.cc +20 -3
  70. package/deps/rocksdb/rocksdb/db/convenience_impl.h +15 -0
  71. package/deps/rocksdb/rocksdb/db/corruption_test.cc +17 -0
  72. package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +1 -0
  73. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +46 -10
  74. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +13 -3
  75. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +74 -15
  76. package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +27 -3
  77. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +850 -44
  78. package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +2 -29
  79. package/deps/rocksdb/rocksdb/db/db_flush_test.cc +275 -1
  80. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +52 -19
  81. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +6 -5
  82. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +733 -320
  83. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +155 -66
  84. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +516 -155
  85. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +8 -4
  86. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +2 -1
  87. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +17 -4
  88. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +100 -35
  89. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +95 -50
  90. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +13 -9
  91. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +136 -79
  92. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +6 -95
  93. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +31 -22
  94. package/deps/rocksdb/rocksdb/db/db_info_dumper.cc +6 -0
  95. package/deps/rocksdb/rocksdb/db/db_iter.cc +85 -57
  96. package/deps/rocksdb/rocksdb/db/db_iter.h +11 -2
  97. package/deps/rocksdb/rocksdb/db/db_iter_test.cc +29 -0
  98. package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +276 -21
  99. package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +35 -0
  100. package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +4 -11
  101. package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +193 -7
  102. package/deps/rocksdb/rocksdb/db/db_options_test.cc +294 -26
  103. package/deps/rocksdb/rocksdb/db/db_properties_test.cc +26 -36
  104. package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +364 -0
  105. package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +13 -3
  106. package/deps/rocksdb/rocksdb/db/db_readonly_with_timestamp_test.cc +52 -0
  107. package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +74 -1
  108. package/deps/rocksdb/rocksdb/db/db_sst_test.cc +22 -4
  109. package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +1 -1
  110. package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +1 -0
  111. package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +282 -167
  112. package/deps/rocksdb/rocksdb/db/db_test.cc +180 -49
  113. package/deps/rocksdb/rocksdb/db/db_test2.cc +84 -12
  114. package/deps/rocksdb/rocksdb/db/db_test_util.cc +25 -12
  115. package/deps/rocksdb/rocksdb/db/db_test_util.h +45 -2
  116. package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +14 -1
  117. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +245 -0
  118. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +480 -1
  119. package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +6 -6
  120. package/deps/rocksdb/rocksdb/db/db_write_test.cc +2 -2
  121. package/deps/rocksdb/rocksdb/db/dbformat.cc +36 -0
  122. package/deps/rocksdb/rocksdb/db/dbformat.h +169 -20
  123. package/deps/rocksdb/rocksdb/db/dbformat_test.cc +129 -0
  124. package/deps/rocksdb/rocksdb/db/deletefile_test.cc +2 -0
  125. package/deps/rocksdb/rocksdb/db/error_handler.cc +67 -34
  126. package/deps/rocksdb/rocksdb/db/error_handler.h +13 -9
  127. package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +4 -4
  128. package/deps/rocksdb/rocksdb/db/event_helpers.cc +4 -0
  129. package/deps/rocksdb/rocksdb/db/experimental.cc +2 -1
  130. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +4 -4
  131. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +17 -8
  132. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +144 -4
  133. package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +1 -1
  134. package/deps/rocksdb/rocksdb/db/file_indexer.cc +2 -4
  135. package/deps/rocksdb/rocksdb/db/flush_job.cc +105 -17
  136. package/deps/rocksdb/rocksdb/db/flush_job.h +27 -4
  137. package/deps/rocksdb/rocksdb/db/flush_job_test.cc +90 -12
  138. package/deps/rocksdb/rocksdb/db/forward_iterator.cc +2 -3
  139. package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +159 -91
  140. package/deps/rocksdb/rocksdb/db/import_column_family_job.h +19 -10
  141. package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +143 -0
  142. package/deps/rocksdb/rocksdb/db/internal_stats.cc +13 -1
  143. package/deps/rocksdb/rocksdb/db/internal_stats.h +2 -0
  144. package/deps/rocksdb/rocksdb/db/listener_test.cc +2 -1
  145. package/deps/rocksdb/rocksdb/db/log_reader.h +3 -2
  146. package/deps/rocksdb/rocksdb/db/log_test.cc +17 -21
  147. package/deps/rocksdb/rocksdb/db/log_writer.cc +1 -1
  148. package/deps/rocksdb/rocksdb/db/log_writer.h +3 -2
  149. package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +6 -3
  150. package/deps/rocksdb/rocksdb/db/memtable.cc +70 -83
  151. package/deps/rocksdb/rocksdb/db/memtable.h +45 -1
  152. package/deps/rocksdb/rocksdb/db/memtable_list.cc +45 -11
  153. package/deps/rocksdb/rocksdb/db/memtable_list.h +43 -2
  154. package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +91 -5
  155. package/deps/rocksdb/rocksdb/db/merge_helper.cc +330 -115
  156. package/deps/rocksdb/rocksdb/db/merge_helper.h +100 -12
  157. package/deps/rocksdb/rocksdb/db/merge_operator.cc +82 -0
  158. package/deps/rocksdb/rocksdb/db/merge_test.cc +267 -0
  159. package/deps/rocksdb/rocksdb/db/perf_context_test.cc +5 -2
  160. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.h +4 -4
  161. package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +3 -0
  162. package/deps/rocksdb/rocksdb/db/prefix_test.cc +1 -0
  163. package/deps/rocksdb/rocksdb/db/range_del_aggregator.h +4 -0
  164. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +4 -0
  165. package/deps/rocksdb/rocksdb/db/repair.cc +25 -7
  166. package/deps/rocksdb/rocksdb/db/repair_test.cc +143 -2
  167. package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +459 -74
  168. package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.cc +105 -69
  169. package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.h +83 -46
  170. package/deps/rocksdb/rocksdb/db/table_cache.cc +76 -54
  171. package/deps/rocksdb/rocksdb/db/table_cache.h +18 -12
  172. package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +2 -2
  173. package/deps/rocksdb/rocksdb/db/version_builder.cc +0 -1
  174. package/deps/rocksdb/rocksdb/db/version_builder_test.cc +236 -204
  175. package/deps/rocksdb/rocksdb/db/version_edit.cc +66 -4
  176. package/deps/rocksdb/rocksdb/db/version_edit.h +58 -10
  177. package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +80 -8
  178. package/deps/rocksdb/rocksdb/db/version_edit_handler.h +12 -0
  179. package/deps/rocksdb/rocksdb/db/version_edit_test.cc +86 -17
  180. package/deps/rocksdb/rocksdb/db/version_set.cc +207 -110
  181. package/deps/rocksdb/rocksdb/db/version_set.h +36 -15
  182. package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +2 -5
  183. package/deps/rocksdb/rocksdb/db/version_set_test.cc +47 -26
  184. package/deps/rocksdb/rocksdb/db/wide/db_wide_basic_test.cc +525 -0
  185. package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.cc +6 -22
  186. package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.h +0 -20
  187. package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization_test.cc +0 -29
  188. package/deps/rocksdb/rocksdb/db/wide/wide_columns_helper.cc +46 -0
  189. package/deps/rocksdb/rocksdb/db/wide/wide_columns_helper.h +40 -0
  190. package/deps/rocksdb/rocksdb/db/wide/wide_columns_helper_test.cc +39 -0
  191. package/deps/rocksdb/rocksdb/db/write_batch.cc +55 -20
  192. package/deps/rocksdb/rocksdb/db/write_batch_internal.h +3 -0
  193. package/deps/rocksdb/rocksdb/db/write_batch_test.cc +16 -0
  194. package/deps/rocksdb/rocksdb/db_stress_tool/CMakeLists.txt +1 -0
  195. package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +4 -4
  196. package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +4 -7
  197. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +88 -10
  198. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +37 -13
  199. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +110 -58
  200. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +42 -0
  201. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +68 -17
  202. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +34 -0
  203. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +8 -1
  204. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +429 -237
  205. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +13 -6
  206. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +21 -14
  207. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_wide_merge_operator.cc +51 -0
  208. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_wide_merge_operator.h +27 -0
  209. package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +3 -6
  210. package/deps/rocksdb/rocksdb/db_stress_tool/expected_value.h +2 -0
  211. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +29 -38
  212. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +302 -101
  213. package/deps/rocksdb/rocksdb/env/env.cc +6 -2
  214. package/deps/rocksdb/rocksdb/env/env_encryption.cc +11 -165
  215. package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +0 -17
  216. package/deps/rocksdb/rocksdb/env/env_posix.cc +6 -2
  217. package/deps/rocksdb/rocksdb/env/env_test.cc +86 -2
  218. package/deps/rocksdb/rocksdb/env/fs_posix.cc +6 -4
  219. package/deps/rocksdb/rocksdb/env/unique_id_gen.cc +79 -0
  220. package/deps/rocksdb/rocksdb/env/unique_id_gen.h +34 -0
  221. package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +1 -0
  222. package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +15 -4
  223. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +100 -70
  224. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +64 -18
  225. package/deps/rocksdb/rocksdb/file/file_util.cc +10 -5
  226. package/deps/rocksdb/rocksdb/file/file_util.h +13 -1
  227. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +1225 -97
  228. package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +72 -33
  229. package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +3 -16
  230. package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +23 -12
  231. package/deps/rocksdb/rocksdb/file/sequence_file_reader.h +3 -0
  232. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_cache.h +40 -14
  233. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +163 -91
  234. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +112 -2
  235. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +108 -16
  236. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +11 -0
  237. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +3 -0
  238. package/deps/rocksdb/rocksdb/include/rocksdb/comparator.h +42 -2
  239. package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +1 -1
  240. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +92 -12
  241. package/deps/rocksdb/rocksdb/include/rocksdb/env.h +34 -4
  242. package/deps/rocksdb/rocksdb/include/rocksdb/env_encryption.h +9 -109
  243. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +91 -13
  244. package/deps/rocksdb/rocksdb/include/rocksdb/filter_policy.h +8 -3
  245. package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +10 -4
  246. package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +7 -0
  247. package/deps/rocksdb/rocksdb/include/rocksdb/memory_allocator.h +1 -1
  248. package/deps/rocksdb/rocksdb/include/rocksdb/merge_operator.h +55 -4
  249. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +130 -22
  250. package/deps/rocksdb/rocksdb/include/rocksdb/port_defs.h +4 -0
  251. package/deps/rocksdb/rocksdb/include/rocksdb/rate_limiter.h +9 -0
  252. package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +92 -9
  253. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_manager.h +2 -1
  254. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +5 -1
  255. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +37 -2
  256. package/deps/rocksdb/rocksdb/include/rocksdb/status.h +35 -0
  257. package/deps/rocksdb/rocksdb/include/rocksdb/system_clock.h +15 -0
  258. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +7 -1
  259. package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +20 -3
  260. package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +7 -0
  261. package/deps/rocksdb/rocksdb/include/rocksdb/types.h +7 -0
  262. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +6 -1
  263. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/optimistic_transaction_db.h +33 -2
  264. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +2 -1
  265. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +14 -0
  266. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +42 -2
  267. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +0 -3
  268. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
  269. package/deps/rocksdb/rocksdb/include/rocksdb/wide_columns.h +53 -2
  270. package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +3 -2
  271. package/deps/rocksdb/rocksdb/memory/arena_test.cc +18 -11
  272. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +4 -3
  273. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.h +1 -1
  274. package/deps/rocksdb/rocksdb/microbench/README.md +60 -0
  275. package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +69 -34
  276. package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.h +1 -1
  277. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +22 -1
  278. package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +18 -7
  279. package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +14 -0
  280. package/deps/rocksdb/rocksdb/options/cf_options.cc +19 -0
  281. package/deps/rocksdb/rocksdb/options/cf_options.h +10 -2
  282. package/deps/rocksdb/rocksdb/options/customizable_test.cc +6 -1
  283. package/deps/rocksdb/rocksdb/options/db_options.cc +54 -2
  284. package/deps/rocksdb/rocksdb/options/db_options.h +4 -0
  285. package/deps/rocksdb/rocksdb/options/options.cc +15 -1
  286. package/deps/rocksdb/rocksdb/options/options_helper.cc +18 -0
  287. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +14 -4
  288. package/deps/rocksdb/rocksdb/options/options_test.cc +14 -1
  289. package/deps/rocksdb/rocksdb/plugin/README.md +43 -0
  290. package/deps/rocksdb/rocksdb/port/README +10 -0
  291. package/deps/rocksdb/rocksdb/port/mmap.h +20 -0
  292. package/deps/rocksdb/rocksdb/port/port_example.h +1 -1
  293. package/deps/rocksdb/rocksdb/port/port_posix.cc +1 -1
  294. package/deps/rocksdb/rocksdb/port/port_posix.h +7 -4
  295. package/deps/rocksdb/rocksdb/port/stack_trace.cc +32 -12
  296. package/deps/rocksdb/rocksdb/port/win/env_win.h +1 -1
  297. package/deps/rocksdb/rocksdb/port/win/port_win.h +5 -2
  298. package/deps/rocksdb/rocksdb/src.mk +10 -1
  299. package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +2 -1
  300. package/deps/rocksdb/rocksdb/table/block_based/block.cc +48 -22
  301. package/deps/rocksdb/rocksdb/table/block_based/block.h +60 -12
  302. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +116 -43
  303. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +9 -6
  304. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +321 -49
  305. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +98 -4
  306. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +233 -98
  307. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +58 -23
  308. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +12 -8
  309. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +52 -24
  310. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +219 -51
  311. package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +41 -8
  312. package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +25 -1
  313. package/deps/rocksdb/rocksdb/table/block_based/block_cache.cc +3 -1
  314. package/deps/rocksdb/rocksdb/table/block_based/block_cache.h +26 -7
  315. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +50 -18
  316. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +20 -8
  317. package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +232 -71
  318. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +6 -6
  319. package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +44 -26
  320. package/deps/rocksdb/rocksdb/table/block_based/filter_policy_internal.h +2 -1
  321. package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +1 -1
  322. package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +31 -16
  323. package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +97 -58
  324. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +2 -2
  325. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +6 -0
  326. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +36 -19
  327. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +3 -1
  328. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +114 -70
  329. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +4 -3
  330. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +11 -7
  331. package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +15 -3
  332. package/deps/rocksdb/rocksdb/table/block_based/reader_common.h +6 -3
  333. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +1 -1
  334. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +14 -13
  335. package/deps/rocksdb/rocksdb/table/block_fetcher.h +4 -0
  336. package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +9 -2
  337. package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.cc +1 -0
  338. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +6 -2
  339. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +1 -2
  340. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.cc +2 -3
  341. package/deps/rocksdb/rocksdb/table/format.cc +175 -33
  342. package/deps/rocksdb/rocksdb/table/format.h +63 -10
  343. package/deps/rocksdb/rocksdb/table/get_context.cc +52 -89
  344. package/deps/rocksdb/rocksdb/table/get_context.h +12 -3
  345. package/deps/rocksdb/rocksdb/table/internal_iterator.h +11 -0
  346. package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +29 -1
  347. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +22 -2
  348. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +12 -4
  349. package/deps/rocksdb/rocksdb/table/meta_blocks.h +1 -0
  350. package/deps/rocksdb/rocksdb/table/mock_table.cc +8 -3
  351. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +10 -5
  352. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.h +10 -1
  353. package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.cc +1 -2
  354. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +3 -3
  355. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +45 -9
  356. package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +1 -0
  357. package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +24 -1
  358. package/deps/rocksdb/rocksdb/table/table_builder.h +6 -2
  359. package/deps/rocksdb/rocksdb/table/table_properties.cc +6 -0
  360. package/deps/rocksdb/rocksdb/table/table_reader.h +6 -0
  361. package/deps/rocksdb/rocksdb/table/table_test.cc +52 -22
  362. package/deps/rocksdb/rocksdb/test_util/mock_time_env.h +31 -0
  363. package/deps/rocksdb/rocksdb/test_util/secondary_cache_test_util.cc +2 -1
  364. package/deps/rocksdb/rocksdb/test_util/secondary_cache_test_util.h +19 -7
  365. package/deps/rocksdb/rocksdb/test_util/sync_point.h +3 -1
  366. package/deps/rocksdb/rocksdb/test_util/testutil.cc +29 -0
  367. package/deps/rocksdb/rocksdb/test_util/testutil.h +19 -0
  368. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_pysim.py +3 -3
  369. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +87 -65
  370. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +221 -33
  371. package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +36 -0
  372. package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +1 -1
  373. package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +1 -0
  374. package/deps/rocksdb/rocksdb/tools/sst_dump_test.cc +33 -11
  375. package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +4 -0
  376. package/deps/rocksdb/rocksdb/unreleased_history/README.txt +73 -0
  377. package/deps/rocksdb/rocksdb/unreleased_history/add.sh +27 -0
  378. package/deps/rocksdb/rocksdb/unreleased_history/behavior_changes/.gitkeep +0 -0
  379. package/deps/rocksdb/rocksdb/unreleased_history/bug_fixes/.gitkeep +0 -0
  380. package/deps/rocksdb/rocksdb/unreleased_history/new_features/.gitkeep +0 -0
  381. package/deps/rocksdb/rocksdb/unreleased_history/performance_improvements/.gitkeep +0 -0
  382. package/deps/rocksdb/rocksdb/unreleased_history/public_api_changes/.gitkeep +0 -0
  383. package/deps/rocksdb/rocksdb/unreleased_history/release.sh +104 -0
  384. package/deps/rocksdb/rocksdb/util/async_file_reader.cc +5 -0
  385. package/deps/rocksdb/rocksdb/util/bloom_impl.h +3 -3
  386. package/deps/rocksdb/rocksdb/util/bloom_test.cc +32 -11
  387. package/deps/rocksdb/rocksdb/util/cast_util.h +24 -0
  388. package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +2 -0
  389. package/deps/rocksdb/rocksdb/util/comparator.cc +55 -8
  390. package/deps/rocksdb/rocksdb/util/compression.cc +4 -4
  391. package/deps/rocksdb/rocksdb/util/compression.h +119 -35
  392. package/deps/rocksdb/rocksdb/util/core_local.h +2 -1
  393. package/deps/rocksdb/rocksdb/util/crc32c.cc +7 -1
  394. package/deps/rocksdb/rocksdb/util/distributed_mutex.h +1 -1
  395. package/deps/rocksdb/rocksdb/util/dynamic_bloom.h +4 -4
  396. package/deps/rocksdb/rocksdb/util/filelock_test.cc +3 -0
  397. package/deps/rocksdb/rocksdb/util/hash.h +7 -3
  398. package/deps/rocksdb/rocksdb/util/hash_test.cc +44 -0
  399. package/deps/rocksdb/rocksdb/util/math.h +58 -6
  400. package/deps/rocksdb/rocksdb/util/math128.h +29 -7
  401. package/deps/rocksdb/rocksdb/util/mutexlock.h +35 -27
  402. package/deps/rocksdb/rocksdb/util/overload.h +23 -0
  403. package/deps/rocksdb/rocksdb/util/rate_limiter.cc +53 -18
  404. package/deps/rocksdb/rocksdb/util/rate_limiter_impl.h +6 -1
  405. package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +90 -19
  406. package/deps/rocksdb/rocksdb/util/single_thread_executor.h +1 -0
  407. package/deps/rocksdb/rocksdb/util/slice_test.cc +30 -0
  408. package/deps/rocksdb/rocksdb/util/status.cc +1 -0
  409. package/deps/rocksdb/rocksdb/util/stop_watch.h +1 -1
  410. package/deps/rocksdb/rocksdb/util/string_util.cc +39 -0
  411. package/deps/rocksdb/rocksdb/util/string_util.h +10 -0
  412. package/deps/rocksdb/rocksdb/util/thread_operation.h +10 -1
  413. package/deps/rocksdb/rocksdb/util/udt_util.cc +385 -0
  414. package/deps/rocksdb/rocksdb/util/udt_util.h +192 -1
  415. package/deps/rocksdb/rocksdb/util/udt_util_test.cc +461 -0
  416. package/deps/rocksdb/rocksdb/util/write_batch_util.cc +25 -0
  417. package/deps/rocksdb/rocksdb/util/write_batch_util.h +80 -0
  418. package/deps/rocksdb/rocksdb/util/xxhash.h +0 -3
  419. package/deps/rocksdb/rocksdb/util/xxph3.h +0 -4
  420. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +4 -4
  421. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +71 -26
  422. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +7 -6
  423. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +1 -1
  424. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +2 -3
  425. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +6 -11
  426. package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.h +1 -2
  427. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +4 -5
  428. package/deps/rocksdb/rocksdb/utilities/fault_injection_env.h +1 -0
  429. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +20 -16
  430. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +11 -7
  431. package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.cc +2 -2
  432. package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.h +7 -1
  433. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend_test.cc +3 -0
  434. package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration_test.cc +12 -3
  435. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +1 -2
  436. package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache.cc +7 -4
  437. package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.cc +2 -3
  438. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.cc +2 -2
  439. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.h +1 -1
  440. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/README +13 -0
  441. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.cc +23 -8
  442. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +9 -6
  443. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +37 -12
  444. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +272 -33
  445. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +15 -9
  446. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +4 -1
  447. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +76 -20
  448. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +18 -9
  449. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +195 -23
  450. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +19 -12
  451. package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +88 -1
  452. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +1 -1
  453. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +43 -17
  454. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.h +6 -3
  455. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +73 -24
  456. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.h +19 -4
  457. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +60 -107
  458. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +41 -12
  459. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.h +6 -3
  460. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +15 -8
  461. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.h +1 -1
  462. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +10 -5
  463. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +1 -1
  464. package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +1 -1
  465. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +59 -28
  466. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +127 -120
  467. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +129 -59
  468. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +111 -14
  469. package/deps/rocksdb/rocksdb.gyp +6 -2
  470. package/index.js +0 -8
  471. package/package.json +1 -1
  472. package/prebuilds/darwin-arm64/node.napi.node +0 -0
  473. package/prebuilds/linux-x64/node.napi.node +0 -0
  474. package/deps/rocksdb/rocksdb/cmake/modules/CxxFlags.cmake +0 -7
  475. package/deps/rocksdb/rocksdb/cmake/modules/FindJeMalloc.cmake +0 -29
  476. package/deps/rocksdb/rocksdb/cmake/modules/FindNUMA.cmake +0 -29
  477. package/deps/rocksdb/rocksdb/cmake/modules/FindSnappy.cmake +0 -29
  478. package/deps/rocksdb/rocksdb/cmake/modules/FindTBB.cmake +0 -33
  479. package/deps/rocksdb/rocksdb/cmake/modules/Findgflags.cmake +0 -29
  480. package/deps/rocksdb/rocksdb/cmake/modules/Findlz4.cmake +0 -29
  481. package/deps/rocksdb/rocksdb/cmake/modules/Finduring.cmake +0 -26
  482. package/deps/rocksdb/rocksdb/cmake/modules/Findzstd.cmake +0 -29
  483. package/deps/rocksdb/rocksdb/cmake/modules/ReadVersion.cmake +0 -10
@@ -10,11 +10,14 @@
10
10
  #include <memory>
11
11
  #include <tuple>
12
12
 
13
+ #include "cache/secondary_cache_adapter.h"
13
14
  #include "memory/jemalloc_nodump_allocator.h"
15
+ #include "rocksdb/cache.h"
14
16
  #include "rocksdb/convenience.h"
15
17
  #include "test_util/secondary_cache_test_util.h"
16
18
  #include "test_util/testharness.h"
17
19
  #include "test_util/testutil.h"
20
+ #include "util/cast_util.h"
18
21
 
19
22
  namespace ROCKSDB_NAMESPACE {
20
23
 
@@ -49,7 +52,7 @@ class CompressedSecondaryCacheTestBase : public testing::Test,
49
52
  std::string str1(rnd.RandomString(1000));
50
53
  TestItem item1(str1.data(), str1.length());
51
54
  // A dummy handle is inserted if the item is inserted for the first time.
52
- ASSERT_OK(sec_cache->Insert(key1, &item1, GetHelper()));
55
+ ASSERT_OK(sec_cache->Insert(key1, &item1, GetHelper(), false));
53
56
  ASSERT_EQ(get_perf_context()->compressed_sec_cache_insert_dummy_count, 1);
54
57
  ASSERT_EQ(get_perf_context()->compressed_sec_cache_uncompressed_bytes, 0);
55
58
  ASSERT_EQ(get_perf_context()->compressed_sec_cache_compressed_bytes, 0);
@@ -60,7 +63,7 @@ class CompressedSecondaryCacheTestBase : public testing::Test,
60
63
  ASSERT_EQ(handle1_1, nullptr);
61
64
 
62
65
  // Insert and Lookup the item k1 for the second time and advise erasing it.
63
- ASSERT_OK(sec_cache->Insert(key1, &item1, GetHelper()));
66
+ ASSERT_OK(sec_cache->Insert(key1, &item1, GetHelper(), false));
64
67
  ASSERT_EQ(get_perf_context()->compressed_sec_cache_insert_real_count, 1);
65
68
 
66
69
  std::unique_ptr<SecondaryCacheResultHandle> handle1_2 =
@@ -92,14 +95,14 @@ class CompressedSecondaryCacheTestBase : public testing::Test,
92
95
  // Insert and Lookup the item k2.
93
96
  std::string str2(rnd.RandomString(1000));
94
97
  TestItem item2(str2.data(), str2.length());
95
- ASSERT_OK(sec_cache->Insert(key2, &item2, GetHelper()));
98
+ ASSERT_OK(sec_cache->Insert(key2, &item2, GetHelper(), false));
96
99
  ASSERT_EQ(get_perf_context()->compressed_sec_cache_insert_dummy_count, 2);
97
100
  std::unique_ptr<SecondaryCacheResultHandle> handle2_1 =
98
101
  sec_cache->Lookup(key2, GetHelper(), this, true, /*advise_erase=*/false,
99
102
  kept_in_sec_cache);
100
103
  ASSERT_EQ(handle2_1, nullptr);
101
104
 
102
- ASSERT_OK(sec_cache->Insert(key2, &item2, GetHelper()));
105
+ ASSERT_OK(sec_cache->Insert(key2, &item2, GetHelper(), false));
103
106
  ASSERT_EQ(get_perf_context()->compressed_sec_cache_insert_real_count, 2);
104
107
  if (sec_cache_is_compressed) {
105
108
  ASSERT_EQ(get_perf_context()->compressed_sec_cache_uncompressed_bytes,
@@ -181,15 +184,15 @@ class CompressedSecondaryCacheTestBase : public testing::Test,
181
184
  std::string str1(rnd.RandomString(1000));
182
185
  TestItem item1(str1.data(), str1.length());
183
186
  // Insert a dummy handle.
184
- ASSERT_OK(sec_cache->Insert(key1, &item1, GetHelper()));
187
+ ASSERT_OK(sec_cache->Insert(key1, &item1, GetHelper(), false));
185
188
  // Insert k1.
186
- ASSERT_OK(sec_cache->Insert(key1, &item1, GetHelper()));
189
+ ASSERT_OK(sec_cache->Insert(key1, &item1, GetHelper(), false));
187
190
 
188
191
  // Insert and Lookup the second item.
189
192
  std::string str2(rnd.RandomString(200));
190
193
  TestItem item2(str2.data(), str2.length());
191
194
  // Insert a dummy handle, k1 is not evicted.
192
- ASSERT_OK(sec_cache->Insert(key2, &item2, GetHelper()));
195
+ ASSERT_OK(sec_cache->Insert(key2, &item2, GetHelper(), false));
193
196
  bool kept_in_sec_cache{false};
194
197
  std::unique_ptr<SecondaryCacheResultHandle> handle1 =
195
198
  sec_cache->Lookup(key1, GetHelper(), this, true, /*advise_erase=*/false,
@@ -197,7 +200,7 @@ class CompressedSecondaryCacheTestBase : public testing::Test,
197
200
  ASSERT_EQ(handle1, nullptr);
198
201
 
199
202
  // Insert k2 and k1 is evicted.
200
- ASSERT_OK(sec_cache->Insert(key2, &item2, GetHelper()));
203
+ ASSERT_OK(sec_cache->Insert(key2, &item2, GetHelper(), false));
201
204
  std::unique_ptr<SecondaryCacheResultHandle> handle2 =
202
205
  sec_cache->Lookup(key2, GetHelper(), this, true, /*advise_erase=*/false,
203
206
  kept_in_sec_cache);
@@ -208,7 +211,7 @@ class CompressedSecondaryCacheTestBase : public testing::Test,
208
211
  ASSERT_EQ(memcmp(val2->Buf(), item2.Buf(), item2.Size()), 0);
209
212
 
210
213
  // Insert k1 again and a dummy handle is inserted.
211
- ASSERT_OK(sec_cache->Insert(key1, &item1, GetHelper()));
214
+ ASSERT_OK(sec_cache->Insert(key1, &item1, GetHelper(), false));
212
215
 
213
216
  std::unique_ptr<SecondaryCacheResultHandle> handle1_1 =
214
217
  sec_cache->Lookup(key1, GetHelper(), this, true, /*advise_erase=*/false,
@@ -226,8 +229,8 @@ class CompressedSecondaryCacheTestBase : public testing::Test,
226
229
  std::string str3 = rnd.RandomString(10);
227
230
  TestItem item3(str3.data(), str3.length());
228
231
  // The Status is OK because a dummy handle is inserted.
229
- ASSERT_OK(sec_cache->Insert(key3, &item3, GetHelperFail()));
230
- ASSERT_NOK(sec_cache->Insert(key3, &item3, GetHelperFail()));
232
+ ASSERT_OK(sec_cache->Insert(key3, &item3, GetHelperFail(), false));
233
+ ASSERT_NOK(sec_cache->Insert(key3, &item3, GetHelperFail(), false));
231
234
 
232
235
  sec_cache.reset();
233
236
  }
@@ -735,7 +738,7 @@ class CompressedSecondaryCacheTestBase : public testing::Test,
735
738
  class CompressedSecondaryCacheTest
736
739
  : public CompressedSecondaryCacheTestBase,
737
740
  public testing::WithParamInterface<std::string> {
738
- const std::string& Type() override { return GetParam(); }
741
+ const std::string& Type() const override { return GetParam(); }
739
742
  };
740
743
 
741
744
  INSTANTIATE_TEST_CASE_P(CompressedSecondaryCacheTest,
@@ -750,7 +753,7 @@ class CompressedSecCacheTestWithCompressAndAllocatorParam
750
753
  sec_cache_is_compressed_ = std::get<0>(GetParam());
751
754
  use_jemalloc_ = std::get<1>(GetParam());
752
755
  }
753
- const std::string& Type() override { return std::get<2>(GetParam()); }
756
+ const std::string& Type() const override { return std::get<2>(GetParam()); }
754
757
  bool sec_cache_is_compressed_;
755
758
  bool use_jemalloc_;
756
759
  };
@@ -771,7 +774,7 @@ class CompressedSecondaryCacheTestWithCompressionParam
771
774
  CompressedSecondaryCacheTestWithCompressionParam() {
772
775
  sec_cache_is_compressed_ = std::get<0>(GetParam());
773
776
  }
774
- const std::string& Type() override { return std::get<1>(GetParam()); }
777
+ const std::string& Type() const override { return std::get<1>(GetParam()); }
775
778
  bool sec_cache_is_compressed_;
776
779
  };
777
780
 
@@ -902,10 +905,10 @@ TEST_P(CompressedSecondaryCacheTestWithCompressionParam, EntryRoles) {
902
905
  Slice ith_key = Slice(junk.data(), 16);
903
906
 
904
907
  get_perf_context()->Reset();
905
- ASSERT_OK(sec_cache->Insert(ith_key, &item, GetHelper(role)));
908
+ ASSERT_OK(sec_cache->Insert(ith_key, &item, GetHelper(role), false));
906
909
  ASSERT_EQ(get_perf_context()->compressed_sec_cache_insert_dummy_count, 1U);
907
910
 
908
- ASSERT_OK(sec_cache->Insert(ith_key, &item, GetHelper(role)));
911
+ ASSERT_OK(sec_cache->Insert(ith_key, &item, GetHelper(role), false));
909
912
  ASSERT_EQ(get_perf_context()->compressed_sec_cache_insert_real_count, 1U);
910
913
 
911
914
  bool kept_in_sec_cache{true};
@@ -948,7 +951,7 @@ class CompressedSecCacheTestWithCompressAndSplitParam
948
951
  sec_cache_is_compressed_ = std::get<0>(GetParam());
949
952
  enable_custom_split_merge_ = std::get<1>(GetParam());
950
953
  }
951
- const std::string& Type() override { return std::get<2>(GetParam()); }
954
+ const std::string& Type() const override { return std::get<2>(GetParam()); }
952
955
  bool sec_cache_is_compressed_;
953
956
  bool enable_custom_split_merge_;
954
957
  };
@@ -974,6 +977,377 @@ TEST_P(CompressedSecondaryCacheTest, SplictValueAndMergeChunksTest) {
974
977
  SplictValueAndMergeChunksTest();
975
978
  }
976
979
 
980
+ using secondary_cache_test_util::WithCacheType;
981
+
982
+ class CompressedSecCacheTestWithTiered
983
+ : public testing::Test,
984
+ public WithCacheType,
985
+ public testing::WithParamInterface<
986
+ std::tuple<PrimaryCacheType, TieredAdmissionPolicy>> {
987
+ public:
988
+ using secondary_cache_test_util::WithCacheType::TestItem;
989
+ CompressedSecCacheTestWithTiered() {
990
+ LRUCacheOptions lru_opts;
991
+ HyperClockCacheOptions hcc_opts(
992
+ /*_capacity=*/0,
993
+ /*_estimated_entry_charge=*/256 << 10,
994
+ /*_num_shard_bits=*/0);
995
+ TieredCacheOptions opts;
996
+ lru_opts.capacity = 0;
997
+ lru_opts.num_shard_bits = 0;
998
+ lru_opts.high_pri_pool_ratio = 0;
999
+ opts.cache_type = std::get<0>(GetParam());
1000
+ if (opts.cache_type == PrimaryCacheType::kCacheTypeLRU) {
1001
+ opts.cache_opts = &lru_opts;
1002
+ } else {
1003
+ opts.cache_opts = &hcc_opts;
1004
+ }
1005
+ opts.adm_policy = std::get<1>(GetParam());
1006
+ ;
1007
+ opts.comp_cache_opts.capacity = 0;
1008
+ opts.comp_cache_opts.num_shard_bits = 0;
1009
+ opts.total_capacity = 100 << 20;
1010
+ opts.compressed_secondary_ratio = 0.3;
1011
+ cache_ = NewTieredCache(opts);
1012
+ cache_res_mgr_ =
1013
+ std::make_shared<CacheReservationManagerImpl<CacheEntryRole::kMisc>>(
1014
+ cache_);
1015
+ }
1016
+
1017
+ const std::string& Type() const override {
1018
+ if (std::get<0>(GetParam()) == PrimaryCacheType::kCacheTypeLRU) {
1019
+ return lru_str;
1020
+ } else {
1021
+ return hcc_str;
1022
+ }
1023
+ }
1024
+
1025
+ protected:
1026
+ CacheReservationManager* cache_res_mgr() { return cache_res_mgr_.get(); }
1027
+
1028
+ std::shared_ptr<Cache> GetTieredCache() { return cache_; }
1029
+
1030
+ Cache* GetCache() {
1031
+ return static_cast_with_check<CacheWithSecondaryAdapter, Cache>(
1032
+ cache_.get())
1033
+ ->TEST_GetCache();
1034
+ }
1035
+
1036
+ SecondaryCache* GetSecondaryCache() {
1037
+ return static_cast_with_check<CacheWithSecondaryAdapter, Cache>(
1038
+ cache_.get())
1039
+ ->TEST_GetSecondaryCache();
1040
+ }
1041
+
1042
+ size_t GetPercent(size_t val, unsigned int percent) {
1043
+ return static_cast<size_t>(val * percent / 100);
1044
+ }
1045
+
1046
+ private:
1047
+ std::shared_ptr<Cache> cache_;
1048
+ std::shared_ptr<CacheReservationManager> cache_res_mgr_;
1049
+ static std::string lru_str;
1050
+ static std::string hcc_str;
1051
+ };
1052
+
1053
+ std::string CompressedSecCacheTestWithTiered::lru_str(WithCacheType::kLRU);
1054
+ std::string CompressedSecCacheTestWithTiered::hcc_str(
1055
+ WithCacheType::kFixedHyperClock);
1056
+
1057
+ bool CacheUsageWithinBounds(size_t val1, size_t val2, size_t error) {
1058
+ return ((val1 < (val2 + error)) && (val1 > (val2 - error)));
1059
+ }
1060
+
1061
+ TEST_P(CompressedSecCacheTestWithTiered, CacheReservationManager) {
1062
+ CompressedSecondaryCache* sec_cache =
1063
+ reinterpret_cast<CompressedSecondaryCache*>(GetSecondaryCache());
1064
+
1065
+ // Use EXPECT_PRED3 instead of EXPECT_NEAR to void too many size_t to
1066
+ // double explicit casts
1067
+ EXPECT_PRED3(CacheUsageWithinBounds, GetCache()->GetUsage(), (30 << 20),
1068
+ GetPercent(30 << 20, 1));
1069
+ EXPECT_EQ(sec_cache->TEST_GetUsage(), 0);
1070
+
1071
+ ASSERT_OK(cache_res_mgr()->UpdateCacheReservation(10 << 20));
1072
+ EXPECT_PRED3(CacheUsageWithinBounds, GetCache()->GetUsage(), (37 << 20),
1073
+ GetPercent(37 << 20, 1));
1074
+ EXPECT_PRED3(CacheUsageWithinBounds, sec_cache->TEST_GetUsage(), (3 << 20),
1075
+ GetPercent(3 << 20, 1));
1076
+
1077
+ ASSERT_OK(cache_res_mgr()->UpdateCacheReservation(0));
1078
+ EXPECT_PRED3(CacheUsageWithinBounds, GetCache()->GetUsage(), (30 << 20),
1079
+ GetPercent(30 << 20, 1));
1080
+ EXPECT_EQ(sec_cache->TEST_GetUsage(), 0);
1081
+ }
1082
+
1083
+ TEST_P(CompressedSecCacheTestWithTiered,
1084
+ CacheReservationManagerMultipleUpdate) {
1085
+ CompressedSecondaryCache* sec_cache =
1086
+ reinterpret_cast<CompressedSecondaryCache*>(GetSecondaryCache());
1087
+
1088
+ EXPECT_PRED3(CacheUsageWithinBounds, GetCache()->GetUsage(), (30 << 20),
1089
+ GetPercent(30 << 20, 1));
1090
+ EXPECT_EQ(sec_cache->TEST_GetUsage(), 0);
1091
+
1092
+ int i;
1093
+ for (i = 0; i < 10; ++i) {
1094
+ ASSERT_OK(cache_res_mgr()->UpdateCacheReservation((1 + i) << 20));
1095
+ }
1096
+ EXPECT_PRED3(CacheUsageWithinBounds, GetCache()->GetUsage(), (37 << 20),
1097
+ GetPercent(37 << 20, 1));
1098
+ EXPECT_PRED3(CacheUsageWithinBounds, sec_cache->TEST_GetUsage(), (3 << 20),
1099
+ GetPercent(3 << 20, 1));
1100
+
1101
+ for (i = 10; i > 0; --i) {
1102
+ ASSERT_OK(cache_res_mgr()->UpdateCacheReservation(((i - 1) << 20)));
1103
+ }
1104
+ EXPECT_PRED3(CacheUsageWithinBounds, GetCache()->GetUsage(), (30 << 20),
1105
+ GetPercent(30 << 20, 1));
1106
+ EXPECT_EQ(sec_cache->TEST_GetUsage(), 0);
1107
+ }
1108
+
1109
+ TEST_P(CompressedSecCacheTestWithTiered, AdmissionPolicy) {
1110
+ if (!LZ4_Supported()) {
1111
+ ROCKSDB_GTEST_BYPASS("This test requires LZ4 support\n");
1112
+ return;
1113
+ }
1114
+
1115
+ Cache* tiered_cache = GetTieredCache().get();
1116
+ Cache* cache = GetCache();
1117
+ std::vector<CacheKey> keys;
1118
+ std::vector<std::string> vals;
1119
+ // Make the item size slightly less than 10MB to ensure we can fit the
1120
+ // expected number of items in the cache
1121
+ int item_size = (10 << 20) - (1 << 18);
1122
+ int i;
1123
+ Random rnd(301);
1124
+ for (i = 0; i < 14; ++i) {
1125
+ keys.emplace_back(CacheKey::CreateUniqueForCacheLifetime(cache));
1126
+ vals.emplace_back(rnd.RandomString(item_size));
1127
+ }
1128
+
1129
+ for (i = 0; i < 7; ++i) {
1130
+ TestItem* item = new TestItem(vals[i].data(), vals[i].length());
1131
+ ASSERT_OK(tiered_cache->Insert(keys[i].AsSlice(), item, GetHelper(),
1132
+ vals[i].length()));
1133
+ }
1134
+
1135
+ Cache::Handle* handle1;
1136
+ handle1 = tiered_cache->Lookup(keys[0].AsSlice(), GetHelper(),
1137
+ /*context*/ this, Cache::Priority::LOW);
1138
+ ASSERT_NE(handle1, nullptr);
1139
+ Cache::Handle* handle2;
1140
+ handle2 = tiered_cache->Lookup(keys[1].AsSlice(), GetHelper(),
1141
+ /*context*/ this, Cache::Priority::LOW);
1142
+ ASSERT_NE(handle2, nullptr);
1143
+ tiered_cache->Release(handle1);
1144
+ tiered_cache->Release(handle2);
1145
+
1146
+ // Flush all previous entries out of the primary cache
1147
+ for (i = 7; i < 14; ++i) {
1148
+ TestItem* item = new TestItem(vals[i].data(), vals[i].length());
1149
+ ASSERT_OK(tiered_cache->Insert(keys[i].AsSlice(), item, GetHelper(),
1150
+ vals[i].length()));
1151
+ }
1152
+ // keys 0 and 1 should be found as they had the hit bit set
1153
+ handle1 = tiered_cache->Lookup(keys[0].AsSlice(), GetHelper(),
1154
+ /*context*/ this, Cache::Priority::LOW);
1155
+ ASSERT_NE(handle1, nullptr);
1156
+ handle2 = tiered_cache->Lookup(keys[1].AsSlice(), GetHelper(),
1157
+ /*context*/ this, Cache::Priority::LOW);
1158
+ ASSERT_NE(handle2, nullptr);
1159
+ tiered_cache->Release(handle1);
1160
+ tiered_cache->Release(handle2);
1161
+
1162
+ handle1 = tiered_cache->Lookup(keys[2].AsSlice(), GetHelper(),
1163
+ /*context*/ this, Cache::Priority::LOW);
1164
+ ASSERT_EQ(handle1, nullptr);
1165
+ handle1 = tiered_cache->Lookup(keys[3].AsSlice(), GetHelper(),
1166
+ /*context*/ this, Cache::Priority::LOW);
1167
+ ASSERT_EQ(handle1, nullptr);
1168
+ }
1169
+
1170
+ TEST_P(CompressedSecCacheTestWithTiered, DynamicUpdate) {
1171
+ CompressedSecondaryCache* sec_cache =
1172
+ reinterpret_cast<CompressedSecondaryCache*>(GetSecondaryCache());
1173
+ std::shared_ptr<Cache> tiered_cache = GetTieredCache();
1174
+
1175
+ // Use EXPECT_PRED3 instead of EXPECT_NEAR to void too many size_t to
1176
+ // double explicit casts
1177
+ EXPECT_PRED3(CacheUsageWithinBounds, GetCache()->GetUsage(), (30 << 20),
1178
+ GetPercent(30 << 20, 1));
1179
+ size_t sec_capacity;
1180
+ ASSERT_OK(sec_cache->GetCapacity(sec_capacity));
1181
+ ASSERT_EQ(sec_capacity, (30 << 20));
1182
+
1183
+ ASSERT_OK(UpdateTieredCache(tiered_cache, 130 << 20));
1184
+ EXPECT_PRED3(CacheUsageWithinBounds, GetCache()->GetUsage(), (39 << 20),
1185
+ GetPercent(39 << 20, 1));
1186
+ ASSERT_OK(sec_cache->GetCapacity(sec_capacity));
1187
+ ASSERT_EQ(sec_capacity, (39 << 20));
1188
+
1189
+ ASSERT_OK(UpdateTieredCache(tiered_cache, 70 << 20));
1190
+ EXPECT_PRED3(CacheUsageWithinBounds, GetCache()->GetUsage(), (21 << 20),
1191
+ GetPercent(21 << 20, 1));
1192
+ ASSERT_OK(sec_cache->GetCapacity(sec_capacity));
1193
+ ASSERT_EQ(sec_capacity, (21 << 20));
1194
+
1195
+ ASSERT_OK(UpdateTieredCache(tiered_cache, 100 << 20));
1196
+ EXPECT_PRED3(CacheUsageWithinBounds, GetCache()->GetUsage(), (30 << 20),
1197
+ GetPercent(30 << 20, 1));
1198
+ ASSERT_OK(sec_cache->GetCapacity(sec_capacity));
1199
+ ASSERT_EQ(sec_capacity, (30 << 20));
1200
+
1201
+ ASSERT_OK(UpdateTieredCache(tiered_cache, -1, 0.4));
1202
+ EXPECT_PRED3(CacheUsageWithinBounds, GetCache()->GetUsage(), (40 << 20),
1203
+ GetPercent(40 << 20, 1));
1204
+ ASSERT_OK(sec_cache->GetCapacity(sec_capacity));
1205
+ ASSERT_EQ(sec_capacity, (40 << 20));
1206
+
1207
+ ASSERT_OK(UpdateTieredCache(tiered_cache, -1, 0.2));
1208
+ EXPECT_PRED3(CacheUsageWithinBounds, GetCache()->GetUsage(), (20 << 20),
1209
+ GetPercent(20 << 20, 1));
1210
+ ASSERT_OK(sec_cache->GetCapacity(sec_capacity));
1211
+ ASSERT_EQ(sec_capacity, (20 << 20));
1212
+
1213
+ ASSERT_OK(UpdateTieredCache(tiered_cache, -1, 1.0));
1214
+ EXPECT_PRED3(CacheUsageWithinBounds, GetCache()->GetUsage(), (100 << 20),
1215
+ GetPercent(100 << 20, 1));
1216
+ ASSERT_OK(sec_cache->GetCapacity(sec_capacity));
1217
+ ASSERT_EQ(sec_capacity, 100 << 20);
1218
+
1219
+ ASSERT_OK(UpdateTieredCache(tiered_cache, -1, 0.0));
1220
+ // Only check usage for LRU cache. HCC shows a 64KB usage for some reason
1221
+ if (std::get<0>(GetParam()) == PrimaryCacheType::kCacheTypeLRU) {
1222
+ ASSERT_EQ(GetCache()->GetUsage(), 0);
1223
+ }
1224
+ ASSERT_OK(sec_cache->GetCapacity(sec_capacity));
1225
+ ASSERT_EQ(sec_capacity, 0);
1226
+
1227
+ ASSERT_NOK(UpdateTieredCache(tiered_cache, -1, 0.3));
1228
+ // Only check usage for LRU cache. HCC shows a 64KB usage for some reason
1229
+ if (std::get<0>(GetParam()) == PrimaryCacheType::kCacheTypeLRU) {
1230
+ ASSERT_EQ(GetCache()->GetUsage(), 0);
1231
+ }
1232
+ ASSERT_OK(sec_cache->GetCapacity(sec_capacity));
1233
+ ASSERT_EQ(sec_capacity, 0);
1234
+ }
1235
+
1236
+ TEST_P(CompressedSecCacheTestWithTiered, DynamicUpdateWithReservation) {
1237
+ CompressedSecondaryCache* sec_cache =
1238
+ reinterpret_cast<CompressedSecondaryCache*>(GetSecondaryCache());
1239
+ std::shared_ptr<Cache> tiered_cache = GetTieredCache();
1240
+
1241
+ ASSERT_OK(cache_res_mgr()->UpdateCacheReservation(10 << 20));
1242
+ // Use EXPECT_PRED3 instead of EXPECT_NEAR to void too many size_t to
1243
+ // double explicit casts
1244
+ EXPECT_PRED3(CacheUsageWithinBounds, GetCache()->GetUsage(), (37 << 20),
1245
+ GetPercent(37 << 20, 1));
1246
+ EXPECT_PRED3(CacheUsageWithinBounds, sec_cache->TEST_GetUsage(), (3 << 20),
1247
+ GetPercent(3 << 20, 1));
1248
+ size_t sec_capacity;
1249
+ ASSERT_OK(sec_cache->GetCapacity(sec_capacity));
1250
+ ASSERT_EQ(sec_capacity, (30 << 20));
1251
+
1252
+ ASSERT_OK(UpdateTieredCache(tiered_cache, 70 << 20));
1253
+ // Only check usage for LRU cache. HCC is slightly off for some reason
1254
+ if (std::get<0>(GetParam()) == PrimaryCacheType::kCacheTypeLRU) {
1255
+ EXPECT_PRED3(CacheUsageWithinBounds, GetCache()->GetUsage(), (28 << 20),
1256
+ GetPercent(28 << 20, 1));
1257
+ }
1258
+ EXPECT_PRED3(CacheUsageWithinBounds, sec_cache->TEST_GetUsage(), (3 << 20),
1259
+ GetPercent(3 << 20, 1));
1260
+ ASSERT_OK(sec_cache->GetCapacity(sec_capacity));
1261
+ ASSERT_EQ(sec_capacity, (21 << 20));
1262
+
1263
+ ASSERT_OK(UpdateTieredCache(tiered_cache, 130 << 20));
1264
+ EXPECT_PRED3(CacheUsageWithinBounds, GetCache()->GetUsage(), (46 << 20),
1265
+ GetPercent(46 << 20, 1));
1266
+ EXPECT_PRED3(CacheUsageWithinBounds, sec_cache->TEST_GetUsage(), (3 << 20),
1267
+ GetPercent(3 << 20, 1));
1268
+ ASSERT_OK(sec_cache->GetCapacity(sec_capacity));
1269
+ ASSERT_EQ(sec_capacity, (39 << 20));
1270
+
1271
+ ASSERT_OK(UpdateTieredCache(tiered_cache, 100 << 20));
1272
+ EXPECT_PRED3(CacheUsageWithinBounds, GetCache()->GetUsage(), (37 << 20),
1273
+ GetPercent(37 << 20, 1));
1274
+ EXPECT_PRED3(CacheUsageWithinBounds, sec_cache->TEST_GetUsage(), (3 << 20),
1275
+ GetPercent(3 << 20, 1));
1276
+ ASSERT_OK(sec_cache->GetCapacity(sec_capacity));
1277
+ ASSERT_EQ(sec_capacity, (30 << 20));
1278
+
1279
+ ASSERT_OK(tiered_cache->GetSecondaryCacheCapacity(sec_capacity));
1280
+ ASSERT_EQ(sec_capacity, 30 << 20);
1281
+ size_t sec_usage;
1282
+ ASSERT_OK(tiered_cache->GetSecondaryCachePinnedUsage(sec_usage));
1283
+ EXPECT_PRED3(CacheUsageWithinBounds, sec_usage, 3 << 20,
1284
+ GetPercent(3 << 20, 1));
1285
+
1286
+ ASSERT_OK(UpdateTieredCache(tiered_cache, -1, 0.39));
1287
+ EXPECT_PRED3(CacheUsageWithinBounds, GetCache()->GetUsage(), (45 << 20),
1288
+ GetPercent(45 << 20, 1));
1289
+ EXPECT_PRED3(CacheUsageWithinBounds, sec_cache->TEST_GetUsage(), (4 << 20),
1290
+ GetPercent(4 << 20, 1));
1291
+ ASSERT_OK(sec_cache->GetCapacity(sec_capacity));
1292
+ ASSERT_EQ(sec_capacity, (39 << 20));
1293
+
1294
+ ASSERT_OK(UpdateTieredCache(tiered_cache, -1, 0.2));
1295
+ // Only check usage for LRU cache. HCC is slightly off for some reason
1296
+ if (std::get<0>(GetParam()) == PrimaryCacheType::kCacheTypeLRU) {
1297
+ EXPECT_PRED3(CacheUsageWithinBounds, GetCache()->GetUsage(), (28 << 20),
1298
+ GetPercent(28 << 20, 1));
1299
+ }
1300
+ EXPECT_PRED3(CacheUsageWithinBounds, sec_cache->TEST_GetUsage(), (2 << 20),
1301
+ GetPercent(2 << 20, 1));
1302
+ ASSERT_OK(sec_cache->GetCapacity(sec_capacity));
1303
+ ASSERT_EQ(sec_capacity, (20 << 20));
1304
+
1305
+ ASSERT_OK(UpdateTieredCache(tiered_cache, -1, 1.0));
1306
+ EXPECT_PRED3(CacheUsageWithinBounds, GetCache()->GetUsage(), (100 << 20),
1307
+ GetPercent(100 << 20, 1));
1308
+ EXPECT_PRED3(CacheUsageWithinBounds, sec_cache->TEST_GetUsage(), (10 << 20),
1309
+ GetPercent(10 << 20, 1));
1310
+ ASSERT_OK(sec_cache->GetCapacity(sec_capacity));
1311
+ ASSERT_EQ(sec_capacity, 100 << 20);
1312
+
1313
+ ASSERT_OK(UpdateTieredCache(tiered_cache, -1, 0.0));
1314
+ EXPECT_PRED3(CacheUsageWithinBounds, GetCache()->GetUsage(), (10 << 20),
1315
+ GetPercent(10 << 20, 1));
1316
+ ASSERT_OK(sec_cache->GetCapacity(sec_capacity));
1317
+ ASSERT_EQ(sec_capacity, 0);
1318
+
1319
+ ASSERT_OK(cache_res_mgr()->UpdateCacheReservation(0));
1320
+ }
1321
+
1322
+ TEST_P(CompressedSecCacheTestWithTiered,
1323
+ DynamicUpdateWithReservationUnderflow) {
1324
+ std::shared_ptr<Cache> tiered_cache = GetTieredCache();
1325
+ ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->LoadDependency(
1326
+ {{"CacheWithSecondaryAdapter::Release:ChargeSecCache1",
1327
+ "CacheWithSecondaryAdapter::UpdateCacheReservationRatio:Begin"},
1328
+ {"CacheWithSecondaryAdapter::UpdateCacheReservationRatio:End",
1329
+ "CacheWithSecondaryAdapter::Release:ChargeSecCache2"}});
1330
+ ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->EnableProcessing();
1331
+
1332
+ port::Thread reserve_release_thread([&]() {
1333
+ EXPECT_EQ(cache_res_mgr()->UpdateCacheReservation(50), Status::OK());
1334
+ EXPECT_EQ(cache_res_mgr()->UpdateCacheReservation(0), Status::OK());
1335
+ });
1336
+ ASSERT_OK(UpdateTieredCache(tiered_cache, 100 << 20, 0.01));
1337
+ reserve_release_thread.join();
1338
+ ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->DisableProcessing();
1339
+
1340
+ ASSERT_OK(UpdateTieredCache(tiered_cache, 100 << 20, 0.3));
1341
+ }
1342
+
1343
+ INSTANTIATE_TEST_CASE_P(
1344
+ CompressedSecCacheTests, CompressedSecCacheTestWithTiered,
1345
+ ::testing::Values(
1346
+ std::make_tuple(PrimaryCacheType::kCacheTypeLRU,
1347
+ TieredAdmissionPolicy::kAdmPolicyAllowCacheHits),
1348
+ std::make_tuple(PrimaryCacheType::kCacheTypeHCC,
1349
+ TieredAdmissionPolicy::kAdmPolicyAllowCacheHits)));
1350
+
977
1351
  } // namespace ROCKSDB_NAMESPACE
978
1352
 
979
1353
  int main(int argc, char** argv) {
@@ -340,7 +340,8 @@ void LRUCacheShard::NotifyEvicted(
340
340
  for (LRUHandle* entry : evicted_handles) {
341
341
  if (eviction_callback_ &&
342
342
  eviction_callback_(entry->key(),
343
- reinterpret_cast<Cache::Handle*>(entry))) {
343
+ reinterpret_cast<Cache::Handle*>(entry),
344
+ entry->HasHit())) {
344
345
  // Callback took ownership of obj; just free handle
345
346
  free(entry);
346
347
  } else {
@@ -505,7 +506,8 @@ bool LRUCacheShard::Release(LRUHandle* e, bool /*useful*/,
505
506
  // Only call eviction callback if we're sure no one requested erasure
506
507
  // FIXME: disabled because of test churn
507
508
  if (false && was_in_cache && !erase_if_last_ref && eviction_callback_ &&
508
- eviction_callback_(e->key(), reinterpret_cast<Cache::Handle*>(e))) {
509
+ eviction_callback_(e->key(), reinterpret_cast<Cache::Handle*>(e),
510
+ e->HasHit())) {
509
511
  // Callback took ownership of obj; just free handle
510
512
  free(e);
511
513
  } else {
@@ -712,12 +714,12 @@ std::shared_ptr<Cache> LRUCacheOptions::MakeSharedCache() const {
712
714
  return cache;
713
715
  }
714
716
 
715
- std::shared_ptr<GeneralCache> LRUCacheOptions::MakeSharedGeneralCache() const {
717
+ std::shared_ptr<RowCache> LRUCacheOptions::MakeSharedRowCache() const {
716
718
  if (secondary_cache) {
717
- // Not allowed for a GeneralCache
719
+ // Not allowed for a RowCache
718
720
  return nullptr;
719
721
  }
720
- // Works while GeneralCache is an alias for Cache
722
+ // Works while RowCache is an alias for Cache
721
723
  return MakeSharedCache();
722
724
  }
723
725
  } // namespace ROCKSDB_NAMESPACE