@nxtedition/rocksdb 8.1.4 → 8.1.6

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 (223) hide show
  1. package/deps/rocksdb/rocksdb/CMakeLists.txt +21 -0
  2. package/deps/rocksdb/rocksdb/Makefile +15 -3
  3. package/deps/rocksdb/rocksdb/TARGETS +6 -0
  4. package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +32 -35
  5. package/deps/rocksdb/rocksdb/cache/cache_entry_roles.cc +0 -30
  6. package/deps/rocksdb/rocksdb/cache/cache_entry_roles.h +0 -83
  7. package/deps/rocksdb/rocksdb/cache/cache_entry_stats.h +13 -14
  8. package/deps/rocksdb/rocksdb/cache/cache_helpers.cc +40 -0
  9. package/deps/rocksdb/rocksdb/cache/cache_helpers.h +14 -20
  10. package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.cc +8 -9
  11. package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.h +5 -4
  12. package/deps/rocksdb/rocksdb/cache/cache_test.cc +124 -156
  13. package/deps/rocksdb/rocksdb/cache/charged_cache.cc +10 -26
  14. package/deps/rocksdb/rocksdb/cache/charged_cache.h +11 -16
  15. package/deps/rocksdb/rocksdb/cache/clock_cache.cc +35 -32
  16. package/deps/rocksdb/rocksdb/cache/clock_cache.h +19 -21
  17. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +42 -30
  18. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +9 -8
  19. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +91 -143
  20. package/deps/rocksdb/rocksdb/cache/lru_cache.cc +54 -60
  21. package/deps/rocksdb/rocksdb/cache/lru_cache.h +37 -63
  22. package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +120 -106
  23. package/deps/rocksdb/rocksdb/cache/secondary_cache.cc +14 -5
  24. package/deps/rocksdb/rocksdb/cache/sharded_cache.h +16 -31
  25. package/deps/rocksdb/rocksdb/cache/typed_cache.h +339 -0
  26. package/deps/rocksdb/rocksdb/db/blob/blob_contents.cc +0 -48
  27. package/deps/rocksdb/rocksdb/db/blob/blob_contents.h +18 -15
  28. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +5 -26
  29. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.cc +7 -8
  30. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.h +6 -3
  31. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +2 -7
  32. package/deps/rocksdb/rocksdb/db/blob/blob_source.cc +19 -47
  33. package/deps/rocksdb/rocksdb/db/blob/blob_source.h +13 -5
  34. package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +15 -22
  35. package/deps/rocksdb/rocksdb/db/builder.cc +24 -10
  36. package/deps/rocksdb/rocksdb/db/builder.h +2 -1
  37. package/deps/rocksdb/rocksdb/db/c.cc +15 -0
  38. package/deps/rocksdb/rocksdb/db/c_test.c +3 -0
  39. package/deps/rocksdb/rocksdb/db/column_family.cc +11 -6
  40. package/deps/rocksdb/rocksdb/db/column_family.h +20 -6
  41. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +31 -34
  42. package/deps/rocksdb/rocksdb/db/compaction/compaction.h +3 -0
  43. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +21 -3
  44. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +1 -0
  45. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +4 -0
  46. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +4 -2
  47. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +9 -6
  48. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +275 -82
  49. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +7 -0
  50. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +11 -18
  51. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +17 -16
  52. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +19 -6
  53. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +5 -5
  54. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +22 -22
  55. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +5 -5
  56. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +81 -52
  57. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +5 -1
  58. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +5 -5
  59. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +8 -2
  60. package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +3 -0
  61. package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +266 -138
  62. package/deps/rocksdb/rocksdb/db/corruption_test.cc +86 -1
  63. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +98 -9
  64. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +28 -28
  65. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +2 -3
  66. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +1022 -123
  67. package/deps/rocksdb/rocksdb/db/db_flush_test.cc +65 -4
  68. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +32 -21
  69. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +32 -24
  70. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +199 -77
  71. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +1 -1
  72. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +3 -2
  73. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +3 -0
  74. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +8 -4
  75. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +43 -23
  76. package/deps/rocksdb/rocksdb/db/db_iter.cc +8 -2
  77. package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +42 -0
  78. package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +155 -0
  79. package/deps/rocksdb/rocksdb/db/db_properties_test.cc +12 -12
  80. package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +230 -2
  81. package/deps/rocksdb/rocksdb/db/db_test.cc +3 -0
  82. package/deps/rocksdb/rocksdb/db/db_test2.cc +233 -8
  83. package/deps/rocksdb/rocksdb/db/db_test_util.cc +11 -10
  84. package/deps/rocksdb/rocksdb/db/db_test_util.h +39 -24
  85. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +129 -0
  86. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +28 -0
  87. package/deps/rocksdb/rocksdb/db/db_with_timestamp_compaction_test.cc +21 -0
  88. package/deps/rocksdb/rocksdb/db/dbformat.cc +25 -0
  89. package/deps/rocksdb/rocksdb/db/dbformat.h +2 -0
  90. package/deps/rocksdb/rocksdb/db/experimental.cc +3 -2
  91. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +3 -0
  92. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +92 -13
  93. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +38 -1
  94. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +14 -110
  95. package/deps/rocksdb/rocksdb/db/flush_job.cc +12 -10
  96. package/deps/rocksdb/rocksdb/db/flush_job.h +3 -2
  97. package/deps/rocksdb/rocksdb/db/flush_job_test.cc +29 -29
  98. package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +56 -53
  99. package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +3 -4
  100. package/deps/rocksdb/rocksdb/db/internal_stats.cc +11 -11
  101. package/deps/rocksdb/rocksdb/db/internal_stats.h +2 -2
  102. package/deps/rocksdb/rocksdb/db/log_reader.cc +8 -6
  103. package/deps/rocksdb/rocksdb/db/log_test.cc +35 -2
  104. package/deps/rocksdb/rocksdb/db/memtable.cc +31 -6
  105. package/deps/rocksdb/rocksdb/db/merge_helper.cc +47 -29
  106. package/deps/rocksdb/rocksdb/db/merge_helper.h +14 -6
  107. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler_test.cc +10 -10
  108. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter_test.cc +1 -1
  109. package/deps/rocksdb/rocksdb/db/repair.cc +65 -22
  110. package/deps/rocksdb/rocksdb/db/repair_test.cc +54 -0
  111. package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +26 -26
  112. package/deps/rocksdb/rocksdb/db/table_cache.cc +41 -91
  113. package/deps/rocksdb/rocksdb/db/table_cache.h +17 -19
  114. package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +7 -9
  115. package/deps/rocksdb/rocksdb/db/table_properties_collector.h +3 -1
  116. package/deps/rocksdb/rocksdb/db/version_builder.cc +102 -52
  117. package/deps/rocksdb/rocksdb/db/version_builder.h +20 -0
  118. package/deps/rocksdb/rocksdb/db/version_builder_test.cc +218 -93
  119. package/deps/rocksdb/rocksdb/db/version_edit.cc +27 -1
  120. package/deps/rocksdb/rocksdb/db/version_edit.h +34 -9
  121. package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +13 -6
  122. package/deps/rocksdb/rocksdb/db/version_edit_handler.h +17 -6
  123. package/deps/rocksdb/rocksdb/db/version_edit_test.cc +19 -17
  124. package/deps/rocksdb/rocksdb/db/version_set.cc +160 -28
  125. package/deps/rocksdb/rocksdb/db/version_set.h +34 -4
  126. package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +1 -1
  127. package/deps/rocksdb/rocksdb/db/version_set_test.cc +65 -31
  128. package/deps/rocksdb/rocksdb/db/write_batch.cc +4 -1
  129. package/deps/rocksdb/rocksdb/db/write_thread.cc +5 -2
  130. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +1 -0
  131. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +31 -32
  132. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.h +2 -1
  133. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +8 -6
  134. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +4 -0
  135. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +11 -4
  136. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +16 -15
  137. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +13 -1
  138. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +1 -0
  139. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +286 -217
  140. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +8 -0
  141. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +137 -135
  142. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +6 -0
  143. package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +7 -1
  144. package/deps/rocksdb/rocksdb/include/rocksdb/merge_operator.h +21 -0
  145. package/deps/rocksdb/rocksdb/include/rocksdb/metadata.h +9 -3
  146. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +2 -1
  147. package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +8 -6
  148. package/deps/rocksdb/rocksdb/include/rocksdb/status.h +3 -0
  149. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/backup_engine.h +69 -9
  150. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +1 -1
  151. package/deps/rocksdb/rocksdb/memory/arena.cc +23 -87
  152. package/deps/rocksdb/rocksdb/memory/arena.h +25 -31
  153. package/deps/rocksdb/rocksdb/memory/arena_test.cc +90 -0
  154. package/deps/rocksdb/rocksdb/memory/memory_allocator.h +9 -0
  155. package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +26 -26
  156. package/deps/rocksdb/rocksdb/options/customizable_test.cc +4 -3
  157. package/deps/rocksdb/rocksdb/port/mmap.cc +98 -0
  158. package/deps/rocksdb/rocksdb/port/mmap.h +70 -0
  159. package/deps/rocksdb/rocksdb/port/port_posix.h +2 -0
  160. package/{prebuilds → deps/rocksdb/rocksdb/prebuilds}/linux-x64/node.napi.node +0 -0
  161. package/deps/rocksdb/rocksdb/src.mk +3 -0
  162. package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.cc +3 -2
  163. package/deps/rocksdb/rocksdb/table/block_based/block.h +3 -0
  164. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +25 -67
  165. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +3 -3
  166. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +18 -13
  167. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +159 -225
  168. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +31 -50
  169. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +52 -20
  170. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +3 -3
  171. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +1 -1
  172. package/deps/rocksdb/rocksdb/table/block_based/block_cache.cc +96 -0
  173. package/deps/rocksdb/rocksdb/table/block_based/block_cache.h +132 -0
  174. package/deps/rocksdb/rocksdb/table/block_based/cachable_entry.h +28 -0
  175. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +6 -5
  176. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.h +1 -4
  177. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +6 -7
  178. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +3 -1
  179. package/deps/rocksdb/rocksdb/table/block_based/parsed_full_filter_block.h +6 -1
  180. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +19 -18
  181. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +9 -5
  182. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +3 -1
  183. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +2 -1
  184. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +2 -2
  185. package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +3 -3
  186. package/deps/rocksdb/rocksdb/table/format.cc +24 -20
  187. package/deps/rocksdb/rocksdb/table/format.h +6 -3
  188. package/deps/rocksdb/rocksdb/table/get_context.cc +12 -3
  189. package/deps/rocksdb/rocksdb/table/internal_iterator.h +0 -2
  190. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +69 -35
  191. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +2 -2
  192. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +1 -1
  193. package/deps/rocksdb/rocksdb/table/table_test.cc +7 -6
  194. package/deps/rocksdb/rocksdb/test_util/testutil.h +10 -0
  195. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +66 -1
  196. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +9 -2
  197. package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.cc +5 -0
  198. package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.h +2 -2
  199. package/deps/rocksdb/rocksdb/trace_replay/trace_replay.cc +1 -1
  200. package/deps/rocksdb/rocksdb/util/async_file_reader.cc +20 -12
  201. package/deps/rocksdb/rocksdb/util/bloom_test.cc +1 -1
  202. package/deps/rocksdb/rocksdb/util/compression.cc +2 -2
  203. package/deps/rocksdb/rocksdb/util/compression.h +11 -2
  204. package/deps/rocksdb/rocksdb/util/status.cc +7 -0
  205. package/deps/rocksdb/rocksdb/util/xxhash.h +1901 -887
  206. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +250 -74
  207. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +199 -4
  208. package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +35 -57
  209. package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.h +4 -5
  210. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +1 -0
  211. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +39 -0
  212. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +9 -0
  213. package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.cc +11 -6
  214. package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.h +6 -5
  215. package/deps/rocksdb/rocksdb/utilities/memory_allocators.h +0 -1
  216. package/deps/rocksdb/rocksdb/utilities/simulator_cache/cache_simulator.cc +10 -11
  217. package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache.cc +31 -31
  218. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +4 -0
  219. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +111 -0
  220. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +1 -0
  221. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +12 -3
  222. package/package.json +1 -1
  223. package/deps/rocksdb/rocksdb/table/block_based/block_like_traits.h +0 -182
@@ -80,7 +80,7 @@ TEST_F(SeqnoTimeTest, TemperatureBasicUniversal) {
80
80
 
81
81
  // pass some time first, otherwise the first a few keys write time are going
82
82
  // to be zero, and internally zero has special meaning: kUnknownSeqnoTime
83
- dbfull()->TEST_WaitForPeridicTaskRun(
83
+ dbfull()->TEST_WaitForPeriodicTaskRun(
84
84
  [&] { mock_clock_->MockSleepForSeconds(static_cast<int>(kKeyPerSec)); });
85
85
 
86
86
  int sst_num = 0;
@@ -88,7 +88,7 @@ TEST_F(SeqnoTimeTest, TemperatureBasicUniversal) {
88
88
  for (; sst_num < kNumTrigger; sst_num++) {
89
89
  for (int i = 0; i < kNumKeys; i++) {
90
90
  ASSERT_OK(Put(Key(sst_num * (kNumKeys - 1) + i), "value"));
91
- dbfull()->TEST_WaitForPeridicTaskRun([&] {
91
+ dbfull()->TEST_WaitForPeriodicTaskRun([&] {
92
92
  mock_clock_->MockSleepForSeconds(static_cast<int>(kKeyPerSec));
93
93
  });
94
94
  }
@@ -110,7 +110,7 @@ TEST_F(SeqnoTimeTest, TemperatureBasicUniversal) {
110
110
  for (; sst_num < kNumTrigger * 2; sst_num++) {
111
111
  for (int i = 0; i < kNumKeys; i++) {
112
112
  ASSERT_OK(Put(Key(sst_num * (kNumKeys - 1) + i), "value"));
113
- dbfull()->TEST_WaitForPeridicTaskRun([&] {
113
+ dbfull()->TEST_WaitForPeriodicTaskRun([&] {
114
114
  mock_clock_->MockSleepForSeconds(static_cast<int>(kKeyPerSec));
115
115
  });
116
116
  }
@@ -124,7 +124,7 @@ TEST_F(SeqnoTimeTest, TemperatureBasicUniversal) {
124
124
  for (; sst_num < kNumTrigger * 3; sst_num++) {
125
125
  for (int i = 0; i < kNumKeys; i++) {
126
126
  ASSERT_OK(Put(Key(sst_num * (kNumKeys - 1) + i), "value"));
127
- dbfull()->TEST_WaitForPeridicTaskRun([&] {
127
+ dbfull()->TEST_WaitForPeriodicTaskRun([&] {
128
128
  mock_clock_->MockSleepForSeconds(static_cast<int>(kKeyPerSec));
129
129
  });
130
130
  }
@@ -143,7 +143,7 @@ TEST_F(SeqnoTimeTest, TemperatureBasicUniversal) {
143
143
  AssertKeyTemperature(20, Temperature::kCold);
144
144
 
145
145
  for (int i = 0; i < 30; i++) {
146
- dbfull()->TEST_WaitForPeridicTaskRun([&] {
146
+ dbfull()->TEST_WaitForPeriodicTaskRun([&] {
147
147
  mock_clock_->MockSleepForSeconds(static_cast<int>(20 * kKeyPerSec));
148
148
  });
149
149
  ASSERT_OK(db_->CompactRange(cro, nullptr, nullptr));
@@ -161,7 +161,7 @@ TEST_F(SeqnoTimeTest, TemperatureBasicUniversal) {
161
161
  // the compaction will not get the new seqno->time sampling to decide the last
162
162
  // a few data's time.
163
163
  for (int i = 0; i < 5; i++) {
164
- dbfull()->TEST_WaitForPeridicTaskRun(
164
+ dbfull()->TEST_WaitForPeriodicTaskRun(
165
165
  [&] { mock_clock_->MockSleepForSeconds(static_cast<int>(1000)); });
166
166
  ASSERT_OK(db_->CompactRange(cro, nullptr, nullptr));
167
167
  }
@@ -192,7 +192,7 @@ TEST_F(SeqnoTimeTest, TemperatureBasicLevel) {
192
192
 
193
193
  // pass some time first, otherwise the first a few keys write time are going
194
194
  // to be zero, and internally zero has special meaning: kUnknownSeqnoTime
195
- dbfull()->TEST_WaitForPeridicTaskRun(
195
+ dbfull()->TEST_WaitForPeriodicTaskRun(
196
196
  [&] { mock_clock_->MockSleepForSeconds(static_cast<int>(10)); });
197
197
 
198
198
  int sst_num = 0;
@@ -200,7 +200,7 @@ TEST_F(SeqnoTimeTest, TemperatureBasicLevel) {
200
200
  for (; sst_num < 4; sst_num++) {
201
201
  for (int i = 0; i < kNumKeys; i++) {
202
202
  ASSERT_OK(Put(Key(sst_num * (kNumKeys - 1) + i), "value"));
203
- dbfull()->TEST_WaitForPeridicTaskRun(
203
+ dbfull()->TEST_WaitForPeriodicTaskRun(
204
204
  [&] { mock_clock_->MockSleepForSeconds(static_cast<int>(10)); });
205
205
  }
206
206
  ASSERT_OK(Flush());
@@ -222,7 +222,7 @@ TEST_F(SeqnoTimeTest, TemperatureBasicLevel) {
222
222
  for (; sst_num < 14; sst_num++) {
223
223
  for (int i = 0; i < kNumKeys; i++) {
224
224
  ASSERT_OK(Put(Key(sst_num * (kNumKeys - 1) + i), "value"));
225
- dbfull()->TEST_WaitForPeridicTaskRun(
225
+ dbfull()->TEST_WaitForPeriodicTaskRun(
226
226
  [&] { mock_clock_->MockSleepForSeconds(static_cast<int>(10)); });
227
227
  }
228
228
  ASSERT_OK(Flush());
@@ -243,7 +243,7 @@ TEST_F(SeqnoTimeTest, TemperatureBasicLevel) {
243
243
  // Wait some time, with each wait, the cold data is increasing and hot data is
244
244
  // decreasing
245
245
  for (int i = 0; i < 30; i++) {
246
- dbfull()->TEST_WaitForPeridicTaskRun(
246
+ dbfull()->TEST_WaitForPeriodicTaskRun(
247
247
  [&] { mock_clock_->MockSleepForSeconds(static_cast<int>(200)); });
248
248
  ASSERT_OK(db_->CompactRange(cro, nullptr, nullptr));
249
249
  uint64_t pre_hot = hot_data_size;
@@ -262,7 +262,7 @@ TEST_F(SeqnoTimeTest, TemperatureBasicLevel) {
262
262
  // hot data might not be empty, because if we don't write new data, there's
263
263
  // no seqno->time sampling available to the compaction
264
264
  for (int i = 0; i < 5; i++) {
265
- dbfull()->TEST_WaitForPeridicTaskRun(
265
+ dbfull()->TEST_WaitForPeriodicTaskRun(
266
266
  [&] { mock_clock_->MockSleepForSeconds(static_cast<int>(1000)); });
267
267
  ASSERT_OK(db_->CompactRange(cro, nullptr, nullptr));
268
268
  }
@@ -324,7 +324,7 @@ TEST_P(SeqnoTimeTablePropTest, BasicSeqnoToTimeMapping) {
324
324
  // Write a key every 10 seconds
325
325
  for (int i = 0; i < 200; i++) {
326
326
  ASSERT_OK(Put(Key(i), "value"));
327
- dbfull()->TEST_WaitForPeridicTaskRun(
327
+ dbfull()->TEST_WaitForPeriodicTaskRun(
328
328
  [&] { mock_clock_->MockSleepForSeconds(static_cast<int>(10)); });
329
329
  }
330
330
  ASSERT_OK(Flush());
@@ -357,7 +357,7 @@ TEST_P(SeqnoTimeTablePropTest, BasicSeqnoToTimeMapping) {
357
357
  // Write a key every 1 seconds
358
358
  for (int i = 0; i < 200; i++) {
359
359
  ASSERT_OK(Put(Key(i + 190), "value"));
360
- dbfull()->TEST_WaitForPeridicTaskRun(
360
+ dbfull()->TEST_WaitForPeriodicTaskRun(
361
361
  [&] { mock_clock_->MockSleepForSeconds(static_cast<int>(1)); });
362
362
  }
363
363
  seq_end = dbfull()->GetLatestSequenceNumber();
@@ -393,7 +393,7 @@ TEST_P(SeqnoTimeTablePropTest, BasicSeqnoToTimeMapping) {
393
393
  // Write a key every 200 seconds
394
394
  for (int i = 0; i < 200; i++) {
395
395
  ASSERT_OK(Put(Key(i + 380), "value"));
396
- dbfull()->TEST_WaitForPeridicTaskRun(
396
+ dbfull()->TEST_WaitForPeriodicTaskRun(
397
397
  [&] { mock_clock_->MockSleepForSeconds(static_cast<int>(200)); });
398
398
  }
399
399
  seq_end = dbfull()->GetLatestSequenceNumber();
@@ -435,7 +435,7 @@ TEST_P(SeqnoTimeTablePropTest, BasicSeqnoToTimeMapping) {
435
435
  // Write a key every 100 seconds
436
436
  for (int i = 0; i < 200; i++) {
437
437
  ASSERT_OK(Put(Key(i + 570), "value"));
438
- dbfull()->TEST_WaitForPeridicTaskRun(
438
+ dbfull()->TEST_WaitForPeriodicTaskRun(
439
439
  [&] { mock_clock_->MockSleepForSeconds(static_cast<int>(100)); });
440
440
  }
441
441
  seq_end = dbfull()->GetLatestSequenceNumber();
@@ -516,7 +516,7 @@ TEST_P(SeqnoTimeTablePropTest, MultiCFs) {
516
516
  // Write some data and increase the current time
517
517
  for (int i = 0; i < 200; i++) {
518
518
  ASSERT_OK(Put(Key(i), "value"));
519
- dbfull()->TEST_WaitForPeridicTaskRun(
519
+ dbfull()->TEST_WaitForPeriodicTaskRun(
520
520
  [&] { mock_clock_->MockSleepForSeconds(static_cast<int>(100)); });
521
521
  }
522
522
  ASSERT_OK(Flush());
@@ -536,7 +536,7 @@ TEST_P(SeqnoTimeTablePropTest, MultiCFs) {
536
536
  // Write some data to the default CF (without preclude_last_level feature)
537
537
  for (int i = 0; i < 200; i++) {
538
538
  ASSERT_OK(Put(Key(i), "value"));
539
- dbfull()->TEST_WaitForPeridicTaskRun(
539
+ dbfull()->TEST_WaitForPeriodicTaskRun(
540
540
  [&] { mock_clock_->MockSleepForSeconds(static_cast<int>(100)); });
541
541
  }
542
542
  ASSERT_OK(Flush());
@@ -544,7 +544,7 @@ TEST_P(SeqnoTimeTablePropTest, MultiCFs) {
544
544
  // Write some data to the CF one
545
545
  for (int i = 0; i < 20; i++) {
546
546
  ASSERT_OK(Put(1, Key(i), "value"));
547
- dbfull()->TEST_WaitForPeridicTaskRun(
547
+ dbfull()->TEST_WaitForPeriodicTaskRun(
548
548
  [&] { mock_clock_->MockSleepForSeconds(static_cast<int>(10)); });
549
549
  }
550
550
  ASSERT_OK(Flush(1));
@@ -568,7 +568,7 @@ TEST_P(SeqnoTimeTablePropTest, MultiCFs) {
568
568
  // Add more data to CF "two" to fill the in memory mapping
569
569
  for (int i = 0; i < 2000; i++) {
570
570
  ASSERT_OK(Put(2, Key(i), "value"));
571
- dbfull()->TEST_WaitForPeridicTaskRun(
571
+ dbfull()->TEST_WaitForPeriodicTaskRun(
572
572
  [&] { mock_clock_->MockSleepForSeconds(static_cast<int>(100)); });
573
573
  }
574
574
  seqs = dbfull()->TEST_GetSeqnoToTimeMapping().TEST_GetInternalMapping();
@@ -592,7 +592,7 @@ TEST_P(SeqnoTimeTablePropTest, MultiCFs) {
592
592
  // enabled have flushed, the in-memory seqno->time mapping should be cleared
593
593
  for (int i = 0; i < 10; i++) {
594
594
  ASSERT_OK(Put(0, Key(i), "value"));
595
- dbfull()->TEST_WaitForPeridicTaskRun(
595
+ dbfull()->TEST_WaitForPeriodicTaskRun(
596
596
  [&] { mock_clock_->MockSleepForSeconds(static_cast<int>(100)); });
597
597
  }
598
598
  seqs = dbfull()->TEST_GetSeqnoToTimeMapping().TEST_GetInternalMapping();
@@ -603,7 +603,7 @@ TEST_P(SeqnoTimeTablePropTest, MultiCFs) {
603
603
  for (int j = 0; j < 3; j++) {
604
604
  for (int i = 0; i < 200; i++) {
605
605
  ASSERT_OK(Put(2, Key(i), "value"));
606
- dbfull()->TEST_WaitForPeridicTaskRun(
606
+ dbfull()->TEST_WaitForPeriodicTaskRun(
607
607
  [&] { mock_clock_->MockSleepForSeconds(static_cast<int>(100)); });
608
608
  }
609
609
  ASSERT_OK(Flush(2));
@@ -623,7 +623,7 @@ TEST_P(SeqnoTimeTablePropTest, MultiCFs) {
623
623
  for (int j = 0; j < 2; j++) {
624
624
  for (int i = 0; i < 200; i++) {
625
625
  ASSERT_OK(Put(0, Key(i), "value"));
626
- dbfull()->TEST_WaitForPeridicTaskRun(
626
+ dbfull()->TEST_WaitForPeriodicTaskRun(
627
627
  [&] { mock_clock_->MockSleepForSeconds(static_cast<int>(100)); });
628
628
  }
629
629
  ASSERT_OK(Flush(0));
@@ -638,7 +638,7 @@ TEST_P(SeqnoTimeTablePropTest, MultiCFs) {
638
638
  // Write some data to CF "two", but don't flush to accumulate
639
639
  for (int i = 0; i < 1000; i++) {
640
640
  ASSERT_OK(Put(2, Key(i), "value"));
641
- dbfull()->TEST_WaitForPeridicTaskRun(
641
+ dbfull()->TEST_WaitForPeriodicTaskRun(
642
642
  [&] { mock_clock_->MockSleepForSeconds(static_cast<int>(100)); });
643
643
  }
644
644
  ASSERT_GE(
@@ -682,7 +682,7 @@ TEST_P(SeqnoTimeTablePropTest, MultiInstancesBasic) {
682
682
  WriteOptions wo;
683
683
  for (int i = 0; i < 200; i++) {
684
684
  ASSERT_OK(dbi->Put(wo, Key(i), "value"));
685
- dbfull()->TEST_WaitForPeridicTaskRun(
685
+ dbfull()->TEST_WaitForPeriodicTaskRun(
686
686
  [&] { mock_clock_->MockSleepForSeconds(static_cast<int>(100)); });
687
687
  }
688
688
  SeqnoToTimeMapping seqno_to_time_mapping = dbi->TEST_GetSeqnoToTimeMapping();
@@ -720,7 +720,7 @@ TEST_P(SeqnoTimeTablePropTest, SeqnoToTimeMappingUniversal) {
720
720
  for (; sst_num < kNumTrigger - 1; sst_num++) {
721
721
  for (int i = 0; i < kNumKeys; i++) {
722
722
  ASSERT_OK(Put(Key(sst_num * (kNumKeys - 1) + i), "value"));
723
- dbfull()->TEST_WaitForPeridicTaskRun(
723
+ dbfull()->TEST_WaitForPeriodicTaskRun(
724
724
  [&] { mock_clock_->MockSleepForSeconds(static_cast<int>(10)); });
725
725
  }
726
726
  ASSERT_OK(Flush());
@@ -742,7 +742,7 @@ TEST_P(SeqnoTimeTablePropTest, SeqnoToTimeMappingUniversal) {
742
742
  // Trigger a compaction
743
743
  for (int i = 0; i < kNumKeys; i++) {
744
744
  ASSERT_OK(Put(Key(sst_num * (kNumKeys - 1) + i), "value"));
745
- dbfull()->TEST_WaitForPeridicTaskRun(
745
+ dbfull()->TEST_WaitForPeriodicTaskRun(
746
746
  [&] { mock_clock_->MockSleepForSeconds(static_cast<int>(10)); });
747
747
  }
748
748
  sst_num++;
@@ -31,16 +31,6 @@
31
31
  #include "util/coding.h"
32
32
  #include "util/stop_watch.h"
33
33
 
34
- namespace ROCKSDB_NAMESPACE {
35
- namespace {
36
- template <class T>
37
- static void DeleteEntry(const Slice& /*key*/, void* value) {
38
- T* typed_value = reinterpret_cast<T*>(value);
39
- delete typed_value;
40
- }
41
- } // anonymous namespace
42
- } // namespace ROCKSDB_NAMESPACE
43
-
44
34
  // Generate the regular and coroutine versions of some methods by
45
35
  // including table_cache_sync_and_async.h twice
46
36
  // Macros in the header will expand differently based on whether
@@ -58,12 +48,6 @@ namespace ROCKSDB_NAMESPACE {
58
48
 
59
49
  namespace {
60
50
 
61
- static void UnrefEntry(void* arg1, void* arg2) {
62
- Cache* cache = reinterpret_cast<Cache*>(arg1);
63
- Cache::Handle* h = reinterpret_cast<Cache::Handle*>(arg2);
64
- cache->Release(h);
65
- }
66
-
67
51
  static Slice GetSliceForFileNumber(const uint64_t* file_number) {
68
52
  return Slice(reinterpret_cast<const char*>(file_number),
69
53
  sizeof(*file_number));
@@ -105,14 +89,6 @@ TableCache::TableCache(const ImmutableOptions& ioptions,
105
89
 
106
90
  TableCache::~TableCache() {}
107
91
 
108
- TableReader* TableCache::GetTableReaderFromHandle(Cache::Handle* handle) {
109
- return reinterpret_cast<TableReader*>(cache_->Value(handle));
110
- }
111
-
112
- void TableCache::ReleaseHandle(Cache::Handle* handle) {
113
- cache_->Release(handle);
114
- }
115
-
116
92
  Status TableCache::GetTableReader(
117
93
  const ReadOptions& ro, const FileOptions& file_options,
118
94
  const InternalKeyComparator& internal_comparator,
@@ -178,17 +154,10 @@ Status TableCache::GetTableReader(
178
154
  return s;
179
155
  }
180
156
 
181
- void TableCache::EraseHandle(const FileDescriptor& fd, Cache::Handle* handle) {
182
- ReleaseHandle(handle);
183
- uint64_t number = fd.GetNumber();
184
- Slice key = GetSliceForFileNumber(&number);
185
- cache_->Erase(key);
186
- }
187
-
188
157
  Status TableCache::FindTable(
189
158
  const ReadOptions& ro, const FileOptions& file_options,
190
159
  const InternalKeyComparator& internal_comparator,
191
- const FileMetaData& file_meta, Cache::Handle** handle,
160
+ const FileMetaData& file_meta, TypedHandle** handle,
192
161
  const std::shared_ptr<const SliceTransform>& prefix_extractor,
193
162
  const bool no_io, bool record_read_stats, HistogramImpl* file_read_hist,
194
163
  bool skip_filters, int level, bool prefetch_index_and_filter_in_cache,
@@ -196,7 +165,7 @@ Status TableCache::FindTable(
196
165
  PERF_TIMER_GUARD_WITH_CLOCK(find_table_nanos, ioptions_.clock);
197
166
  uint64_t number = file_meta.fd.GetNumber();
198
167
  Slice key = GetSliceForFileNumber(&number);
199
- *handle = cache_->Lookup(key);
168
+ *handle = cache_.Lookup(key);
200
169
  TEST_SYNC_POINT_CALLBACK("TableCache::FindTable:0",
201
170
  const_cast<bool*>(&no_io));
202
171
 
@@ -206,7 +175,7 @@ Status TableCache::FindTable(
206
175
  }
207
176
  MutexLock load_lock(loader_mutex_.get(key));
208
177
  // We check the cache again under loading mutex
209
- *handle = cache_->Lookup(key);
178
+ *handle = cache_.Lookup(key);
210
179
  if (*handle != nullptr) {
211
180
  return Status::OK();
212
181
  }
@@ -224,8 +193,7 @@ Status TableCache::FindTable(
224
193
  // We do not cache error results so that if the error is transient,
225
194
  // or somebody repairs the file, we recover automatically.
226
195
  } else {
227
- s = cache_->Insert(key, table_reader.get(), 1, &DeleteEntry<TableReader>,
228
- handle);
196
+ s = cache_.Insert(key, table_reader.get(), 1, handle);
229
197
  if (s.ok()) {
230
198
  // Release ownership of table reader.
231
199
  table_reader.release();
@@ -251,7 +219,7 @@ InternalIterator* TableCache::NewIterator(
251
219
 
252
220
  Status s;
253
221
  TableReader* table_reader = nullptr;
254
- Cache::Handle* handle = nullptr;
222
+ TypedHandle* handle = nullptr;
255
223
  if (table_reader_ptr != nullptr) {
256
224
  *table_reader_ptr = nullptr;
257
225
  }
@@ -266,7 +234,7 @@ InternalIterator* TableCache::NewIterator(
266
234
  level, true /* prefetch_index_and_filter_in_cache */,
267
235
  max_file_size_for_l0_meta_pin, file_meta.temperature);
268
236
  if (s.ok()) {
269
- table_reader = GetTableReaderFromHandle(handle);
237
+ table_reader = cache_.Value(handle);
270
238
  }
271
239
  }
272
240
  InternalIterator* result = nullptr;
@@ -280,7 +248,7 @@ InternalIterator* TableCache::NewIterator(
280
248
  file_options.compaction_readahead_size, allow_unprepared_value);
281
249
  }
282
250
  if (handle != nullptr) {
283
- result->RegisterCleanup(&UnrefEntry, cache_, handle);
251
+ cache_.RegisterReleaseAsCleanup(handle, *result);
284
252
  handle = nullptr; // prevent from releasing below
285
253
  }
286
254
 
@@ -330,7 +298,7 @@ InternalIterator* TableCache::NewIterator(
330
298
  }
331
299
 
332
300
  if (handle != nullptr) {
333
- ReleaseHandle(handle);
301
+ cache_.Release(handle);
334
302
  }
335
303
  if (!s.ok()) {
336
304
  assert(result == nullptr);
@@ -348,12 +316,12 @@ Status TableCache::GetRangeTombstoneIterator(
348
316
  const FileDescriptor& fd = file_meta.fd;
349
317
  Status s;
350
318
  TableReader* t = fd.table_reader;
351
- Cache::Handle* handle = nullptr;
319
+ TypedHandle* handle = nullptr;
352
320
  if (t == nullptr) {
353
321
  s = FindTable(options, file_options_, internal_comparator, file_meta,
354
322
  &handle);
355
323
  if (s.ok()) {
356
- t = GetTableReaderFromHandle(handle);
324
+ t = cache_.Value(handle);
357
325
  }
358
326
  }
359
327
  if (s.ok()) {
@@ -362,9 +330,9 @@ Status TableCache::GetRangeTombstoneIterator(
362
330
  }
363
331
  if (handle) {
364
332
  if (*out_iter) {
365
- (*out_iter)->RegisterCleanup(&UnrefEntry, cache_, handle);
333
+ cache_.RegisterReleaseAsCleanup(handle, **out_iter);
366
334
  } else {
367
- ReleaseHandle(handle);
335
+ cache_.Release(handle);
368
336
  }
369
337
  }
370
338
  return s;
@@ -411,16 +379,10 @@ bool TableCache::GetFromRowCache(const Slice& user_key, IterKey& row_cache_key,
411
379
  bool found = false;
412
380
 
413
381
  row_cache_key.TrimAppend(prefix_size, user_key.data(), user_key.size());
414
- if (auto row_handle =
415
- ioptions_.row_cache->Lookup(row_cache_key.GetUserKey())) {
382
+ RowCacheInterface row_cache{ioptions_.row_cache.get()};
383
+ if (auto row_handle = row_cache.Lookup(row_cache_key.GetUserKey())) {
416
384
  // Cleanable routine to release the cache entry
417
385
  Cleanable value_pinner;
418
- auto release_cache_entry_func = [](void* cache_to_clean,
419
- void* cache_handle) {
420
- ((Cache*)cache_to_clean)->Release((Cache::Handle*)cache_handle);
421
- };
422
- auto found_row_cache_entry =
423
- static_cast<const std::string*>(ioptions_.row_cache->Value(row_handle));
424
386
  // If it comes here value is located on the cache.
425
387
  // found_row_cache_entry points to the value on cache,
426
388
  // and value_pinner has cleanup procedure for the cached entry.
@@ -429,9 +391,8 @@ bool TableCache::GetFromRowCache(const Slice& user_key, IterKey& row_cache_key,
429
391
  // cleanup routine under value_pinner will be delegated to
430
392
  // get_context.pinnable_slice_. Cache entry is released when
431
393
  // get_context.pinnable_slice_ is reset.
432
- value_pinner.RegisterCleanup(release_cache_entry_func,
433
- ioptions_.row_cache.get(), row_handle);
434
- replayGetContextLog(*found_row_cache_entry, user_key, get_context,
394
+ row_cache.RegisterReleaseAsCleanup(row_handle, value_pinner);
395
+ replayGetContextLog(*row_cache.Value(row_handle), user_key, get_context,
435
396
  &value_pinner);
436
397
  RecordTick(ioptions_.stats, ROW_CACHE_HIT);
437
398
  found = true;
@@ -470,7 +431,7 @@ Status TableCache::Get(
470
431
  #endif // ROCKSDB_LITE
471
432
  Status s;
472
433
  TableReader* t = fd.table_reader;
473
- Cache::Handle* handle = nullptr;
434
+ TypedHandle* handle = nullptr;
474
435
  if (!done) {
475
436
  assert(s.ok());
476
437
  if (t == nullptr) {
@@ -481,7 +442,7 @@ Status TableCache::Get(
481
442
  level, true /* prefetch_index_and_filter_in_cache */,
482
443
  max_file_size_for_l0_meta_pin, file_meta.temperature);
483
444
  if (s.ok()) {
484
- t = GetTableReaderFromHandle(handle);
445
+ t = cache_.Value(handle);
485
446
  }
486
447
  }
487
448
  SequenceNumber* max_covering_tombstone_seq =
@@ -517,18 +478,17 @@ Status TableCache::Get(
517
478
  #ifndef ROCKSDB_LITE
518
479
  // Put the replay log in row cache only if something was found.
519
480
  if (!done && s.ok() && row_cache_entry && !row_cache_entry->empty()) {
481
+ RowCacheInterface row_cache{ioptions_.row_cache.get()};
520
482
  size_t charge = row_cache_entry->capacity() + sizeof(std::string);
521
- void* row_ptr = new std::string(std::move(*row_cache_entry));
483
+ auto row_ptr = new std::string(std::move(*row_cache_entry));
522
484
  // If row cache is full, it's OK to continue.
523
- ioptions_.row_cache
524
- ->Insert(row_cache_key.GetUserKey(), row_ptr, charge,
525
- &DeleteEntry<std::string>)
485
+ row_cache.Insert(row_cache_key.GetUserKey(), row_ptr, charge)
526
486
  .PermitUncheckedError();
527
487
  }
528
488
  #endif // ROCKSDB_LITE
529
489
 
530
490
  if (handle != nullptr) {
531
- ReleaseHandle(handle);
491
+ cache_.Release(handle);
532
492
  }
533
493
  return s;
534
494
  }
@@ -561,7 +521,7 @@ Status TableCache::MultiGetFilter(
561
521
  const FileMetaData& file_meta,
562
522
  const std::shared_ptr<const SliceTransform>& prefix_extractor,
563
523
  HistogramImpl* file_read_hist, int level,
564
- MultiGetContext::Range* mget_range, Cache::Handle** table_handle) {
524
+ MultiGetContext::Range* mget_range, TypedHandle** table_handle) {
565
525
  auto& fd = file_meta.fd;
566
526
  #ifndef ROCKSDB_LITE
567
527
  IterKey row_cache_key;
@@ -577,7 +537,7 @@ Status TableCache::MultiGetFilter(
577
537
  #endif // ROCKSDB_LITE
578
538
  Status s;
579
539
  TableReader* t = fd.table_reader;
580
- Cache::Handle* handle = nullptr;
540
+ TypedHandle* handle = nullptr;
581
541
  MultiGetContext::Range tombstone_range(*mget_range, mget_range->begin(),
582
542
  mget_range->end());
583
543
  if (t == nullptr) {
@@ -588,7 +548,7 @@ Status TableCache::MultiGetFilter(
588
548
  level, true /* prefetch_index_and_filter_in_cache */,
589
549
  /*max_file_size_for_l0_meta_pin=*/0, file_meta.temperature);
590
550
  if (s.ok()) {
591
- t = GetTableReaderFromHandle(handle);
551
+ t = cache_.Value(handle);
592
552
  }
593
553
  *table_handle = handle;
594
554
  }
@@ -602,7 +562,7 @@ Status TableCache::MultiGetFilter(
602
562
  UpdateRangeTombstoneSeqnums(options, t, tombstone_range);
603
563
  }
604
564
  if (mget_range->empty() && handle) {
605
- ReleaseHandle(handle);
565
+ cache_.Release(handle);
606
566
  *table_handle = nullptr;
607
567
  }
608
568
 
@@ -623,16 +583,16 @@ Status TableCache::GetTableProperties(
623
583
  return Status::OK();
624
584
  }
625
585
 
626
- Cache::Handle* table_handle = nullptr;
586
+ TypedHandle* table_handle = nullptr;
627
587
  Status s = FindTable(ReadOptions(), file_options, internal_comparator,
628
588
  file_meta, &table_handle, prefix_extractor, no_io);
629
589
  if (!s.ok()) {
630
590
  return s;
631
591
  }
632
592
  assert(table_handle);
633
- auto table = GetTableReaderFromHandle(table_handle);
593
+ auto table = cache_.Value(table_handle);
634
594
  *properties = table->GetTableProperties();
635
- ReleaseHandle(table_handle);
595
+ cache_.Release(table_handle);
636
596
  return s;
637
597
  }
638
598
 
@@ -641,18 +601,18 @@ Status TableCache::ApproximateKeyAnchors(
641
601
  const FileMetaData& file_meta, std::vector<TableReader::Anchor>& anchors) {
642
602
  Status s;
643
603
  TableReader* t = file_meta.fd.table_reader;
644
- Cache::Handle* handle = nullptr;
604
+ TypedHandle* handle = nullptr;
645
605
  if (t == nullptr) {
646
606
  s = FindTable(ro, file_options_, internal_comparator, file_meta, &handle);
647
607
  if (s.ok()) {
648
- t = GetTableReaderFromHandle(handle);
608
+ t = cache_.Value(handle);
649
609
  }
650
610
  }
651
611
  if (s.ok() && t != nullptr) {
652
612
  s = t->ApproximateKeyAnchors(ro, anchors);
653
613
  }
654
614
  if (handle != nullptr) {
655
- ReleaseHandle(handle);
615
+ cache_.Release(handle);
656
616
  }
657
617
  return s;
658
618
  }
@@ -668,29 +628,19 @@ size_t TableCache::GetMemoryUsageByTableReader(
668
628
  return table_reader->ApproximateMemoryUsage();
669
629
  }
670
630
 
671
- Cache::Handle* table_handle = nullptr;
631
+ TypedHandle* table_handle = nullptr;
672
632
  Status s = FindTable(ReadOptions(), file_options, internal_comparator,
673
633
  file_meta, &table_handle, prefix_extractor, true);
674
634
  if (!s.ok()) {
675
635
  return 0;
676
636
  }
677
637
  assert(table_handle);
678
- auto table = GetTableReaderFromHandle(table_handle);
638
+ auto table = cache_.Value(table_handle);
679
639
  auto ret = table->ApproximateMemoryUsage();
680
- ReleaseHandle(table_handle);
640
+ cache_.Release(table_handle);
681
641
  return ret;
682
642
  }
683
643
 
684
- bool TableCache::HasEntry(Cache* cache, uint64_t file_number) {
685
- Cache::Handle* handle = cache->Lookup(GetSliceForFileNumber(&file_number));
686
- if (handle) {
687
- cache->Release(handle);
688
- return true;
689
- } else {
690
- return false;
691
- }
692
- }
693
-
694
644
  void TableCache::Evict(Cache* cache, uint64_t file_number) {
695
645
  cache->Erase(GetSliceForFileNumber(&file_number));
696
646
  }
@@ -701,7 +651,7 @@ uint64_t TableCache::ApproximateOffsetOf(
701
651
  const std::shared_ptr<const SliceTransform>& prefix_extractor) {
702
652
  uint64_t result = 0;
703
653
  TableReader* table_reader = file_meta.fd.table_reader;
704
- Cache::Handle* table_handle = nullptr;
654
+ TypedHandle* table_handle = nullptr;
705
655
  if (table_reader == nullptr) {
706
656
  const bool for_compaction = (caller == TableReaderCaller::kCompaction);
707
657
  Status s =
@@ -709,7 +659,7 @@ uint64_t TableCache::ApproximateOffsetOf(
709
659
  &table_handle, prefix_extractor, false /* no_io */,
710
660
  !for_compaction /* record_read_stats */);
711
661
  if (s.ok()) {
712
- table_reader = GetTableReaderFromHandle(table_handle);
662
+ table_reader = cache_.Value(table_handle);
713
663
  }
714
664
  }
715
665
 
@@ -717,7 +667,7 @@ uint64_t TableCache::ApproximateOffsetOf(
717
667
  result = table_reader->ApproximateOffsetOf(key, caller);
718
668
  }
719
669
  if (table_handle != nullptr) {
720
- ReleaseHandle(table_handle);
670
+ cache_.Release(table_handle);
721
671
  }
722
672
 
723
673
  return result;
@@ -729,7 +679,7 @@ uint64_t TableCache::ApproximateSize(
729
679
  const std::shared_ptr<const SliceTransform>& prefix_extractor) {
730
680
  uint64_t result = 0;
731
681
  TableReader* table_reader = file_meta.fd.table_reader;
732
- Cache::Handle* table_handle = nullptr;
682
+ TypedHandle* table_handle = nullptr;
733
683
  if (table_reader == nullptr) {
734
684
  const bool for_compaction = (caller == TableReaderCaller::kCompaction);
735
685
  Status s =
@@ -737,7 +687,7 @@ uint64_t TableCache::ApproximateSize(
737
687
  &table_handle, prefix_extractor, false /* no_io */,
738
688
  !for_compaction /* record_read_stats */);
739
689
  if (s.ok()) {
740
- table_reader = GetTableReaderFromHandle(table_handle);
690
+ table_reader = cache_.Value(table_handle);
741
691
  }
742
692
  }
743
693
 
@@ -745,7 +695,7 @@ uint64_t TableCache::ApproximateSize(
745
695
  result = table_reader->ApproximateSize(start, end, caller);
746
696
  }
747
697
  if (table_handle != nullptr) {
748
- ReleaseHandle(table_handle);
698
+ cache_.Release(table_handle);
749
699
  }
750
700
 
751
701
  return result;