@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
@@ -3044,7 +3044,7 @@ TEST_F(DBTest2, PausingManualCompaction1) {
3044
3044
  .IsManualCompactionPaused());
3045
3045
 
3046
3046
  // Wait for compactions to get scheduled and stopped
3047
- ASSERT_OK(dbfull()->TEST_WaitForCompact(true));
3047
+ ASSERT_OK(dbfull()->TEST_WaitForCompact());
3048
3048
 
3049
3049
  // Get file names after compaction is stopped
3050
3050
  files_meta.clear();
@@ -3064,7 +3064,7 @@ TEST_F(DBTest2, PausingManualCompaction1) {
3064
3064
  files_before_compact, 0)
3065
3065
  .IsManualCompactionPaused());
3066
3066
  // Wait for manual compaction to get scheduled and finish
3067
- ASSERT_OK(dbfull()->TEST_WaitForCompact(true));
3067
+ ASSERT_OK(dbfull()->TEST_WaitForCompact());
3068
3068
 
3069
3069
  files_meta.clear();
3070
3070
  files_after_compact.clear();
@@ -3097,7 +3097,7 @@ TEST_F(DBTest2, PausingManualCompaction2) {
3097
3097
  }
3098
3098
  ASSERT_OK(Flush());
3099
3099
  }
3100
- ASSERT_OK(dbfull()->TEST_WaitForCompact(true));
3100
+ ASSERT_OK(dbfull()->TEST_WaitForCompact());
3101
3101
 
3102
3102
  std::vector<LiveFileMetaData> files_meta;
3103
3103
  dbfull()->GetLiveFilesMetaData(&files_meta);
@@ -3139,7 +3139,7 @@ TEST_F(DBTest2, PausingManualCompaction3) {
3139
3139
  ASSERT_TRUE(dbfull()
3140
3140
  ->CompactRange(compact_options, nullptr, nullptr)
3141
3141
  .IsManualCompactionPaused());
3142
- ASSERT_OK(dbfull()->TEST_WaitForCompact(true));
3142
+ ASSERT_OK(dbfull()->TEST_WaitForCompact());
3143
3143
  // As manual compaction disabled, not even reach sync point
3144
3144
  ASSERT_EQ(run_manual_compactions, 0);
3145
3145
  ASSERT_EQ("2,3,4,5,6,7,8", FilesPerLevel());
@@ -3148,7 +3148,7 @@ TEST_F(DBTest2, PausingManualCompaction3) {
3148
3148
  "CompactionJob::Run():PausingManualCompaction:1");
3149
3149
  dbfull()->EnableManualCompaction();
3150
3150
  ASSERT_OK(dbfull()->CompactRange(compact_options, nullptr, nullptr));
3151
- ASSERT_OK(dbfull()->TEST_WaitForCompact(true));
3151
+ ASSERT_OK(dbfull()->TEST_WaitForCompact());
3152
3152
  ASSERT_EQ("0,0,0,0,0,0,2", FilesPerLevel());
3153
3153
 
3154
3154
  ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->DisableProcessing();
@@ -3203,14 +3203,14 @@ TEST_F(DBTest2, PausingManualCompaction4) {
3203
3203
  ASSERT_TRUE(dbfull()
3204
3204
  ->CompactRange(compact_options, nullptr, nullptr)
3205
3205
  .IsManualCompactionPaused());
3206
- ASSERT_OK(dbfull()->TEST_WaitForCompact(true));
3206
+ ASSERT_OK(dbfull()->TEST_WaitForCompact());
3207
3207
  ASSERT_EQ(run_manual_compactions, 1);
3208
3208
  ASSERT_EQ("2,3,4,5,6,7,8", FilesPerLevel());
3209
3209
 
3210
3210
  ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->ClearCallBack(
3211
3211
  "CompactionJob::Run():PausingManualCompaction:2");
3212
3212
  ASSERT_OK(dbfull()->CompactRange(compact_options, nullptr, nullptr));
3213
- ASSERT_OK(dbfull()->TEST_WaitForCompact(true));
3213
+ ASSERT_OK(dbfull()->TEST_WaitForCompact());
3214
3214
  ASSERT_EQ("0,0,0,0,0,0,2", FilesPerLevel());
3215
3215
 
3216
3216
  ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->DisableProcessing();
@@ -3262,7 +3262,7 @@ TEST_F(DBTest2, CancelManualCompaction1) {
3262
3262
  ASSERT_TRUE(dbfull()
3263
3263
  ->CompactRange(compact_options, nullptr, nullptr)
3264
3264
  .IsManualCompactionPaused());
3265
- ASSERT_OK(dbfull()->TEST_WaitForCompact(true));
3265
+ ASSERT_OK(dbfull()->TEST_WaitForCompact());
3266
3266
 
3267
3267
  // Since compactions are disabled, we shouldn't start compacting.
3268
3268
  // E.g. we should call the compaction function exactly one time.
@@ -3286,7 +3286,7 @@ TEST_F(DBTest2, CancelManualCompaction1) {
3286
3286
  ASSERT_TRUE(dbfull()
3287
3287
  ->CompactRange(compact_options, nullptr, nullptr)
3288
3288
  .IsManualCompactionPaused());
3289
- ASSERT_OK(dbfull()->TEST_WaitForCompact(true));
3289
+ ASSERT_OK(dbfull()->TEST_WaitForCompact());
3290
3290
 
3291
3291
  ASSERT_EQ(compactions_run, 3);
3292
3292
 
@@ -3298,7 +3298,7 @@ TEST_F(DBTest2, CancelManualCompaction1) {
3298
3298
  // Compactions should work again if we re-enable them..
3299
3299
  compact_options.canceled->store(false, std::memory_order_relaxed);
3300
3300
  ASSERT_OK(dbfull()->CompactRange(compact_options, nullptr, nullptr));
3301
- ASSERT_OK(dbfull()->TEST_WaitForCompact(true));
3301
+ ASSERT_OK(dbfull()->TEST_WaitForCompact());
3302
3302
  ASSERT_EQ("0,0,0,0,0,0,2", FilesPerLevel());
3303
3303
 
3304
3304
  ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->DisableProcessing();
@@ -3362,7 +3362,7 @@ TEST_F(DBTest2, CancelManualCompaction2) {
3362
3362
  ASSERT_TRUE(dbfull()
3363
3363
  ->CompactRange(compact_options, nullptr, nullptr)
3364
3364
  .IsManualCompactionPaused());
3365
- ASSERT_OK(dbfull()->TEST_WaitForCompact(true));
3365
+ ASSERT_OK(dbfull()->TEST_WaitForCompact());
3366
3366
 
3367
3367
  // NOTE: as we set compact_options.max_subcompacitons = 1, and store true to
3368
3368
  // the canceled variable from the single compacting thread (via callback),
@@ -3380,7 +3380,7 @@ TEST_F(DBTest2, CancelManualCompaction2) {
3380
3380
  // Compactions should work again if we re-enable them..
3381
3381
  compact_options.canceled->store(false, std::memory_order_relaxed);
3382
3382
  ASSERT_OK(dbfull()->CompactRange(compact_options, nullptr, nullptr));
3383
- ASSERT_OK(dbfull()->TEST_WaitForCompact(true));
3383
+ ASSERT_OK(dbfull()->TEST_WaitForCompact());
3384
3384
  ASSERT_EQ("0,0,0,0,0,0,2", FilesPerLevel());
3385
3385
 
3386
3386
  ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->DisableProcessing();
@@ -3455,7 +3455,7 @@ TEST_F(DBTest2, CancelManualCompactionWithListener) {
3455
3455
  ASSERT_TRUE(dbfull()
3456
3456
  ->CompactRange(compact_options, nullptr, nullptr)
3457
3457
  .IsManualCompactionPaused());
3458
- ASSERT_OK(dbfull()->TEST_WaitForCompact(true));
3458
+ ASSERT_OK(dbfull()->TEST_WaitForCompact());
3459
3459
 
3460
3460
  ASSERT_GT(listener->num_compaction_started_, 0);
3461
3461
  ASSERT_EQ(listener->num_compaction_started_, listener->num_compaction_ended_);
@@ -3470,7 +3470,7 @@ TEST_F(DBTest2, CancelManualCompactionWithListener) {
3470
3470
  ASSERT_TRUE(dbfull()
3471
3471
  ->CompactRange(compact_options, nullptr, nullptr)
3472
3472
  .IsManualCompactionPaused());
3473
- ASSERT_OK(dbfull()->TEST_WaitForCompact(true));
3473
+ ASSERT_OK(dbfull()->TEST_WaitForCompact());
3474
3474
 
3475
3475
  ASSERT_EQ(listener->num_compaction_started_, 0);
3476
3476
  ASSERT_EQ(listener->num_compaction_started_, listener->num_compaction_ended_);
@@ -3492,7 +3492,7 @@ TEST_F(DBTest2, CancelManualCompactionWithListener) {
3492
3492
 
3493
3493
  compact_options.canceled->store(false, std::memory_order_release);
3494
3494
  ASSERT_OK(dbfull()->CompactRange(compact_options, nullptr, nullptr));
3495
- ASSERT_OK(dbfull()->TEST_WaitForCompact(true));
3495
+ ASSERT_OK(dbfull()->TEST_WaitForCompact());
3496
3496
 
3497
3497
  ASSERT_GT(listener->num_compaction_started_, 0);
3498
3498
  ASSERT_EQ(listener->num_compaction_started_, listener->num_compaction_ended_);
@@ -5298,88 +5298,6 @@ TEST_F(DBTest2, DISABLED_IteratorPinnedMemory) {
5298
5298
  ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->DisableProcessing();
5299
5299
  }
5300
5300
 
5301
- TEST_F(DBTest2, TestBBTTailPrefetch) {
5302
- std::atomic<bool> called(false);
5303
- size_t expected_lower_bound = 512 * 1024;
5304
- size_t expected_higher_bound = 512 * 1024;
5305
- ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->SetCallBack(
5306
- "BlockBasedTable::Open::TailPrefetchLen", [&](void* arg) {
5307
- size_t* prefetch_size = static_cast<size_t*>(arg);
5308
- EXPECT_LE(expected_lower_bound, *prefetch_size);
5309
- EXPECT_GE(expected_higher_bound, *prefetch_size);
5310
- called = true;
5311
- });
5312
- ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->EnableProcessing();
5313
-
5314
- ASSERT_OK(Put("1", "1"));
5315
- ASSERT_OK(Put("9", "1"));
5316
- ASSERT_OK(Flush());
5317
-
5318
- expected_lower_bound = 0;
5319
- expected_higher_bound = 8 * 1024;
5320
-
5321
- ASSERT_OK(Put("1", "1"));
5322
- ASSERT_OK(Put("9", "1"));
5323
- ASSERT_OK(Flush());
5324
-
5325
- ASSERT_OK(Put("1", "1"));
5326
- ASSERT_OK(Put("9", "1"));
5327
- ASSERT_OK(Flush());
5328
-
5329
- // Full compaction to make sure there is no L0 file after the open.
5330
- ASSERT_OK(db_->CompactRange(CompactRangeOptions(), nullptr, nullptr));
5331
-
5332
- ASSERT_TRUE(called.load());
5333
- called = false;
5334
-
5335
- ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->DisableProcessing();
5336
- ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->ClearAllCallBacks();
5337
-
5338
- std::atomic<bool> first_call(true);
5339
- ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->SetCallBack(
5340
- "BlockBasedTable::Open::TailPrefetchLen", [&](void* arg) {
5341
- size_t* prefetch_size = static_cast<size_t*>(arg);
5342
- if (first_call) {
5343
- EXPECT_EQ(4 * 1024, *prefetch_size);
5344
- first_call = false;
5345
- } else {
5346
- EXPECT_GE(4 * 1024, *prefetch_size);
5347
- }
5348
- called = true;
5349
- });
5350
- ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->EnableProcessing();
5351
-
5352
- Options options = CurrentOptions();
5353
- options.max_file_opening_threads = 1; // one thread
5354
- BlockBasedTableOptions table_options;
5355
- table_options.cache_index_and_filter_blocks = true;
5356
- options.table_factory.reset(NewBlockBasedTableFactory(table_options));
5357
- options.max_open_files = -1;
5358
- Reopen(options);
5359
-
5360
- ASSERT_OK(Put("1", "1"));
5361
- ASSERT_OK(Put("9", "1"));
5362
- ASSERT_OK(Flush());
5363
-
5364
- ASSERT_OK(Put("1", "1"));
5365
- ASSERT_OK(Put("9", "1"));
5366
- ASSERT_OK(Flush());
5367
-
5368
- ASSERT_TRUE(called.load());
5369
- called = false;
5370
-
5371
- // Parallel loading SST files
5372
- options.max_file_opening_threads = 16;
5373
- Reopen(options);
5374
-
5375
- ASSERT_OK(db_->CompactRange(CompactRangeOptions(), nullptr, nullptr));
5376
-
5377
- ASSERT_TRUE(called.load());
5378
-
5379
- ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->DisableProcessing();
5380
- ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->ClearAllCallBacks();
5381
- }
5382
-
5383
5301
  TEST_F(DBTest2, TestGetColumnFamilyHandleUnlocked) {
5384
5302
  // Setup sync point dependency to reproduce the race condition of
5385
5303
  // DBImpl::GetColumnFamilyHandleUnlocked
@@ -5905,7 +5823,7 @@ TEST_F(DBTest2, SameSmallestInSameLevel) {
5905
5823
  ASSERT_OK(Flush());
5906
5824
  ASSERT_OK(db_->Merge(WriteOptions(), "key", "8"));
5907
5825
  ASSERT_OK(Flush());
5908
- ASSERT_OK(dbfull()->TEST_WaitForCompact(true));
5826
+ ASSERT_OK(dbfull()->TEST_WaitForCompact());
5909
5827
  ASSERT_EQ("0,4,1", FilesPerLevel());
5910
5828
 
5911
5829
  ASSERT_EQ("2,3,4,5,6,7,8", Get("key"));
@@ -6074,17 +5992,15 @@ TEST_F(DBTest2, ChangePrefixExtractor) {
6074
5992
  iterator->Seek("xa");
6075
5993
  ASSERT_TRUE(iterator->Valid());
6076
5994
  ASSERT_EQ("xb", iterator->key().ToString());
6077
- // It's a bug that the counter BLOOM_FILTER_PREFIX_CHECKED is not
6078
- // correct in this case. So don't check counters in this case.
6079
5995
  if (expect_filter_check) {
6080
- ASSERT_EQ(0, TestGetTickerCount(options, BLOOM_FILTER_PREFIX_CHECKED));
5996
+ EXPECT_EQ(0, PopTicker(options, NON_LAST_LEVEL_SEEK_FILTER_MATCH));
6081
5997
  }
6082
5998
 
6083
5999
  iterator->Seek("xz");
6084
6000
  ASSERT_TRUE(iterator->Valid());
6085
6001
  ASSERT_EQ("xz1", iterator->key().ToString());
6086
6002
  if (expect_filter_check) {
6087
- ASSERT_EQ(0, TestGetTickerCount(options, BLOOM_FILTER_PREFIX_CHECKED));
6003
+ EXPECT_EQ(0, PopTicker(options, NON_LAST_LEVEL_SEEK_FILTER_MATCH));
6088
6004
  }
6089
6005
  }
6090
6006
 
@@ -6102,7 +6018,7 @@ TEST_F(DBTest2, ChangePrefixExtractor) {
6102
6018
  ASSERT_TRUE(iterator->Valid());
6103
6019
  ASSERT_EQ("xb", iterator->key().ToString());
6104
6020
  if (expect_filter_check) {
6105
- ASSERT_EQ(0, TestGetTickerCount(options, BLOOM_FILTER_PREFIX_CHECKED));
6021
+ EXPECT_EQ(0, PopTicker(options, NON_LAST_LEVEL_SEEK_FILTER_MATCH));
6106
6022
  }
6107
6023
  }
6108
6024
 
@@ -6116,14 +6032,14 @@ TEST_F(DBTest2, ChangePrefixExtractor) {
6116
6032
  ASSERT_TRUE(iterator->Valid());
6117
6033
  ASSERT_EQ("xb", iterator->key().ToString());
6118
6034
  if (expect_filter_check) {
6119
- ASSERT_EQ(0, TestGetTickerCount(options, BLOOM_FILTER_PREFIX_CHECKED));
6035
+ EXPECT_EQ(0, PopTicker(options, NON_LAST_LEVEL_SEEK_FILTER_MATCH));
6120
6036
  }
6121
6037
 
6122
6038
  iterator->Seek("xx0");
6123
6039
  ASSERT_TRUE(iterator->Valid());
6124
6040
  ASSERT_EQ("xx1", iterator->key().ToString());
6125
6041
  if (expect_filter_check) {
6126
- ASSERT_EQ(1, TestGetTickerCount(options, BLOOM_FILTER_PREFIX_CHECKED));
6042
+ EXPECT_EQ(1, PopTicker(options, NON_LAST_LEVEL_SEEK_FILTER_MATCH));
6127
6043
  }
6128
6044
  }
6129
6045
 
@@ -6141,21 +6057,21 @@ TEST_F(DBTest2, ChangePrefixExtractor) {
6141
6057
  ASSERT_TRUE(iterator->Valid());
6142
6058
  ASSERT_EQ("xb", iterator->key().ToString());
6143
6059
  if (expect_filter_check) {
6144
- ASSERT_EQ(2, TestGetTickerCount(options, BLOOM_FILTER_PREFIX_CHECKED));
6060
+ EXPECT_EQ(1, PopTicker(options, NON_LAST_LEVEL_SEEK_FILTER_MATCH));
6145
6061
  }
6146
6062
 
6147
6063
  iterator->Seek("xg");
6148
6064
  ASSERT_TRUE(iterator->Valid());
6149
6065
  ASSERT_EQ("xx1", iterator->key().ToString());
6150
6066
  if (expect_filter_check) {
6151
- ASSERT_EQ(3, TestGetTickerCount(options, BLOOM_FILTER_PREFIX_CHECKED));
6067
+ EXPECT_EQ(1, PopTicker(options, NON_LAST_LEVEL_SEEK_FILTER_MATCH));
6152
6068
  }
6153
6069
 
6154
6070
  iterator->Seek("xz");
6155
6071
  ASSERT_TRUE(iterator->Valid());
6156
6072
  ASSERT_EQ("xz1", iterator->key().ToString());
6157
6073
  if (expect_filter_check) {
6158
- ASSERT_EQ(4, TestGetTickerCount(options, BLOOM_FILTER_PREFIX_CHECKED));
6074
+ EXPECT_EQ(1, PopTicker(options, NON_LAST_LEVEL_SEEK_FILTER_MATCH));
6159
6075
  }
6160
6076
 
6161
6077
  ASSERT_OK(iterator->status());
@@ -6167,14 +6083,14 @@ TEST_F(DBTest2, ChangePrefixExtractor) {
6167
6083
  ASSERT_TRUE(iterator->Valid());
6168
6084
  ASSERT_EQ("xb", iterator->key().ToString());
6169
6085
  if (expect_filter_check) {
6170
- ASSERT_EQ(5, TestGetTickerCount(options, BLOOM_FILTER_PREFIX_CHECKED));
6086
+ EXPECT_EQ(1, PopTicker(options, NON_LAST_LEVEL_SEEK_FILTER_MATCH));
6171
6087
  }
6172
6088
 
6173
6089
  iterator->Seek("xx0");
6174
6090
  ASSERT_TRUE(iterator->Valid());
6175
6091
  ASSERT_EQ("xx1", iterator->key().ToString());
6176
6092
  if (expect_filter_check) {
6177
- ASSERT_EQ(6, TestGetTickerCount(options, BLOOM_FILTER_PREFIX_CHECKED));
6093
+ EXPECT_EQ(1, PopTicker(options, NON_LAST_LEVEL_SEEK_FILTER_MATCH));
6178
6094
  }
6179
6095
 
6180
6096
  ASSERT_OK(iterator->status());
@@ -6188,7 +6104,7 @@ TEST_F(DBTest2, ChangePrefixExtractor) {
6188
6104
  ASSERT_TRUE(iterator->Valid());
6189
6105
  ASSERT_EQ("xb", iterator->key().ToString());
6190
6106
  if (expect_filter_check) {
6191
- ASSERT_EQ(7, TestGetTickerCount(options, BLOOM_FILTER_PREFIX_CHECKED));
6107
+ EXPECT_EQ(1, PopTicker(options, NON_LAST_LEVEL_SEEK_FILTER_MATCH));
6192
6108
  }
6193
6109
  ASSERT_OK(iterator->status());
6194
6110
  }
@@ -6262,13 +6178,19 @@ TEST_F(DBTest2, AutoPrefixMode1) {
6262
6178
  ro.total_order_seek = false;
6263
6179
  ro.auto_prefix_mode = true;
6264
6180
 
6265
- const auto stat = BLOOM_FILTER_PREFIX_CHECKED;
6181
+ const auto hit_stat = options.num_levels == 1
6182
+ ? LAST_LEVEL_SEEK_FILTER_MATCH
6183
+ : NON_LAST_LEVEL_SEEK_FILTER_MATCH;
6184
+ const auto miss_stat = options.num_levels == 1
6185
+ ? LAST_LEVEL_SEEK_FILTERED
6186
+ : NON_LAST_LEVEL_SEEK_FILTERED;
6266
6187
  {
6267
6188
  std::unique_ptr<Iterator> iterator(db_->NewIterator(ro));
6268
6189
  iterator->Seek("b1");
6269
6190
  ASSERT_TRUE(iterator->Valid());
6270
6191
  ASSERT_EQ("x1", iterator->key().ToString());
6271
- EXPECT_EQ(0, TestGetAndResetTickerCount(options, stat));
6192
+ EXPECT_EQ(0, TestGetAndResetTickerCount(options, hit_stat));
6193
+ EXPECT_EQ(0, TestGetAndResetTickerCount(options, miss_stat));
6272
6194
  ASSERT_OK(iterator->status());
6273
6195
  }
6274
6196
 
@@ -6280,7 +6202,8 @@ TEST_F(DBTest2, AutoPrefixMode1) {
6280
6202
  std::unique_ptr<Iterator> iterator(db_->NewIterator(ro));
6281
6203
  iterator->Seek("b1");
6282
6204
  ASSERT_FALSE(iterator->Valid());
6283
- EXPECT_EQ(1, TestGetAndResetTickerCount(options, stat));
6205
+ EXPECT_EQ(0, TestGetAndResetTickerCount(options, hit_stat));
6206
+ EXPECT_EQ(1, TestGetAndResetTickerCount(options, miss_stat));
6284
6207
  ASSERT_OK(iterator->status());
6285
6208
  }
6286
6209
 
@@ -6290,7 +6213,8 @@ TEST_F(DBTest2, AutoPrefixMode1) {
6290
6213
  iterator->Seek("b1");
6291
6214
  ASSERT_TRUE(iterator->Valid());
6292
6215
  ASSERT_EQ("x1", iterator->key().ToString());
6293
- EXPECT_EQ(0, TestGetAndResetTickerCount(options, stat));
6216
+ EXPECT_EQ(0, TestGetAndResetTickerCount(options, hit_stat));
6217
+ EXPECT_EQ(0, TestGetAndResetTickerCount(options, miss_stat));
6294
6218
  ASSERT_OK(iterator->status());
6295
6219
  }
6296
6220
 
@@ -6299,7 +6223,8 @@ TEST_F(DBTest2, AutoPrefixMode1) {
6299
6223
  std::unique_ptr<Iterator> iterator(db_->NewIterator(ro));
6300
6224
  iterator->Seek("b1");
6301
6225
  ASSERT_FALSE(iterator->Valid());
6302
- EXPECT_EQ(1, TestGetAndResetTickerCount(options, stat));
6226
+ EXPECT_EQ(0, TestGetAndResetTickerCount(options, hit_stat));
6227
+ EXPECT_EQ(1, TestGetAndResetTickerCount(options, miss_stat));
6303
6228
  ASSERT_OK(iterator->status());
6304
6229
  }
6305
6230
 
@@ -6308,7 +6233,8 @@ TEST_F(DBTest2, AutoPrefixMode1) {
6308
6233
  std::unique_ptr<Iterator> iterator(db_->NewIterator(ro));
6309
6234
  iterator->Seek("b1");
6310
6235
  ASSERT_FALSE(iterator->Valid());
6311
- EXPECT_EQ(0, TestGetAndResetTickerCount(options, stat));
6236
+ EXPECT_EQ(0, TestGetAndResetTickerCount(options, hit_stat));
6237
+ EXPECT_EQ(0, TestGetAndResetTickerCount(options, miss_stat));
6312
6238
  ASSERT_OK(iterator->status());
6313
6239
  }
6314
6240
 
@@ -6319,25 +6245,29 @@ TEST_F(DBTest2, AutoPrefixMode1) {
6319
6245
  ub = "b9";
6320
6246
  iterator->Seek("b1");
6321
6247
  ASSERT_FALSE(iterator->Valid());
6322
- EXPECT_EQ(1, TestGetAndResetTickerCount(options, stat));
6248
+ EXPECT_EQ(0, TestGetAndResetTickerCount(options, hit_stat));
6249
+ EXPECT_EQ(1, TestGetAndResetTickerCount(options, miss_stat));
6323
6250
  ASSERT_OK(iterator->status());
6324
6251
 
6325
6252
  ub = "z";
6326
6253
  iterator->Seek("b1");
6327
6254
  ASSERT_TRUE(iterator->Valid());
6328
6255
  ASSERT_EQ("x1", iterator->key().ToString());
6329
- EXPECT_EQ(0, TestGetAndResetTickerCount(options, stat));
6256
+ EXPECT_EQ(0, TestGetAndResetTickerCount(options, hit_stat));
6257
+ EXPECT_EQ(0, TestGetAndResetTickerCount(options, miss_stat));
6330
6258
 
6331
6259
  ub = "c";
6332
6260
  iterator->Seek("b1");
6333
6261
  ASSERT_FALSE(iterator->Valid());
6334
- EXPECT_EQ(1, TestGetAndResetTickerCount(options, stat));
6262
+ EXPECT_EQ(0, TestGetAndResetTickerCount(options, hit_stat));
6263
+ EXPECT_EQ(1, TestGetAndResetTickerCount(options, miss_stat));
6335
6264
 
6336
6265
  ub = "b9";
6337
6266
  iterator->SeekForPrev("b1");
6338
6267
  ASSERT_TRUE(iterator->Valid());
6339
6268
  ASSERT_EQ("a1", iterator->key().ToString());
6340
- EXPECT_EQ(0, TestGetAndResetTickerCount(options, stat));
6269
+ EXPECT_EQ(0, TestGetAndResetTickerCount(options, hit_stat));
6270
+ EXPECT_EQ(0, TestGetAndResetTickerCount(options, miss_stat));
6341
6271
 
6342
6272
  ub = "zz";
6343
6273
  iterator->SeekToLast();
@@ -6369,26 +6299,30 @@ TEST_F(DBTest2, AutoPrefixMode1) {
6369
6299
  ub = "b1";
6370
6300
  iterator->Seek("b9");
6371
6301
  ASSERT_FALSE(iterator->Valid());
6372
- EXPECT_EQ(1, TestGetAndResetTickerCount(options, stat));
6302
+ EXPECT_EQ(0, TestGetAndResetTickerCount(options, hit_stat));
6303
+ EXPECT_EQ(1, TestGetAndResetTickerCount(options, miss_stat));
6373
6304
  ASSERT_OK(iterator->status());
6374
6305
 
6375
6306
  ub = "b1";
6376
6307
  iterator->Seek("z");
6377
6308
  ASSERT_TRUE(iterator->Valid());
6378
6309
  ASSERT_EQ("y1", iterator->key().ToString());
6379
- EXPECT_EQ(0, TestGetAndResetTickerCount(options, stat));
6310
+ EXPECT_EQ(0, TestGetAndResetTickerCount(options, hit_stat));
6311
+ EXPECT_EQ(0, TestGetAndResetTickerCount(options, miss_stat));
6380
6312
 
6381
6313
  ub = "b1";
6382
6314
  iterator->Seek("c");
6383
6315
  ASSERT_FALSE(iterator->Valid());
6384
- EXPECT_EQ(0, TestGetAndResetTickerCount(options, stat));
6316
+ EXPECT_EQ(0, TestGetAndResetTickerCount(options, hit_stat));
6317
+ EXPECT_EQ(0, TestGetAndResetTickerCount(options, miss_stat));
6385
6318
 
6386
6319
  ub = "b";
6387
6320
  iterator->Seek("c9");
6388
6321
  ASSERT_FALSE(iterator->Valid());
6389
6322
  // Fails if ReverseBytewiseComparator::IsSameLengthImmediateSuccessor
6390
6323
  // is "correctly" implemented.
6391
- EXPECT_EQ(0, TestGetAndResetTickerCount(options, stat));
6324
+ EXPECT_EQ(0, TestGetAndResetTickerCount(options, hit_stat));
6325
+ EXPECT_EQ(0, TestGetAndResetTickerCount(options, miss_stat));
6392
6326
 
6393
6327
  ub = "a";
6394
6328
  iterator->Seek("b9");
@@ -6396,7 +6330,8 @@ TEST_F(DBTest2, AutoPrefixMode1) {
6396
6330
  // is "correctly" implemented.
6397
6331
  ASSERT_TRUE(iterator->Valid());
6398
6332
  ASSERT_EQ("a1", iterator->key().ToString());
6399
- EXPECT_EQ(0, TestGetAndResetTickerCount(options, stat));
6333
+ EXPECT_EQ(0, TestGetAndResetTickerCount(options, hit_stat));
6334
+ EXPECT_EQ(0, TestGetAndResetTickerCount(options, miss_stat));
6400
6335
 
6401
6336
  ub = "b";
6402
6337
  iterator->Seek("a");
@@ -6404,7 +6339,8 @@ TEST_F(DBTest2, AutoPrefixMode1) {
6404
6339
  // Fails if ReverseBytewiseComparator::IsSameLengthImmediateSuccessor
6405
6340
  // matches BytewiseComparator::IsSameLengthImmediateSuccessor. Upper
6406
6341
  // comparing before seek key prevents a real bug from surfacing.
6407
- EXPECT_EQ(0, TestGetAndResetTickerCount(options, stat));
6342
+ EXPECT_EQ(0, TestGetAndResetTickerCount(options, hit_stat));
6343
+ EXPECT_EQ(0, TestGetAndResetTickerCount(options, miss_stat));
6408
6344
 
6409
6345
  ub = "b1";
6410
6346
  iterator->SeekForPrev("b9");
@@ -6412,7 +6348,8 @@ TEST_F(DBTest2, AutoPrefixMode1) {
6412
6348
  // Fails if ReverseBytewiseComparator::IsSameLengthImmediateSuccessor
6413
6349
  // is "correctly" implemented.
6414
6350
  ASSERT_EQ("x1", iterator->key().ToString());
6415
- EXPECT_EQ(0, TestGetAndResetTickerCount(options, stat));
6351
+ EXPECT_EQ(0, TestGetAndResetTickerCount(options, hit_stat));
6352
+ EXPECT_EQ(0, TestGetAndResetTickerCount(options, miss_stat));
6416
6353
 
6417
6354
  ub = "a";
6418
6355
  iterator->SeekToLast();
@@ -6454,7 +6391,8 @@ TEST_F(DBTest2, AutoPrefixMode1) {
6454
6391
  std::unique_ptr<Iterator> iterator(db_->NewIterator(ro));
6455
6392
  iterator->Seek(Slice(a_end_stuff, 2));
6456
6393
  ASSERT_FALSE(iterator->Valid());
6457
- EXPECT_EQ(1, TestGetAndResetTickerCount(options, stat));
6394
+ EXPECT_EQ(0, TestGetAndResetTickerCount(options, hit_stat));
6395
+ EXPECT_EQ(1, TestGetAndResetTickerCount(options, miss_stat));
6458
6396
  ASSERT_OK(iterator->status());
6459
6397
 
6460
6398
  // test, cannot be validly optimized with auto_prefix_mode
@@ -6464,7 +6402,8 @@ TEST_F(DBTest2, AutoPrefixMode1) {
6464
6402
  iterator->Seek(Slice(a_end_stuff, 2));
6465
6403
  // !!! BUG !!! See "BUG" section of auto_prefix_mode.
6466
6404
  ASSERT_FALSE(iterator->Valid());
6467
- EXPECT_EQ(1, TestGetAndResetTickerCount(options, stat));
6405
+ EXPECT_EQ(0, TestGetAndResetTickerCount(options, hit_stat));
6406
+ EXPECT_EQ(1, TestGetAndResetTickerCount(options, miss_stat));
6468
6407
  ASSERT_OK(iterator->status());
6469
6408
 
6470
6409
  // To prove that is the wrong result, now use total order seek
@@ -6475,7 +6414,8 @@ TEST_F(DBTest2, AutoPrefixMode1) {
6475
6414
  iterator->Seek(Slice(a_end_stuff, 2));
6476
6415
  ASSERT_TRUE(iterator->Valid());
6477
6416
  ASSERT_EQ("b", iterator->key().ToString());
6478
- EXPECT_EQ(0, TestGetAndResetTickerCount(options, stat));
6417
+ EXPECT_EQ(0, TestGetAndResetTickerCount(options, hit_stat));
6418
+ EXPECT_EQ(0, TestGetAndResetTickerCount(options, miss_stat));
6479
6419
  ASSERT_OK(iterator->status());
6480
6420
  }
6481
6421
  } while (ChangeOptions(kSkipPlainTable));
@@ -1074,6 +1074,24 @@ size_t DBTestBase::TotalLiveFiles(int cf) {
1074
1074
  return num_files;
1075
1075
  }
1076
1076
 
1077
+ size_t DBTestBase::TotalLiveFilesAtPath(int cf, const std::string& path) {
1078
+ ColumnFamilyMetaData cf_meta;
1079
+ if (cf == 0) {
1080
+ db_->GetColumnFamilyMetaData(&cf_meta);
1081
+ } else {
1082
+ db_->GetColumnFamilyMetaData(handles_[cf], &cf_meta);
1083
+ }
1084
+ size_t num_files = 0;
1085
+ for (auto& level : cf_meta.levels) {
1086
+ for (auto& f : level.files) {
1087
+ if (f.directory == path) {
1088
+ num_files++;
1089
+ }
1090
+ }
1091
+ }
1092
+ return num_files;
1093
+ }
1094
+
1077
1095
  size_t DBTestBase::CountLiveFiles() {
1078
1096
  std::vector<LiveFileMetaData> metadata;
1079
1097
  db_->GetLiveFilesMetaData(&metadata);
@@ -1192,6 +1192,8 @@ class DBTestBase : public testing::Test {
1192
1192
 
1193
1193
  size_t TotalLiveFiles(int cf = 0);
1194
1194
 
1195
+ size_t TotalLiveFilesAtPath(int cf, const std::string& path);
1196
+
1195
1197
  size_t CountLiveFiles();
1196
1198
 
1197
1199
  int NumTableFilesAtLevel(int level, int cf = 0);
@@ -1316,6 +1318,10 @@ class DBTestBase : public testing::Test {
1316
1318
  Tickers ticker_type) {
1317
1319
  return options.statistics->getAndResetTickerCount(ticker_type);
1318
1320
  }
1321
+ // Short name for TestGetAndResetTickerCount
1322
+ uint64_t PopTicker(const Options& options, Tickers ticker_type) {
1323
+ return options.statistics->getAndResetTickerCount(ticker_type);
1324
+ }
1319
1325
 
1320
1326
  // Note: reverting this setting within the same test run is not yet
1321
1327
  // supported
@@ -1850,31 +1850,31 @@ TEST_P(DBTestUniversalManualCompactionOutputPathId,
1850
1850
  compact_options.exclusive_manual_compaction = exclusive_manual_compaction_;
1851
1851
  ASSERT_OK(db_->CompactRange(compact_options, handles_[1], nullptr, nullptr));
1852
1852
  ASSERT_EQ(1, TotalLiveFiles(1));
1853
- ASSERT_EQ(0, GetSstFileCount(options.db_paths[0].path));
1854
- ASSERT_EQ(1, GetSstFileCount(options.db_paths[1].path));
1853
+ ASSERT_EQ(0, TotalLiveFilesAtPath(1, options.db_paths[0].path));
1854
+ ASSERT_EQ(1, TotalLiveFilesAtPath(1, options.db_paths[1].path));
1855
1855
 
1856
1856
  ReopenWithColumnFamilies({kDefaultColumnFamilyName, "pikachu"}, options);
1857
1857
  ASSERT_EQ(1, TotalLiveFiles(1));
1858
- ASSERT_EQ(0, GetSstFileCount(options.db_paths[0].path));
1859
- ASSERT_EQ(1, GetSstFileCount(options.db_paths[1].path));
1858
+ ASSERT_EQ(0, TotalLiveFilesAtPath(1, options.db_paths[0].path));
1859
+ ASSERT_EQ(1, TotalLiveFilesAtPath(1, options.db_paths[1].path));
1860
1860
 
1861
1861
  MakeTables(1, "p", "q", 1);
1862
1862
  ASSERT_EQ(2, TotalLiveFiles(1));
1863
- ASSERT_EQ(1, GetSstFileCount(options.db_paths[0].path));
1864
- ASSERT_EQ(1, GetSstFileCount(options.db_paths[1].path));
1863
+ ASSERT_EQ(1, TotalLiveFilesAtPath(1, options.db_paths[0].path));
1864
+ ASSERT_EQ(1, TotalLiveFilesAtPath(1, options.db_paths[1].path));
1865
1865
 
1866
1866
  ReopenWithColumnFamilies({kDefaultColumnFamilyName, "pikachu"}, options);
1867
1867
  ASSERT_EQ(2, TotalLiveFiles(1));
1868
- ASSERT_EQ(1, GetSstFileCount(options.db_paths[0].path));
1869
- ASSERT_EQ(1, GetSstFileCount(options.db_paths[1].path));
1868
+ ASSERT_EQ(1, TotalLiveFilesAtPath(1, options.db_paths[0].path));
1869
+ ASSERT_EQ(1, TotalLiveFilesAtPath(1, options.db_paths[1].path));
1870
1870
 
1871
1871
  // Full compaction to DB path 0
1872
1872
  compact_options.target_path_id = 0;
1873
1873
  compact_options.exclusive_manual_compaction = exclusive_manual_compaction_;
1874
1874
  ASSERT_OK(db_->CompactRange(compact_options, handles_[1], nullptr, nullptr));
1875
1875
  ASSERT_EQ(1, TotalLiveFiles(1));
1876
- ASSERT_EQ(1, GetSstFileCount(options.db_paths[0].path));
1877
- ASSERT_EQ(0, GetSstFileCount(options.db_paths[1].path));
1876
+ ASSERT_EQ(1, TotalLiveFilesAtPath(1, options.db_paths[0].path));
1877
+ ASSERT_EQ(0, TotalLiveFilesAtPath(1, options.db_paths[1].path));
1878
1878
 
1879
1879
  // Fail when compacting to an invalid path ID
1880
1880
  compact_options.target_path_id = 2;
@@ -2399,6 +2399,31 @@ TEST_F(DBWALTest, GetCompressedWalsAfterSync) {
2399
2399
  Status s = dbfull()->GetSortedWalFiles(wals);
2400
2400
  ASSERT_OK(s);
2401
2401
  }
2402
+
2403
+ TEST_F(DBWALTest, EmptyWalReopenTest) {
2404
+ Options options = CurrentOptions();
2405
+ options.env = env_;
2406
+ CreateAndReopenWithCF({"pikachu"}, options);
2407
+
2408
+ // make sure we can re-open it.
2409
+ ASSERT_OK(TryReopenWithColumnFamilies({"default", "pikachu"}, options));
2410
+
2411
+ {
2412
+ std::vector<std::string> files;
2413
+ int num_wal_files = 0;
2414
+ ASSERT_OK(env_->GetChildren(dbname_, &files));
2415
+ for (const auto& file : files) {
2416
+ uint64_t number = 0;
2417
+ FileType type = kWalFile;
2418
+ if (ParseFileName(file, &number, &type) && type == kWalFile) {
2419
+ num_wal_files++;
2420
+ }
2421
+ }
2422
+
2423
+ ASSERT_EQ(num_wal_files, 1);
2424
+ }
2425
+ }
2426
+
2402
2427
  } // namespace ROCKSDB_NAMESPACE
2403
2428
 
2404
2429
  int main(int argc, char** argv) {