@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
@@ -7,8 +7,6 @@
7
7
  // Use of this source code is governed by a BSD-style license that can be
8
8
  // found in the LICENSE file. See the AUTHORS file for names of contributors.
9
9
 
10
- #include "util/rate_limiter.h"
11
-
12
10
  #include <chrono>
13
11
  #include <cinttypes>
14
12
  #include <cstdint>
@@ -20,6 +18,7 @@
20
18
  #include "test_util/sync_point.h"
21
19
  #include "test_util/testharness.h"
22
20
  #include "util/random.h"
21
+ #include "util/rate_limiter_impl.h"
23
22
 
24
23
  namespace ROCKSDB_NAMESPACE {
25
24
 
@@ -416,6 +415,51 @@ TEST_F(RateLimiterTest, LimitChangeTest) {
416
415
  ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->DisableProcessing();
417
416
  }
418
417
 
418
+ TEST_F(RateLimiterTest, AvailableByteSizeExhaustTest) {
419
+ SpecialEnv special_env(Env::Default(), /*time_elapse_only_sleep*/ true);
420
+ const std::chrono::seconds kTimePerRefill(1);
421
+
422
+ // This test makes sure available_bytes_ get exhausted first before queuing
423
+ // any remaining bytes when requested_bytes > available_bytes
424
+ const int64_t available_bytes_per_period = 500;
425
+
426
+ std::shared_ptr<RateLimiter> limiter = std::make_shared<GenericRateLimiter>(
427
+ available_bytes_per_period,
428
+ std::chrono::microseconds(kTimePerRefill).count(), 10 /* fairness */,
429
+ RateLimiter::Mode::kWritesOnly, special_env.GetSystemClock(),
430
+ false /* auto_tuned */);
431
+
432
+ // Step 1. Request 100 and wait for the refill
433
+ // so that the remaining available bytes are 400
434
+ limiter->Request(100, Env::IO_USER, nullptr /* stats */,
435
+ RateLimiter::OpType::kWrite);
436
+ special_env.SleepForMicroseconds(
437
+ static_cast<int>(std::chrono::microseconds(kTimePerRefill).count()));
438
+
439
+ ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->SetCallBack(
440
+ "GenericRateLimiter::Request:PostEnqueueRequest", [&](void* arg) {
441
+ port::Mutex* request_mutex = (port::Mutex*)arg;
442
+ request_mutex->Unlock();
443
+ // Step 3. Check GetTotalBytesThrough = available_bytes_per_period
444
+ // to make sure that the first request (100) and the part of the second
445
+ // request (400) made through when the remaining of the second request
446
+ // got queued
447
+ ASSERT_EQ(available_bytes_per_period,
448
+ limiter->GetTotalBytesThrough(Env::IO_USER));
449
+ request_mutex->Lock();
450
+ });
451
+ ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->EnableProcessing();
452
+
453
+ // Step 2. Request 500, which is greater than the remaining available bytes
454
+ // (400)
455
+ limiter->Request(500, Env::IO_USER, nullptr /* stats */,
456
+ RateLimiter::OpType::kWrite);
457
+
458
+ ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->DisableProcessing();
459
+ ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->ClearCallBack(
460
+ "GenericRateLimiter::Request:PostEnqueueRequest");
461
+ }
462
+
419
463
  TEST_F(RateLimiterTest, AutoTuneIncreaseWhenFull) {
420
464
  const std::chrono::seconds kTimePerRefill(1);
421
465
  const int kRefillsPerTune = 100; // needs to match util/rate_limiter.cc
@@ -104,11 +104,11 @@ struct StandardKeyGen {
104
104
  return str_;
105
105
  }
106
106
 
107
- bool operator==(const StandardKeyGen& other) {
107
+ bool operator==(const StandardKeyGen& other) const {
108
108
  // Same prefix is assumed
109
109
  return id_ == other.id_;
110
110
  }
111
- bool operator!=(const StandardKeyGen& other) {
111
+ bool operator!=(const StandardKeyGen& other) const {
112
112
  // Same prefix is assumed
113
113
  return id_ != other.id_;
114
114
  }
@@ -144,8 +144,8 @@ struct SmallKeyGen {
144
144
  return str_;
145
145
  }
146
146
 
147
- bool operator==(const SmallKeyGen& other) { return id_ == other.id_; }
148
- bool operator!=(const SmallKeyGen& other) { return id_ != other.id_; }
147
+ bool operator==(const SmallKeyGen& other) const { return id_ == other.id_; }
148
+ bool operator!=(const SmallKeyGen& other) const { return id_ != other.id_; }
149
149
 
150
150
  uint64_t id_;
151
151
  std::string str_;
@@ -1069,11 +1069,11 @@ struct PhsfInputGen {
1069
1069
 
1070
1070
  const std::pair<std::string, uint8_t>* operator->() { return &**this; }
1071
1071
 
1072
- bool operator==(const PhsfInputGen& other) {
1072
+ bool operator==(const PhsfInputGen& other) const {
1073
1073
  // Same prefix is assumed
1074
1074
  return id_ == other.id_;
1075
1075
  }
1076
- bool operator!=(const PhsfInputGen& other) {
1076
+ bool operator!=(const PhsfInputGen& other) const {
1077
1077
  // Same prefix is assumed
1078
1078
  return id_ != other.id_;
1079
1079
  }
@@ -91,8 +91,8 @@ class SliceTransformDBTest : public testing::Test {
91
91
  };
92
92
 
93
93
  namespace {
94
- uint64_t TestGetTickerCount(const Options& options, Tickers ticker_type) {
95
- return options.statistics->getTickerCount(ticker_type);
94
+ uint64_t PopTicker(const Options& options, Tickers ticker_type) {
95
+ return options.statistics->getAndResetTickerCount(ticker_type);
96
96
  }
97
97
  } // namespace
98
98
 
@@ -121,28 +121,33 @@ TEST_F(SliceTransformDBTest, CapPrefix) {
121
121
  ASSERT_OK(iter->status());
122
122
  ASSERT_TRUE(iter->Valid());
123
123
  ASSERT_EQ(iter->value().ToString(), "bar");
124
- ASSERT_EQ(TestGetTickerCount(last_options_, BLOOM_FILTER_PREFIX_USEFUL), 0U);
124
+ EXPECT_EQ(PopTicker(last_options_, NON_LAST_LEVEL_SEEK_FILTER_MATCH), 1U);
125
+ EXPECT_EQ(PopTicker(last_options_, NON_LAST_LEVEL_SEEK_FILTERED), 0U);
125
126
 
126
127
  iter->Seek("foo2");
127
128
  ASSERT_OK(iter->status());
128
129
  ASSERT_TRUE(!iter->Valid());
129
- ASSERT_EQ(TestGetTickerCount(last_options_, BLOOM_FILTER_PREFIX_USEFUL), 1U);
130
+ EXPECT_EQ(PopTicker(last_options_, NON_LAST_LEVEL_SEEK_FILTER_MATCH), 0U);
131
+ EXPECT_EQ(PopTicker(last_options_, NON_LAST_LEVEL_SEEK_FILTERED), 1U);
130
132
 
131
133
  iter->Seek("barbarbar");
132
134
  ASSERT_OK(iter->status());
133
135
  ASSERT_TRUE(iter->Valid());
134
136
  ASSERT_EQ(iter->value().ToString(), "foo");
135
- ASSERT_EQ(TestGetTickerCount(last_options_, BLOOM_FILTER_PREFIX_USEFUL), 1U);
137
+ EXPECT_EQ(PopTicker(last_options_, NON_LAST_LEVEL_SEEK_FILTER_MATCH), 1U);
138
+ EXPECT_EQ(PopTicker(last_options_, NON_LAST_LEVEL_SEEK_FILTERED), 0U);
136
139
 
137
140
  iter->Seek("barfoofoo");
138
141
  ASSERT_OK(iter->status());
139
142
  ASSERT_TRUE(!iter->Valid());
140
- ASSERT_EQ(TestGetTickerCount(last_options_, BLOOM_FILTER_PREFIX_USEFUL), 2U);
143
+ EXPECT_EQ(PopTicker(last_options_, NON_LAST_LEVEL_SEEK_FILTER_MATCH), 0U);
144
+ EXPECT_EQ(PopTicker(last_options_, NON_LAST_LEVEL_SEEK_FILTERED), 1U);
141
145
 
142
146
  iter->Seek("foobarbar");
143
147
  ASSERT_OK(iter->status());
144
148
  ASSERT_TRUE(!iter->Valid());
145
- ASSERT_EQ(TestGetTickerCount(last_options_, BLOOM_FILTER_PREFIX_USEFUL), 3U);
149
+ EXPECT_EQ(PopTicker(last_options_, NON_LAST_LEVEL_SEEK_FILTER_MATCH), 0U);
150
+ EXPECT_EQ(PopTicker(last_options_, NON_LAST_LEVEL_SEEK_FILTERED), 1U);
146
151
  }
147
152
 
148
153
  } // namespace ROCKSDB_NAMESPACE
@@ -4,28 +4,38 @@
4
4
  // (found in the LICENSE.Apache file in the root directory).
5
5
  //
6
6
  #pragma once
7
- #include "monitoring/statistics.h"
7
+ #include "monitoring/statistics_impl.h"
8
8
  #include "rocksdb/system_clock.h"
9
9
 
10
10
  namespace ROCKSDB_NAMESPACE {
11
11
  // Auto-scoped.
12
- // Records the measure time into the corresponding histogram if statistics
13
- // is not nullptr. It is also saved into *elapsed if the pointer is not nullptr
14
- // and overwrite is true, it will be added to *elapsed if overwrite is false.
12
+ // When statistics is not nullptr, records the measured time into any enabled
13
+ // histograms supplied to the constructor. A histogram argument may be omitted
14
+ // by setting it to Histograms::HISTOGRAM_ENUM_MAX. It is also saved into
15
+ // *elapsed if the pointer is not nullptr and overwrite is true, it will be
16
+ // added to *elapsed if overwrite is false.
15
17
  class StopWatch {
16
18
  public:
17
19
  StopWatch(SystemClock* clock, Statistics* statistics,
18
- const uint32_t hist_type, uint64_t* elapsed = nullptr,
19
- bool overwrite = true, bool delay_enabled = false)
20
+ const uint32_t hist_type_1,
21
+ const uint32_t hist_type_2 = Histograms::HISTOGRAM_ENUM_MAX,
22
+ uint64_t* elapsed = nullptr, bool overwrite = true,
23
+ bool delay_enabled = false)
20
24
  : clock_(clock),
21
25
  statistics_(statistics),
22
- hist_type_(hist_type),
26
+ hist_type_1_(statistics && statistics->HistEnabledForType(hist_type_1)
27
+ ? hist_type_1
28
+ : Histograms::HISTOGRAM_ENUM_MAX),
29
+ hist_type_2_(statistics && statistics->HistEnabledForType(hist_type_2)
30
+ ? hist_type_2
31
+ : Histograms::HISTOGRAM_ENUM_MAX),
23
32
  elapsed_(elapsed),
24
33
  overwrite_(overwrite),
25
34
  stats_enabled_(statistics &&
26
35
  statistics->get_stats_level() >=
27
36
  StatsLevel::kExceptTimers &&
28
- statistics->HistEnabledForType(hist_type)),
37
+ (hist_type_1_ != Histograms::HISTOGRAM_ENUM_MAX ||
38
+ hist_type_2_ != Histograms::HISTOGRAM_ENUM_MAX)),
29
39
  delay_enabled_(delay_enabled),
30
40
  total_delay_(0),
31
41
  delay_start_time_(0),
@@ -44,10 +54,15 @@ class StopWatch {
44
54
  *elapsed_ -= total_delay_;
45
55
  }
46
56
  if (stats_enabled_) {
47
- statistics_->reportTimeToHistogram(
48
- hist_type_, (elapsed_ != nullptr)
49
- ? *elapsed_
50
- : (clock_->NowMicros() - start_time_));
57
+ const auto time = (elapsed_ != nullptr)
58
+ ? *elapsed_
59
+ : (clock_->NowMicros() - start_time_);
60
+ if (hist_type_1_ != Histograms::HISTOGRAM_ENUM_MAX) {
61
+ statistics_->reportTimeToHistogram(hist_type_1_, time);
62
+ }
63
+ if (hist_type_2_ != Histograms::HISTOGRAM_ENUM_MAX) {
64
+ statistics_->reportTimeToHistogram(hist_type_2_, time);
65
+ }
51
66
  }
52
67
  }
53
68
 
@@ -75,7 +90,8 @@ class StopWatch {
75
90
  private:
76
91
  SystemClock* clock_;
77
92
  Statistics* statistics_;
78
- const uint32_t hist_type_;
93
+ const uint32_t hist_type_1_;
94
+ const uint32_t hist_type_2_;
79
95
  uint64_t* elapsed_;
80
96
  bool overwrite_;
81
97
  bool stats_enabled_;
@@ -110,6 +126,8 @@ class StopWatchNano {
110
126
  return (clock_ != nullptr) ? ElapsedNanos(reset) : 0U;
111
127
  }
112
128
 
129
+ bool IsStarted() { return start_ != 0; }
130
+
113
131
  private:
114
132
  SystemClock* clock_;
115
133
  uint64_t start_;
@@ -42,6 +42,8 @@ class SimulatedBackgroundTask {
42
42
  std::unique_lock<std::mutex> l(mutex_);
43
43
  running_count_++;
44
44
  bg_cv_.notify_all();
45
+ assert(cf_key_);
46
+ Env::Default()->GetThreadStatusUpdater()->SetEnableTracking(true);
45
47
  Env::Default()->GetThreadStatusUpdater()->SetColumnFamilyInfoKey(cf_key_);
46
48
  Env::Default()->GetThreadStatusUpdater()->SetThreadOperation(
47
49
  operation_type_);
@@ -38,7 +38,8 @@ struct OperationInfo {
38
38
  static OperationInfo global_operation_table[] = {
39
39
  {ThreadStatus::OP_UNKNOWN, ""},
40
40
  {ThreadStatus::OP_COMPACTION, "Compaction"},
41
- {ThreadStatus::OP_FLUSH, "Flush"}};
41
+ {ThreadStatus::OP_FLUSH, "Flush"},
42
+ {ThreadStatus::OP_DBOPEN, "DBOpen"}};
42
43
 
43
44
  struct OperationStageInfo {
44
45
  const ThreadStatus::OperationStage stage;
@@ -0,0 +1,77 @@
1
+ // Copyright (c) 2011-present, Facebook, Inc. All rights reserved.
2
+ // This source code is licensed under both the GPLv2 (found in the
3
+ // COPYING file in the root directory) and Apache 2.0 License
4
+ // (found in the LICENSE.Apache file in the root directory).
5
+
6
+ #pragma once
7
+ #include <sstream>
8
+ #include <vector>
9
+
10
+ #include "rocksdb/slice.h"
11
+ #include "rocksdb/status.h"
12
+ #include "util/coding.h"
13
+
14
+ namespace ROCKSDB_NAMESPACE {
15
+
16
+ // Dummy record in WAL logs signaling user-defined timestamp sizes for
17
+ // subsequent records.
18
+ class UserDefinedTimestampSizeRecord {
19
+ public:
20
+ UserDefinedTimestampSizeRecord() {}
21
+ explicit UserDefinedTimestampSizeRecord(
22
+ std::vector<std::pair<uint32_t, size_t>>&& cf_to_ts_sz)
23
+ : cf_to_ts_sz_(std::move(cf_to_ts_sz)) {}
24
+
25
+ const std::vector<std::pair<uint32_t, size_t>>& GetUserDefinedTimestampSize()
26
+ const {
27
+ return cf_to_ts_sz_;
28
+ }
29
+
30
+ inline void EncodeTo(std::string* dst) const {
31
+ assert(dst != nullptr);
32
+ for (const auto& [cf_id, ts_sz] : cf_to_ts_sz_) {
33
+ assert(ts_sz != 0);
34
+ PutFixed32(dst, cf_id);
35
+ PutFixed16(dst, static_cast<uint16_t>(ts_sz));
36
+ }
37
+ }
38
+
39
+ inline Status DecodeFrom(Slice* src) {
40
+ const size_t total_size = src->size();
41
+ if ((total_size % kSizePerColumnFamily) != 0) {
42
+ std::ostringstream oss;
43
+ oss << "User-defined timestamp size record length: " << total_size
44
+ << " is not a multiple of " << kSizePerColumnFamily << std::endl;
45
+ return Status::Corruption(oss.str());
46
+ }
47
+ int num_of_entries = static_cast<int>(total_size / kSizePerColumnFamily);
48
+ for (int i = 0; i < num_of_entries; i++) {
49
+ uint32_t cf_id = 0;
50
+ uint16_t ts_sz = 0;
51
+ if (!GetFixed32(src, &cf_id) || !GetFixed16(src, &ts_sz)) {
52
+ return Status::Corruption(
53
+ "Error decoding user-defined timestamp size record entry");
54
+ }
55
+ cf_to_ts_sz_.emplace_back(cf_id, static_cast<size_t>(ts_sz));
56
+ }
57
+ return Status::OK();
58
+ }
59
+
60
+ inline std::string DebugString() const {
61
+ std::ostringstream oss;
62
+
63
+ for (const auto& [cf_id, ts_sz] : cf_to_ts_sz_) {
64
+ oss << "Column family: " << cf_id
65
+ << ", user-defined timestamp size: " << ts_sz << std::endl;
66
+ }
67
+ return oss.str();
68
+ }
69
+
70
+ private:
71
+ // 4 bytes for column family id, 2 bytes for user-defined timestamp size.
72
+ static constexpr size_t kSizePerColumnFamily = 4 + 2;
73
+
74
+ std::vector<std::pair<uint32_t, size_t>> cf_to_ts_sz_;
75
+ };
76
+
77
+ } // namespace ROCKSDB_NAMESPACE
@@ -3,7 +3,7 @@
3
3
  // COPYING file in the root directory) and Apache 2.0 License
4
4
  // (found in the LICENSE.Apache file in the root directory).
5
5
 
6
- #include "utilities/agg_merge/agg_merge.h"
6
+ #include "rocksdb/utilities/agg_merge.h"
7
7
 
8
8
  #include <assert.h>
9
9
 
@@ -17,9 +17,9 @@
17
17
  #include "port/likely.h"
18
18
  #include "rocksdb/merge_operator.h"
19
19
  #include "rocksdb/slice.h"
20
- #include "rocksdb/utilities/agg_merge.h"
21
20
  #include "rocksdb/utilities/options_type.h"
22
21
  #include "util/coding.h"
22
+ #include "utilities/agg_merge/agg_merge_impl.h"
23
23
  #include "utilities/merge_operators.h"
24
24
 
25
25
  namespace ROCKSDB_NAMESPACE {
@@ -12,7 +12,7 @@
12
12
  #include "db/db_test_util.h"
13
13
  #include "rocksdb/options.h"
14
14
  #include "test_util/testharness.h"
15
- #include "utilities/agg_merge/agg_merge.h"
15
+ #include "utilities/agg_merge/agg_merge_impl.h"
16
16
  #include "utilities/agg_merge/test_agg_merge.h"
17
17
 
18
18
  namespace ROCKSDB_NAMESPACE {
@@ -11,7 +11,7 @@
11
11
  #include <vector>
12
12
 
13
13
  #include "util/coding.h"
14
- #include "utilities/agg_merge/agg_merge.h"
14
+ #include "utilities/agg_merge/agg_merge_impl.h"
15
15
 
16
16
  namespace ROCKSDB_NAMESPACE {
17
17
 
@@ -49,7 +49,7 @@
49
49
  #include "util/coding.h"
50
50
  #include "util/crc32c.h"
51
51
  #include "util/math.h"
52
- #include "util/rate_limiter.h"
52
+ #include "util/rate_limiter_impl.h"
53
53
  #include "util/string_util.h"
54
54
  #include "utilities/backup/backup_engine_impl.h"
55
55
  #include "utilities/checkpoint/checkpoint_impl.h"
@@ -46,7 +46,7 @@
46
46
  #include "util/cast_util.h"
47
47
  #include "util/mutexlock.h"
48
48
  #include "util/random.h"
49
- #include "util/rate_limiter.h"
49
+ #include "util/rate_limiter_impl.h"
50
50
  #include "util/stderr_logger.h"
51
51
  #include "util/string_util.h"
52
52
  #include "utilities/backup/backup_engine_impl.h"
@@ -7,7 +7,7 @@
7
7
  #include <unordered_set>
8
8
 
9
9
  #include "db/blob/blob_index.h"
10
- #include "monitoring/statistics.h"
10
+ #include "monitoring/statistics_impl.h"
11
11
  #include "rocksdb/compaction_filter.h"
12
12
  #include "utilities/blob_db/blob_db_gc_stats.h"
13
13
  #include "utilities/blob_db/blob_db_impl.h"
@@ -22,7 +22,7 @@
22
22
  #include "file/writable_file_writer.h"
23
23
  #include "logging/logging.h"
24
24
  #include "monitoring/instrumented_mutex.h"
25
- #include "monitoring/statistics.h"
25
+ #include "monitoring/statistics_impl.h"
26
26
  #include "rocksdb/convenience.h"
27
27
  #include "rocksdb/env.h"
28
28
  #include "rocksdb/iterator.h"
@@ -1631,6 +1631,11 @@ Status BlobDBImpl::GetImpl(const ReadOptions& read_options,
1631
1631
  return Status::NotSupported(
1632
1632
  "Blob DB doesn't support non-default column family.");
1633
1633
  }
1634
+ if (read_options.io_activity != Env::IOActivity::kUnknown) {
1635
+ return Status::InvalidArgument(
1636
+ "Cannot call Get with `ReadOptions::io_activity` != "
1637
+ "`Env::IOActivity::kUnknown`");
1638
+ }
1634
1639
  // Get a snapshot to avoid blob file get deleted between we
1635
1640
  // fetch and index entry and reading from the file.
1636
1641
  // TODO(yiwu): For Get() retry if file not found would be a simpler strategy.
@@ -2036,6 +2041,11 @@ void BlobDBImpl::CopyBlobFiles(
2036
2041
  }
2037
2042
 
2038
2043
  Iterator* BlobDBImpl::NewIterator(const ReadOptions& read_options) {
2044
+ if (read_options.io_activity != Env::IOActivity::kUnknown) {
2045
+ return NewErrorIterator(Status::InvalidArgument(
2046
+ "Cannot call NewIterator with `ReadOptions::io_activity` != "
2047
+ "`Env::IOActivity::kUnknown`"));
2048
+ }
2039
2049
  auto* cfd =
2040
2050
  static_cast_with_check<ColumnFamilyHandleImpl>(DefaultColumnFamily())
2041
2051
  ->cfd();
@@ -1187,6 +1187,12 @@ TEST_F(BlobDBTest, FIFOEviction_NoEnoughBlobFilesToEvict) {
1187
1187
  options.statistics = statistics;
1188
1188
  Open(bdb_options, options);
1189
1189
 
1190
+ SyncPoint::GetInstance()->LoadDependency(
1191
+ {{"DBImpl::NotifyOnFlushCompleted::PostAllOnFlushCompleted",
1192
+ "BlobDBTest.FIFOEviction_NoEnoughBlobFilesToEvict:AfterFlush"}});
1193
+
1194
+ SyncPoint::GetInstance()->EnableProcessing();
1195
+
1190
1196
  ASSERT_EQ(0, blob_db_impl()->TEST_live_sst_size());
1191
1197
  std::string small_value(50, 'v');
1192
1198
  std::map<std::string, std::string> data;
@@ -1196,10 +1202,15 @@ TEST_F(BlobDBTest, FIFOEviction_NoEnoughBlobFilesToEvict) {
1196
1202
  ASSERT_OK(Put("key" + std::to_string(i), small_value, &data));
1197
1203
  }
1198
1204
  ASSERT_OK(blob_db_->Flush(FlushOptions()));
1205
+
1199
1206
  uint64_t live_sst_size = 0;
1200
1207
  ASSERT_TRUE(blob_db_->GetIntProperty(DB::Properties::kTotalSstFilesSize,
1201
1208
  &live_sst_size));
1202
1209
  ASSERT_TRUE(live_sst_size > 0);
1210
+
1211
+ TEST_SYNC_POINT(
1212
+ "BlobDBTest.FIFOEviction_NoEnoughBlobFilesToEvict:AfterFlush");
1213
+
1203
1214
  ASSERT_EQ(live_sst_size, blob_db_impl()->TEST_live_sst_size());
1204
1215
 
1205
1216
  bdb_options.max_db_size = live_sst_size + 2000;
@@ -1223,6 +1234,8 @@ TEST_F(BlobDBTest, FIFOEviction_NoEnoughBlobFilesToEvict) {
1223
1234
  ASSERT_EQ(1, statistics->getTickerCount(BLOB_DB_FIFO_NUM_FILES_EVICTED));
1224
1235
  // Verify large_key2 still exists.
1225
1236
  VerifyDB(data);
1237
+
1238
+ SyncPoint::GetInstance()->DisableProcessing();
1226
1239
  }
1227
1240
 
1228
1241
  // Test flush or compaction will trigger FIFO eviction since they update
@@ -1241,6 +1254,12 @@ TEST_F(BlobDBTest, FIFOEviction_TriggerOnSSTSizeChange) {
1241
1254
  options.compression = kNoCompression;
1242
1255
  Open(bdb_options, options);
1243
1256
 
1257
+ SyncPoint::GetInstance()->LoadDependency(
1258
+ {{"DBImpl::NotifyOnFlushCompleted::PostAllOnFlushCompleted",
1259
+ "BlobDBTest.FIFOEviction_TriggerOnSSTSizeChange:AfterFlush"}});
1260
+
1261
+ SyncPoint::GetInstance()->EnableProcessing();
1262
+
1244
1263
  std::string value(800, 'v');
1245
1264
  ASSERT_OK(PutWithTTL("large_key", value, 60));
1246
1265
  ASSERT_EQ(1, blob_db_impl()->TEST_GetBlobFiles().size());
@@ -1254,11 +1273,15 @@ TEST_F(BlobDBTest, FIFOEviction_TriggerOnSSTSizeChange) {
1254
1273
  }
1255
1274
  ASSERT_OK(blob_db_->Flush(FlushOptions()));
1256
1275
 
1276
+ TEST_SYNC_POINT("BlobDBTest.FIFOEviction_TriggerOnSSTSizeChange:AfterFlush");
1277
+
1257
1278
  // Verify large_key is deleted by FIFO eviction.
1258
1279
  blob_db_impl()->TEST_DeleteObsoleteFiles();
1259
1280
  ASSERT_EQ(0, blob_db_impl()->TEST_GetBlobFiles().size());
1260
1281
  ASSERT_EQ(1, statistics->getTickerCount(BLOB_DB_FIFO_NUM_FILES_EVICTED));
1261
1282
  VerifyDB(data);
1283
+
1284
+ SyncPoint::GetInstance()->DisableProcessing();
1262
1285
  }
1263
1286
 
1264
1287
  TEST_F(BlobDBTest, InlineSmallValues) {
@@ -1637,6 +1660,12 @@ TEST_F(BlobDBTest, FilterForFIFOEviction) {
1637
1660
  options.disable_auto_compactions = true;
1638
1661
  Open(bdb_options, options);
1639
1662
 
1663
+ SyncPoint::GetInstance()->LoadDependency(
1664
+ {{"DBImpl::NotifyOnFlushCompleted::PostAllOnFlushCompleted",
1665
+ "BlobDBTest.FilterForFIFOEviction:AfterFlush"}});
1666
+
1667
+ SyncPoint::GetInstance()->EnableProcessing();
1668
+
1640
1669
  std::map<std::string, std::string> data;
1641
1670
  std::map<std::string, std::string> data_after_compact;
1642
1671
  // Insert some small values that will be inlined.
@@ -1651,6 +1680,9 @@ TEST_F(BlobDBTest, FilterForFIFOEviction) {
1651
1680
  }
1652
1681
  uint64_t num_keys_to_evict = data.size() - data_after_compact.size();
1653
1682
  ASSERT_OK(blob_db_->Flush(FlushOptions()));
1683
+
1684
+ TEST_SYNC_POINT("BlobDBTest.FilterForFIFOEviction:AfterFlush");
1685
+
1654
1686
  uint64_t live_sst_size = blob_db_impl()->TEST_live_sst_size();
1655
1687
  ASSERT_GT(live_sst_size, 0);
1656
1688
  VerifyDB(data);
@@ -1702,6 +1734,8 @@ TEST_F(BlobDBTest, FilterForFIFOEviction) {
1702
1734
  data_after_compact["large_key2"] = large_value;
1703
1735
  data_after_compact["large_key3"] = large_value;
1704
1736
  VerifyDB(data_after_compact);
1737
+
1738
+ SyncPoint::GetInstance()->DisableProcessing();
1705
1739
  }
1706
1740
 
1707
1741
  TEST_F(BlobDBTest, GarbageCollection) {
@@ -2394,4 +2428,3 @@ int main(int argc, char **argv) {
2394
2428
  ::testing::InitGoogleTest(&argc, argv);
2395
2429
  return RUN_ALL_TESTS();
2396
2430
  }
2397
-
@@ -350,6 +350,21 @@ TEST_F(OptionsUtilTest, SanityCheck) {
350
350
  ASSERT_OK(
351
351
  CheckOptionsCompatibility(config_options, dbname_, db_opt, cf_descs));
352
352
  }
353
+
354
+ // persist_user_defined_timestamps
355
+ {
356
+ bool prev_persist_user_defined_timestamps =
357
+ cf_descs[2].options.persist_user_defined_timestamps;
358
+ cf_descs[2].options.persist_user_defined_timestamps = false;
359
+ ASSERT_NOK(
360
+ CheckOptionsCompatibility(config_options, dbname_, db_opt, cf_descs));
361
+
362
+ cf_descs[2].options.persist_user_defined_timestamps =
363
+ prev_persist_user_defined_timestamps;
364
+ ASSERT_OK(
365
+ CheckOptionsCompatibility(config_options, dbname_, db_opt, cf_descs));
366
+ }
367
+
353
368
  ASSERT_OK(DestroyDB(dbname_, Options(db_opt, cf_descs[0].options)));
354
369
  }
355
370
 
@@ -9,7 +9,7 @@
9
9
  #include <iomanip>
10
10
 
11
11
  #include "file/writable_file_writer.h"
12
- #include "monitoring/statistics.h"
12
+ #include "monitoring/statistics_impl.h"
13
13
  #include "port/port.h"
14
14
  #include "rocksdb/env.h"
15
15
  #include "rocksdb/file_system.h"
@@ -166,6 +166,11 @@ template <typename TValue>
166
166
  inline Status WriteCommittedTxn::GetForUpdateImpl(
167
167
  const ReadOptions& read_options, ColumnFamilyHandle* column_family,
168
168
  const Slice& key, TValue* value, bool exclusive, const bool do_validate) {
169
+ if (read_options.io_activity != Env::IOActivity::kUnknown) {
170
+ return Status::InvalidArgument(
171
+ "Cannot call GetForUpdate with `ReadOptions::io_activity` != "
172
+ "`Env::IOActivity::kUnknown`");
173
+ }
169
174
  column_family =
170
175
  column_family ? column_family : db_impl_->DefaultColumnFamily();
171
176
  assert(column_family);
@@ -1170,4 +1175,3 @@ Status PessimisticTransaction::SetName(const TransactionName& name) {
1170
1175
  }
1171
1176
 
1172
1177
  } // namespace ROCKSDB_NAMESPACE
1173
-