@nxtedition/rocksdb 8.2.7 → 9.0.0

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 (359) hide show
  1. package/deps/rocksdb/rocksdb/CMakeLists.txt +7 -1
  2. package/deps/rocksdb/rocksdb/Makefile +22 -19
  3. package/deps/rocksdb/rocksdb/TARGETS +8 -0
  4. package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +157 -61
  5. package/deps/rocksdb/rocksdb/cache/cache_test.cc +43 -92
  6. package/deps/rocksdb/rocksdb/cache/clock_cache.cc +632 -455
  7. package/deps/rocksdb/rocksdb/cache/clock_cache.h +244 -149
  8. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +41 -13
  9. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +11 -1
  10. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +216 -17
  11. package/deps/rocksdb/rocksdb/cache/lru_cache.cc +7 -5
  12. package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +279 -199
  13. package/deps/rocksdb/rocksdb/cache/secondary_cache.cc +2 -1
  14. package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +159 -8
  15. package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.h +28 -2
  16. package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +1 -1
  17. package/deps/rocksdb/rocksdb/cache/sharded_cache.h +8 -0
  18. package/deps/rocksdb/rocksdb/crash_test.mk +14 -0
  19. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +3 -1
  20. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +1 -1
  21. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +1 -1
  22. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.cc +2 -2
  23. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.h +1 -1
  24. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +18 -21
  25. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +1 -2
  26. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +1 -1
  27. package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.cc +2 -3
  28. package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +1 -1
  29. package/deps/rocksdb/rocksdb/db/builder.cc +32 -7
  30. package/deps/rocksdb/rocksdb/db/c.cc +169 -6
  31. package/deps/rocksdb/rocksdb/db/c_test.c +104 -6
  32. package/deps/rocksdb/rocksdb/db/column_family.cc +98 -47
  33. package/deps/rocksdb/rocksdb/db/column_family.h +25 -2
  34. package/deps/rocksdb/rocksdb/db/column_family_test.cc +213 -2
  35. package/deps/rocksdb/rocksdb/db/compact_files_test.cc +4 -1
  36. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +93 -23
  37. package/deps/rocksdb/rocksdb/db/compaction/compaction.h +33 -9
  38. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +7 -6
  39. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +17 -6
  40. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +2 -2
  41. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +107 -43
  42. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +15 -4
  43. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +2 -0
  44. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +4 -2
  45. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +25 -17
  46. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +13 -4
  47. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +11 -11
  48. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +29 -4
  49. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +24 -31
  50. package/deps/rocksdb/rocksdb/db/compaction/file_pri.h +3 -1
  51. package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +19 -19
  52. package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +2 -1
  53. package/deps/rocksdb/rocksdb/db/convenience.cc +20 -3
  54. package/deps/rocksdb/rocksdb/db/convenience_impl.h +15 -0
  55. package/deps/rocksdb/rocksdb/db/corruption_test.cc +17 -0
  56. package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +1 -0
  57. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +17 -3
  58. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +5 -0
  59. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +15 -15
  60. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +666 -44
  61. package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +2 -29
  62. package/deps/rocksdb/rocksdb/db/db_flush_test.cc +274 -1
  63. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +40 -19
  64. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +6 -5
  65. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +250 -116
  66. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +51 -23
  67. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +354 -96
  68. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +6 -3
  69. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +2 -1
  70. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +5 -0
  71. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +50 -21
  72. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +26 -13
  73. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +13 -5
  74. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +61 -21
  75. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +8 -87
  76. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +7 -1
  77. package/deps/rocksdb/rocksdb/db/db_iter.cc +2 -2
  78. package/deps/rocksdb/rocksdb/db/db_iter.h +1 -0
  79. package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +4 -11
  80. package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +6 -6
  81. package/deps/rocksdb/rocksdb/db/db_options_test.cc +39 -29
  82. package/deps/rocksdb/rocksdb/db/db_properties_test.cc +26 -36
  83. package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +106 -0
  84. package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +12 -3
  85. package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +1 -1
  86. package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +1 -0
  87. package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +279 -166
  88. package/deps/rocksdb/rocksdb/db/db_test.cc +48 -21
  89. package/deps/rocksdb/rocksdb/db/db_test2.cc +81 -12
  90. package/deps/rocksdb/rocksdb/db/db_test_util.cc +14 -6
  91. package/deps/rocksdb/rocksdb/db/db_test_util.h +40 -0
  92. package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +13 -1
  93. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +233 -0
  94. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +143 -0
  95. package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +6 -6
  96. package/deps/rocksdb/rocksdb/db/db_write_test.cc +2 -2
  97. package/deps/rocksdb/rocksdb/db/dbformat.cc +36 -0
  98. package/deps/rocksdb/rocksdb/db/dbformat.h +169 -20
  99. package/deps/rocksdb/rocksdb/db/dbformat_test.cc +129 -0
  100. package/deps/rocksdb/rocksdb/db/error_handler.cc +16 -0
  101. package/deps/rocksdb/rocksdb/db/error_handler.h +6 -3
  102. package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +4 -4
  103. package/deps/rocksdb/rocksdb/db/event_helpers.cc +4 -0
  104. package/deps/rocksdb/rocksdb/db/experimental.cc +2 -1
  105. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +4 -4
  106. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +17 -8
  107. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +86 -4
  108. package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +1 -1
  109. package/deps/rocksdb/rocksdb/db/file_indexer.cc +2 -4
  110. package/deps/rocksdb/rocksdb/db/flush_job.cc +101 -11
  111. package/deps/rocksdb/rocksdb/db/flush_job.h +24 -1
  112. package/deps/rocksdb/rocksdb/db/flush_job_test.cc +88 -11
  113. package/deps/rocksdb/rocksdb/db/forward_iterator.cc +2 -3
  114. package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +159 -91
  115. package/deps/rocksdb/rocksdb/db/import_column_family_job.h +19 -10
  116. package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +143 -0
  117. package/deps/rocksdb/rocksdb/db/internal_stats.cc +13 -1
  118. package/deps/rocksdb/rocksdb/db/internal_stats.h +2 -0
  119. package/deps/rocksdb/rocksdb/db/listener_test.cc +2 -1
  120. package/deps/rocksdb/rocksdb/db/log_reader.h +3 -2
  121. package/deps/rocksdb/rocksdb/db/log_test.cc +17 -21
  122. package/deps/rocksdb/rocksdb/db/log_writer.cc +1 -1
  123. package/deps/rocksdb/rocksdb/db/log_writer.h +3 -2
  124. package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +4 -3
  125. package/deps/rocksdb/rocksdb/db/memtable.cc +52 -13
  126. package/deps/rocksdb/rocksdb/db/memtable.h +45 -1
  127. package/deps/rocksdb/rocksdb/db/memtable_list.cc +44 -10
  128. package/deps/rocksdb/rocksdb/db/memtable_list.h +32 -1
  129. package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +90 -4
  130. package/deps/rocksdb/rocksdb/db/perf_context_test.cc +2 -2
  131. package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +1 -0
  132. package/deps/rocksdb/rocksdb/db/repair.cc +21 -4
  133. package/deps/rocksdb/rocksdb/db/repair_test.cc +143 -2
  134. package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +5 -4
  135. package/deps/rocksdb/rocksdb/db/table_cache.cc +44 -35
  136. package/deps/rocksdb/rocksdb/db/table_cache.h +6 -6
  137. package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +2 -2
  138. package/deps/rocksdb/rocksdb/db/version_builder.cc +0 -1
  139. package/deps/rocksdb/rocksdb/db/version_builder_test.cc +236 -204
  140. package/deps/rocksdb/rocksdb/db/version_edit.cc +66 -4
  141. package/deps/rocksdb/rocksdb/db/version_edit.h +48 -6
  142. package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +80 -8
  143. package/deps/rocksdb/rocksdb/db/version_edit_handler.h +12 -0
  144. package/deps/rocksdb/rocksdb/db/version_edit_test.cc +86 -17
  145. package/deps/rocksdb/rocksdb/db/version_set.cc +136 -41
  146. package/deps/rocksdb/rocksdb/db/version_set.h +28 -7
  147. package/deps/rocksdb/rocksdb/db/version_set_test.cc +25 -15
  148. package/deps/rocksdb/rocksdb/db/write_batch.cc +11 -0
  149. package/deps/rocksdb/rocksdb/db/write_batch_internal.h +3 -0
  150. package/deps/rocksdb/rocksdb/db/write_batch_test.cc +16 -0
  151. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +22 -3
  152. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +2 -0
  153. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +42 -0
  154. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +32 -3
  155. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +7 -0
  156. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +247 -120
  157. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +9 -4
  158. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +13 -6
  159. package/deps/rocksdb/rocksdb/db_stress_tool/expected_value.h +2 -0
  160. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +15 -27
  161. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +264 -69
  162. package/deps/rocksdb/rocksdb/env/env.cc +1 -2
  163. package/deps/rocksdb/rocksdb/env/env_encryption.cc +11 -165
  164. package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +0 -17
  165. package/deps/rocksdb/rocksdb/env/env_posix.cc +6 -2
  166. package/deps/rocksdb/rocksdb/env/env_test.cc +86 -2
  167. package/deps/rocksdb/rocksdb/env/fs_posix.cc +6 -4
  168. package/deps/rocksdb/rocksdb/env/unique_id_gen.cc +78 -0
  169. package/deps/rocksdb/rocksdb/env/unique_id_gen.h +34 -0
  170. package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +1 -0
  171. package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +15 -4
  172. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +52 -43
  173. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +34 -18
  174. package/deps/rocksdb/rocksdb/file/file_util.cc +10 -5
  175. package/deps/rocksdb/rocksdb/file/file_util.h +13 -1
  176. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +724 -79
  177. package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +64 -33
  178. package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +3 -16
  179. package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +23 -12
  180. package/deps/rocksdb/rocksdb/file/sequence_file_reader.h +3 -0
  181. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_cache.h +2 -1
  182. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +153 -88
  183. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +70 -2
  184. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +50 -11
  185. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +3 -0
  186. package/deps/rocksdb/rocksdb/include/rocksdb/comparator.h +16 -2
  187. package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +1 -1
  188. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +55 -8
  189. package/deps/rocksdb/rocksdb/include/rocksdb/env.h +32 -4
  190. package/deps/rocksdb/rocksdb/include/rocksdb/env_encryption.h +9 -109
  191. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +90 -13
  192. package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +3 -0
  193. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +85 -17
  194. package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +13 -1
  195. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_manager.h +2 -1
  196. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +5 -1
  197. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +21 -2
  198. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +7 -1
  199. package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +6 -0
  200. package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +5 -0
  201. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/optimistic_transaction_db.h +33 -2
  202. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +14 -0
  203. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +33 -2
  204. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +0 -3
  205. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
  206. package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +3 -0
  207. package/deps/rocksdb/rocksdb/memory/arena_test.cc +18 -11
  208. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +2 -1
  209. package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +69 -34
  210. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +16 -1
  211. package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +10 -0
  212. package/deps/rocksdb/rocksdb/options/cf_options.cc +19 -0
  213. package/deps/rocksdb/rocksdb/options/cf_options.h +10 -2
  214. package/deps/rocksdb/rocksdb/options/customizable_test.cc +2 -1
  215. package/deps/rocksdb/rocksdb/options/db_options.cc +7 -0
  216. package/deps/rocksdb/rocksdb/options/db_options.h +1 -0
  217. package/deps/rocksdb/rocksdb/options/options.cc +15 -1
  218. package/deps/rocksdb/rocksdb/options/options_helper.cc +6 -0
  219. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +11 -3
  220. package/deps/rocksdb/rocksdb/options/options_test.cc +8 -0
  221. package/deps/rocksdb/rocksdb/port/mmap.h +20 -0
  222. package/deps/rocksdb/rocksdb/port/stack_trace.cc +27 -12
  223. package/deps/rocksdb/rocksdb/port/win/env_win.h +1 -1
  224. package/deps/rocksdb/rocksdb/src.mk +3 -0
  225. package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +2 -1
  226. package/deps/rocksdb/rocksdb/table/block_based/block.cc +48 -22
  227. package/deps/rocksdb/rocksdb/table/block_based/block.h +60 -12
  228. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +115 -42
  229. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +6 -5
  230. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +60 -2
  231. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +2 -0
  232. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +62 -44
  233. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +36 -14
  234. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +38 -15
  235. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +219 -51
  236. package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +41 -8
  237. package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +25 -1
  238. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +50 -21
  239. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +11 -4
  240. package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +195 -55
  241. package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +1 -1
  242. package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +31 -16
  243. package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +97 -58
  244. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +1 -1
  245. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +6 -0
  246. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +27 -12
  247. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +3 -1
  248. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +114 -70
  249. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +1 -2
  250. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +9 -6
  251. package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +15 -3
  252. package/deps/rocksdb/rocksdb/table/block_based/reader_common.h +6 -3
  253. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +11 -11
  254. package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +3 -0
  255. package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.cc +1 -0
  256. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +6 -2
  257. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +1 -2
  258. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.cc +2 -3
  259. package/deps/rocksdb/rocksdb/table/format.cc +175 -33
  260. package/deps/rocksdb/rocksdb/table/format.h +63 -10
  261. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +10 -2
  262. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +12 -4
  263. package/deps/rocksdb/rocksdb/table/meta_blocks.h +1 -0
  264. package/deps/rocksdb/rocksdb/table/mock_table.cc +8 -3
  265. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +10 -5
  266. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.h +10 -1
  267. package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.cc +1 -2
  268. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +3 -3
  269. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +12 -3
  270. package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +26 -1
  271. package/deps/rocksdb/rocksdb/table/table_builder.h +6 -2
  272. package/deps/rocksdb/rocksdb/table/table_properties.cc +6 -0
  273. package/deps/rocksdb/rocksdb/table/table_test.cc +52 -22
  274. package/deps/rocksdb/rocksdb/test_util/secondary_cache_test_util.h +19 -7
  275. package/deps/rocksdb/rocksdb/test_util/sync_point.h +3 -1
  276. package/deps/rocksdb/rocksdb/test_util/testutil.cc +29 -0
  277. package/deps/rocksdb/rocksdb/test_util/testutil.h +19 -0
  278. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +65 -26
  279. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +8 -5
  280. package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +1 -0
  281. package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +1 -0
  282. package/deps/rocksdb/rocksdb/tools/sst_dump_test.cc +0 -1
  283. package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +4 -0
  284. package/deps/rocksdb/rocksdb/unreleased_history/README.txt +73 -0
  285. package/deps/rocksdb/rocksdb/unreleased_history/add.sh +27 -0
  286. package/deps/rocksdb/rocksdb/unreleased_history/behavior_changes/.gitkeep +0 -0
  287. package/deps/rocksdb/rocksdb/unreleased_history/bug_fixes/.gitkeep +0 -0
  288. package/deps/rocksdb/rocksdb/unreleased_history/new_features/.gitkeep +0 -0
  289. package/deps/rocksdb/rocksdb/unreleased_history/performance_improvements/.gitkeep +0 -0
  290. package/deps/rocksdb/rocksdb/unreleased_history/public_api_changes/.gitkeep +0 -0
  291. package/deps/rocksdb/rocksdb/unreleased_history/release.sh +104 -0
  292. package/deps/rocksdb/rocksdb/util/async_file_reader.cc +5 -0
  293. package/deps/rocksdb/rocksdb/util/bloom_impl.h +3 -3
  294. package/deps/rocksdb/rocksdb/util/cast_util.h +14 -0
  295. package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +2 -0
  296. package/deps/rocksdb/rocksdb/util/comparator.cc +29 -7
  297. package/deps/rocksdb/rocksdb/util/compression.cc +4 -4
  298. package/deps/rocksdb/rocksdb/util/compression.h +110 -32
  299. package/deps/rocksdb/rocksdb/util/core_local.h +2 -1
  300. package/deps/rocksdb/rocksdb/util/dynamic_bloom.h +4 -4
  301. package/deps/rocksdb/rocksdb/util/filelock_test.cc +3 -0
  302. package/deps/rocksdb/rocksdb/util/hash.h +7 -3
  303. package/deps/rocksdb/rocksdb/util/hash_test.cc +44 -0
  304. package/deps/rocksdb/rocksdb/util/math.h +58 -6
  305. package/deps/rocksdb/rocksdb/util/math128.h +29 -7
  306. package/deps/rocksdb/rocksdb/util/mutexlock.h +35 -27
  307. package/deps/rocksdb/rocksdb/util/single_thread_executor.h +1 -0
  308. package/deps/rocksdb/rocksdb/util/stop_watch.h +1 -1
  309. package/deps/rocksdb/rocksdb/util/thread_operation.h +8 -1
  310. package/deps/rocksdb/rocksdb/util/udt_util.cc +343 -0
  311. package/deps/rocksdb/rocksdb/util/udt_util.h +173 -1
  312. package/deps/rocksdb/rocksdb/util/udt_util_test.cc +447 -0
  313. package/deps/rocksdb/rocksdb/util/write_batch_util.cc +25 -0
  314. package/deps/rocksdb/rocksdb/util/write_batch_util.h +80 -0
  315. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +4 -4
  316. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +69 -25
  317. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +7 -6
  318. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +1 -1
  319. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +2 -3
  320. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +6 -11
  321. package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.h +1 -2
  322. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +4 -5
  323. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +1 -1
  324. package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.cc +2 -2
  325. package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.h +2 -1
  326. package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration_test.cc +3 -3
  327. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +1 -2
  328. package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.cc +2 -3
  329. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.cc +2 -2
  330. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.h +1 -1
  331. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.cc +23 -8
  332. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +9 -6
  333. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +37 -12
  334. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +231 -33
  335. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +0 -1
  336. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +76 -20
  337. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +18 -9
  338. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +40 -23
  339. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +13 -12
  340. package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +7 -0
  341. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +1 -1
  342. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +41 -11
  343. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.h +6 -3
  344. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +71 -24
  345. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.h +19 -4
  346. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +60 -107
  347. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +39 -11
  348. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.h +6 -3
  349. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +14 -8
  350. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.h +1 -1
  351. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +10 -5
  352. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +1 -1
  353. package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +1 -1
  354. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +2 -1
  355. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +6 -6
  356. package/deps/rocksdb/rocksdb.gyp +2 -0
  357. package/package.json +1 -1
  358. package/prebuilds/darwin-arm64/node.napi.node +0 -0
  359. package/prebuilds/linux-x64/node.napi.node +0 -0
@@ -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,202 @@ 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=*/70 << 20,
993
+ /*_estimated_entry_charge=*/256 << 10,
994
+ /*_num_shard_bits=*/0);
995
+ TieredVolatileCacheOptions opts;
996
+ lru_opts.capacity = 70 << 20;
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 = 30 << 20;
1008
+ opts.comp_cache_opts.num_shard_bits = 0;
1009
+ cache_ = NewTieredVolatileCache(opts);
1010
+ cache_res_mgr_ =
1011
+ std::make_shared<CacheReservationManagerImpl<CacheEntryRole::kMisc>>(
1012
+ cache_);
1013
+ }
1014
+
1015
+ const std::string& Type() const override {
1016
+ if (std::get<0>(GetParam()) == PrimaryCacheType::kCacheTypeLRU) {
1017
+ return lru_str;
1018
+ } else {
1019
+ return hcc_str;
1020
+ }
1021
+ }
1022
+
1023
+ protected:
1024
+ CacheReservationManager* cache_res_mgr() { return cache_res_mgr_.get(); }
1025
+
1026
+ Cache* GetTieredCache() { return cache_.get(); }
1027
+
1028
+ Cache* GetCache() {
1029
+ return static_cast_with_check<CacheWithSecondaryAdapter, Cache>(
1030
+ cache_.get())
1031
+ ->TEST_GetCache();
1032
+ }
1033
+
1034
+ SecondaryCache* GetSecondaryCache() {
1035
+ return static_cast_with_check<CacheWithSecondaryAdapter, Cache>(
1036
+ cache_.get())
1037
+ ->TEST_GetSecondaryCache();
1038
+ }
1039
+
1040
+ size_t GetPercent(size_t val, unsigned int percent) {
1041
+ return static_cast<size_t>(val * percent / 100);
1042
+ }
1043
+
1044
+ private:
1045
+ std::shared_ptr<Cache> cache_;
1046
+ std::shared_ptr<CacheReservationManager> cache_res_mgr_;
1047
+ static std::string lru_str;
1048
+ static std::string hcc_str;
1049
+ };
1050
+
1051
+ std::string CompressedSecCacheTestWithTiered::lru_str(WithCacheType::kLRU);
1052
+ std::string CompressedSecCacheTestWithTiered::hcc_str(
1053
+ WithCacheType::kFixedHyperClock);
1054
+
1055
+ bool CacheUsageWithinBounds(size_t val1, size_t val2, size_t error) {
1056
+ return ((val1 < (val2 + error)) && (val1 > (val2 - error)));
1057
+ }
1058
+
1059
+ TEST_P(CompressedSecCacheTestWithTiered, CacheReservationManager) {
1060
+ CompressedSecondaryCache* sec_cache =
1061
+ reinterpret_cast<CompressedSecondaryCache*>(GetSecondaryCache());
1062
+
1063
+ // Use EXPECT_PRED3 instead of EXPECT_NEAR to void too many size_t to
1064
+ // double explicit casts
1065
+ EXPECT_PRED3(CacheUsageWithinBounds, GetCache()->GetUsage(), (30 << 20),
1066
+ GetPercent(30 << 20, 1));
1067
+ EXPECT_EQ(sec_cache->TEST_GetUsage(), 0);
1068
+
1069
+ ASSERT_OK(cache_res_mgr()->UpdateCacheReservation(10 << 20));
1070
+ EXPECT_PRED3(CacheUsageWithinBounds, GetCache()->GetUsage(), (37 << 20),
1071
+ GetPercent(37 << 20, 1));
1072
+ EXPECT_PRED3(CacheUsageWithinBounds, sec_cache->TEST_GetUsage(), (3 << 20),
1073
+ GetPercent(3 << 20, 1));
1074
+
1075
+ ASSERT_OK(cache_res_mgr()->UpdateCacheReservation(0));
1076
+ EXPECT_PRED3(CacheUsageWithinBounds, GetCache()->GetUsage(), (30 << 20),
1077
+ GetPercent(30 << 20, 1));
1078
+ EXPECT_EQ(sec_cache->TEST_GetUsage(), 0);
1079
+ }
1080
+
1081
+ TEST_P(CompressedSecCacheTestWithTiered,
1082
+ CacheReservationManagerMultipleUpdate) {
1083
+ CompressedSecondaryCache* sec_cache =
1084
+ reinterpret_cast<CompressedSecondaryCache*>(GetSecondaryCache());
1085
+
1086
+ EXPECT_PRED3(CacheUsageWithinBounds, GetCache()->GetUsage(), (30 << 20),
1087
+ GetPercent(30 << 20, 1));
1088
+ EXPECT_EQ(sec_cache->TEST_GetUsage(), 0);
1089
+
1090
+ int i;
1091
+ for (i = 0; i < 10; ++i) {
1092
+ ASSERT_OK(cache_res_mgr()->UpdateCacheReservation((1 + i) << 20));
1093
+ }
1094
+ EXPECT_PRED3(CacheUsageWithinBounds, GetCache()->GetUsage(), (37 << 20),
1095
+ GetPercent(37 << 20, 1));
1096
+ EXPECT_PRED3(CacheUsageWithinBounds, sec_cache->TEST_GetUsage(), (3 << 20),
1097
+ GetPercent(3 << 20, 1));
1098
+
1099
+ for (i = 10; i > 0; --i) {
1100
+ ASSERT_OK(cache_res_mgr()->UpdateCacheReservation(((i - 1) << 20)));
1101
+ }
1102
+ EXPECT_PRED3(CacheUsageWithinBounds, GetCache()->GetUsage(), (30 << 20),
1103
+ GetPercent(30 << 20, 1));
1104
+ EXPECT_EQ(sec_cache->TEST_GetUsage(), 0);
1105
+ }
1106
+
1107
+ TEST_P(CompressedSecCacheTestWithTiered, AdmissionPolicy) {
1108
+ if (!LZ4_Supported()) {
1109
+ ROCKSDB_GTEST_BYPASS("This test requires LZ4 support\n");
1110
+ return;
1111
+ }
1112
+
1113
+ Cache* tiered_cache = GetTieredCache();
1114
+ Cache* cache = GetCache();
1115
+ std::vector<CacheKey> keys;
1116
+ std::vector<std::string> vals;
1117
+ // Make the item size slightly less than 10MB to ensure we can fit the
1118
+ // expected number of items in the cache
1119
+ int item_size = (10 << 20) - (1 << 18);
1120
+ int i;
1121
+ Random rnd(301);
1122
+ for (i = 0; i < 14; ++i) {
1123
+ keys.emplace_back(CacheKey::CreateUniqueForCacheLifetime(cache));
1124
+ vals.emplace_back(rnd.RandomString(item_size));
1125
+ }
1126
+
1127
+ for (i = 0; i < 7; ++i) {
1128
+ TestItem* item = new TestItem(vals[i].data(), vals[i].length());
1129
+ ASSERT_OK(tiered_cache->Insert(keys[i].AsSlice(), item, GetHelper(),
1130
+ vals[i].length()));
1131
+ }
1132
+
1133
+ Cache::Handle* handle1;
1134
+ handle1 = tiered_cache->Lookup(keys[0].AsSlice(), GetHelper(),
1135
+ /*context*/ this, Cache::Priority::LOW);
1136
+ ASSERT_NE(handle1, nullptr);
1137
+ Cache::Handle* handle2;
1138
+ handle2 = tiered_cache->Lookup(keys[1].AsSlice(), GetHelper(),
1139
+ /*context*/ this, Cache::Priority::LOW);
1140
+ ASSERT_NE(handle2, nullptr);
1141
+ tiered_cache->Release(handle1);
1142
+ tiered_cache->Release(handle2);
1143
+
1144
+ // Flush all previous entries out of the primary cache
1145
+ for (i = 7; i < 14; ++i) {
1146
+ TestItem* item = new TestItem(vals[i].data(), vals[i].length());
1147
+ ASSERT_OK(tiered_cache->Insert(keys[i].AsSlice(), item, GetHelper(),
1148
+ vals[i].length()));
1149
+ }
1150
+ // keys 0 and 1 should be found as they had the hit bit set
1151
+ handle1 = tiered_cache->Lookup(keys[0].AsSlice(), GetHelper(),
1152
+ /*context*/ this, Cache::Priority::LOW);
1153
+ ASSERT_NE(handle1, nullptr);
1154
+ handle2 = tiered_cache->Lookup(keys[1].AsSlice(), GetHelper(),
1155
+ /*context*/ this, Cache::Priority::LOW);
1156
+ ASSERT_NE(handle2, nullptr);
1157
+ tiered_cache->Release(handle1);
1158
+ tiered_cache->Release(handle2);
1159
+
1160
+ handle1 = tiered_cache->Lookup(keys[2].AsSlice(), GetHelper(),
1161
+ /*context*/ this, Cache::Priority::LOW);
1162
+ ASSERT_EQ(handle1, nullptr);
1163
+ handle1 = tiered_cache->Lookup(keys[3].AsSlice(), GetHelper(),
1164
+ /*context*/ this, Cache::Priority::LOW);
1165
+ ASSERT_EQ(handle1, nullptr);
1166
+ }
1167
+
1168
+ INSTANTIATE_TEST_CASE_P(
1169
+ CompressedSecCacheTests, CompressedSecCacheTestWithTiered,
1170
+ ::testing::Values(
1171
+ std::make_tuple(PrimaryCacheType::kCacheTypeLRU,
1172
+ TieredAdmissionPolicy::kAdmPolicyAllowCacheHits),
1173
+ std::make_tuple(PrimaryCacheType::kCacheTypeHCC,
1174
+ TieredAdmissionPolicy::kAdmPolicyAllowCacheHits)));
1175
+
977
1176
  } // namespace ROCKSDB_NAMESPACE
978
1177
 
979
1178
  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