@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
@@ -94,7 +94,9 @@ Status UpdateManifestForFilesState(
94
94
 
95
95
  std::unique_ptr<FSSequentialFile> f;
96
96
  FileOptions fopts;
97
- fopts.temperature = lf->temperature;
97
+ // Use kUnknown to signal the FileSystem to search all tiers for the
98
+ // file.
99
+ fopts.temperature = Temperature::kUnknown;
98
100
 
99
101
  IOStatus file_ios =
100
102
  fs->NewSequentialFile(fname, fopts, &f, /*dbg*/ nullptr);
@@ -339,9 +339,30 @@ Status ExternalSstFileIngestionJob::Prepare(
339
339
  Status ExternalSstFileIngestionJob::NeedsFlush(bool* flush_needed,
340
340
  SuperVersion* super_version) {
341
341
  autovector<Range> ranges;
342
- for (const IngestedFileInfo& file_to_ingest : files_to_ingest_) {
343
- ranges.emplace_back(file_to_ingest.smallest_internal_key.user_key(),
344
- file_to_ingest.largest_internal_key.user_key());
342
+ autovector<std::string> keys;
343
+ size_t ts_sz = cfd_->user_comparator()->timestamp_size();
344
+ if (ts_sz) {
345
+ // Check all ranges [begin, end] inclusively. Add maximum
346
+ // timestamp to include all `begin` keys, and add minimal timestamp to
347
+ // include all `end` keys.
348
+ for (const IngestedFileInfo& file_to_ingest : files_to_ingest_) {
349
+ std::string begin_str;
350
+ std::string end_str;
351
+ AppendUserKeyWithMaxTimestamp(
352
+ &begin_str, file_to_ingest.smallest_internal_key.user_key(), ts_sz);
353
+ AppendKeyWithMinTimestamp(
354
+ &end_str, file_to_ingest.largest_internal_key.user_key(), ts_sz);
355
+ keys.emplace_back(std::move(begin_str));
356
+ keys.emplace_back(std::move(end_str));
357
+ }
358
+ for (size_t i = 0; i < files_to_ingest_.size(); ++i) {
359
+ ranges.emplace_back(keys[2 * i], keys[2 * i + 1]);
360
+ }
361
+ } else {
362
+ for (const IngestedFileInfo& file_to_ingest : files_to_ingest_) {
363
+ ranges.emplace_back(file_to_ingest.smallest_internal_key.user_key(),
364
+ file_to_ingest.largest_internal_key.user_key());
365
+ }
345
366
  }
346
367
  Status status = cfd_->RangesOverlapWithMemtables(
347
368
  ranges, super_version, db_options_.allow_data_in_errors, flush_needed);
@@ -631,6 +631,7 @@ INSTANTIATE_TEST_CASE_P(
631
631
  } // namespace ROCKSDB_NAMESPACE
632
632
 
633
633
  int main(int argc, char** argv) {
634
+ ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
634
635
  ::testing::InitGoogleTest(&argc, argv);
635
636
  RegisterCustomObjects(argc, argv);
636
637
  return RUN_ALL_TESTS();
@@ -237,6 +237,7 @@ TEST_F(FileNameTest, NormalizePath) {
237
237
  } // namespace ROCKSDB_NAMESPACE
238
238
 
239
239
  int main(int argc, char** argv) {
240
+ ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
240
241
  ::testing::InitGoogleTest(&argc, argv);
241
242
  return RUN_ALL_TESTS();
242
243
  }
@@ -420,9 +420,11 @@ Status FlushJob::MemPurge() {
420
420
  // Place iterator at the First (meaning most recent) key node.
421
421
  iter->SeekToFirst();
422
422
 
423
+ const std::string* const full_history_ts_low = &(cfd_->GetFullHistoryTsLow());
423
424
  std::unique_ptr<CompactionRangeDelAggregator> range_del_agg(
424
425
  new CompactionRangeDelAggregator(&(cfd_->internal_comparator()),
425
- existing_snapshots_));
426
+ existing_snapshots_,
427
+ full_history_ts_low));
426
428
  for (auto& rd_iter : range_del_iters) {
427
429
  range_del_agg->AddTombstones(std::move(rd_iter));
428
430
  }
@@ -479,8 +481,7 @@ Status FlushJob::MemPurge() {
479
481
  ioptions->enforce_single_del_contracts,
480
482
  /*manual_compaction_canceled=*/kManualCompactionCanceledFalse,
481
483
  /*compaction=*/nullptr, compaction_filter.get(),
482
- /*shutting_down=*/nullptr, ioptions->info_log,
483
- &(cfd_->GetFullHistoryTsLow()));
484
+ /*shutting_down=*/nullptr, ioptions->info_log, full_history_ts_low);
484
485
 
485
486
  // Set earliest sequence number in the new memtable
486
487
  // to be equal to the earliest sequence number of the
@@ -739,6 +739,7 @@ TEST_F(FlushJobTimestampTest, NoKeyExpired) {
739
739
  } // namespace ROCKSDB_NAMESPACE
740
740
 
741
741
  int main(int argc, char** argv) {
742
+ ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
742
743
  ::testing::InitGoogleTest(&argc, argv);
743
744
  return RUN_ALL_TESTS();
744
745
  }
@@ -351,7 +351,7 @@ void ForwardIterator::SeekToFirst() {
351
351
  } else if (immutable_status_.IsIncomplete()) {
352
352
  ResetIncompleteIterators();
353
353
  }
354
- SeekInternal(Slice(), true);
354
+ SeekInternal(Slice(), true, false);
355
355
  }
356
356
 
357
357
  bool ForwardIterator::IsOverUpperBound(const Slice& internal_key) const {
@@ -369,48 +369,60 @@ void ForwardIterator::Seek(const Slice& internal_key) {
369
369
  } else if (immutable_status_.IsIncomplete()) {
370
370
  ResetIncompleteIterators();
371
371
  }
372
- SeekInternal(internal_key, false);
372
+
373
+ SeekInternal(internal_key, false, false);
374
+ if (read_options_.async_io) {
375
+ SeekInternal(internal_key, false, true);
376
+ }
373
377
  }
374
378
 
379
+ // In case of async_io, SeekInternal is called twice with seek_after_async_io
380
+ // enabled in second call which only does seeking part to retrieve the blocks.
375
381
  void ForwardIterator::SeekInternal(const Slice& internal_key,
376
- bool seek_to_first) {
382
+ bool seek_to_first,
383
+ bool seek_after_async_io) {
377
384
  assert(mutable_iter_);
378
385
  // mutable
379
- seek_to_first ? mutable_iter_->SeekToFirst() :
380
- mutable_iter_->Seek(internal_key);
386
+ if (!seek_after_async_io) {
387
+ seek_to_first ? mutable_iter_->SeekToFirst()
388
+ : mutable_iter_->Seek(internal_key);
389
+ }
381
390
 
382
391
  // immutable
383
392
  // TODO(ljin): NeedToSeekImmutable has negative impact on performance
384
393
  // if it turns to need to seek immutable often. We probably want to have
385
394
  // an option to turn it off.
386
- if (seek_to_first || NeedToSeekImmutable(internal_key)) {
387
- immutable_status_ = Status::OK();
388
- if (has_iter_trimmed_for_upper_bound_ &&
389
- (
390
- // prev_ is not set yet
391
- is_prev_set_ == false ||
392
- // We are doing SeekToFirst() and internal_key.size() = 0
393
- seek_to_first ||
394
- // prev_key_ > internal_key
395
- cfd_->internal_comparator().InternalKeyComparator::Compare(
396
- prev_key_.GetInternalKey(), internal_key) > 0)) {
397
- // Some iterators are trimmed. Need to rebuild.
398
- RebuildIterators(true);
399
- // Already seeked mutable iter, so seek again
400
- seek_to_first ? mutable_iter_->SeekToFirst()
401
- : mutable_iter_->Seek(internal_key);
402
- }
403
- {
404
- auto tmp = MinIterHeap(MinIterComparator(&cfd_->internal_comparator()));
405
- immutable_min_heap_.swap(tmp);
406
- }
407
- for (size_t i = 0; i < imm_iters_.size(); i++) {
408
- auto* m = imm_iters_[i];
409
- seek_to_first ? m->SeekToFirst() : m->Seek(internal_key);
410
- if (!m->status().ok()) {
411
- immutable_status_ = m->status();
412
- } else if (m->Valid()) {
413
- immutable_min_heap_.push(m);
395
+ if (seek_to_first || seek_after_async_io ||
396
+ NeedToSeekImmutable(internal_key)) {
397
+ if (!seek_after_async_io) {
398
+ immutable_status_ = Status::OK();
399
+ if (has_iter_trimmed_for_upper_bound_ &&
400
+ (
401
+ // prev_ is not set yet
402
+ is_prev_set_ == false ||
403
+ // We are doing SeekToFirst() and internal_key.size() = 0
404
+ seek_to_first ||
405
+ // prev_key_ > internal_key
406
+ cfd_->internal_comparator().InternalKeyComparator::Compare(
407
+ prev_key_.GetInternalKey(), internal_key) > 0)) {
408
+ // Some iterators are trimmed. Need to rebuild.
409
+ RebuildIterators(true);
410
+ // Already seeked mutable iter, so seek again
411
+ seek_to_first ? mutable_iter_->SeekToFirst()
412
+ : mutable_iter_->Seek(internal_key);
413
+ }
414
+ {
415
+ auto tmp = MinIterHeap(MinIterComparator(&cfd_->internal_comparator()));
416
+ immutable_min_heap_.swap(tmp);
417
+ }
418
+ for (size_t i = 0; i < imm_iters_.size(); i++) {
419
+ auto* m = imm_iters_[i];
420
+ seek_to_first ? m->SeekToFirst() : m->Seek(internal_key);
421
+ if (!m->status().ok()) {
422
+ immutable_status_ = m->status();
423
+ } else if (m->Valid()) {
424
+ immutable_min_heap_.push(m);
425
+ }
414
426
  }
415
427
  }
416
428
 
@@ -424,12 +436,19 @@ void ForwardIterator::SeekInternal(const Slice& internal_key,
424
436
  if (!l0_iters_[i]) {
425
437
  continue;
426
438
  }
439
+ if (seek_after_async_io) {
440
+ if (!l0_iters_[i]->status().IsTryAgain()) {
441
+ continue;
442
+ }
443
+ }
444
+
427
445
  if (seek_to_first) {
428
446
  l0_iters_[i]->SeekToFirst();
429
447
  } else {
430
448
  // If the target key passes over the largest key, we are sure Next()
431
449
  // won't go over this file.
432
- if (user_comparator_->Compare(target_user_key,
450
+ if (seek_after_async_io == false &&
451
+ user_comparator_->Compare(target_user_key,
433
452
  l0[i]->largest.user_key()) > 0) {
434
453
  if (read_options_.iterate_upper_bound != nullptr) {
435
454
  has_iter_trimmed_for_upper_bound_ = true;
@@ -441,7 +460,10 @@ void ForwardIterator::SeekInternal(const Slice& internal_key,
441
460
  l0_iters_[i]->Seek(internal_key);
442
461
  }
443
462
 
444
- if (!l0_iters_[i]->status().ok()) {
463
+ if (l0_iters_[i]->status().IsTryAgain()) {
464
+ assert(!seek_after_async_io);
465
+ continue;
466
+ } else if (!l0_iters_[i]->status().ok()) {
445
467
  immutable_status_ = l0_iters_[i]->status();
446
468
  } else if (l0_iters_[i]->Valid() &&
447
469
  !IsOverUpperBound(l0_iters_[i]->key())) {
@@ -462,19 +484,30 @@ void ForwardIterator::SeekInternal(const Slice& internal_key,
462
484
  if (level_iters_[level - 1] == nullptr) {
463
485
  continue;
464
486
  }
487
+
488
+ if (seek_after_async_io) {
489
+ if (!level_iters_[level - 1]->status().IsTryAgain()) {
490
+ continue;
491
+ }
492
+ }
465
493
  uint32_t f_idx = 0;
466
- if (!seek_to_first) {
494
+ if (!seek_to_first && !seek_after_async_io) {
467
495
  f_idx = FindFileInRange(level_files, internal_key, 0,
468
496
  static_cast<uint32_t>(level_files.size()));
469
497
  }
470
498
 
471
499
  // Seek
472
- if (f_idx < level_files.size()) {
473
- level_iters_[level - 1]->SetFileIndex(f_idx);
474
- seek_to_first ? level_iters_[level - 1]->SeekToFirst() :
475
- level_iters_[level - 1]->Seek(internal_key);
500
+ if (seek_after_async_io || f_idx < level_files.size()) {
501
+ if (!seek_after_async_io) {
502
+ level_iters_[level - 1]->SetFileIndex(f_idx);
503
+ }
504
+ seek_to_first ? level_iters_[level - 1]->SeekToFirst()
505
+ : level_iters_[level - 1]->Seek(internal_key);
476
506
 
477
- if (!level_iters_[level - 1]->status().ok()) {
507
+ if (level_iters_[level - 1]->status().IsTryAgain()) {
508
+ assert(!seek_after_async_io);
509
+ continue;
510
+ } else if (!level_iters_[level - 1]->status().ok()) {
478
511
  immutable_status_ = level_iters_[level - 1]->status();
479
512
  } else if (level_iters_[level - 1]->Valid() &&
480
513
  !IsOverUpperBound(level_iters_[level - 1]->key())) {
@@ -502,7 +535,11 @@ void ForwardIterator::SeekInternal(const Slice& internal_key,
502
535
  immutable_min_heap_.push(current_);
503
536
  }
504
537
 
505
- UpdateCurrent();
538
+ // For async_io, it should be updated when seek_after_async_io is true (in
539
+ // second call).
540
+ if (seek_to_first || !read_options_.async_io || seek_after_async_io) {
541
+ UpdateCurrent();
542
+ }
506
543
  TEST_SYNC_POINT_CALLBACK("ForwardIterator::SeekInternal:Return", this);
507
544
  }
508
545
 
@@ -520,7 +557,12 @@ void ForwardIterator::Next() {
520
557
  } else {
521
558
  RenewIterators();
522
559
  }
523
- SeekInternal(old_key, false);
560
+
561
+ SeekInternal(old_key, false, false);
562
+ if (read_options_.async_io) {
563
+ SeekInternal(old_key, false, true);
564
+ }
565
+
524
566
  if (!valid_ || key().compare(old_key) != 0) {
525
567
  return;
526
568
  }
@@ -101,7 +101,9 @@ class ForwardIterator : public InternalIterator {
101
101
  void BuildLevelIterators(const VersionStorageInfo* vstorage,
102
102
  SuperVersion* sv);
103
103
  void ResetIncompleteIterators();
104
- void SeekInternal(const Slice& internal_key, bool seek_to_first);
104
+ void SeekInternal(const Slice& internal_key, bool seek_to_first,
105
+ bool seek_after_async_io);
106
+
105
107
  void UpdateCurrent();
106
108
  bool NeedToSeekImmutable(const Slice& internal_key);
107
109
  void DeleteCurrentIter();
@@ -247,6 +247,8 @@ static const std::string cf_file_histogram = "cf-file-histogram";
247
247
  static const std::string dbstats = "dbstats";
248
248
  static const std::string levelstats = "levelstats";
249
249
  static const std::string block_cache_entry_stats = "block-cache-entry-stats";
250
+ static const std::string fast_block_cache_entry_stats =
251
+ "fast-block-cache-entry-stats";
250
252
  static const std::string num_immutable_mem_table = "num-immutable-mem-table";
251
253
  static const std::string num_immutable_mem_table_flushed =
252
254
  "num-immutable-mem-table-flushed";
@@ -326,6 +328,8 @@ const std::string DB::Properties::kDBStats = rocksdb_prefix + dbstats;
326
328
  const std::string DB::Properties::kLevelStats = rocksdb_prefix + levelstats;
327
329
  const std::string DB::Properties::kBlockCacheEntryStats =
328
330
  rocksdb_prefix + block_cache_entry_stats;
331
+ const std::string DB::Properties::kFastBlockCacheEntryStats =
332
+ rocksdb_prefix + fast_block_cache_entry_stats;
329
333
  const std::string DB::Properties::kNumImmutableMemTable =
330
334
  rocksdb_prefix + num_immutable_mem_table;
331
335
  const std::string DB::Properties::kNumImmutableMemTableFlushed =
@@ -446,6 +450,9 @@ const UnorderedMap<std::string, DBPropertyInfo>
446
450
  {DB::Properties::kBlockCacheEntryStats,
447
451
  {true, &InternalStats::HandleBlockCacheEntryStats, nullptr,
448
452
  &InternalStats::HandleBlockCacheEntryStatsMap, nullptr}},
453
+ {DB::Properties::kFastBlockCacheEntryStats,
454
+ {true, &InternalStats::HandleFastBlockCacheEntryStats, nullptr,
455
+ &InternalStats::HandleFastBlockCacheEntryStatsMap, nullptr}},
449
456
  {DB::Properties::kSSTables,
450
457
  {false, &InternalStats::HandleSsTables, nullptr, nullptr, nullptr}},
451
458
  {DB::Properties::kAggregatedTableProperties,
@@ -739,30 +746,50 @@ void InternalStats::CacheEntryRoleStats::ToMap(
739
746
  }
740
747
  }
741
748
 
742
- bool InternalStats::HandleBlockCacheEntryStats(std::string* value,
743
- Slice /*suffix*/) {
749
+ bool InternalStats::HandleBlockCacheEntryStatsInternal(std::string* value,
750
+ bool fast) {
744
751
  if (!cache_entry_stats_collector_) {
745
752
  return false;
746
753
  }
747
- CollectCacheEntryStats(/*foreground*/ true);
754
+ CollectCacheEntryStats(!fast /* foreground */);
748
755
  CacheEntryRoleStats stats;
749
756
  cache_entry_stats_collector_->GetStats(&stats);
750
757
  *value = stats.ToString(clock_);
751
758
  return true;
752
759
  }
753
760
 
754
- bool InternalStats::HandleBlockCacheEntryStatsMap(
755
- std::map<std::string, std::string>* values, Slice /*suffix*/) {
761
+ bool InternalStats::HandleBlockCacheEntryStatsMapInternal(
762
+ std::map<std::string, std::string>* values, bool fast) {
756
763
  if (!cache_entry_stats_collector_) {
757
764
  return false;
758
765
  }
759
- CollectCacheEntryStats(/*foreground*/ true);
766
+ CollectCacheEntryStats(!fast /* foreground */);
760
767
  CacheEntryRoleStats stats;
761
768
  cache_entry_stats_collector_->GetStats(&stats);
762
769
  stats.ToMap(values, clock_);
763
770
  return true;
764
771
  }
765
772
 
773
+ bool InternalStats::HandleBlockCacheEntryStats(std::string* value,
774
+ Slice /*suffix*/) {
775
+ return HandleBlockCacheEntryStatsInternal(value, false /* fast */);
776
+ }
777
+
778
+ bool InternalStats::HandleBlockCacheEntryStatsMap(
779
+ std::map<std::string, std::string>* values, Slice /*suffix*/) {
780
+ return HandleBlockCacheEntryStatsMapInternal(values, false /* fast */);
781
+ }
782
+
783
+ bool InternalStats::HandleFastBlockCacheEntryStats(std::string* value,
784
+ Slice /*suffix*/) {
785
+ return HandleBlockCacheEntryStatsInternal(value, true /* fast */);
786
+ }
787
+
788
+ bool InternalStats::HandleFastBlockCacheEntryStatsMap(
789
+ std::map<std::string, std::string>* values, Slice /*suffix*/) {
790
+ return HandleBlockCacheEntryStatsMapInternal(values, true /* fast */);
791
+ }
792
+
766
793
  bool InternalStats::HandleLiveSstFilesSizeAtTemperature(std::string* value,
767
794
  Slice suffix) {
768
795
  uint64_t temperature;
@@ -793,9 +793,15 @@ class InternalStats {
793
793
  bool HandleBlockCacheUsage(uint64_t* value, DBImpl* db, Version* version);
794
794
  bool HandleBlockCachePinnedUsage(uint64_t* value, DBImpl* db,
795
795
  Version* version);
796
+ bool HandleBlockCacheEntryStatsInternal(std::string* value, bool fast);
797
+ bool HandleBlockCacheEntryStatsMapInternal(
798
+ std::map<std::string, std::string>* values, bool fast);
796
799
  bool HandleBlockCacheEntryStats(std::string* value, Slice suffix);
797
800
  bool HandleBlockCacheEntryStatsMap(std::map<std::string, std::string>* values,
798
801
  Slice suffix);
802
+ bool HandleFastBlockCacheEntryStats(std::string* value, Slice suffix);
803
+ bool HandleFastBlockCacheEntryStatsMap(
804
+ std::map<std::string, std::string>* values, Slice suffix);
799
805
  bool HandleLiveSstFilesSizeAtTemperature(std::string* value, Slice suffix);
800
806
  bool HandleNumBlobFiles(uint64_t* value, DBImpl* db, Version* version);
801
807
  bool HandleBlobStats(std::string* value, Slice suffix);
@@ -1591,6 +1591,7 @@ TEST_F(EventListenerTest, BlobDBFileTest) {
1591
1591
  #endif // ROCKSDB_LITE
1592
1592
 
1593
1593
  int main(int argc, char** argv) {
1594
+ ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
1594
1595
  ::testing::InitGoogleTest(&argc, argv);
1595
1596
  return RUN_ALL_TESTS();
1596
1597
  }
@@ -1062,6 +1062,7 @@ INSTANTIATE_TEST_CASE_P(
1062
1062
  } // namespace ROCKSDB_NAMESPACE
1063
1063
 
1064
1064
  int main(int argc, char** argv) {
1065
+ ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
1065
1066
  ::testing::InitGoogleTest(&argc, argv);
1066
1067
  return RUN_ALL_TESTS();
1067
1068
  }
@@ -194,7 +194,7 @@ IOStatus Writer::AddCompressionTypeRecord() {
194
194
  return s;
195
195
  }
196
196
 
197
- bool Writer::TEST_BufferIsEmpty() { return dest_->TEST_BufferIsEmpty(); }
197
+ bool Writer::BufferIsEmpty() { return dest_->BufferIsEmpty(); }
198
198
 
199
199
  IOStatus Writer::EmitPhysicalRecord(RecordType t, const char* ptr, size_t n,
200
200
  Env::IOPriority rate_limiter_priority) {
@@ -96,7 +96,7 @@ class Writer {
96
96
 
97
97
  IOStatus Close();
98
98
 
99
- bool TEST_BufferIsEmpty();
99
+ bool BufferIsEmpty();
100
100
 
101
101
  private:
102
102
  std::unique_ptr<WritableFileWriter> dest_;
@@ -304,6 +304,7 @@ TEST_F(ManualCompactionTest, SkipLevel) {
304
304
  } // anonymous namespace
305
305
 
306
306
  int main(int argc, char** argv) {
307
+ ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
307
308
  ::testing::InitGoogleTest(&argc, argv);
308
309
  return RUN_ALL_TESTS();
309
310
  }