@nxtedition/rocksdb 8.2.0 → 8.2.2

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 (321) hide show
  1. package/binding.cc +3 -3
  2. package/deps/rocksdb/rocksdb/CMakeLists.txt +16 -52
  3. package/deps/rocksdb/rocksdb/Makefile +10 -5
  4. package/deps/rocksdb/rocksdb/TARGETS +8 -345
  5. package/deps/rocksdb/rocksdb/cache/cache_test.cc +92 -0
  6. package/deps/rocksdb/rocksdb/cache/clock_cache.cc +32 -32
  7. package/deps/rocksdb/rocksdb/cache/clock_cache.h +12 -9
  8. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +6 -43
  9. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +3 -13
  10. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +8 -5
  11. package/deps/rocksdb/rocksdb/cache/lru_cache.cc +21 -47
  12. package/deps/rocksdb/rocksdb/cache/lru_cache.h +3 -8
  13. package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +2 -1
  14. package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +1 -2
  15. package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +44 -7
  16. package/deps/rocksdb/rocksdb/cache/sharded_cache.h +13 -14
  17. package/deps/rocksdb/rocksdb/db/blob/blob_contents.h +1 -1
  18. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +1 -0
  19. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.cc +2 -2
  20. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.h +2 -1
  21. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache_test.cc +17 -8
  22. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +40 -21
  23. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +5 -1
  24. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +41 -42
  25. package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.cc +1 -1
  26. package/deps/rocksdb/rocksdb/db/blob/blob_log_writer.cc +1 -1
  27. package/deps/rocksdb/rocksdb/db/blob/blob_source.cc +5 -4
  28. package/deps/rocksdb/rocksdb/db/blob/blob_source.h +2 -2
  29. package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +5 -3
  30. package/deps/rocksdb/rocksdb/db/builder.cc +7 -6
  31. package/deps/rocksdb/rocksdb/db/builder.h +2 -2
  32. package/deps/rocksdb/rocksdb/db/c.cc +76 -5
  33. package/deps/rocksdb/rocksdb/db/c_test.c +141 -0
  34. package/deps/rocksdb/rocksdb/db/column_family.cc +32 -0
  35. package/deps/rocksdb/rocksdb/db/compact_files_test.cc +3 -2
  36. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +5 -0
  37. package/deps/rocksdb/rocksdb/db/compaction/compaction.h +8 -5
  38. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +12 -10
  39. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +21 -17
  40. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +2 -2
  41. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +8 -7
  42. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +3 -1
  43. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +1 -1
  44. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +77 -50
  45. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +4 -5
  46. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +55 -8
  47. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +142 -56
  48. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +1 -1
  49. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +1 -2
  50. package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +21 -20
  51. package/deps/rocksdb/rocksdb/db/convenience.cc +8 -6
  52. package/deps/rocksdb/rocksdb/db/corruption_test.cc +5 -4
  53. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +6 -3
  54. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +260 -220
  55. package/deps/rocksdb/rocksdb/db/db_clip_test.cc +142 -0
  56. package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +1 -1
  57. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +333 -27
  58. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +5 -0
  59. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +7 -0
  60. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +189 -27
  61. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +23 -10
  62. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +134 -90
  63. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +2 -2
  64. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +5 -3
  65. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +5 -1
  66. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +124 -16
  67. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +10 -0
  68. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +7 -0
  69. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +15 -0
  70. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +11 -5
  71. package/deps/rocksdb/rocksdb/db/db_iter.cc +7 -8
  72. package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +54 -3
  73. package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +42 -0
  74. package/deps/rocksdb/rocksdb/db/db_options_test.cc +116 -1
  75. package/deps/rocksdb/rocksdb/db/db_properties_test.cc +3 -2
  76. package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +3 -2
  77. package/deps/rocksdb/rocksdb/db/db_sst_test.cc +9 -8
  78. package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +142 -63
  79. package/deps/rocksdb/rocksdb/db/db_test.cc +28 -7
  80. package/deps/rocksdb/rocksdb/db/db_test2.cc +71 -131
  81. package/deps/rocksdb/rocksdb/db/db_test_util.cc +18 -0
  82. package/deps/rocksdb/rocksdb/db/db_test_util.h +6 -0
  83. package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +10 -10
  84. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +25 -0
  85. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +88 -0
  86. package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +67 -0
  87. package/deps/rocksdb/rocksdb/db/db_write_test.cc +5 -0
  88. package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +4 -4
  89. package/deps/rocksdb/rocksdb/db/experimental.cc +4 -2
  90. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +86 -1
  91. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +15 -2
  92. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +1 -2
  93. package/deps/rocksdb/rocksdb/db/flush_job.cc +21 -14
  94. package/deps/rocksdb/rocksdb/db/forward_iterator.cc +14 -7
  95. package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +31 -8
  96. package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +21 -19
  97. package/deps/rocksdb/rocksdb/db/internal_stats.cc +42 -12
  98. package/deps/rocksdb/rocksdb/db/internal_stats.h +1 -0
  99. package/deps/rocksdb/rocksdb/db/kv_checksum.h +92 -6
  100. package/deps/rocksdb/rocksdb/db/listener_test.cc +2 -2
  101. package/deps/rocksdb/rocksdb/db/log_format.h +8 -4
  102. package/deps/rocksdb/rocksdb/db/log_reader.cc +129 -51
  103. package/deps/rocksdb/rocksdb/db/log_reader.h +16 -0
  104. package/deps/rocksdb/rocksdb/db/log_test.cc +125 -4
  105. package/deps/rocksdb/rocksdb/db/log_writer.cc +32 -2
  106. package/deps/rocksdb/rocksdb/db/log_writer.h +16 -0
  107. package/deps/rocksdb/rocksdb/db/memtable.cc +17 -46
  108. package/deps/rocksdb/rocksdb/db/memtable.h +1 -1
  109. package/deps/rocksdb/rocksdb/db/memtable_list.cc +8 -4
  110. package/deps/rocksdb/rocksdb/db/merge_helper.cc +1 -1
  111. package/deps/rocksdb/rocksdb/db/perf_context_test.cc +2 -1
  112. package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +5 -4
  113. package/deps/rocksdb/rocksdb/db/repair.cc +38 -11
  114. package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +3 -3
  115. package/deps/rocksdb/rocksdb/db/table_cache.cc +68 -51
  116. package/deps/rocksdb/rocksdb/db/table_cache.h +20 -10
  117. package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +2 -1
  118. package/deps/rocksdb/rocksdb/db/table_properties_collector_test.cc +6 -3
  119. package/deps/rocksdb/rocksdb/db/version_builder.cc +9 -5
  120. package/deps/rocksdb/rocksdb/db/version_builder.h +2 -1
  121. package/deps/rocksdb/rocksdb/db/version_builder_test.cc +140 -120
  122. package/deps/rocksdb/rocksdb/db/version_edit.cc +14 -0
  123. package/deps/rocksdb/rocksdb/db/version_edit.h +12 -4
  124. package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +21 -13
  125. package/deps/rocksdb/rocksdb/db/version_edit_handler.h +26 -16
  126. package/deps/rocksdb/rocksdb/db/version_edit_test.cc +9 -9
  127. package/deps/rocksdb/rocksdb/db/version_set.cc +292 -96
  128. package/deps/rocksdb/rocksdb/db/version_set.h +53 -28
  129. package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +1 -0
  130. package/deps/rocksdb/rocksdb/db/version_set_test.cc +62 -22
  131. package/deps/rocksdb/rocksdb/db/version_util.h +5 -4
  132. package/deps/rocksdb/rocksdb/db/write_batch.cc +3 -1
  133. package/deps/rocksdb/rocksdb/db_stress_tool/CMakeLists.txt +1 -0
  134. package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +119 -27
  135. package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +123 -0
  136. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +4 -0
  137. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +7 -2
  138. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +34 -0
  139. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +13 -0
  140. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +43 -33
  141. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +29 -17
  142. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +5 -0
  143. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +6 -1
  144. package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +85 -50
  145. package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.h +96 -54
  146. package/deps/rocksdb/rocksdb/db_stress_tool/expected_value.cc +122 -0
  147. package/deps/rocksdb/rocksdb/db_stress_tool/expected_value.h +206 -0
  148. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +9 -1
  149. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.h +9 -3
  150. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +322 -92
  151. package/deps/rocksdb/rocksdb/env/env_posix.cc +12 -8
  152. package/deps/rocksdb/rocksdb/env/env_test.cc +31 -0
  153. package/deps/rocksdb/rocksdb/env/mock_env.cc +1 -1
  154. package/deps/rocksdb/rocksdb/env/unique_id_gen.h +14 -0
  155. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +1 -1
  156. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +5 -1
  157. package/deps/rocksdb/rocksdb/file/file_util.cc +3 -3
  158. package/deps/rocksdb/rocksdb/file/file_util.h +2 -0
  159. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +89 -0
  160. package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +22 -7
  161. package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +3 -2
  162. package/deps/rocksdb/rocksdb/file/readahead_raf.cc +1 -1
  163. package/deps/rocksdb/rocksdb/file/sequence_file_reader.cc +1 -1
  164. package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +1 -1
  165. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_cache.h +3 -0
  166. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +154 -74
  167. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +27 -7
  168. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +107 -28
  169. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +19 -0
  170. package/deps/rocksdb/rocksdb/include/rocksdb/env.h +8 -0
  171. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +2 -0
  172. package/deps/rocksdb/rocksdb/include/rocksdb/memory_allocator.h +7 -1
  173. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +137 -152
  174. package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +61 -26
  175. package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +30 -26
  176. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +33 -16
  177. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +87 -8
  178. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +1 -1
  179. package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +5 -0
  180. package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +1 -0
  181. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_util.h +1 -0
  182. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +7 -0
  183. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +0 -1
  184. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
  185. package/deps/rocksdb/rocksdb/include/rocksdb/write_buffer_manager.h +9 -2
  186. package/deps/rocksdb/rocksdb/logging/env_logger.h +2 -0
  187. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +78 -42
  188. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.h +14 -9
  189. package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +1 -0
  190. package/deps/rocksdb/rocksdb/memtable/skiplist_test.cc +1 -0
  191. package/deps/rocksdb/rocksdb/memtable/write_buffer_manager.cc +4 -9
  192. package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +19 -11
  193. package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.h +1 -1
  194. package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +211 -555
  195. package/deps/rocksdb/rocksdb/monitoring/perf_step_timer.h +1 -1
  196. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +36 -2
  197. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.cc +17 -7
  198. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.h +10 -7
  199. package/deps/rocksdb/rocksdb/monitoring/thread_status_util.cc +19 -18
  200. package/deps/rocksdb/rocksdb/monitoring/thread_status_util.h +10 -2
  201. package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +14 -0
  202. package/deps/rocksdb/rocksdb/options/cf_options.cc +35 -2
  203. package/deps/rocksdb/rocksdb/options/cf_options.h +5 -0
  204. package/deps/rocksdb/rocksdb/options/customizable_test.cc +1 -1
  205. package/deps/rocksdb/rocksdb/options/options.cc +12 -53
  206. package/deps/rocksdb/rocksdb/options/options_helper.cc +4 -0
  207. package/deps/rocksdb/rocksdb/options/options_parser.cc +11 -0
  208. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +32 -4
  209. package/deps/rocksdb/rocksdb/options/options_test.cc +89 -5
  210. package/deps/rocksdb/rocksdb/port/lang.h +27 -0
  211. package/deps/rocksdb/rocksdb/port/stack_trace.cc +67 -24
  212. package/deps/rocksdb/rocksdb/src.mk +2 -0
  213. package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +2 -3
  214. package/deps/rocksdb/rocksdb/table/block_based/block.cc +195 -35
  215. package/deps/rocksdb/rocksdb/table/block_based/block.h +197 -24
  216. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +71 -51
  217. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +7 -1
  218. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +4 -6
  219. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +3 -0
  220. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +43 -2
  221. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +36 -6
  222. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +266 -166
  223. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +44 -14
  224. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +1 -1
  225. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +63 -56
  226. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +8 -2
  227. package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +4 -2
  228. package/deps/rocksdb/rocksdb/table/block_based/block_cache.cc +10 -0
  229. package/deps/rocksdb/rocksdb/table/block_based/block_cache.h +14 -2
  230. package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +918 -2
  231. package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +3 -2
  232. package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +10 -9
  233. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +6 -8
  234. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.h +2 -2
  235. package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.cc +1 -1
  236. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +18 -23
  237. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +8 -8
  238. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block_test.cc +16 -32
  239. package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +7 -8
  240. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +4 -5
  241. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +3 -3
  242. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +46 -53
  243. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +12 -12
  244. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +7 -9
  245. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +26 -23
  246. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.h +2 -1
  247. package/deps/rocksdb/rocksdb/table/block_based/reader_common.h +3 -0
  248. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +4 -2
  249. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +3 -2
  250. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +7 -1
  251. package/deps/rocksdb/rocksdb/table/block_fetcher.h +1 -1
  252. package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +2 -1
  253. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +3 -2
  254. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.cc +5 -2
  255. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.h +4 -2
  256. package/deps/rocksdb/rocksdb/table/format.cc +4 -4
  257. package/deps/rocksdb/rocksdb/table/format.h +1 -1
  258. package/deps/rocksdb/rocksdb/table/get_context.cc +1 -1
  259. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +33 -22
  260. package/deps/rocksdb/rocksdb/table/meta_blocks.h +4 -0
  261. package/deps/rocksdb/rocksdb/table/mock_table.cc +4 -2
  262. package/deps/rocksdb/rocksdb/table/persistent_cache_helper.h +1 -1
  263. package/deps/rocksdb/rocksdb/table/persistent_cache_options.h +1 -1
  264. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +18 -10
  265. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.h +4 -3
  266. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +10 -7
  267. package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +4 -2
  268. package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +11 -0
  269. package/deps/rocksdb/rocksdb/table/table_builder.h +14 -5
  270. package/deps/rocksdb/rocksdb/table/table_properties.cc +2 -0
  271. package/deps/rocksdb/rocksdb/table/table_reader.h +6 -3
  272. package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +1 -1
  273. package/deps/rocksdb/rocksdb/table/table_test.cc +291 -34
  274. package/deps/rocksdb/rocksdb/test_util/secondary_cache_test_util.h +3 -1
  275. package/deps/rocksdb/rocksdb/test_util/testharness.h +5 -0
  276. package/deps/rocksdb/rocksdb/test_util/testutil.cc +2 -2
  277. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +33 -17
  278. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +3 -1
  279. package/deps/rocksdb/rocksdb/util/bloom_impl.h +2 -2
  280. package/deps/rocksdb/rocksdb/util/compression.h +1 -1
  281. package/deps/rocksdb/rocksdb/util/crc32c.cc +24 -83
  282. package/deps/rocksdb/rocksdb/util/crc32c_arm64.cc +7 -9
  283. package/deps/rocksdb/rocksdb/util/file_checksum_helper.cc +4 -1
  284. package/deps/rocksdb/rocksdb/util/filter_bench.cc +1 -1
  285. package/deps/rocksdb/rocksdb/util/gflags_compat.h +9 -10
  286. package/deps/rocksdb/rocksdb/util/math.h +12 -7
  287. package/deps/rocksdb/rocksdb/util/rate_limiter.cc +16 -18
  288. package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +46 -2
  289. package/deps/rocksdb/rocksdb/util/ribbon_test.cc +6 -6
  290. package/deps/rocksdb/rocksdb/util/slice_transform_test.cc +12 -7
  291. package/deps/rocksdb/rocksdb/util/stop_watch.h +31 -13
  292. package/deps/rocksdb/rocksdb/util/thread_list_test.cc +2 -0
  293. package/deps/rocksdb/rocksdb/util/thread_operation.h +2 -1
  294. package/deps/rocksdb/rocksdb/util/udt_util.h +77 -0
  295. package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge.cc +2 -2
  296. package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge_test.cc +1 -1
  297. package/deps/rocksdb/rocksdb/utilities/agg_merge/test_agg_merge.cc +1 -1
  298. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +1 -1
  299. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +1 -1
  300. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.h +1 -1
  301. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +11 -1
  302. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +34 -1
  303. package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +15 -0
  304. package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache.cc +1 -1
  305. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +5 -1
  306. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +29 -1
  307. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +0 -1
  308. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +0 -1
  309. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +6 -1
  310. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +10 -0
  311. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +6 -1
  312. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +5 -0
  313. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +5 -0
  314. package/package.json +1 -1
  315. package/prebuilds/darwin-arm64/node.napi.node +0 -0
  316. package/prebuilds/linux-x64/node.napi.node +0 -0
  317. /package/deps/rocksdb/rocksdb/memory/{memory_allocator.h → memory_allocator_impl.h} +0 -0
  318. /package/deps/rocksdb/rocksdb/monitoring/{statistics.h → statistics_impl.h} +0 -0
  319. /package/deps/rocksdb/rocksdb/table/block_based/{flush_block_policy.h → flush_block_policy_impl.h} +0 -0
  320. /package/deps/rocksdb/rocksdb/util/{rate_limiter.h → rate_limiter_impl.h} +0 -0
  321. /package/deps/rocksdb/rocksdb/utilities/agg_merge/{agg_merge.h → agg_merge_impl.h} +0 -0
package/binding.cc CHANGED
@@ -383,7 +383,7 @@ struct BaseIterator : public Closable {
383
383
  }
384
384
  readOptions.fill_cache = fillCache_;
385
385
  readOptions.snapshot = snapshot_.get();
386
- // readOptions.async_io = true;
386
+ readOptions.async_io = false; // TODO (fix): enable
387
387
  readOptions.adaptive_readahead = true;
388
388
  readOptions.tailing = tailing_;
389
389
 
@@ -909,9 +909,9 @@ NAPI_METHOD(db_get_many) {
909
909
  rocksdb::ReadOptions readOptions;
910
910
  readOptions.fill_cache = fillCache;
911
911
  readOptions.snapshot = snapshot.get();
912
- // readOptions.async_io = true;
912
+ readOptions.async_io = false; // TODO (fix): enable
913
913
  readOptions.ignore_range_deletions = ignoreRangeDeletions;
914
- readOptions.optimize_multiget_for_io = true;
914
+ readOptions.optimize_multiget_for_io = false; // TODO (fix): enable
915
915
 
916
916
  const auto size = keys.size();
917
917
 
@@ -253,33 +253,10 @@ if(CMAKE_SYSTEM_PROCESSOR MATCHES "loongarch64")
253
253
  endif(HAS_LOONGARCH64)
254
254
  endif(CMAKE_SYSTEM_PROCESSOR MATCHES "loongarch64")
255
255
 
256
- option(PORTABLE "build a portable binary" OFF)
257
- option(FORCE_SSE42 "force building with SSE4.2, even when PORTABLE=ON" OFF)
258
- option(FORCE_AVX "force building with AVX, even when PORTABLE=ON" OFF)
259
- option(FORCE_AVX2 "force building with AVX2, even when PORTABLE=ON" OFF)
260
- if(PORTABLE)
261
- add_definitions(-DROCKSDB_PORTABLE)
262
-
263
- # MSVC does not need a separate compiler flag to enable SSE4.2; if nmmintrin.h
264
- # is available, it is available by default.
265
- if(FORCE_SSE42 AND NOT MSVC)
266
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.2 -mpclmul")
267
- endif()
268
- if(MSVC)
269
- if(FORCE_AVX)
270
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:AVX")
271
- endif()
272
- # MSVC automatically enables BMI / lzcnt with AVX2.
273
- if(FORCE_AVX2)
274
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:AVX2")
275
- endif()
276
- else()
277
- if(FORCE_AVX)
278
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mavx")
279
- endif()
280
- if(FORCE_AVX2)
281
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mavx2 -mbmi -mlzcnt")
282
- endif()
256
+ set(PORTABLE 0 CACHE STRING "Minimum CPU arch to support, or 0 = current CPU, 1 = baseline CPU")
257
+ if(PORTABLE STREQUAL 1)
258
+ # Usually nothing to do; compiler default is typically the most general
259
+ if(NOT MSVC)
283
260
  if(CMAKE_SYSTEM_PROCESSOR MATCHES "^s390x")
284
261
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=z196")
285
262
  endif()
@@ -287,10 +264,21 @@ if(PORTABLE)
287
264
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=loongarch64")
288
265
  endif()
289
266
  endif()
267
+ elseif(PORTABLE MATCHES [^0]+)
268
+ # Name of a CPU arch spec or feature set to require
269
+ if(MSVC)
270
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:${PORTABLE}")
271
+ else()
272
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=${PORTABLE}")
273
+ endif()
290
274
  else()
291
275
  if(MSVC)
276
+ # NOTE: No auto-detection of current CPU, but instead assume some useful
277
+ # level of optimization is supported
292
278
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:AVX2")
293
279
  else()
280
+ # Require instruction set from current CPU (with some legacy or opt-out
281
+ # exceptions)
294
282
  if(CMAKE_SYSTEM_PROCESSOR MATCHES "^s390x" AND NOT HAS_S390X_MARCH_NATIVE)
295
283
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=z196")
296
284
  elseif(NOT CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)64" AND NOT HAS_ARMV8_CRC)
@@ -305,25 +293,6 @@ if(NOT MSVC)
305
293
  set(CMAKE_REQUIRED_FLAGS "-msse4.2 -mpclmul")
306
294
  endif()
307
295
 
308
- CHECK_CXX_SOURCE_COMPILES("
309
- #include <cstdint>
310
- #include <nmmintrin.h>
311
- #include <wmmintrin.h>
312
- int main() {
313
- volatile uint32_t x = _mm_crc32_u32(0, 0);
314
- const auto a = _mm_set_epi64x(0, 0);
315
- const auto b = _mm_set_epi64x(0, 0);
316
- const auto c = _mm_clmulepi64_si128(a, b, 0x00);
317
- auto d = _mm_cvtsi128_si64(c);
318
- }
319
- " HAVE_SSE42)
320
- if(HAVE_SSE42)
321
- add_definitions(-DHAVE_SSE42)
322
- add_definitions(-DHAVE_PCLMUL)
323
- elseif(FORCE_SSE42)
324
- message(FATAL_ERROR "FORCE_SSE42=ON but unable to compile with SSE4.2 enabled")
325
- endif()
326
-
327
296
  # Check if -latomic is required or not
328
297
  if (NOT MSVC)
329
298
  set(CMAKE_REQUIRED_FLAGS "--std=c++17")
@@ -1010,12 +979,6 @@ if ( ROCKSDB_PLUGINS )
1010
979
  endforeach()
1011
980
  endif()
1012
981
 
1013
- if(HAVE_SSE42 AND NOT MSVC)
1014
- set_source_files_properties(
1015
- util/crc32c.cc
1016
- PROPERTIES COMPILE_FLAGS "-msse4.2 -mpclmul")
1017
- endif()
1018
-
1019
982
  if(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)64")
1020
983
  list(APPEND SOURCES
1021
984
  util/crc32c_ppc.c
@@ -1327,6 +1290,7 @@ if(WITH_TESTS)
1327
1290
  db/db_bloom_filter_test.cc
1328
1291
  db/db_compaction_filter_test.cc
1329
1292
  db/db_compaction_test.cc
1293
+ db/db_clip_test.cc
1330
1294
  db/db_dynamic_level_test.cc
1331
1295
  db/db_encryption_test.cc
1332
1296
  db/db_flush_test.cc
@@ -337,8 +337,8 @@ ifneq ($(MACHINE), arm64)
337
337
  # linking with jemalloc (as it won't be arm64-compatible) and remove some other options
338
338
  # set during platform detection
339
339
  DISABLE_JEMALLOC=1
340
- PLATFORM_CFLAGS := $(filter-out -march=native -DHAVE_SSE42 -DHAVE_AVX2, $(PLATFORM_CFLAGS))
341
- PLATFORM_CXXFLAGS := $(filter-out -march=native -DHAVE_SSE42 -DHAVE_AVX2, $(PLATFORM_CXXFLAGS))
340
+ PLATFORM_CCFLAGS := $(filter-out -march=native, $(PLATFORM_CCFLAGS))
341
+ PLATFORM_CXXFLAGS := $(filter-out -march=native, $(PLATFORM_CXXFLAGS))
342
342
  endif
343
343
  endif
344
344
  endif
@@ -539,7 +539,7 @@ endif
539
539
 
540
540
  ifdef USE_CLANG
541
541
  # Used by some teams in Facebook
542
- WARNING_FLAGS += -Wshift-sign-overflow
542
+ WARNING_FLAGS += -Wshift-sign-overflow -Wambiguous-reversed-operator
543
543
  endif
544
544
 
545
545
  ifeq ($(PLATFORM), OS_OPENBSD)
@@ -1480,6 +1480,9 @@ db_compaction_filter_test: $(OBJ_DIR)/db/db_compaction_filter_test.o $(TEST_LIBR
1480
1480
  db_compaction_test: $(OBJ_DIR)/db/db_compaction_test.o $(TEST_LIBRARY) $(LIBRARY)
1481
1481
  $(AM_LINK)
1482
1482
 
1483
+ db_clip_test: $(OBJ_DIR)/db/db_clip_test.o $(TEST_LIBRARY) $(LIBRARY)
1484
+ $(AM_LINK)
1485
+
1483
1486
  db_dynamic_level_test: $(OBJ_DIR)/db/db_dynamic_level_test.o $(TEST_LIBRARY) $(LIBRARY)
1484
1487
  $(AM_LINK)
1485
1488
 
@@ -2435,6 +2438,8 @@ checkout_folly:
2435
2438
  @# NOTE: this hack is required for gcc in some cases
2436
2439
  perl -pi -e 's/(__has_include.<experimental.memory_resource>.)/__cpp_rtti && $$1/' third-party/folly/folly/memory/MemoryResource.h
2437
2440
 
2441
+ CXX_M_FLAGS = $(filter -m%, $(CXXFLAGS))
2442
+
2438
2443
  build_folly:
2439
2444
  FOLLY_INST_PATH=`cd third-party/folly; $(PYTHON) build/fbcode_builder/getdeps.py show-inst-dir`; \
2440
2445
  if [ "$$FOLLY_INST_PATH" ]; then \
@@ -2445,8 +2450,8 @@ build_folly:
2445
2450
  fi
2446
2451
  # Restore the original version of Invoke.h with boost dependency
2447
2452
  cd third-party/folly && ${GIT_COMMAND} checkout folly/functional/Invoke.h
2448
- cd third-party/folly && MAYBE_AVX2=`echo $(CXXFLAGS) | grep -o -- -DHAVE_AVX2 | sed 's/-DHAVE_AVX2/-mavx2/g' || true` && \
2449
- CXXFLAGS=" $$MAYBE_AVX2 -DHAVE_CXX11_ATOMIC " $(PYTHON) build/fbcode_builder/getdeps.py build --no-tests
2453
+ cd third-party/folly && \
2454
+ CXXFLAGS=" $(CXX_M_FLAGS) -DHAVE_CXX11_ATOMIC " $(PYTHON) build/fbcode_builder/getdeps.py build --no-tests
2450
2455
 
2451
2456
  # ---------------------------------------------------------------------------
2452
2457
  # Build size testing
@@ -354,351 +354,7 @@ cpp_library_wrapper(name="rocksdb_lib", srcs=[
354
354
  "//folly/synchronization:distributed_mutex",
355
355
  ], headers=None, link_whole=False, extra_test_libs=False)
356
356
 
357
- cpp_library_wrapper(name="rocksdb_whole_archive_lib", srcs=[
358
- "cache/cache.cc",
359
- "cache/cache_entry_roles.cc",
360
- "cache/cache_helpers.cc",
361
- "cache/cache_key.cc",
362
- "cache/cache_reservation_manager.cc",
363
- "cache/charged_cache.cc",
364
- "cache/clock_cache.cc",
365
- "cache/compressed_secondary_cache.cc",
366
- "cache/lru_cache.cc",
367
- "cache/secondary_cache.cc",
368
- "cache/secondary_cache_adapter.cc",
369
- "cache/sharded_cache.cc",
370
- "db/arena_wrapped_db_iter.cc",
371
- "db/blob/blob_contents.cc",
372
- "db/blob/blob_fetcher.cc",
373
- "db/blob/blob_file_addition.cc",
374
- "db/blob/blob_file_builder.cc",
375
- "db/blob/blob_file_cache.cc",
376
- "db/blob/blob_file_garbage.cc",
377
- "db/blob/blob_file_meta.cc",
378
- "db/blob/blob_file_reader.cc",
379
- "db/blob/blob_garbage_meter.cc",
380
- "db/blob/blob_log_format.cc",
381
- "db/blob/blob_log_sequential_reader.cc",
382
- "db/blob/blob_log_writer.cc",
383
- "db/blob/blob_source.cc",
384
- "db/blob/prefetch_buffer_collection.cc",
385
- "db/builder.cc",
386
- "db/c.cc",
387
- "db/column_family.cc",
388
- "db/compaction/compaction.cc",
389
- "db/compaction/compaction_iterator.cc",
390
- "db/compaction/compaction_job.cc",
391
- "db/compaction/compaction_outputs.cc",
392
- "db/compaction/compaction_picker.cc",
393
- "db/compaction/compaction_picker_fifo.cc",
394
- "db/compaction/compaction_picker_level.cc",
395
- "db/compaction/compaction_picker_universal.cc",
396
- "db/compaction/compaction_service_job.cc",
397
- "db/compaction/compaction_state.cc",
398
- "db/compaction/sst_partitioner.cc",
399
- "db/compaction/subcompaction_state.cc",
400
- "db/convenience.cc",
401
- "db/db_filesnapshot.cc",
402
- "db/db_impl/compacted_db_impl.cc",
403
- "db/db_impl/db_impl.cc",
404
- "db/db_impl/db_impl_compaction_flush.cc",
405
- "db/db_impl/db_impl_debug.cc",
406
- "db/db_impl/db_impl_experimental.cc",
407
- "db/db_impl/db_impl_files.cc",
408
- "db/db_impl/db_impl_open.cc",
409
- "db/db_impl/db_impl_readonly.cc",
410
- "db/db_impl/db_impl_secondary.cc",
411
- "db/db_impl/db_impl_write.cc",
412
- "db/db_info_dumper.cc",
413
- "db/db_iter.cc",
414
- "db/dbformat.cc",
415
- "db/error_handler.cc",
416
- "db/event_helpers.cc",
417
- "db/experimental.cc",
418
- "db/external_sst_file_ingestion_job.cc",
419
- "db/file_indexer.cc",
420
- "db/flush_job.cc",
421
- "db/flush_scheduler.cc",
422
- "db/forward_iterator.cc",
423
- "db/import_column_family_job.cc",
424
- "db/internal_stats.cc",
425
- "db/log_reader.cc",
426
- "db/log_writer.cc",
427
- "db/logs_with_prep_tracker.cc",
428
- "db/malloc_stats.cc",
429
- "db/memtable.cc",
430
- "db/memtable_list.cc",
431
- "db/merge_helper.cc",
432
- "db/merge_operator.cc",
433
- "db/output_validator.cc",
434
- "db/periodic_task_scheduler.cc",
435
- "db/range_del_aggregator.cc",
436
- "db/range_tombstone_fragmenter.cc",
437
- "db/repair.cc",
438
- "db/seqno_to_time_mapping.cc",
439
- "db/snapshot_impl.cc",
440
- "db/table_cache.cc",
441
- "db/table_properties_collector.cc",
442
- "db/transaction_log_impl.cc",
443
- "db/trim_history_scheduler.cc",
444
- "db/version_builder.cc",
445
- "db/version_edit.cc",
446
- "db/version_edit_handler.cc",
447
- "db/version_set.cc",
448
- "db/wal_edit.cc",
449
- "db/wal_manager.cc",
450
- "db/wide/wide_column_serialization.cc",
451
- "db/wide/wide_columns.cc",
452
- "db/write_batch.cc",
453
- "db/write_batch_base.cc",
454
- "db/write_controller.cc",
455
- "db/write_stall_stats.cc",
456
- "db/write_thread.cc",
457
- "env/composite_env.cc",
458
- "env/env.cc",
459
- "env/env_chroot.cc",
460
- "env/env_encryption.cc",
461
- "env/env_posix.cc",
462
- "env/file_system.cc",
463
- "env/file_system_tracer.cc",
464
- "env/fs_posix.cc",
465
- "env/fs_remap.cc",
466
- "env/io_posix.cc",
467
- "env/mock_env.cc",
468
- "env/unique_id_gen.cc",
469
- "file/delete_scheduler.cc",
470
- "file/file_prefetch_buffer.cc",
471
- "file/file_util.cc",
472
- "file/filename.cc",
473
- "file/line_file_reader.cc",
474
- "file/random_access_file_reader.cc",
475
- "file/read_write_util.cc",
476
- "file/readahead_raf.cc",
477
- "file/sequence_file_reader.cc",
478
- "file/sst_file_manager_impl.cc",
479
- "file/writable_file_writer.cc",
480
- "logging/auto_roll_logger.cc",
481
- "logging/event_logger.cc",
482
- "logging/log_buffer.cc",
483
- "memory/arena.cc",
484
- "memory/concurrent_arena.cc",
485
- "memory/jemalloc_nodump_allocator.cc",
486
- "memory/memkind_kmem_allocator.cc",
487
- "memory/memory_allocator.cc",
488
- "memtable/alloc_tracker.cc",
489
- "memtable/hash_linklist_rep.cc",
490
- "memtable/hash_skiplist_rep.cc",
491
- "memtable/skiplistrep.cc",
492
- "memtable/vectorrep.cc",
493
- "memtable/write_buffer_manager.cc",
494
- "monitoring/histogram.cc",
495
- "monitoring/histogram_windowing.cc",
496
- "monitoring/in_memory_stats_history.cc",
497
- "monitoring/instrumented_mutex.cc",
498
- "monitoring/iostats_context.cc",
499
- "monitoring/perf_context.cc",
500
- "monitoring/perf_level.cc",
501
- "monitoring/persistent_stats_history.cc",
502
- "monitoring/statistics.cc",
503
- "monitoring/thread_status_impl.cc",
504
- "monitoring/thread_status_updater.cc",
505
- "monitoring/thread_status_updater_debug.cc",
506
- "monitoring/thread_status_util.cc",
507
- "monitoring/thread_status_util_debug.cc",
508
- "options/cf_options.cc",
509
- "options/configurable.cc",
510
- "options/customizable.cc",
511
- "options/db_options.cc",
512
- "options/options.cc",
513
- "options/options_helper.cc",
514
- "options/options_parser.cc",
515
- "port/mmap.cc",
516
- "port/port_posix.cc",
517
- "port/stack_trace.cc",
518
- "port/win/env_default.cc",
519
- "port/win/env_win.cc",
520
- "port/win/io_win.cc",
521
- "port/win/port_win.cc",
522
- "port/win/win_logger.cc",
523
- "port/win/win_thread.cc",
524
- "table/adaptive/adaptive_table_factory.cc",
525
- "table/block_based/binary_search_index_reader.cc",
526
- "table/block_based/block.cc",
527
- "table/block_based/block_based_table_builder.cc",
528
- "table/block_based/block_based_table_factory.cc",
529
- "table/block_based/block_based_table_iterator.cc",
530
- "table/block_based/block_based_table_reader.cc",
531
- "table/block_based/block_builder.cc",
532
- "table/block_based/block_cache.cc",
533
- "table/block_based/block_prefetcher.cc",
534
- "table/block_based/block_prefix_index.cc",
535
- "table/block_based/data_block_footer.cc",
536
- "table/block_based/data_block_hash_index.cc",
537
- "table/block_based/filter_block_reader_common.cc",
538
- "table/block_based/filter_policy.cc",
539
- "table/block_based/flush_block_policy.cc",
540
- "table/block_based/full_filter_block.cc",
541
- "table/block_based/hash_index_reader.cc",
542
- "table/block_based/index_builder.cc",
543
- "table/block_based/index_reader_common.cc",
544
- "table/block_based/parsed_full_filter_block.cc",
545
- "table/block_based/partitioned_filter_block.cc",
546
- "table/block_based/partitioned_index_iterator.cc",
547
- "table/block_based/partitioned_index_reader.cc",
548
- "table/block_based/reader_common.cc",
549
- "table/block_based/uncompression_dict_reader.cc",
550
- "table/block_fetcher.cc",
551
- "table/compaction_merging_iterator.cc",
552
- "table/cuckoo/cuckoo_table_builder.cc",
553
- "table/cuckoo/cuckoo_table_factory.cc",
554
- "table/cuckoo/cuckoo_table_reader.cc",
555
- "table/format.cc",
556
- "table/get_context.cc",
557
- "table/iterator.cc",
558
- "table/merging_iterator.cc",
559
- "table/meta_blocks.cc",
560
- "table/persistent_cache_helper.cc",
561
- "table/plain/plain_table_bloom.cc",
562
- "table/plain/plain_table_builder.cc",
563
- "table/plain/plain_table_factory.cc",
564
- "table/plain/plain_table_index.cc",
565
- "table/plain/plain_table_key_coding.cc",
566
- "table/plain/plain_table_reader.cc",
567
- "table/sst_file_dumper.cc",
568
- "table/sst_file_reader.cc",
569
- "table/sst_file_writer.cc",
570
- "table/table_factory.cc",
571
- "table/table_properties.cc",
572
- "table/two_level_iterator.cc",
573
- "table/unique_id.cc",
574
- "test_util/sync_point.cc",
575
- "test_util/sync_point_impl.cc",
576
- "test_util/transaction_test_util.cc",
577
- "tools/dump/db_dump_tool.cc",
578
- "tools/io_tracer_parser_tool.cc",
579
- "tools/ldb_cmd.cc",
580
- "tools/ldb_tool.cc",
581
- "tools/sst_dump_tool.cc",
582
- "trace_replay/block_cache_tracer.cc",
583
- "trace_replay/io_tracer.cc",
584
- "trace_replay/trace_record.cc",
585
- "trace_replay/trace_record_handler.cc",
586
- "trace_replay/trace_record_result.cc",
587
- "trace_replay/trace_replay.cc",
588
- "util/async_file_reader.cc",
589
- "util/build_version.cc",
590
- "util/cleanable.cc",
591
- "util/coding.cc",
592
- "util/compaction_job_stats_impl.cc",
593
- "util/comparator.cc",
594
- "util/compression.cc",
595
- "util/compression_context_cache.cc",
596
- "util/concurrent_task_limiter_impl.cc",
597
- "util/crc32c.cc",
598
- "util/crc32c_arm64.cc",
599
- "util/data_structure.cc",
600
- "util/dynamic_bloom.cc",
601
- "util/file_checksum_helper.cc",
602
- "util/hash.cc",
603
- "util/murmurhash.cc",
604
- "util/random.cc",
605
- "util/rate_limiter.cc",
606
- "util/ribbon_config.cc",
607
- "util/slice.cc",
608
- "util/status.cc",
609
- "util/stderr_logger.cc",
610
- "util/string_util.cc",
611
- "util/thread_local.cc",
612
- "util/threadpool_imp.cc",
613
- "util/xxhash.cc",
614
- "utilities/agg_merge/agg_merge.cc",
615
- "utilities/backup/backup_engine.cc",
616
- "utilities/blob_db/blob_compaction_filter.cc",
617
- "utilities/blob_db/blob_db.cc",
618
- "utilities/blob_db/blob_db_impl.cc",
619
- "utilities/blob_db/blob_db_impl_filesnapshot.cc",
620
- "utilities/blob_db/blob_dump_tool.cc",
621
- "utilities/blob_db/blob_file.cc",
622
- "utilities/cache_dump_load.cc",
623
- "utilities/cache_dump_load_impl.cc",
624
- "utilities/cassandra/cassandra_compaction_filter.cc",
625
- "utilities/cassandra/format.cc",
626
- "utilities/cassandra/merge_operator.cc",
627
- "utilities/checkpoint/checkpoint_impl.cc",
628
- "utilities/compaction_filters.cc",
629
- "utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc",
630
- "utilities/convenience/info_log_finder.cc",
631
- "utilities/counted_fs.cc",
632
- "utilities/debug.cc",
633
- "utilities/env_mirror.cc",
634
- "utilities/env_timed.cc",
635
- "utilities/fault_injection_env.cc",
636
- "utilities/fault_injection_fs.cc",
637
- "utilities/fault_injection_secondary_cache.cc",
638
- "utilities/leveldb_options/leveldb_options.cc",
639
- "utilities/memory/memory_util.cc",
640
- "utilities/merge_operators.cc",
641
- "utilities/merge_operators/bytesxor.cc",
642
- "utilities/merge_operators/max.cc",
643
- "utilities/merge_operators/put.cc",
644
- "utilities/merge_operators/sortlist.cc",
645
- "utilities/merge_operators/string_append/stringappend.cc",
646
- "utilities/merge_operators/string_append/stringappend2.cc",
647
- "utilities/merge_operators/uint64add.cc",
648
- "utilities/object_registry.cc",
649
- "utilities/option_change_migration/option_change_migration.cc",
650
- "utilities/options/options_util.cc",
651
- "utilities/persistent_cache/block_cache_tier.cc",
652
- "utilities/persistent_cache/block_cache_tier_file.cc",
653
- "utilities/persistent_cache/block_cache_tier_metadata.cc",
654
- "utilities/persistent_cache/persistent_cache_tier.cc",
655
- "utilities/persistent_cache/volatile_tier_impl.cc",
656
- "utilities/simulator_cache/cache_simulator.cc",
657
- "utilities/simulator_cache/sim_cache.cc",
658
- "utilities/table_properties_collectors/compact_on_deletion_collector.cc",
659
- "utilities/trace/file_trace_reader_writer.cc",
660
- "utilities/trace/replayer_impl.cc",
661
- "utilities/transactions/lock/lock_manager.cc",
662
- "utilities/transactions/lock/point/point_lock_manager.cc",
663
- "utilities/transactions/lock/point/point_lock_tracker.cc",
664
- "utilities/transactions/lock/range/range_tree/lib/locktree/concurrent_tree.cc",
665
- "utilities/transactions/lock/range/range_tree/lib/locktree/keyrange.cc",
666
- "utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.cc",
667
- "utilities/transactions/lock/range/range_tree/lib/locktree/locktree.cc",
668
- "utilities/transactions/lock/range/range_tree/lib/locktree/manager.cc",
669
- "utilities/transactions/lock/range/range_tree/lib/locktree/range_buffer.cc",
670
- "utilities/transactions/lock/range/range_tree/lib/locktree/treenode.cc",
671
- "utilities/transactions/lock/range/range_tree/lib/locktree/txnid_set.cc",
672
- "utilities/transactions/lock/range/range_tree/lib/locktree/wfg.cc",
673
- "utilities/transactions/lock/range/range_tree/lib/standalone_port.cc",
674
- "utilities/transactions/lock/range/range_tree/lib/util/dbt.cc",
675
- "utilities/transactions/lock/range/range_tree/lib/util/memarena.cc",
676
- "utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc",
677
- "utilities/transactions/lock/range/range_tree/range_tree_lock_tracker.cc",
678
- "utilities/transactions/optimistic_transaction.cc",
679
- "utilities/transactions/optimistic_transaction_db_impl.cc",
680
- "utilities/transactions/pessimistic_transaction.cc",
681
- "utilities/transactions/pessimistic_transaction_db.cc",
682
- "utilities/transactions/snapshot_checker.cc",
683
- "utilities/transactions/transaction_base.cc",
684
- "utilities/transactions/transaction_db_mutex_impl.cc",
685
- "utilities/transactions/transaction_util.cc",
686
- "utilities/transactions/write_prepared_txn.cc",
687
- "utilities/transactions/write_prepared_txn_db.cc",
688
- "utilities/transactions/write_unprepared_txn.cc",
689
- "utilities/transactions/write_unprepared_txn_db.cc",
690
- "utilities/ttl/db_ttl_impl.cc",
691
- "utilities/wal_filter.cc",
692
- "utilities/write_batch_with_index/write_batch_with_index.cc",
693
- "utilities/write_batch_with_index/write_batch_with_index_internal.cc",
694
- ], deps=[
695
- "//folly/container:f14_hash",
696
- "//folly/experimental/coro:blocking_wait",
697
- "//folly/experimental/coro:collect",
698
- "//folly/experimental/coro:coroutine",
699
- "//folly/experimental/coro:task",
700
- "//folly/synchronization:distributed_mutex",
701
- ], headers=None, link_whole=True, extra_test_libs=False)
357
+ cpp_library_wrapper(name="rocksdb_whole_archive_lib", srcs=[], deps=[":rocksdb_lib"], headers=None, link_whole=True, extra_test_libs=False)
702
358
 
703
359
  cpp_library_wrapper(name="rocksdb_test_lib", srcs=[
704
360
  "db/db_test_util.cc",
@@ -736,6 +392,7 @@ rocks_cpp_library_wrapper(name="rocksdb_stress_lib", srcs=[
736
392
  "db_stress_tool/db_stress_test_base.cc",
737
393
  "db_stress_tool/db_stress_tool.cc",
738
394
  "db_stress_tool/expected_state.cc",
395
+ "db_stress_tool/expected_value.cc",
739
396
  "db_stress_tool/multi_ops_txns_stress.cc",
740
397
  "db_stress_tool/no_batched_ops_stress.cc",
741
398
  "test_util/testutil.cc",
@@ -5093,6 +4750,12 @@ cpp_unittest_wrapper(name="db_bloom_filter_test",
5093
4750
  extra_compiler_flags=[])
5094
4751
 
5095
4752
 
4753
+ cpp_unittest_wrapper(name="db_clip_test",
4754
+ srcs=["db/db_clip_test.cc"],
4755
+ deps=[":rocksdb_test_lib"],
4756
+ extra_compiler_flags=[])
4757
+
4758
+
5096
4759
  cpp_unittest_wrapper(name="db_compaction_filter_test",
5097
4760
  srcs=["db/db_compaction_filter_test.cc"],
5098
4761
  deps=[":rocksdb_test_lib"],
@@ -21,6 +21,7 @@
21
21
  #include "test_util/secondary_cache_test_util.h"
22
22
  #include "test_util/testharness.h"
23
23
  #include "util/coding.h"
24
+ #include "util/hash_containers.h"
24
25
  #include "util/string_util.h"
25
26
 
26
27
  // HyperClockCache only supports 16-byte keys, so some of the tests
@@ -955,6 +956,97 @@ TEST_P(CacheTest, GetChargeAndDeleter) {
955
956
  cache_->Release(h1);
956
957
  }
957
958
 
959
+ namespace {
960
+ bool AreTwoCacheKeysOrdered(Cache* cache) {
961
+ std::vector<std::string> keys;
962
+ const auto callback = [&](const Slice& key, Cache::ObjectPtr /*value*/,
963
+ size_t /*charge*/,
964
+ const Cache::CacheItemHelper* /*helper*/) {
965
+ keys.push_back(key.ToString());
966
+ };
967
+ cache->ApplyToAllEntries(callback, /*opts*/ {});
968
+ EXPECT_EQ(keys.size(), 2U);
969
+ EXPECT_NE(keys[0], keys[1]);
970
+ return keys[0] < keys[1];
971
+ }
972
+ } // namespace
973
+
974
+ TEST_P(CacheTest, CacheUniqueSeeds) {
975
+ // kQuasiRandomHashSeed should generate unique seeds (up to 2 billion before
976
+ // repeating)
977
+ UnorderedSet<uint32_t> seeds_seen;
978
+ // Roughly sqrt(number of possible values) for a decent chance at detecting
979
+ // a random collision if it's possible (shouldn't be)
980
+ uint16_t kSamples = 20000;
981
+ seeds_seen.reserve(kSamples);
982
+
983
+ // Hash seed should affect ordering of entries in the table, so we should
984
+ // have extremely high chance of seeing two entries ordered both ways.
985
+ bool seen_forward_order = false;
986
+ bool seen_reverse_order = false;
987
+
988
+ for (int i = 0; i < kSamples; ++i) {
989
+ auto cache = NewCache(2, [=](ShardedCacheOptions& opts) {
990
+ opts.hash_seed = LRUCacheOptions::kQuasiRandomHashSeed;
991
+ opts.num_shard_bits = 0;
992
+ opts.metadata_charge_policy = kDontChargeCacheMetadata;
993
+ });
994
+ auto val = cache->GetHashSeed();
995
+ ASSERT_TRUE(seeds_seen.insert(val).second);
996
+
997
+ ASSERT_OK(cache->Insert(EncodeKey(1), nullptr, &kHelper, /*charge*/ 1));
998
+ ASSERT_OK(cache->Insert(EncodeKey(2), nullptr, &kHelper, /*charge*/ 1));
999
+
1000
+ if (AreTwoCacheKeysOrdered(cache.get())) {
1001
+ seen_forward_order = true;
1002
+ } else {
1003
+ seen_reverse_order = true;
1004
+ }
1005
+ }
1006
+
1007
+ ASSERT_TRUE(seen_forward_order);
1008
+ ASSERT_TRUE(seen_reverse_order);
1009
+ }
1010
+
1011
+ TEST_P(CacheTest, CacheHostSeed) {
1012
+ // kHostHashSeed should generate a consistent seed within this process
1013
+ // (and other processes on the same host, but not unit testing that).
1014
+ // And we should be able to use that chosen seed as an explicit option
1015
+ // (for debugging).
1016
+ // And we should verify consistent ordering of entries.
1017
+ uint32_t expected_seed = 0;
1018
+ bool expected_order = false;
1019
+ // 10 iterations -> chance of a random seed falsely appearing consistent
1020
+ // should be low, just 1 in 2^9.
1021
+ for (int i = 0; i < 10; ++i) {
1022
+ auto cache = NewCache(2, [=](ShardedCacheOptions& opts) {
1023
+ if (i != 5) {
1024
+ opts.hash_seed = LRUCacheOptions::kHostHashSeed;
1025
+ } else {
1026
+ // Can be used as explicit seed
1027
+ opts.hash_seed = static_cast<int32_t>(expected_seed);
1028
+ ASSERT_GE(opts.hash_seed, 0);
1029
+ }
1030
+ opts.num_shard_bits = 0;
1031
+ opts.metadata_charge_policy = kDontChargeCacheMetadata;
1032
+ });
1033
+ ASSERT_OK(cache->Insert(EncodeKey(1), nullptr, &kHelper, /*charge*/ 1));
1034
+ ASSERT_OK(cache->Insert(EncodeKey(2), nullptr, &kHelper, /*charge*/ 1));
1035
+ uint32_t val = cache->GetHashSeed();
1036
+ bool order = AreTwoCacheKeysOrdered(cache.get());
1037
+ if (i != 0) {
1038
+ ASSERT_EQ(val, expected_seed);
1039
+ ASSERT_EQ(order, expected_order);
1040
+ } else {
1041
+ expected_seed = val;
1042
+ expected_order = order;
1043
+ }
1044
+ }
1045
+ // Printed for reference in case it's needed to reproduce other unit test
1046
+ // failures on another host
1047
+ fprintf(stderr, "kHostHashSeed -> %u\n", (unsigned)expected_seed);
1048
+ }
1049
+
958
1050
  INSTANTIATE_TEST_CASE_P(CacheTestInstance, CacheTest,
959
1051
  secondary_cache_test_util::GetTestingCacheTypes());
960
1052
  INSTANTIATE_TEST_CASE_P(CacheTestInstance, LRUCacheTest,