@nxtedition/rocksdb 7.1.30 → 7.1.32

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 (381) hide show
  1. package/deps/rocksdb/rocksdb/CMakeLists.txt +2 -2
  2. package/deps/rocksdb/rocksdb/cache/cache_test.cc +15 -23
  3. package/deps/rocksdb/rocksdb/cache/fast_lru_cache.h +0 -1
  4. package/deps/rocksdb/rocksdb/cache/lru_cache.cc +4 -5
  5. package/deps/rocksdb/rocksdb/cache/lru_cache.h +3 -1
  6. package/deps/rocksdb/rocksdb/crash_test.mk +1 -1
  7. package/deps/rocksdb/rocksdb/db/blob/blob_log_format.h +15 -0
  8. package/deps/rocksdb/rocksdb/db/blob/db_blob_basic_test.cc +1 -1
  9. package/deps/rocksdb/rocksdb/db/column_family.cc +4 -1
  10. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +78 -6
  11. package/deps/rocksdb/rocksdb/db/compaction/compaction.h +32 -6
  12. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +8 -8
  13. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +3 -2
  14. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +47 -8
  15. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +3 -3
  16. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +105 -166
  17. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +3 -4
  18. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +46 -15
  19. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +47 -26
  20. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +17 -10
  21. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +11 -5
  22. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +12 -6
  23. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +1 -2
  24. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +337 -103
  25. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +43 -5
  26. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +1 -2
  27. package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +524 -1
  28. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +164 -0
  29. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +6 -6
  30. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +1 -0
  31. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +5 -7
  32. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +11 -1
  33. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +4 -4
  34. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +1 -0
  35. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +2 -3
  36. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +1 -1
  37. package/deps/rocksdb/rocksdb/db/db_test2.cc +1 -1
  38. package/deps/rocksdb/rocksdb/db/memtable.cc +16 -23
  39. package/deps/rocksdb/rocksdb/db/merge_helper.cc +30 -0
  40. package/deps/rocksdb/rocksdb/db/merge_helper.h +9 -0
  41. package/deps/rocksdb/rocksdb/db/range_del_aggregator_bench.cc +29 -9
  42. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.cc +10 -7
  43. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +12 -8
  44. package/deps/rocksdb/rocksdb/db/version_set.cc +11 -6
  45. package/deps/rocksdb/rocksdb/db/wide/db_wide_basic_test.cc +142 -0
  46. package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +59 -53
  47. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +3 -2
  48. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +4 -0
  49. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +1 -3
  50. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +7 -4
  51. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +0 -2
  52. package/deps/rocksdb/rocksdb/env/env.cc +16 -19
  53. package/deps/rocksdb/rocksdb/env/env_basic_test.cc +1 -1
  54. package/deps/rocksdb/rocksdb/env/env_chroot.cc +20 -20
  55. package/deps/rocksdb/rocksdb/env/env_encryption.cc +62 -60
  56. package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +1 -1
  57. package/deps/rocksdb/rocksdb/env/env_test.cc +179 -176
  58. package/deps/rocksdb/rocksdb/env/file_system.cc +3 -4
  59. package/deps/rocksdb/rocksdb/env/io_posix.cc +3 -2
  60. package/deps/rocksdb/rocksdb/env/io_posix.h +1 -2
  61. package/deps/rocksdb/rocksdb/env/mock_env.h +1 -0
  62. package/deps/rocksdb/rocksdb/env/mock_env_test.cc +4 -4
  63. package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +6 -5
  64. package/deps/rocksdb/rocksdb/file/delete_scheduler.h +2 -5
  65. package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +6 -7
  66. package/deps/rocksdb/rocksdb/file/file_util.cc +1 -1
  67. package/deps/rocksdb/rocksdb/file/filename.cc +16 -17
  68. package/deps/rocksdb/rocksdb/file/filename.h +4 -5
  69. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +492 -496
  70. package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +1 -1
  71. package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +1 -3
  72. package/deps/rocksdb/rocksdb/file/read_write_util.cc +1 -0
  73. package/deps/rocksdb/rocksdb/file/read_write_util.h +1 -0
  74. package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.cc +6 -8
  75. package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.h +1 -2
  76. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +4 -4
  77. package/deps/rocksdb/rocksdb/include/rocksdb/block_cache_trace_writer.h +4 -4
  78. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +166 -167
  79. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +1 -0
  80. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +0 -1
  81. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +12 -12
  82. package/deps/rocksdb/rocksdb/include/rocksdb/io_status.h +2 -0
  83. package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +1 -0
  84. package/deps/rocksdb/rocksdb/include/rocksdb/ldb_tool.h +1 -0
  85. package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +2 -1
  86. package/deps/rocksdb/rocksdb/include/rocksdb/perf_level.h +1 -0
  87. package/deps/rocksdb/rocksdb/include/rocksdb/persistent_cache.h +1 -0
  88. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_reader.h +0 -4
  89. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +3 -3
  90. package/deps/rocksdb/rocksdb/include/rocksdb/system_clock.h +1 -1
  91. package/deps/rocksdb/rocksdb/include/rocksdb/transaction_log.h +1 -0
  92. package/deps/rocksdb/rocksdb/include/rocksdb/types.h +1 -0
  93. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/checkpoint.h +1 -0
  94. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/env_mirror.h +1 -0
  95. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/option_change_migration.h +1 -0
  96. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +4 -4
  97. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/sim_cache.h +2 -0
  98. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +4 -4
  99. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +1 -1
  100. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +2 -2
  101. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +1 -1
  102. package/deps/rocksdb/rocksdb/logging/auto_roll_logger.cc +3 -3
  103. package/deps/rocksdb/rocksdb/logging/auto_roll_logger.h +3 -7
  104. package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +20 -23
  105. package/deps/rocksdb/rocksdb/logging/env_logger_test.cc +1 -0
  106. package/deps/rocksdb/rocksdb/logging/event_logger.cc +1 -3
  107. package/deps/rocksdb/rocksdb/logging/event_logger.h +4 -5
  108. package/deps/rocksdb/rocksdb/logging/event_logger_test.cc +2 -1
  109. package/deps/rocksdb/rocksdb/logging/log_buffer.cc +2 -3
  110. package/deps/rocksdb/rocksdb/logging/log_buffer.h +3 -2
  111. package/deps/rocksdb/rocksdb/logging/logging.h +3 -3
  112. package/deps/rocksdb/rocksdb/memory/allocator.h +1 -0
  113. package/deps/rocksdb/rocksdb/memory/arena_test.cc +1 -1
  114. package/deps/rocksdb/rocksdb/memory/concurrent_arena.cc +2 -0
  115. package/deps/rocksdb/rocksdb/memory/concurrent_arena.h +1 -0
  116. package/deps/rocksdb/rocksdb/memtable/alloc_tracker.cc +1 -0
  117. package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.cc +17 -20
  118. package/deps/rocksdb/rocksdb/memtable/hash_skiplist_rep.cc +13 -15
  119. package/deps/rocksdb/rocksdb/memtable/inlineskiplist.h +11 -10
  120. package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +3 -3
  121. package/deps/rocksdb/rocksdb/memtable/memtablerep_bench.cc +2 -2
  122. package/deps/rocksdb/rocksdb/memtable/skiplist.h +30 -28
  123. package/deps/rocksdb/rocksdb/memtable/skiplist_test.cc +4 -6
  124. package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +73 -70
  125. package/deps/rocksdb/rocksdb/memtable/stl_wrappers.h +1 -1
  126. package/deps/rocksdb/rocksdb/memtable/vectorrep.cc +21 -23
  127. package/deps/rocksdb/rocksdb/memtable/write_buffer_manager_test.cc +1 -0
  128. package/deps/rocksdb/rocksdb/monitoring/histogram.cc +24 -38
  129. package/deps/rocksdb/rocksdb/monitoring/histogram.h +10 -17
  130. package/deps/rocksdb/rocksdb/monitoring/histogram_test.cc +19 -19
  131. package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.cc +22 -30
  132. package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.h +4 -6
  133. package/deps/rocksdb/rocksdb/monitoring/in_memory_stats_history.cc +1 -0
  134. package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.h +4 -12
  135. package/deps/rocksdb/rocksdb/monitoring/iostats_context.cc +2 -3
  136. package/deps/rocksdb/rocksdb/monitoring/iostats_context_test.cc +1 -0
  137. package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +12 -14
  138. package/deps/rocksdb/rocksdb/monitoring/perf_level.cc +2 -3
  139. package/deps/rocksdb/rocksdb/monitoring/perf_level_imp.h +1 -1
  140. package/deps/rocksdb/rocksdb/monitoring/perf_step_timer.h +1 -3
  141. package/deps/rocksdb/rocksdb/monitoring/persistent_stats_history.cc +1 -0
  142. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +1 -1
  143. package/deps/rocksdb/rocksdb/monitoring/statistics.h +7 -7
  144. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.h +12 -22
  145. package/deps/rocksdb/rocksdb/monitoring/thread_status_util.h +7 -10
  146. package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +2 -2
  147. package/deps/rocksdb/rocksdb/port/lang.h +3 -1
  148. package/deps/rocksdb/rocksdb/port/likely.h +2 -2
  149. package/deps/rocksdb/rocksdb/port/mmap.h +2 -2
  150. package/deps/rocksdb/rocksdb/port/port_dirent.h +2 -2
  151. package/deps/rocksdb/rocksdb/port/port_posix.cc +32 -27
  152. package/deps/rocksdb/rocksdb/port/port_posix.h +31 -30
  153. package/deps/rocksdb/rocksdb/port/stack_trace.cc +1 -1
  154. package/deps/rocksdb/rocksdb/port/sys_time.h +1 -1
  155. package/deps/rocksdb/rocksdb/port/win/io_win.h +6 -7
  156. package/deps/rocksdb/rocksdb/port/win/port_win.h +12 -20
  157. package/deps/rocksdb/rocksdb/port/win/win_jemalloc.cc +5 -4
  158. package/deps/rocksdb/rocksdb/port/win/win_logger.cc +3 -5
  159. package/deps/rocksdb/rocksdb/port/win/win_logger.h +3 -4
  160. package/deps/rocksdb/rocksdb/port/win/win_thread.cc +30 -49
  161. package/deps/rocksdb/rocksdb/port/win/win_thread.h +5 -5
  162. package/deps/rocksdb/rocksdb/port/win/xpress_win.cc +51 -62
  163. package/deps/rocksdb/rocksdb/port/win/xpress_win.h +2 -2
  164. package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.cc +4 -3
  165. package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.h +1 -0
  166. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +2 -2
  167. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +2 -1
  168. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +0 -1
  169. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +3 -4
  170. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +1 -1
  171. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +0 -1
  172. package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +2 -0
  173. package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +2 -1
  174. package/deps/rocksdb/rocksdb/table/block_based/cachable_entry.h +28 -30
  175. package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index.cc +2 -1
  176. package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +3 -3
  177. package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +3 -3
  178. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +1 -0
  179. package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +4 -5
  180. package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.cc +1 -3
  181. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +1 -2
  182. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +1 -0
  183. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block_test.cc +0 -1
  184. package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +1 -1
  185. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +0 -1
  186. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +7 -6
  187. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.h +0 -1
  188. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +1 -0
  189. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +5 -6
  190. package/deps/rocksdb/rocksdb/table/block_fetcher.h +2 -2
  191. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +90 -80
  192. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.h +5 -4
  193. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +63 -69
  194. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_factory.h +2 -1
  195. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.cc +58 -57
  196. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.h +3 -3
  197. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +35 -30
  198. package/deps/rocksdb/rocksdb/table/get_context.cc +16 -10
  199. package/deps/rocksdb/rocksdb/table/iter_heap.h +2 -0
  200. package/deps/rocksdb/rocksdb/table/iterator.cc +1 -1
  201. package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +1 -3
  202. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +31 -16
  203. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +6 -6
  204. package/deps/rocksdb/rocksdb/table/multiget_context.h +5 -6
  205. package/deps/rocksdb/rocksdb/table/persistent_cache_helper.cc +1 -0
  206. package/deps/rocksdb/rocksdb/table/plain/plain_table_bloom.cc +1 -1
  207. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +7 -10
  208. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.h +3 -1
  209. package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.h +2 -2
  210. package/deps/rocksdb/rocksdb/table/plain/plain_table_index.cc +4 -3
  211. package/deps/rocksdb/rocksdb/table/plain/plain_table_index.h +2 -2
  212. package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.cc +1 -0
  213. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +10 -21
  214. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.h +14 -12
  215. package/deps/rocksdb/rocksdb/table/scoped_arena_iterator.h +2 -5
  216. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +2 -3
  217. package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +0 -6
  218. package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +0 -33
  219. package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +3 -6
  220. package/deps/rocksdb/rocksdb/table/table_properties.cc +24 -37
  221. package/deps/rocksdb/rocksdb/table/table_reader.h +3 -2
  222. package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +9 -8
  223. package/deps/rocksdb/rocksdb/table/table_test.cc +77 -82
  224. package/deps/rocksdb/rocksdb/table/two_level_iterator.cc +1 -0
  225. package/deps/rocksdb/rocksdb/table/two_level_iterator.h +1 -1
  226. package/deps/rocksdb/rocksdb/test_util/sync_point.cc +8 -18
  227. package/deps/rocksdb/rocksdb/test_util/sync_point.h +2 -2
  228. package/deps/rocksdb/rocksdb/test_util/sync_point_impl.cc +4 -3
  229. package/deps/rocksdb/rocksdb/test_util/sync_point_impl.h +13 -18
  230. package/deps/rocksdb/rocksdb/test_util/testharness.cc +1 -2
  231. package/deps/rocksdb/rocksdb/test_util/testutil.h +6 -7
  232. package/deps/rocksdb/rocksdb/test_util/transaction_test_util.cc +3 -4
  233. package/deps/rocksdb/rocksdb/test_util/transaction_test_util.h +1 -1
  234. package/deps/rocksdb/rocksdb/tools/blob_dump.cc +1 -0
  235. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.cc +11 -7
  236. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.h +3 -2
  237. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +296 -314
  238. package/deps/rocksdb/rocksdb/tools/db_sanity_test.cc +6 -6
  239. package/deps/rocksdb/rocksdb/tools/dump/db_dump_tool.cc +2 -1
  240. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +57 -64
  241. package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +6 -5
  242. package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +2 -2
  243. package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +1 -0
  244. package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +2 -2
  245. package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.cc +1 -2
  246. package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +10 -10
  247. package/deps/rocksdb/rocksdb/tools/trace_analyzer_test.cc +1 -1
  248. package/deps/rocksdb/rocksdb/tools/write_stress.cc +6 -3
  249. package/deps/rocksdb/rocksdb/util/aligned_buffer.h +12 -31
  250. package/deps/rocksdb/rocksdb/util/autovector.h +3 -6
  251. package/deps/rocksdb/rocksdb/util/autovector_test.cc +12 -12
  252. package/deps/rocksdb/rocksdb/util/bloom_test.cc +8 -12
  253. package/deps/rocksdb/rocksdb/util/coding.cc +1 -0
  254. package/deps/rocksdb/rocksdb/util/coding.h +17 -15
  255. package/deps/rocksdb/rocksdb/util/coding_test.cc +14 -15
  256. package/deps/rocksdb/rocksdb/util/comparator.cc +4 -4
  257. package/deps/rocksdb/rocksdb/util/compression.h +6 -3
  258. package/deps/rocksdb/rocksdb/util/compression_context_cache.cc +2 -2
  259. package/deps/rocksdb/rocksdb/util/concurrent_task_limiter_impl.cc +5 -8
  260. package/deps/rocksdb/rocksdb/util/concurrent_task_limiter_impl.h +1 -1
  261. package/deps/rocksdb/rocksdb/util/crc32c.cc +202 -297
  262. package/deps/rocksdb/rocksdb/util/crc32c.h +2 -3
  263. package/deps/rocksdb/rocksdb/util/crc32c_arm64.h +2 -0
  264. package/deps/rocksdb/rocksdb/util/crc32c_test.cc +39 -54
  265. package/deps/rocksdb/rocksdb/util/defer.h +2 -1
  266. package/deps/rocksdb/rocksdb/util/defer_test.cc +2 -1
  267. package/deps/rocksdb/rocksdb/util/duplicate_detector.h +2 -1
  268. package/deps/rocksdb/rocksdb/util/dynamic_bloom.cc +1 -1
  269. package/deps/rocksdb/rocksdb/util/dynamic_bloom.h +3 -3
  270. package/deps/rocksdb/rocksdb/util/dynamic_bloom_test.cc +1 -1
  271. package/deps/rocksdb/rocksdb/util/filelock_test.cc +24 -29
  272. package/deps/rocksdb/rocksdb/util/filter_bench.cc +4 -4
  273. package/deps/rocksdb/rocksdb/util/hash_test.cc +2 -2
  274. package/deps/rocksdb/rocksdb/util/heap.h +5 -4
  275. package/deps/rocksdb/rocksdb/util/heap_test.cc +15 -25
  276. package/deps/rocksdb/rocksdb/util/kv_map.h +1 -1
  277. package/deps/rocksdb/rocksdb/util/murmurhash.cc +7 -2
  278. package/deps/rocksdb/rocksdb/util/murmurhash.h +4 -3
  279. package/deps/rocksdb/rocksdb/util/mutexlock.h +5 -11
  280. package/deps/rocksdb/rocksdb/util/random.cc +1 -0
  281. package/deps/rocksdb/rocksdb/util/random.h +2 -4
  282. package/deps/rocksdb/rocksdb/util/random_test.cc +2 -1
  283. package/deps/rocksdb/rocksdb/util/ribbon_test.cc +4 -3
  284. package/deps/rocksdb/rocksdb/util/slice.cc +1 -1
  285. package/deps/rocksdb/rocksdb/util/slice_test.cc +1 -2
  286. package/deps/rocksdb/rocksdb/util/status.cc +2 -0
  287. package/deps/rocksdb/rocksdb/util/string_util.cc +2 -0
  288. package/deps/rocksdb/rocksdb/util/thread_list_test.cc +64 -76
  289. package/deps/rocksdb/rocksdb/util/thread_local.cc +18 -32
  290. package/deps/rocksdb/rocksdb/util/thread_local.h +2 -3
  291. package/deps/rocksdb/rocksdb/util/thread_operation.h +34 -43
  292. package/deps/rocksdb/rocksdb/util/threadpool_imp.cc +54 -73
  293. package/deps/rocksdb/rocksdb/util/threadpool_imp.h +18 -18
  294. package/deps/rocksdb/rocksdb/util/timer.h +4 -9
  295. package/deps/rocksdb/rocksdb/util/timer_queue.h +1 -0
  296. package/deps/rocksdb/rocksdb/util/timer_queue_test.cc +1 -0
  297. package/deps/rocksdb/rocksdb/util/xxhash.cc +1 -2
  298. package/deps/rocksdb/rocksdb/util/xxhash.h +7 -4
  299. package/deps/rocksdb/rocksdb/util/xxph3.h +3 -1
  300. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +16 -24
  301. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_impl.h +1 -1
  302. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +106 -104
  303. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.h +3 -4
  304. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +6 -6
  305. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +1 -2
  306. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +3 -4
  307. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +3 -1
  308. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +11 -15
  309. package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +1 -2
  310. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.cc +3 -3
  311. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.h +12 -12
  312. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_format_test.cc +56 -55
  313. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_functional_test.cc +91 -74
  314. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_row_merge_test.cc +17 -34
  315. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_serialize_test.cc +21 -45
  316. package/deps/rocksdb/rocksdb/utilities/cassandra/format.cc +74 -97
  317. package/deps/rocksdb/rocksdb/utilities/cassandra/format.h +17 -18
  318. package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.cc +3 -4
  319. package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.h +19 -19
  320. package/deps/rocksdb/rocksdb/utilities/cassandra/serialize.h +19 -18
  321. package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.cc +7 -10
  322. package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.h +3 -4
  323. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.h +2 -2
  324. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +10 -15
  325. package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc +2 -1
  326. package/deps/rocksdb/rocksdb/utilities/convenience/info_log_finder.cc +1 -0
  327. package/deps/rocksdb/rocksdb/utilities/env_mirror_test.cc +5 -3
  328. package/deps/rocksdb/rocksdb/utilities/env_timed_test.cc +1 -2
  329. package/deps/rocksdb/rocksdb/utilities/fault_injection_env.h +4 -5
  330. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +5 -7
  331. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +9 -13
  332. package/deps/rocksdb/rocksdb/utilities/leveldb_options/leveldb_options.cc +1 -0
  333. package/deps/rocksdb/rocksdb/utilities/merge_operators/bytesxor.cc +7 -9
  334. package/deps/rocksdb/rocksdb/utilities/merge_operators/bytesxor.h +4 -5
  335. package/deps/rocksdb/rocksdb/utilities/merge_operators/put.cc +4 -3
  336. package/deps/rocksdb/rocksdb/utilities/merge_operators/sortlist.cc +1 -1
  337. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.cc +3 -3
  338. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.h +2 -4
  339. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend2.h +2 -2
  340. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend_test.cc +39 -50
  341. package/deps/rocksdb/rocksdb/utilities/merge_operators/uint64add.cc +2 -2
  342. package/deps/rocksdb/rocksdb/utilities/merge_operators.h +4 -3
  343. package/deps/rocksdb/rocksdb/utilities/options/options_util.cc +2 -2
  344. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.cc +5 -7
  345. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.h +5 -4
  346. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +1 -2
  347. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.h +3 -6
  348. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file_buffer.h +1 -1
  349. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.cc +2 -2
  350. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.h +0 -1
  351. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table.h +1 -0
  352. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_test.cc +3 -1
  353. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_bench.cc +1 -1
  354. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.cc +18 -13
  355. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.h +1 -3
  356. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector_test.cc +15 -14
  357. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.cc +14 -12
  358. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.h +2 -2
  359. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +4 -7
  360. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.cc +1 -2
  361. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +1 -1
  362. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.h +1 -1
  363. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +1 -1
  364. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +3 -2
  365. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +1 -2
  366. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +3 -2
  367. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +5 -5
  368. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +3 -4
  369. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +2 -2
  370. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +5 -4
  371. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +1 -1
  372. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +1 -0
  373. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +3 -4
  374. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +2 -6
  375. package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +80 -79
  376. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +3 -3
  377. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +9 -17
  378. package/package.json +1 -1
  379. package/prebuilds/darwin-arm64/node.napi.node +0 -0
  380. package/prebuilds/darwin-x64/node.napi.node +0 -0
  381. package/prebuilds/linux-x64/node.napi.node +0 -0
@@ -155,9 +155,8 @@ class CompactionJobStatsTest : public testing::Test,
155
155
  ASSERT_OK(TryReopenWithColumnFamilies(cfs, options));
156
156
  }
157
157
 
158
- Status TryReopenWithColumnFamilies(
159
- const std::vector<std::string>& cfs,
160
- const std::vector<Options>& options) {
158
+ Status TryReopenWithColumnFamilies(const std::vector<std::string>& cfs,
159
+ const std::vector<Options>& options) {
161
160
  Close();
162
161
  EXPECT_EQ(cfs.size(), options.size());
163
162
  std::vector<ColumnFamilyDescriptor> column_families;
@@ -175,9 +174,7 @@ class CompactionJobStatsTest : public testing::Test,
175
174
  return TryReopenWithColumnFamilies(cfs, v_opts);
176
175
  }
177
176
 
178
- void Reopen(const Options& options) {
179
- ASSERT_OK(TryReopen(options));
180
- }
177
+ void Reopen(const Options& options) { ASSERT_OK(TryReopen(options)); }
181
178
 
182
179
  void Close() {
183
180
  for (auto h : handles_) {
@@ -226,9 +223,7 @@ class CompactionJobStatsTest : public testing::Test,
226
223
  return db_->Put(wo, handles_[cf], k, v);
227
224
  }
228
225
 
229
- Status Delete(const std::string& k) {
230
- return db_->Delete(WriteOptions(), k);
231
- }
226
+ Status Delete(const std::string& k) { return db_->Delete(WriteOptions(), k); }
232
227
 
233
228
  Status Delete(int cf, const std::string& k) {
234
229
  return db_->Delete(WriteOptions(), handles_[cf], k);
@@ -338,21 +333,21 @@ class CompactionJobStatsTest : public testing::Test,
338
333
  }
339
334
  }
340
335
 
341
- static void SetDeletionCompactionStats(
342
- CompactionJobStats *stats, uint64_t input_deletions,
343
- uint64_t expired_deletions, uint64_t records_replaced) {
336
+ static void SetDeletionCompactionStats(CompactionJobStats* stats,
337
+ uint64_t input_deletions,
338
+ uint64_t expired_deletions,
339
+ uint64_t records_replaced) {
344
340
  stats->num_input_deletion_records = input_deletions;
345
341
  stats->num_expired_deletion_records = expired_deletions;
346
342
  stats->num_records_replaced = records_replaced;
347
343
  }
348
344
 
349
- void MakeTableWithKeyValues(
350
- Random* rnd, uint64_t smallest, uint64_t largest,
351
- int key_size, int value_size, uint64_t interval,
352
- double ratio, int cf = 0) {
345
+ void MakeTableWithKeyValues(Random* rnd, uint64_t smallest, uint64_t largest,
346
+ int key_size, int value_size, uint64_t interval,
347
+ double ratio, int cf = 0) {
353
348
  for (auto key = smallest; key < largest; key += interval) {
354
349
  ASSERT_OK(Put(cf, Slice(Key(key, key_size)),
355
- Slice(RandomString(rnd, value_size, ratio))));
350
+ Slice(RandomString(rnd, value_size, ratio))));
356
351
  }
357
352
  ASSERT_OK(Flush(cf));
358
353
  }
@@ -361,9 +356,9 @@ class CompactionJobStatsTest : public testing::Test,
361
356
  // rounds of keys are inserted into the database, as per the behavior
362
357
  // of the DeletionStatsTest.
363
358
  void SelectivelyDeleteKeys(uint64_t smallest, uint64_t largest,
364
- uint64_t interval, int deletion_interval, int key_size,
365
- uint64_t cutoff_key_num, CompactionJobStats* stats, int cf = 0) {
366
-
359
+ uint64_t interval, int deletion_interval,
360
+ int key_size, uint64_t cutoff_key_num,
361
+ CompactionJobStats* stats, int cf = 0) {
367
362
  // interval needs to be >= 2 so that deletion entries can be inserted
368
363
  // that are intended to not result in an actual key deletion by using
369
364
  // an offset of 1 from another existing key
@@ -387,20 +382,19 @@ class CompactionJobStatsTest : public testing::Test,
387
382
 
388
383
  // Insert some deletions for keys that don't exist that
389
384
  // are both in and out of the key range
390
- ASSERT_OK(Delete(cf, Key(smallest+1, key_size)));
385
+ ASSERT_OK(Delete(cf, Key(smallest + 1, key_size)));
391
386
  deletions_made++;
392
387
 
393
- ASSERT_OK(Delete(cf, Key(smallest-1, key_size)));
388
+ ASSERT_OK(Delete(cf, Key(smallest - 1, key_size)));
394
389
  deletions_made++;
395
390
  num_expired++;
396
391
 
397
- ASSERT_OK(Delete(cf, Key(smallest-9, key_size)));
392
+ ASSERT_OK(Delete(cf, Key(smallest - 9, key_size)));
398
393
  deletions_made++;
399
394
  num_expired++;
400
395
 
401
396
  ASSERT_OK(Flush(cf));
402
- SetDeletionCompactionStats(stats, deletions_made, num_expired,
403
- num_deleted);
397
+ SetDeletionCompactionStats(stats, deletions_made, num_expired, num_deleted);
404
398
  }
405
399
  };
406
400
 
@@ -440,25 +434,20 @@ class CompactionJobStatsChecker : public EventListener {
440
434
  // use ASSERT_GE and ASSERT_LE with a reasonable bias ---
441
435
  // 10% in uncompressed case and 20% when compression is used.
442
436
  virtual void Verify(const CompactionJobStats& current_stats,
443
- const CompactionJobStats& stats) {
437
+ const CompactionJobStats& stats) {
444
438
  // time
445
439
  ASSERT_GT(current_stats.elapsed_micros, 0U);
446
440
 
447
- ASSERT_EQ(current_stats.num_input_records,
448
- stats.num_input_records);
449
- ASSERT_EQ(current_stats.num_input_files,
450
- stats.num_input_files);
441
+ ASSERT_EQ(current_stats.num_input_records, stats.num_input_records);
442
+ ASSERT_EQ(current_stats.num_input_files, stats.num_input_files);
451
443
  ASSERT_EQ(current_stats.num_input_files_at_output_level,
452
- stats.num_input_files_at_output_level);
444
+ stats.num_input_files_at_output_level);
453
445
 
454
- ASSERT_EQ(current_stats.num_output_records,
455
- stats.num_output_records);
456
- ASSERT_EQ(current_stats.num_output_files,
457
- stats.num_output_files);
446
+ ASSERT_EQ(current_stats.num_output_records, stats.num_output_records);
447
+ ASSERT_EQ(current_stats.num_output_files, stats.num_output_files);
458
448
 
459
449
  ASSERT_EQ(current_stats.is_full_compaction, stats.is_full_compaction);
460
- ASSERT_EQ(current_stats.is_manual_compaction,
461
- stats.is_manual_compaction);
450
+ ASSERT_EQ(current_stats.is_manual_compaction, stats.is_manual_compaction);
462
451
 
463
452
  // file size
464
453
  double kFileSizeBias = compression_enabled_ ? 0.20 : 0.10;
@@ -475,18 +464,14 @@ class CompactionJobStatsChecker : public EventListener {
475
464
  ASSERT_EQ(current_stats.total_input_raw_value_bytes,
476
465
  stats.total_input_raw_value_bytes);
477
466
 
478
- ASSERT_EQ(current_stats.num_records_replaced,
479
- stats.num_records_replaced);
467
+ ASSERT_EQ(current_stats.num_records_replaced, stats.num_records_replaced);
480
468
 
481
- ASSERT_EQ(current_stats.num_corrupt_keys,
482
- stats.num_corrupt_keys);
469
+ ASSERT_EQ(current_stats.num_corrupt_keys, stats.num_corrupt_keys);
483
470
 
484
- ASSERT_EQ(
485
- std::string(current_stats.smallest_output_key_prefix),
486
- std::string(stats.smallest_output_key_prefix));
487
- ASSERT_EQ(
488
- std::string(current_stats.largest_output_key_prefix),
489
- std::string(stats.largest_output_key_prefix));
471
+ ASSERT_EQ(std::string(current_stats.smallest_output_key_prefix),
472
+ std::string(stats.smallest_output_key_prefix));
473
+ ASSERT_EQ(std::string(current_stats.largest_output_key_prefix),
474
+ std::string(stats.largest_output_key_prefix));
490
475
  }
491
476
 
492
477
  // Add an expected compaction stats, which will be used to
@@ -497,9 +482,7 @@ class CompactionJobStatsChecker : public EventListener {
497
482
  expected_stats_.push(stats);
498
483
  }
499
484
 
500
- void EnableCompression(bool flag) {
501
- compression_enabled_ = flag;
502
- }
485
+ void EnableCompression(bool flag) { compression_enabled_ = flag; }
503
486
 
504
487
  bool verify_next_comp_io_stats() const { return verify_next_comp_io_stats_; }
505
488
 
@@ -517,45 +500,37 @@ class CompactionJobDeletionStatsChecker : public CompactionJobStatsChecker {
517
500
  // Verifies whether two CompactionJobStats match.
518
501
  void Verify(const CompactionJobStats& current_stats,
519
502
  const CompactionJobStats& stats) override {
520
- ASSERT_EQ(
521
- current_stats.num_input_deletion_records,
522
- stats.num_input_deletion_records);
523
- ASSERT_EQ(
524
- current_stats.num_expired_deletion_records,
525
- stats.num_expired_deletion_records);
526
- ASSERT_EQ(
527
- current_stats.num_records_replaced,
528
- stats.num_records_replaced);
529
-
530
- ASSERT_EQ(current_stats.num_corrupt_keys,
531
- stats.num_corrupt_keys);
503
+ ASSERT_EQ(current_stats.num_input_deletion_records,
504
+ stats.num_input_deletion_records);
505
+ ASSERT_EQ(current_stats.num_expired_deletion_records,
506
+ stats.num_expired_deletion_records);
507
+ ASSERT_EQ(current_stats.num_records_replaced, stats.num_records_replaced);
508
+
509
+ ASSERT_EQ(current_stats.num_corrupt_keys, stats.num_corrupt_keys);
532
510
  }
533
511
  };
534
512
 
535
513
  namespace {
536
514
 
537
- uint64_t EstimatedFileSize(
538
- uint64_t num_records, size_t key_size, size_t value_size,
539
- double compression_ratio = 1.0,
540
- size_t block_size = 4096,
541
- int bloom_bits_per_key = 10) {
515
+ uint64_t EstimatedFileSize(uint64_t num_records, size_t key_size,
516
+ size_t value_size, double compression_ratio = 1.0,
517
+ size_t block_size = 4096,
518
+ int bloom_bits_per_key = 10) {
542
519
  const size_t kPerKeyOverhead = 8;
543
520
  const size_t kFooterSize = 512;
544
521
 
545
- uint64_t data_size =
546
- static_cast<uint64_t>(
547
- num_records * (key_size + value_size * compression_ratio +
548
- kPerKeyOverhead));
522
+ uint64_t data_size = static_cast<uint64_t>(
523
+ num_records *
524
+ (key_size + value_size * compression_ratio + kPerKeyOverhead));
549
525
 
550
- return data_size + kFooterSize
551
- + num_records * bloom_bits_per_key / 8 // filter block
526
+ return data_size + kFooterSize +
527
+ num_records * bloom_bits_per_key / 8 // filter block
552
528
  + data_size * (key_size + 8) / block_size; // index block
553
529
  }
554
530
 
555
531
  namespace {
556
532
 
557
- void CopyPrefix(
558
- const Slice& src, size_t prefix_length, std::string* dst) {
533
+ void CopyPrefix(const Slice& src, size_t prefix_length, std::string* dst) {
559
534
  assert(prefix_length > 0);
560
535
  size_t length = src.size() > prefix_length ? prefix_length : src.size();
561
536
  dst->assign(src.data(), length);
@@ -581,28 +556,24 @@ CompactionJobStats NewManualCompactionJobStats(
581
556
  stats.num_output_files = num_output_files;
582
557
 
583
558
  stats.total_input_bytes =
584
- EstimatedFileSize(
585
- num_input_records / num_input_files,
586
- key_size, value_size, compression_ratio) * num_input_files;
559
+ EstimatedFileSize(num_input_records / num_input_files, key_size,
560
+ value_size, compression_ratio) *
561
+ num_input_files;
587
562
  stats.total_output_bytes =
588
- EstimatedFileSize(
589
- num_output_records / num_output_files,
590
- key_size, value_size, compression_ratio) * num_output_files;
591
- stats.total_input_raw_key_bytes =
592
- num_input_records * (key_size + 8);
593
- stats.total_input_raw_value_bytes =
594
- num_input_records * value_size;
563
+ EstimatedFileSize(num_output_records / num_output_files, key_size,
564
+ value_size, compression_ratio) *
565
+ num_output_files;
566
+ stats.total_input_raw_key_bytes = num_input_records * (key_size + 8);
567
+ stats.total_input_raw_value_bytes = num_input_records * value_size;
595
568
 
596
569
  stats.is_full_compaction = is_full;
597
570
  stats.is_manual_compaction = is_manual;
598
571
 
599
572
  stats.num_records_replaced = num_records_replaced;
600
573
 
601
- CopyPrefix(smallest_key,
602
- CompactionJobStats::kMaxPrefixLength,
574
+ CopyPrefix(smallest_key, CompactionJobStats::kMaxPrefixLength,
603
575
  &stats.smallest_output_key_prefix);
604
- CopyPrefix(largest_key,
605
- CompactionJobStats::kMaxPrefixLength,
576
+ CopyPrefix(largest_key, CompactionJobStats::kMaxPrefixLength,
606
577
  &stats.largest_output_key_prefix);
607
578
 
608
579
  return stats;
@@ -662,13 +633,11 @@ TEST_P(CompactionJobStatsTest, CompactionJobStatsTest) {
662
633
 
663
634
  // 1st Phase: generate "num_L0_files" L0 files.
664
635
  int num_L0_files = 0;
665
- for (uint64_t start_key = key_base;
666
- start_key <= key_base * kTestScale;
667
- start_key += key_base) {
668
- MakeTableWithKeyValues(
669
- &rnd, start_key, start_key + key_base - 1,
670
- kKeySize, kValueSize, key_interval,
671
- compression_ratio, 1);
636
+ for (uint64_t start_key = key_base; start_key <= key_base * kTestScale;
637
+ start_key += key_base) {
638
+ MakeTableWithKeyValues(&rnd, start_key, start_key + key_base - 1,
639
+ kKeySize, kValueSize, key_interval,
640
+ compression_ratio, 1);
672
641
  snprintf(buf, kBufSize, "%d", ++num_L0_files);
673
642
  ASSERT_EQ(std::string(buf), FilesPerLevel(1));
674
643
  }
@@ -684,13 +653,9 @@ TEST_P(CompactionJobStatsTest, CompactionJobStatsTest) {
684
653
  start_key += key_base, count++) {
685
654
  smallest_key = Key(start_key, 10);
686
655
  largest_key = Key(start_key + key_base - key_interval, 10);
687
- stats_checker->AddExpectedStats(
688
- NewManualCompactionJobStats(
689
- smallest_key, largest_key,
690
- 1, 0, num_keys_per_L0_file,
691
- kKeySize, kValueSize,
692
- 1, num_keys_per_L0_file,
693
- compression_ratio, 0));
656
+ stats_checker->AddExpectedStats(NewManualCompactionJobStats(
657
+ smallest_key, largest_key, 1, 0, num_keys_per_L0_file, kKeySize,
658
+ kValueSize, 1, num_keys_per_L0_file, compression_ratio, 0));
694
659
  ASSERT_EQ(stats_checker->NumberOfUnverifiedStats(), 1U);
695
660
  TEST_Compact(0, 1, smallest_key, largest_key);
696
661
  snprintf(buf, kBufSize, "%d,%d", num_L0_files - count, count);
@@ -701,14 +666,10 @@ TEST_P(CompactionJobStatsTest, CompactionJobStatsTest) {
701
666
  int num_remaining_L0 = num_L0_files - L0_compaction_count;
702
667
  smallest_key = Key(key_base * (L0_compaction_count + 1), 10);
703
668
  largest_key = Key(key_base * (kTestScale + 1) - key_interval, 10);
704
- stats_checker->AddExpectedStats(
705
- NewManualCompactionJobStats(
706
- smallest_key, largest_key,
707
- num_remaining_L0,
708
- 0, num_keys_per_L0_file * num_remaining_L0,
709
- kKeySize, kValueSize,
710
- 1, num_keys_per_L0_file * num_remaining_L0,
711
- compression_ratio, 0));
669
+ stats_checker->AddExpectedStats(NewManualCompactionJobStats(
670
+ smallest_key, largest_key, num_remaining_L0, 0,
671
+ num_keys_per_L0_file * num_remaining_L0, kKeySize, kValueSize, 1,
672
+ num_keys_per_L0_file * num_remaining_L0, compression_ratio, 0));
712
673
  ASSERT_EQ(stats_checker->NumberOfUnverifiedStats(), 1U);
713
674
  TEST_Compact(0, 1, smallest_key, largest_key);
714
675
 
@@ -719,13 +680,11 @@ TEST_P(CompactionJobStatsTest, CompactionJobStatsTest) {
719
680
 
720
681
  // 3rd Phase: generate sparse L0 files (wider key-range, same num of keys)
721
682
  int sparseness = 2;
722
- for (uint64_t start_key = key_base;
723
- start_key <= key_base * kTestScale;
724
- start_key += key_base * sparseness) {
683
+ for (uint64_t start_key = key_base; start_key <= key_base * kTestScale;
684
+ start_key += key_base * sparseness) {
725
685
  MakeTableWithKeyValues(
726
- &rnd, start_key, start_key + key_base * sparseness - 1,
727
- kKeySize, kValueSize,
728
- key_base * sparseness / num_keys_per_L0_file,
686
+ &rnd, start_key, start_key + key_base * sparseness - 1, kKeySize,
687
+ kValueSize, key_base * sparseness / num_keys_per_L0_file,
729
688
  compression_ratio, 1);
730
689
  snprintf(buf, kBufSize, "%d,%d", ++num_L0_files, num_L1_files);
731
690
  ASSERT_EQ(std::string(buf), FilesPerLevel(1));
@@ -737,21 +696,15 @@ TEST_P(CompactionJobStatsTest, CompactionJobStatsTest) {
737
696
  // output files without coordinating to see if the output could fit into
738
697
  // a smaller number of files like it does when it runs sequentially
739
698
  int num_output_files = options.max_subcompactions > 1 ? 2 : 1;
740
- for (uint64_t start_key = key_base;
741
- num_L0_files > 1;
699
+ for (uint64_t start_key = key_base; num_L0_files > 1;
742
700
  start_key += key_base * sparseness) {
743
701
  smallest_key = Key(start_key, 10);
744
- largest_key =
745
- Key(start_key + key_base * sparseness - key_interval, 10);
746
- stats_checker->AddExpectedStats(
747
- NewManualCompactionJobStats(
748
- smallest_key, largest_key,
749
- 3, 2, num_keys_per_L0_file * 3,
750
- kKeySize, kValueSize,
751
- num_output_files,
752
- num_keys_per_L0_file * 2, // 1/3 of the data will be updated.
753
- compression_ratio,
754
- num_keys_per_L0_file));
702
+ largest_key = Key(start_key + key_base * sparseness - key_interval, 10);
703
+ stats_checker->AddExpectedStats(NewManualCompactionJobStats(
704
+ smallest_key, largest_key, 3, 2, num_keys_per_L0_file * 3, kKeySize,
705
+ kValueSize, num_output_files,
706
+ num_keys_per_L0_file * 2, // 1/3 of the data will be updated.
707
+ compression_ratio, num_keys_per_L0_file));
755
708
  ASSERT_EQ(stats_checker->NumberOfUnverifiedStats(), 1U);
756
709
  Compact(1, smallest_key, largest_key);
757
710
  if (options.max_subcompactions == 1) {
@@ -766,14 +719,10 @@ TEST_P(CompactionJobStatsTest, CompactionJobStatsTest) {
766
719
  // In the first sub-compaction, we expect L0 compaction.
767
720
  smallest_key = Key(key_base, 10);
768
721
  largest_key = Key(key_base * (kTestScale + 1) - key_interval, 10);
769
- stats_checker->AddExpectedStats(
770
- NewManualCompactionJobStats(
771
- Key(key_base * (kTestScale + 1 - sparseness), 10), largest_key,
772
- 2, 1, num_keys_per_L0_file * 3,
773
- kKeySize, kValueSize,
774
- 1, num_keys_per_L0_file * 2,
775
- compression_ratio,
776
- num_keys_per_L0_file));
722
+ stats_checker->AddExpectedStats(NewManualCompactionJobStats(
723
+ Key(key_base * (kTestScale + 1 - sparseness), 10), largest_key, 2, 1,
724
+ num_keys_per_L0_file * 3, kKeySize, kValueSize, 1,
725
+ num_keys_per_L0_file * 2, compression_ratio, num_keys_per_L0_file));
777
726
  ASSERT_EQ(stats_checker->NumberOfUnverifiedStats(), 1U);
778
727
  Compact(1, smallest_key, largest_key);
779
728
 
@@ -869,7 +818,7 @@ TEST_P(CompactionJobStatsTest, DeletionStatsTest) {
869
818
  Options options;
870
819
  options.listeners.emplace_back(stats_checker);
871
820
  options.create_if_missing = true;
872
- options.level0_file_num_compaction_trigger = kTestScale+1;
821
+ options.level0_file_num_compaction_trigger = kTestScale + 1;
873
822
  options.num_levels = 3;
874
823
  options.compression = kNoCompression;
875
824
  options.max_bytes_for_level_multiplier = 2;
@@ -881,13 +830,10 @@ TEST_P(CompactionJobStatsTest, DeletionStatsTest) {
881
830
  // Stage 1: Generate several L0 files and then send them to L2 by
882
831
  // using CompactRangeOptions and CompactRange(). These files will
883
832
  // have a strict subset of the keys from the full key-range
884
- for (uint64_t start_key = key_base;
885
- start_key <= key_base * kTestScale / 2;
886
- start_key += key_base) {
887
- MakeTableWithKeyValues(
888
- &rnd, start_key, start_key + key_base - 1,
889
- kKeySize, kValueSize, key_interval,
890
- compression_ratio, 1);
833
+ for (uint64_t start_key = key_base; start_key <= key_base * kTestScale / 2;
834
+ start_key += key_base) {
835
+ MakeTableWithKeyValues(&rnd, start_key, start_key + key_base - 1, kKeySize,
836
+ kValueSize, key_interval, compression_ratio, 1);
891
837
  }
892
838
 
893
839
  CompactRangeOptions cr_options;
@@ -897,13 +843,10 @@ TEST_P(CompactionJobStatsTest, DeletionStatsTest) {
897
843
  ASSERT_GT(NumTableFilesAtLevel(2, 1), 0);
898
844
 
899
845
  // Stage 2: Generate files including keys from the entire key range
900
- for (uint64_t start_key = key_base;
901
- start_key <= key_base * kTestScale;
902
- start_key += key_base) {
903
- MakeTableWithKeyValues(
904
- &rnd, start_key, start_key + key_base - 1,
905
- kKeySize, kValueSize, key_interval,
906
- compression_ratio, 1);
846
+ for (uint64_t start_key = key_base; start_key <= key_base * kTestScale;
847
+ start_key += key_base) {
848
+ MakeTableWithKeyValues(&rnd, start_key, start_key + key_base - 1, kKeySize,
849
+ kValueSize, key_interval, compression_ratio, 1);
907
850
  }
908
851
 
909
852
  // Send these L0 files to L1
@@ -912,16 +855,16 @@ TEST_P(CompactionJobStatsTest, DeletionStatsTest) {
912
855
 
913
856
  // Add a new record and flush so now there is a L0 file
914
857
  // with a value too (not just deletions from the next step)
915
- ASSERT_OK(Put(1, Key(key_base-6, kKeySize), "test"));
858
+ ASSERT_OK(Put(1, Key(key_base - 6, kKeySize), "test"));
916
859
  ASSERT_OK(Flush(1));
917
860
 
918
861
  // Stage 3: Generate L0 files with some deletions so now
919
862
  // there are files with the same key range in L0, L1, and L2
920
863
  int deletion_interval = 3;
921
864
  CompactionJobStats first_compaction_stats;
922
- SelectivelyDeleteKeys(key_base, largest_key_num,
923
- key_interval, deletion_interval, kKeySize, cutoff_key_num,
924
- &first_compaction_stats, 1);
865
+ SelectivelyDeleteKeys(key_base, largest_key_num, key_interval,
866
+ deletion_interval, kKeySize, cutoff_key_num,
867
+ &first_compaction_stats, 1);
925
868
 
926
869
  stats_checker->AddExpectedStats(first_compaction_stats);
927
870
 
@@ -932,8 +875,7 @@ TEST_P(CompactionJobStatsTest, DeletionStatsTest) {
932
875
  namespace {
933
876
  int GetUniversalCompactionInputUnits(uint32_t num_flushes) {
934
877
  uint32_t compaction_input_units;
935
- for (compaction_input_units = 1;
936
- num_flushes >= compaction_input_units;
878
+ for (compaction_input_units = 1; num_flushes >= compaction_input_units;
937
879
  compaction_input_units *= 2) {
938
880
  if ((num_flushes & compaction_input_units) != 0) {
939
881
  return compaction_input_units > 1 ? compaction_input_units : 0;
@@ -998,13 +940,10 @@ TEST_P(CompactionJobStatsTest, UniversalCompactionTest) {
998
940
  }
999
941
  ASSERT_EQ(stats_checker->NumberOfUnverifiedStats(), 3U);
1000
942
 
1001
- for (uint64_t start_key = key_base;
1002
- start_key <= key_base * kTestScale;
1003
- start_key += key_base) {
1004
- MakeTableWithKeyValues(
1005
- &rnd, start_key, start_key + key_base - 1,
1006
- kKeySize, kValueSize, key_interval,
1007
- compression_ratio, 1);
943
+ for (uint64_t start_key = key_base; start_key <= key_base * kTestScale;
944
+ start_key += key_base) {
945
+ MakeTableWithKeyValues(&rnd, start_key, start_key + key_base - 1, kKeySize,
946
+ kValueSize, key_interval, compression_ratio, 1);
1008
947
  ASSERT_OK(static_cast_with_check<DBImpl>(db_)->TEST_WaitForCompact());
1009
948
  }
1010
949
  ASSERT_EQ(stats_checker->NumberOfUnverifiedStats(), 0U);
@@ -40,7 +40,7 @@ namespace ROCKSDB_NAMESPACE {
40
40
  namespace {
41
41
 
42
42
  void VerifyInitializationOfCompactionJobStats(
43
- const CompactionJobStats& compaction_job_stats) {
43
+ const CompactionJobStats& compaction_job_stats) {
44
44
  #if !defined(IOS_CROSS_COMPILE)
45
45
  ASSERT_EQ(compaction_job_stats.elapsed_micros, 0U);
46
46
 
@@ -499,8 +499,7 @@ class CompactionJobTestBase : public testing::Test {
499
499
 
500
500
  // This is how the key will look like once it's written in bottommost
501
501
  // file
502
- InternalKey bottommost_internal_key(
503
- key, 0, kTypeValue);
502
+ InternalKey bottommost_internal_key(key, 0, kTypeValue);
504
503
 
505
504
  if (corrupt_id(k)) {
506
505
  test::CorruptKeyType(&internal_key);
@@ -620,7 +619,7 @@ class CompactionJobTestBase : public testing::Test {
620
619
  CompactionInputFiles compaction_level;
621
620
  compaction_level.level = input_levels[i];
622
621
  compaction_level.files.insert(compaction_level.files.end(),
623
- level_files.begin(), level_files.end());
622
+ level_files.begin(), level_files.end());
624
623
  compaction_input_files.push_back(compaction_level);
625
624
  num_input_files += level_files.size();
626
625
  }
@@ -32,7 +32,7 @@ bool FindIntraL0Compaction(const std::vector<FileMetaData*>& level_files,
32
32
  uint64_t max_compact_bytes_per_del_file,
33
33
  uint64_t max_compaction_bytes,
34
34
  CompactionInputFiles* comp_inputs,
35
- SequenceNumber earliest_mem_seqno) {
35
+ const SequenceNumber earliest_mem_seqno) {
36
36
  // Do not pick ingested file when there is at least one memtable not flushed
37
37
  // which of seqno is overlap with the sst.
38
38
  TEST_SYNC_POINT("FindIntraL0Compaction");
@@ -294,13 +294,12 @@ bool CompactionPicker::RangeOverlapWithCompaction(
294
294
  }
295
295
 
296
296
  bool CompactionPicker::FilesRangeOverlapWithCompaction(
297
- const std::vector<CompactionInputFiles>& inputs, int level) const {
297
+ const std::vector<CompactionInputFiles>& inputs, int level,
298
+ int penultimate_level) const {
298
299
  bool is_empty = true;
299
- int start_level = -1;
300
300
  for (auto& in : inputs) {
301
301
  if (!in.empty()) {
302
302
  is_empty = false;
303
- start_level = in.level; // inputs are sorted by level
304
303
  break;
305
304
  }
306
305
  }
@@ -309,10 +308,10 @@ bool CompactionPicker::FilesRangeOverlapWithCompaction(
309
308
  return false;
310
309
  }
311
310
 
311
+ // TODO: Intra L0 compactions can have the ranges overlapped, but the input
312
+ // files cannot be overlapped in the order of L0 files.
312
313
  InternalKey smallest, largest;
313
314
  GetRange(inputs, &smallest, &largest, Compaction::kInvalidLevel);
314
- int penultimate_level =
315
- Compaction::EvaluatePenultimateLevel(ioptions_, start_level, level);
316
315
  if (penultimate_level != Compaction::kInvalidLevel) {
317
316
  if (ioptions_.compaction_style == kCompactionStyleUniversal) {
318
317
  if (RangeOverlapWithCompaction(smallest.user_key(), largest.user_key(),
@@ -350,11 +349,25 @@ Compaction* CompactionPicker::CompactFiles(
350
349
  const std::vector<CompactionInputFiles>& input_files, int output_level,
351
350
  VersionStorageInfo* vstorage, const MutableCFOptions& mutable_cf_options,
352
351
  const MutableDBOptions& mutable_db_options, uint32_t output_path_id) {
352
+ #ifndef NDEBUG
353
353
  assert(input_files.size());
354
354
  // This compaction output should not overlap with a running compaction as
355
355
  // `SanitizeCompactionInputFiles` should've checked earlier and db mutex
356
356
  // shouldn't have been released since.
357
- assert(!FilesRangeOverlapWithCompaction(input_files, output_level));
357
+ int start_level = Compaction::kInvalidLevel;
358
+ for (const auto& in : input_files) {
359
+ // input_files should already be sorted by level
360
+ if (!in.empty()) {
361
+ start_level = in.level;
362
+ break;
363
+ }
364
+ }
365
+ assert(output_level == 0 ||
366
+ !FilesRangeOverlapWithCompaction(
367
+ input_files, output_level,
368
+ Compaction::EvaluatePenultimateLevel(vstorage, ioptions_,
369
+ start_level, output_level)));
370
+ #endif /* !NDEBUG */
358
371
 
359
372
  CompressionType compression_type;
360
373
  if (compact_options.compression == kDisableCompressionOption) {
@@ -600,7 +613,8 @@ Compaction* CompactionPicker::CompactRange(
600
613
  int input_level, int output_level,
601
614
  const CompactRangeOptions& compact_range_options, const InternalKey* begin,
602
615
  const InternalKey* end, InternalKey** compaction_end, bool* manual_conflict,
603
- uint64_t max_file_num_to_ignore, const std::string& trim_ts) {
616
+ uint64_t max_file_num_to_ignore, const std::string& trim_ts,
617
+ const SequenceNumber /*earliest_mem_seqno*/) {
604
618
  // CompactionPickerFIFO has its own implementation of compact range
605
619
  assert(ioptions_.compaction_style != kCompactionStyleFIFO);
606
620
 
@@ -652,7 +666,10 @@ Compaction* CompactionPicker::CompactRange(
652
666
 
653
667
  // 2 non-exclusive manual compactions could run at the same time producing
654
668
  // overlaping outputs in the same level.
655
- if (FilesRangeOverlapWithCompaction(inputs, output_level)) {
669
+ if (FilesRangeOverlapWithCompaction(
670
+ inputs, output_level,
671
+ Compaction::EvaluatePenultimateLevel(vstorage, ioptions_,
672
+ start_level, output_level))) {
656
673
  // This compaction output could potentially conflict with the output
657
674
  // of a currently running compaction, we cannot run it.
658
675
  *manual_conflict = true;
@@ -831,7 +848,10 @@ Compaction* CompactionPicker::CompactRange(
831
848
 
832
849
  // 2 non-exclusive manual compactions could run at the same time producing
833
850
  // overlaping outputs in the same level.
834
- if (FilesRangeOverlapWithCompaction(compaction_inputs, output_level)) {
851
+ if (FilesRangeOverlapWithCompaction(
852
+ compaction_inputs, output_level,
853
+ Compaction::EvaluatePenultimateLevel(vstorage, ioptions_, input_level,
854
+ output_level))) {
835
855
  // This compaction output could potentially conflict with the output
836
856
  // of a currently running compaction, we cannot run it.
837
857
  *manual_conflict = true;
@@ -899,7 +919,8 @@ bool HaveOverlappingKeyRanges(const Comparator* c, const SstFileMetaData& a,
899
919
 
900
920
  Status CompactionPicker::SanitizeCompactionInputFilesForAllLevels(
901
921
  std::unordered_set<uint64_t>* input_files,
902
- const ColumnFamilyMetaData& cf_meta, const int output_level) const {
922
+ const ColumnFamilyMetaData& cf_meta, const int output_level,
923
+ const SequenceNumber earliest_mem_seqno) const {
903
924
  auto& levels = cf_meta.levels;
904
925
  auto comparator = icmp_->user_comparator();
905
926
 
@@ -976,6 +997,13 @@ Status CompactionPicker::SanitizeCompactionInputFilesForAllLevels(
976
997
  current_files[f].name +
977
998
  " is currently being compacted.");
978
999
  }
1000
+ if (output_level == 0 &&
1001
+ current_files[f].largest_seqno > earliest_mem_seqno) {
1002
+ return Status::Aborted(
1003
+ "Necessary compaction input file " + current_files[f].name +
1004
+ " has overlapping seqnos with earliest memtable seqnos.");
1005
+ }
1006
+
979
1007
  input_files->insert(TableFileNameToNumber(current_files[f].name));
980
1008
  }
981
1009
 
@@ -1032,12 +1060,14 @@ Status CompactionPicker::SanitizeCompactionInputFilesForAllLevels(
1032
1060
  "A running compaction is writing to the same output level in an "
1033
1061
  "overlapping key range");
1034
1062
  }
1063
+
1035
1064
  return Status::OK();
1036
1065
  }
1037
1066
 
1038
1067
  Status CompactionPicker::SanitizeCompactionInputFiles(
1039
1068
  std::unordered_set<uint64_t>* input_files,
1040
- const ColumnFamilyMetaData& cf_meta, const int output_level) const {
1069
+ const ColumnFamilyMetaData& cf_meta, const int output_level,
1070
+ const SequenceNumber earliest_mem_seqno) const {
1041
1071
  assert(static_cast<int>(cf_meta.levels.size()) - 1 ==
1042
1072
  cf_meta.levels[cf_meta.levels.size() - 1].level);
1043
1073
  if (output_level >= static_cast<int>(cf_meta.levels.size())) {
@@ -1063,8 +1093,8 @@ Status CompactionPicker::SanitizeCompactionInputFiles(
1063
1093
  "A compaction must contain at least one file.");
1064
1094
  }
1065
1095
 
1066
- Status s = SanitizeCompactionInputFilesForAllLevels(input_files, cf_meta,
1067
- output_level);
1096
+ Status s = SanitizeCompactionInputFilesForAllLevels(
1097
+ input_files, cf_meta, output_level, earliest_mem_seqno);
1068
1098
 
1069
1099
  if (!s.ok()) {
1070
1100
  return s;
@@ -1116,7 +1146,8 @@ void CompactionPicker::RegisterCompaction(Compaction* c) {
1116
1146
  }
1117
1147
  assert(ioptions_.compaction_style != kCompactionStyleLevel ||
1118
1148
  c->output_level() == 0 ||
1119
- !FilesRangeOverlapWithCompaction(*c->inputs(), c->output_level()));
1149
+ !FilesRangeOverlapWithCompaction(*c->inputs(), c->output_level(),
1150
+ c->GetPenultimateLevel()));
1120
1151
  if (c->start_level() == 0 ||
1121
1152
  ioptions_.compaction_style == kCompactionStyleUniversal) {
1122
1153
  level0_compactions_in_progress_.insert(c);