@nxtedition/rocksdb 7.1.20 → 7.1.21

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 (262) hide show
  1. package/deps/rocksdb/rocksdb/CMakeLists.txt +13 -6
  2. package/deps/rocksdb/rocksdb/Makefile +1 -1
  3. package/deps/rocksdb/rocksdb/TARGETS +2 -0
  4. package/deps/rocksdb/rocksdb/cache/cache_reservation_manager_test.cc +1 -0
  5. package/deps/rocksdb/rocksdb/cache/cache_test.cc +4 -4
  6. package/deps/rocksdb/rocksdb/cache/clock_cache.cc +139 -161
  7. package/deps/rocksdb/rocksdb/cache/clock_cache.h +92 -82
  8. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +16 -3
  9. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +9 -3
  10. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +73 -30
  11. package/deps/rocksdb/rocksdb/cache/fast_lru_cache.cc +25 -67
  12. package/deps/rocksdb/rocksdb/cache/fast_lru_cache.h +41 -40
  13. package/deps/rocksdb/rocksdb/cache/lru_cache.cc +109 -155
  14. package/deps/rocksdb/rocksdb/cache/lru_cache.h +127 -149
  15. package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +75 -80
  16. package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +22 -172
  17. package/deps/rocksdb/rocksdb/cache/sharded_cache.h +272 -85
  18. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +12 -4
  19. package/deps/rocksdb/rocksdb/db/blob/blob_counting_iterator_test.cc +1 -0
  20. package/deps/rocksdb/rocksdb/db/blob/blob_file_addition_test.cc +1 -0
  21. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +1 -0
  22. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache_test.cc +1 -0
  23. package/deps/rocksdb/rocksdb/db/blob/blob_file_garbage_test.cc +1 -0
  24. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +1 -0
  25. package/deps/rocksdb/rocksdb/db/blob/blob_garbage_meter_test.cc +1 -0
  26. package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +13 -4
  27. package/deps/rocksdb/rocksdb/db/builder.cc +1 -1
  28. package/deps/rocksdb/rocksdb/db/column_family.cc +15 -1
  29. package/deps/rocksdb/rocksdb/db/compact_files_test.cc +1 -0
  30. package/deps/rocksdb/rocksdb/db/compaction/clipping_iterator_test.cc +1 -0
  31. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +25 -7
  32. package/deps/rocksdb/rocksdb/db/compaction/compaction.h +10 -0
  33. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +22 -8
  34. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +14 -5
  35. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +1 -0
  36. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +38 -12
  37. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +9 -6
  38. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +408 -6
  39. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +244 -54
  40. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +27 -6
  41. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +25 -30
  42. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +87 -26
  43. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +23 -4
  44. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +61 -0
  45. package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +294 -21
  46. package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +1 -0
  47. package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +1 -0
  48. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +28 -10
  49. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +4 -4
  50. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +272 -0
  51. package/deps/rocksdb/rocksdb/db/db_flush_test.cc +38 -0
  52. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +69 -25
  53. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +7 -3
  54. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +29 -12
  55. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +0 -12
  56. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +10 -4
  57. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +35 -22
  58. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +5 -1
  59. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +40 -5
  60. package/deps/rocksdb/rocksdb/db/db_iter.cc +1 -0
  61. package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +1 -0
  62. package/deps/rocksdb/rocksdb/db/db_iter_test.cc +1 -0
  63. package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +22 -0
  64. package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +1 -0
  65. package/deps/rocksdb/rocksdb/db/db_logical_block_size_cache_test.cc +1 -0
  66. package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +72 -5
  67. package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +60 -21
  68. package/deps/rocksdb/rocksdb/db/db_test.cc +170 -1
  69. package/deps/rocksdb/rocksdb/db/db_test2.cc +9 -3
  70. package/deps/rocksdb/rocksdb/db/db_test_util.cc +19 -0
  71. package/deps/rocksdb/rocksdb/db/db_test_util.h +32 -0
  72. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +444 -3
  73. package/deps/rocksdb/rocksdb/db/db_write_test.cc +8 -8
  74. package/deps/rocksdb/rocksdb/db/dbformat.cc +13 -0
  75. package/deps/rocksdb/rocksdb/db/dbformat.h +59 -4
  76. package/deps/rocksdb/rocksdb/db/dbformat_test.cc +1 -0
  77. package/deps/rocksdb/rocksdb/db/experimental.cc +3 -1
  78. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +24 -3
  79. package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +1 -0
  80. package/deps/rocksdb/rocksdb/db/filename_test.cc +1 -0
  81. package/deps/rocksdb/rocksdb/db/flush_job.cc +4 -3
  82. package/deps/rocksdb/rocksdb/db/flush_job_test.cc +1 -0
  83. package/deps/rocksdb/rocksdb/db/forward_iterator.cc +85 -43
  84. package/deps/rocksdb/rocksdb/db/forward_iterator.h +3 -1
  85. package/deps/rocksdb/rocksdb/db/internal_stats.cc +33 -6
  86. package/deps/rocksdb/rocksdb/db/internal_stats.h +6 -0
  87. package/deps/rocksdb/rocksdb/db/listener_test.cc +1 -0
  88. package/deps/rocksdb/rocksdb/db/log_test.cc +1 -0
  89. package/deps/rocksdb/rocksdb/db/log_writer.cc +1 -1
  90. package/deps/rocksdb/rocksdb/db/log_writer.h +1 -1
  91. package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +1 -0
  92. package/deps/rocksdb/rocksdb/db/memtable.cc +158 -56
  93. package/deps/rocksdb/rocksdb/db/memtable.h +2 -0
  94. package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +1 -0
  95. package/deps/rocksdb/rocksdb/db/merge_helper_test.cc +1 -0
  96. package/deps/rocksdb/rocksdb/db/options_file_test.cc +1 -0
  97. package/deps/rocksdb/rocksdb/db/perf_context_test.cc +1 -0
  98. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler_test.cc +1 -0
  99. package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +1 -0
  100. package/deps/rocksdb/rocksdb/db/prefix_test.cc +1 -0
  101. package/deps/rocksdb/rocksdb/db/range_del_aggregator.cc +52 -9
  102. package/deps/rocksdb/rocksdb/db/range_del_aggregator.h +31 -2
  103. package/deps/rocksdb/rocksdb/db/range_del_aggregator_test.cc +1 -0
  104. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.cc +81 -42
  105. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +78 -12
  106. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter_test.cc +1 -0
  107. package/deps/rocksdb/rocksdb/db/repair_test.cc +1 -0
  108. package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +154 -27
  109. package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.cc +21 -4
  110. package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.h +4 -1
  111. package/deps/rocksdb/rocksdb/db/table_cache.cc +18 -6
  112. package/deps/rocksdb/rocksdb/db/table_properties_collector_test.cc +1 -0
  113. package/deps/rocksdb/rocksdb/db/version_builder_test.cc +1 -0
  114. package/deps/rocksdb/rocksdb/db/version_edit_test.cc +1 -0
  115. package/deps/rocksdb/rocksdb/db/version_set.cc +15 -7
  116. package/deps/rocksdb/rocksdb/db/version_set.h +2 -1
  117. package/deps/rocksdb/rocksdb/db/version_set_test.cc +1 -0
  118. package/deps/rocksdb/rocksdb/db/version_util.h +3 -1
  119. package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +1 -0
  120. package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.cc +28 -9
  121. package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.h +21 -0
  122. package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization_test.cc +30 -0
  123. package/deps/rocksdb/rocksdb/db/wide/wide_columns.cc +4 -0
  124. package/deps/rocksdb/rocksdb/db/write_batch.cc +30 -7
  125. package/deps/rocksdb/rocksdb/db/write_batch_internal.h +24 -13
  126. package/deps/rocksdb/rocksdb/db/write_batch_test.cc +5 -4
  127. package/deps/rocksdb/rocksdb/db/write_callback_test.cc +1 -0
  128. package/deps/rocksdb/rocksdb/db/write_controller_test.cc +1 -0
  129. package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +104 -60
  130. package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +199 -108
  131. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +39 -0
  132. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +8 -0
  133. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +3 -1
  134. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +19 -0
  135. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +26 -0
  136. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +247 -118
  137. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +24 -4
  138. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +18 -0
  139. package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +129 -1
  140. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +22 -0
  141. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.h +4 -0
  142. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +312 -117
  143. package/deps/rocksdb/rocksdb/env/env_basic_test.cc +1 -0
  144. package/deps/rocksdb/rocksdb/env/fs_posix.cc +10 -2
  145. package/deps/rocksdb/rocksdb/env/io_posix_test.cc +1 -0
  146. package/deps/rocksdb/rocksdb/env/mock_env_test.cc +1 -0
  147. package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +5 -1
  148. package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +1 -0
  149. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +1 -0
  150. package/deps/rocksdb/rocksdb/file/writable_file_writer.h +1 -1
  151. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +49 -1
  152. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +44 -18
  153. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +8 -7
  154. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +6 -1
  155. package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +3 -0
  156. package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +17 -4
  157. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_reader.h +4 -0
  158. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +7 -0
  159. package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +1 -1
  160. package/deps/rocksdb/rocksdb/include/rocksdb/wide_columns.h +9 -0
  161. package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +3 -6
  162. package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +1 -0
  163. package/deps/rocksdb/rocksdb/logging/env_logger_test.cc +1 -0
  164. package/deps/rocksdb/rocksdb/logging/event_logger_test.cc +1 -0
  165. package/deps/rocksdb/rocksdb/memory/arena.cc +23 -88
  166. package/deps/rocksdb/rocksdb/memory/arena.h +25 -31
  167. package/deps/rocksdb/rocksdb/memory/arena_test.cc +61 -0
  168. package/deps/rocksdb/rocksdb/memory/memory_allocator_test.cc +1 -0
  169. package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +1 -0
  170. package/deps/rocksdb/rocksdb/memtable/skiplist_test.cc +1 -0
  171. package/deps/rocksdb/rocksdb/memtable/write_buffer_manager_test.cc +1 -0
  172. package/deps/rocksdb/rocksdb/monitoring/histogram_test.cc +1 -0
  173. package/deps/rocksdb/rocksdb/monitoring/iostats_context_test.cc +1 -0
  174. package/deps/rocksdb/rocksdb/options/cf_options.cc +19 -0
  175. package/deps/rocksdb/rocksdb/options/cf_options.h +8 -0
  176. package/deps/rocksdb/rocksdb/options/configurable_test.cc +1 -0
  177. package/deps/rocksdb/rocksdb/options/options.cc +7 -0
  178. package/deps/rocksdb/rocksdb/options/options_helper.cc +6 -0
  179. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +6 -0
  180. package/deps/rocksdb/rocksdb/options/options_test.cc +63 -40
  181. package/deps/rocksdb/rocksdb/port/mmap.cc +98 -0
  182. package/deps/rocksdb/rocksdb/port/mmap.h +70 -0
  183. package/deps/rocksdb/rocksdb/port/stack_trace.cc +7 -0
  184. package/deps/rocksdb/rocksdb/port/stack_trace.h +4 -1
  185. package/deps/rocksdb/rocksdb/port/win/port_win.h +2 -7
  186. package/deps/rocksdb/rocksdb/src.mk +1 -0
  187. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +7 -7
  188. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +3 -3
  189. package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +1 -0
  190. package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +1 -0
  191. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block_test.cc +1 -0
  192. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +1 -0
  193. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +1 -0
  194. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +1 -0
  195. package/deps/rocksdb/rocksdb/table/get_context.cc +19 -1
  196. package/deps/rocksdb/rocksdb/table/get_context.h +9 -0
  197. package/deps/rocksdb/rocksdb/table/merger_test.cc +1 -0
  198. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +10 -11
  199. package/deps/rocksdb/rocksdb/table/mock_table.cc +37 -19
  200. package/deps/rocksdb/rocksdb/table/mock_table.h +5 -1
  201. package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +6 -0
  202. package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +33 -0
  203. package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +45 -6
  204. package/deps/rocksdb/rocksdb/test_util/testharness.h +2 -0
  205. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +1 -0
  206. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +5 -0
  207. package/deps/rocksdb/rocksdb/tools/db_bench_tool_test.cc +1 -0
  208. package/deps/rocksdb/rocksdb/tools/io_tracer_parser_test.cc +1 -0
  209. package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +36 -0
  210. package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +1 -0
  211. package/deps/rocksdb/rocksdb/tools/trace_analyzer_test.cc +1 -0
  212. package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer_test.cc +1 -0
  213. package/deps/rocksdb/rocksdb/trace_replay/io_tracer_test.cc +1 -0
  214. package/deps/rocksdb/rocksdb/util/autovector_test.cc +1 -0
  215. package/deps/rocksdb/rocksdb/util/bloom_test.cc +1 -0
  216. package/deps/rocksdb/rocksdb/util/coding_test.cc +1 -0
  217. package/deps/rocksdb/rocksdb/util/crc32c_test.cc +1 -0
  218. package/deps/rocksdb/rocksdb/util/dynamic_bloom_test.cc +1 -0
  219. package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +1 -0
  220. package/deps/rocksdb/rocksdb/util/filelock_test.cc +1 -0
  221. package/deps/rocksdb/rocksdb/util/gflags_compat.h +12 -7
  222. package/deps/rocksdb/rocksdb/util/hash_test.cc +1 -0
  223. package/deps/rocksdb/rocksdb/util/heap_test.cc +4 -2
  224. package/deps/rocksdb/rocksdb/util/random_test.cc +1 -0
  225. package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +1 -0
  226. package/deps/rocksdb/rocksdb/util/repeatable_thread_test.cc +1 -0
  227. package/deps/rocksdb/rocksdb/util/ribbon_test.cc +1 -0
  228. package/deps/rocksdb/rocksdb/util/slice_transform_test.cc +1 -0
  229. package/deps/rocksdb/rocksdb/util/thread_list_test.cc +1 -0
  230. package/deps/rocksdb/rocksdb/util/thread_local_test.cc +1 -0
  231. package/deps/rocksdb/rocksdb/util/timer_test.cc +1 -0
  232. package/deps/rocksdb/rocksdb/util/work_queue_test.cc +4 -0
  233. package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge_test.cc +1 -0
  234. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +13 -0
  235. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +9 -3
  236. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +1 -0
  237. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_format_test.cc +1 -0
  238. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_functional_test.cc +1 -0
  239. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_row_merge_test.cc +1 -0
  240. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_serialize_test.cc +1 -0
  241. package/deps/rocksdb/rocksdb/utilities/env_mirror_test.cc +1 -0
  242. package/deps/rocksdb/rocksdb/utilities/env_timed_test.cc +1 -0
  243. package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.h +8 -0
  244. package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +1 -0
  245. package/deps/rocksdb/rocksdb/utilities/object_registry_test.cc +1 -0
  246. package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +1 -0
  247. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_test.cc +1 -0
  248. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.cc +1 -0
  249. package/deps/rocksdb/rocksdb/utilities/simulator_cache/cache_simulator_test.cc +1 -0
  250. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +1 -0
  251. package/deps/rocksdb/rocksdb/utilities/transactions/timestamped_snapshot_test.cc +1 -0
  252. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +1 -0
  253. package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +1 -0
  254. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +1 -0
  255. package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +1 -0
  256. package/deps/rocksdb/rocksdb/utilities/util_merge_operators_test.cc +1 -0
  257. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +7 -0
  258. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +20 -0
  259. package/index.js +12 -4
  260. package/package.json +1 -1
  261. package/prebuilds/darwin-arm64/node.napi.node +0 -0
  262. package/prebuilds/linux-x64/node.napi.node +0 -0
@@ -173,7 +173,7 @@ inline int LRUHandleTable::FindSlot(const Slice& key,
173
173
  LRUCacheShard::LRUCacheShard(size_t capacity, size_t estimated_value_size,
174
174
  bool strict_capacity_limit,
175
175
  CacheMetadataChargePolicy metadata_charge_policy)
176
- : CacheShard(metadata_charge_policy),
176
+ : CacheShardBase(metadata_charge_policy),
177
177
  capacity_(capacity),
178
178
  strict_capacity_limit_(strict_capacity_limit),
179
179
  table_(
@@ -211,27 +211,27 @@ void LRUCacheShard::EraseUnRefEntries() {
211
211
  void LRUCacheShard::ApplyToSomeEntries(
212
212
  const std::function<void(const Slice& key, void* value, size_t charge,
213
213
  DeleterFn deleter)>& callback,
214
- uint32_t average_entries_per_lock, uint32_t* state) {
214
+ size_t average_entries_per_lock, size_t* state) {
215
215
  // The state is essentially going to be the starting hash, which works
216
216
  // nicely even if we resize between calls because we use upper-most
217
217
  // hash bits for table indexes.
218
218
  DMutexLock l(mutex_);
219
- uint32_t length_bits = table_.GetLengthBits();
220
- uint32_t length = table_.GetTableSize();
219
+ size_t length_bits = table_.GetLengthBits();
220
+ size_t length = table_.GetTableSize();
221
221
 
222
222
  assert(average_entries_per_lock > 0);
223
223
  // Assuming we are called with same average_entries_per_lock repeatedly,
224
224
  // this simplifies some logic (index_end will not overflow).
225
225
  assert(average_entries_per_lock < length || *state == 0);
226
226
 
227
- uint32_t index_begin = *state >> (32 - length_bits);
228
- uint32_t index_end = index_begin + average_entries_per_lock;
227
+ size_t index_begin = *state >> (sizeof(size_t) * 8u - length_bits);
228
+ size_t index_end = index_begin + average_entries_per_lock;
229
229
  if (index_end >= length) {
230
230
  // Going to end
231
231
  index_end = length;
232
- *state = UINT32_MAX;
232
+ *state = SIZE_MAX;
233
233
  } else {
234
- *state = index_end << (32 - length_bits);
234
+ *state = index_end << (sizeof(size_t) * 8u - length_bits);
235
235
  }
236
236
 
237
237
  table_.ApplyToEntriesRange(
@@ -322,8 +322,7 @@ void LRUCacheShard::SetStrictCapacityLimit(bool strict_capacity_limit) {
322
322
 
323
323
  Status LRUCacheShard::Insert(const Slice& key, uint32_t hash, void* value,
324
324
  size_t charge, Cache::DeleterFn deleter,
325
- Cache::Handle** handle,
326
- Cache::Priority /*priority*/) {
325
+ LRUHandle** handle, Cache::Priority /*priority*/) {
327
326
  if (key.size() != kCacheKeySize) {
328
327
  return Status::NotSupported("FastLRUCache only supports key size " +
329
328
  std::to_string(kCacheKeySize) + "B");
@@ -409,7 +408,7 @@ Status LRUCacheShard::Insert(const Slice& key, uint32_t hash, void* value,
409
408
  if (!h->HasRefs()) {
410
409
  h->Ref();
411
410
  }
412
- *handle = reinterpret_cast<Cache::Handle*>(h);
411
+ *handle = h;
413
412
  }
414
413
  }
415
414
  }
@@ -422,7 +421,7 @@ Status LRUCacheShard::Insert(const Slice& key, uint32_t hash, void* value,
422
421
  return s;
423
422
  }
424
423
 
425
- Cache::Handle* LRUCacheShard::Lookup(const Slice& key, uint32_t hash) {
424
+ LRUHandle* LRUCacheShard::Lookup(const Slice& key, uint32_t hash) {
426
425
  LRUHandle* h = nullptr;
427
426
  {
428
427
  DMutexLock l(mutex_);
@@ -437,23 +436,21 @@ Cache::Handle* LRUCacheShard::Lookup(const Slice& key, uint32_t hash) {
437
436
  h->Ref();
438
437
  }
439
438
  }
440
- return reinterpret_cast<Cache::Handle*>(h);
439
+ return h;
441
440
  }
442
441
 
443
- bool LRUCacheShard::Ref(Cache::Handle* h) {
444
- LRUHandle* e = reinterpret_cast<LRUHandle*>(h);
442
+ bool LRUCacheShard::Ref(LRUHandle* h) {
445
443
  DMutexLock l(mutex_);
446
444
  // To create another reference - entry must be already externally referenced.
447
- assert(e->HasRefs());
448
- e->Ref();
445
+ assert(h->HasRefs());
446
+ h->Ref();
449
447
  return true;
450
448
  }
451
449
 
452
- bool LRUCacheShard::Release(Cache::Handle* handle, bool erase_if_last_ref) {
453
- if (handle == nullptr) {
450
+ bool LRUCacheShard::Release(LRUHandle* h, bool erase_if_last_ref) {
451
+ if (h == nullptr) {
454
452
  return false;
455
453
  }
456
- LRUHandle* h = reinterpret_cast<LRUHandle*>(handle);
457
454
  LRUHandle copy;
458
455
  bool last_reference = false;
459
456
  {
@@ -535,41 +532,18 @@ size_t LRUCacheShard::GetTableAddressCount() const {
535
532
  return table_.GetTableSize();
536
533
  }
537
534
 
538
- std::string LRUCacheShard::GetPrintableOptions() const { return std::string{}; }
539
-
540
535
  LRUCache::LRUCache(size_t capacity, size_t estimated_value_size,
541
536
  int num_shard_bits, bool strict_capacity_limit,
542
537
  CacheMetadataChargePolicy metadata_charge_policy)
543
- : ShardedCache(capacity, num_shard_bits, strict_capacity_limit) {
538
+ : ShardedCache(capacity, num_shard_bits, strict_capacity_limit,
539
+ nullptr /*allocator*/) {
544
540
  assert(estimated_value_size > 0 ||
545
541
  metadata_charge_policy != kDontChargeCacheMetadata);
546
- num_shards_ = 1 << num_shard_bits;
547
- shards_ = reinterpret_cast<LRUCacheShard*>(
548
- port::cacheline_aligned_alloc(sizeof(LRUCacheShard) * num_shards_));
549
- size_t per_shard = (capacity + (num_shards_ - 1)) / num_shards_;
550
- for (int i = 0; i < num_shards_; i++) {
551
- new (&shards_[i])
552
- LRUCacheShard(per_shard, estimated_value_size, strict_capacity_limit,
553
- metadata_charge_policy);
554
- }
555
- }
556
-
557
- LRUCache::~LRUCache() {
558
- if (shards_ != nullptr) {
559
- assert(num_shards_ > 0);
560
- for (int i = 0; i < num_shards_; i++) {
561
- shards_[i].~LRUCacheShard();
562
- }
563
- port::cacheline_aligned_free(shards_);
564
- }
565
- }
566
-
567
- CacheShard* LRUCache::GetShard(uint32_t shard) {
568
- return reinterpret_cast<CacheShard*>(&shards_[shard]);
569
- }
570
-
571
- const CacheShard* LRUCache::GetShard(uint32_t shard) const {
572
- return reinterpret_cast<CacheShard*>(&shards_[shard]);
542
+ size_t per_shard = GetPerShardCapacity();
543
+ InitShards([=](LRUCacheShard* cs) {
544
+ new (cs) LRUCacheShard(per_shard, estimated_value_size,
545
+ strict_capacity_limit, metadata_charge_policy);
546
+ });
573
547
  }
574
548
 
575
549
  void* LRUCache::Value(Handle* handle) {
@@ -577,12 +551,8 @@ void* LRUCache::Value(Handle* handle) {
577
551
  }
578
552
 
579
553
  size_t LRUCache::GetCharge(Handle* handle) const {
580
- CacheMetadataChargePolicy metadata_charge_policy = kDontChargeCacheMetadata;
581
- if (num_shards_ > 0) {
582
- metadata_charge_policy = shards_[0].metadata_charge_policy_;
583
- }
584
554
  return reinterpret_cast<const LRUHandle*>(handle)->GetCharge(
585
- metadata_charge_policy);
555
+ GetShard(0).metadata_charge_policy_);
586
556
  }
587
557
 
588
558
  Cache::DeleterFn LRUCache::GetDeleter(Handle* handle) const {
@@ -590,18 +560,6 @@ Cache::DeleterFn LRUCache::GetDeleter(Handle* handle) const {
590
560
  return h->deleter;
591
561
  }
592
562
 
593
- uint32_t LRUCache::GetHash(Handle* handle) const {
594
- return reinterpret_cast<const LRUHandle*>(handle)->hash;
595
- }
596
-
597
- void LRUCache::DisownData() {
598
- // Leak data only if that won't generate an ASAN/valgrind warning.
599
- if (!kMustFreeHeapAllocations) {
600
- shards_ = nullptr;
601
- num_shards_ = 0;
602
- }
603
- }
604
-
605
563
  } // namespace fast_lru_cache
606
564
 
607
565
  std::shared_ptr<Cache> NewFastLRUCache(
@@ -141,6 +141,9 @@ struct LRUHandle {
141
141
 
142
142
  Slice key() const { return Slice(key_data.data(), kCacheKeySize); }
143
143
 
144
+ // For HandleImpl concept
145
+ uint32_t GetHash() const { return hash; }
146
+
144
147
  // Increase the reference count by 1.
145
148
  void Ref() { refs++; }
146
149
 
@@ -260,8 +263,8 @@ class LRUHandleTable {
260
263
  void Assign(int slot, LRUHandle* h);
261
264
 
262
265
  template <typename T>
263
- void ApplyToEntriesRange(T func, uint32_t index_begin, uint32_t index_end) {
264
- for (uint32_t i = index_begin; i < index_end; i++) {
266
+ void ApplyToEntriesRange(T func, size_t index_begin, size_t index_end) {
267
+ for (size_t i = index_begin; i < index_end; i++) {
265
268
  LRUHandle* h = &array_[i];
266
269
  if (h->IsVisible()) {
267
270
  func(h);
@@ -316,20 +319,30 @@ class LRUHandleTable {
316
319
  };
317
320
 
318
321
  // A single shard of sharded cache.
319
- class ALIGN_AS(CACHE_LINE_SIZE) LRUCacheShard final : public CacheShard {
322
+ class ALIGN_AS(CACHE_LINE_SIZE) LRUCacheShard final : public CacheShardBase {
320
323
  public:
321
324
  LRUCacheShard(size_t capacity, size_t estimated_value_size,
322
325
  bool strict_capacity_limit,
323
326
  CacheMetadataChargePolicy metadata_charge_policy);
324
- ~LRUCacheShard() override = default;
327
+
328
+ // For CacheShard concept
329
+ using HandleImpl = LRUHandle;
330
+
331
+ // Keep 32-bit hashing for now (FIXME: upgrade to 64-bit)
332
+ using HashVal = uint32_t;
333
+ using HashCref = uint32_t;
334
+ static inline HashVal ComputeHash(const Slice& key) {
335
+ return Lower32of64(GetSliceNPHash64(key));
336
+ }
337
+ static inline uint32_t HashPieceForSharding(HashCref hash) { return hash; }
325
338
 
326
339
  // Separate from constructor so caller can easily make an array of LRUCache
327
340
  // if current usage is more than new capacity, the function will attempt to
328
341
  // free the needed space.
329
- void SetCapacity(size_t capacity) override;
342
+ void SetCapacity(size_t capacity);
330
343
 
331
344
  // Set the flag to reject insertion if cache if full.
332
- void SetStrictCapacityLimit(bool strict_capacity_limit) override;
345
+ void SetStrictCapacityLimit(bool strict_capacity_limit);
333
346
 
334
347
  // Like Cache methods, but with an extra "hash" parameter.
335
348
  // Insert an item into the hash table and, if handle is null, insert into
@@ -337,48 +350,45 @@ class ALIGN_AS(CACHE_LINE_SIZE) LRUCacheShard final : public CacheShard {
337
350
  // and free_handle_on_fail is true, the item is deleted and handle is set to
338
351
  // nullptr.
339
352
  Status Insert(const Slice& key, uint32_t hash, void* value, size_t charge,
340
- Cache::DeleterFn deleter, Cache::Handle** handle,
341
- Cache::Priority priority) override;
353
+ Cache::DeleterFn deleter, LRUHandle** handle,
354
+ Cache::Priority priority);
342
355
 
343
356
  Status Insert(const Slice& key, uint32_t hash, void* value,
344
357
  const Cache::CacheItemHelper* helper, size_t charge,
345
- Cache::Handle** handle, Cache::Priority priority) override {
358
+ LRUHandle** handle, Cache::Priority priority) {
346
359
  return Insert(key, hash, value, charge, helper->del_cb, handle, priority);
347
360
  }
348
361
 
349
- Cache::Handle* Lookup(const Slice& key, uint32_t hash,
350
- const Cache::CacheItemHelper* /*helper*/,
351
- const Cache::CreateCallback& /*create_cb*/,
352
- Cache::Priority /*priority*/, bool /*wait*/,
353
- Statistics* /*stats*/) override {
362
+ LRUHandle* Lookup(const Slice& key, uint32_t hash,
363
+ const Cache::CacheItemHelper* /*helper*/,
364
+ const Cache::CreateCallback& /*create_cb*/,
365
+ Cache::Priority /*priority*/, bool /*wait*/,
366
+ Statistics* /*stats*/) {
354
367
  return Lookup(key, hash);
355
368
  }
356
- Cache::Handle* Lookup(const Slice& key, uint32_t hash) override;
369
+ LRUHandle* Lookup(const Slice& key, uint32_t hash);
357
370
 
358
- bool Release(Cache::Handle* handle, bool /*useful*/,
359
- bool erase_if_last_ref) override {
371
+ bool Release(LRUHandle* handle, bool /*useful*/, bool erase_if_last_ref) {
360
372
  return Release(handle, erase_if_last_ref);
361
373
  }
362
- bool IsReady(Cache::Handle* /*handle*/) override { return true; }
363
- void Wait(Cache::Handle* /*handle*/) override {}
374
+ bool IsReady(LRUHandle* /*handle*/) { return true; }
375
+ void Wait(LRUHandle* /*handle*/) {}
364
376
 
365
- bool Ref(Cache::Handle* handle) override;
366
- bool Release(Cache::Handle* handle, bool erase_if_last_ref = false) override;
367
- void Erase(const Slice& key, uint32_t hash) override;
377
+ bool Ref(LRUHandle* handle);
378
+ bool Release(LRUHandle* handle, bool erase_if_last_ref = false);
379
+ void Erase(const Slice& key, uint32_t hash);
368
380
 
369
- size_t GetUsage() const override;
370
- size_t GetPinnedUsage() const override;
371
- size_t GetOccupancyCount() const override;
372
- size_t GetTableAddressCount() const override;
381
+ size_t GetUsage() const;
382
+ size_t GetPinnedUsage() const;
383
+ size_t GetOccupancyCount() const;
384
+ size_t GetTableAddressCount() const;
373
385
 
374
386
  void ApplyToSomeEntries(
375
387
  const std::function<void(const Slice& key, void* value, size_t charge,
376
388
  DeleterFn deleter)>& callback,
377
- uint32_t average_entries_per_lock, uint32_t* state) override;
378
-
379
- void EraseUnRefEntries() override;
389
+ size_t average_entries_per_lock, size_t* state);
380
390
 
381
- std::string GetPrintableOptions() const override;
391
+ void EraseUnRefEntries();
382
392
 
383
393
  private:
384
394
  friend class LRUCache;
@@ -446,25 +456,16 @@ class LRUCache
446
456
  #ifdef NDEBUG
447
457
  final
448
458
  #endif
449
- : public ShardedCache {
459
+ : public ShardedCache<LRUCacheShard> {
450
460
  public:
451
461
  LRUCache(size_t capacity, size_t estimated_value_size, int num_shard_bits,
452
462
  bool strict_capacity_limit,
453
463
  CacheMetadataChargePolicy metadata_charge_policy =
454
464
  kDontChargeCacheMetadata);
455
- ~LRUCache() override;
456
465
  const char* Name() const override { return "LRUCache"; }
457
- CacheShard* GetShard(uint32_t shard) override;
458
- const CacheShard* GetShard(uint32_t shard) const override;
459
466
  void* Value(Handle* handle) override;
460
467
  size_t GetCharge(Handle* handle) const override;
461
- uint32_t GetHash(Handle* handle) const override;
462
468
  DeleterFn GetDeleter(Handle* handle) const override;
463
- void DisownData() override;
464
-
465
- private:
466
- LRUCacheShard* shards_ = nullptr;
467
- int num_shards_ = 0;
468
469
  };
469
470
  } // namespace fast_lru_cache
470
471