@nxtedition/rocksdb 6.0.0 → 6.0.3

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 (488) hide show
  1. package/BUILDING.md +18 -0
  2. package/binding.cc +16 -17
  3. package/binding.gyp +2 -2
  4. package/deps/rocksdb/build_version.cc +4 -10
  5. package/deps/rocksdb/rocksdb/CMakeLists.txt +26 -3
  6. package/deps/rocksdb/rocksdb/Makefile +73 -91
  7. package/deps/rocksdb/rocksdb/TARGETS +27 -2
  8. package/deps/rocksdb/rocksdb/cache/cache_test.cc +29 -17
  9. package/deps/rocksdb/rocksdb/cache/fast_lru_cache.cc +511 -0
  10. package/deps/rocksdb/rocksdb/cache/fast_lru_cache.h +299 -0
  11. package/deps/rocksdb/rocksdb/cache/lru_cache.cc +3 -0
  12. package/deps/rocksdb/rocksdb/cache/lru_cache.h +7 -0
  13. package/deps/rocksdb/rocksdb/cmake/modules/CxxFlags.cmake +7 -0
  14. package/deps/rocksdb/rocksdb/cmake/modules/FindJeMalloc.cmake +29 -0
  15. package/deps/rocksdb/rocksdb/cmake/modules/FindNUMA.cmake +29 -0
  16. package/deps/rocksdb/rocksdb/cmake/modules/FindSnappy.cmake +29 -0
  17. package/deps/rocksdb/rocksdb/cmake/modules/FindTBB.cmake +33 -0
  18. package/deps/rocksdb/rocksdb/cmake/modules/Findgflags.cmake +29 -0
  19. package/deps/rocksdb/rocksdb/cmake/modules/Findlz4.cmake +29 -0
  20. package/deps/rocksdb/rocksdb/cmake/modules/Finduring.cmake +26 -0
  21. package/deps/rocksdb/rocksdb/cmake/modules/Findzstd.cmake +29 -0
  22. package/deps/rocksdb/rocksdb/cmake/modules/ReadVersion.cmake +10 -0
  23. package/deps/rocksdb/rocksdb/common.mk +30 -0
  24. package/deps/rocksdb/rocksdb/crash_test.mk +3 -3
  25. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +1 -1
  26. package/deps/rocksdb/rocksdb/db/blob/blob_index.h +3 -3
  27. package/deps/rocksdb/rocksdb/db/blob/db_blob_index_test.cc +7 -7
  28. package/deps/rocksdb/rocksdb/db/builder.cc +22 -7
  29. package/deps/rocksdb/rocksdb/db/c.cc +71 -0
  30. package/deps/rocksdb/rocksdb/db/c_test.c +28 -2
  31. package/deps/rocksdb/rocksdb/db/column_family.cc +12 -5
  32. package/deps/rocksdb/rocksdb/db/column_family_test.cc +23 -22
  33. package/deps/rocksdb/rocksdb/db/compact_files_test.cc +11 -11
  34. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +2 -2
  35. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +36 -10
  36. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +4 -1
  37. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +3 -2
  38. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +54 -16
  39. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +14 -2
  40. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +3 -3
  41. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +85 -18
  42. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +7 -7
  43. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +1 -1
  44. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +23 -22
  45. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +1 -1
  46. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +151 -32
  47. package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +1 -1
  48. package/deps/rocksdb/rocksdb/db/convenience.cc +8 -6
  49. package/deps/rocksdb/rocksdb/db/corruption_test.cc +209 -38
  50. package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +2 -2
  51. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +404 -32
  52. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +28 -25
  53. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +85 -138
  54. package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +68 -3
  55. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +38 -13
  56. package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +1 -1
  57. package/deps/rocksdb/rocksdb/db/db_flush_test.cc +1 -1
  58. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +11 -20
  59. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +15 -1
  60. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +12 -9
  61. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +5 -4
  62. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +1 -1
  63. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +2 -2
  64. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +42 -10
  65. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +54 -23
  66. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +3 -0
  67. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +14 -4
  68. package/deps/rocksdb/rocksdb/db/db_info_dumper.cc +26 -18
  69. package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +8 -7
  70. package/deps/rocksdb/rocksdb/db/db_iter_test.cc +8 -8
  71. package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +6 -3
  72. package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +2 -2
  73. package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +6 -6
  74. package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +2 -2
  75. package/deps/rocksdb/rocksdb/db/db_options_test.cc +28 -12
  76. package/deps/rocksdb/rocksdb/db/db_properties_test.cc +16 -15
  77. package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +6 -4
  78. package/deps/rocksdb/rocksdb/db/db_readonly_with_timestamp_test.cc +331 -0
  79. package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +11 -6
  80. package/deps/rocksdb/rocksdb/db/db_sst_test.cc +68 -7
  81. package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +6 -5
  82. package/deps/rocksdb/rocksdb/db/db_test.cc +60 -42
  83. package/deps/rocksdb/rocksdb/db/db_test2.cc +244 -111
  84. package/deps/rocksdb/rocksdb/db/db_test_util.cc +101 -19
  85. package/deps/rocksdb/rocksdb/db/db_test_util.h +52 -2
  86. package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +1 -1
  87. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +7 -7
  88. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +5 -175
  89. package/deps/rocksdb/rocksdb/db/db_with_timestamp_test_util.cc +96 -0
  90. package/deps/rocksdb/rocksdb/db/db_with_timestamp_test_util.h +126 -0
  91. package/deps/rocksdb/rocksdb/db/db_write_test.cc +6 -6
  92. package/deps/rocksdb/rocksdb/db/dbformat.h +2 -1
  93. package/deps/rocksdb/rocksdb/db/deletefile_test.cc +1 -1
  94. package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +8 -8
  95. package/deps/rocksdb/rocksdb/db/experimental.cc +1 -1
  96. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +91 -12
  97. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +16 -2
  98. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +2 -0
  99. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +7 -7
  100. package/deps/rocksdb/rocksdb/db/file_indexer.h +1 -4
  101. package/deps/rocksdb/rocksdb/db/flush_job.cc +28 -15
  102. package/deps/rocksdb/rocksdb/db/flush_job.h +4 -0
  103. package/deps/rocksdb/rocksdb/db/flush_job_test.cc +98 -30
  104. package/deps/rocksdb/rocksdb/db/forward_iterator.cc +1 -1
  105. package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +14 -1
  106. package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +6 -0
  107. package/deps/rocksdb/rocksdb/db/internal_stats.cc +12 -12
  108. package/deps/rocksdb/rocksdb/db/listener_test.cc +4 -3
  109. package/deps/rocksdb/rocksdb/db/memtable.cc +2 -2
  110. package/deps/rocksdb/rocksdb/db/memtable_list.h +1 -1
  111. package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +37 -25
  112. package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +1 -1
  113. package/deps/rocksdb/rocksdb/db/perf_context_test.cc +18 -18
  114. package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +6 -6
  115. package/deps/rocksdb/rocksdb/db/prefix_test.cc +1 -1
  116. package/deps/rocksdb/rocksdb/db/repair.cc +13 -2
  117. package/deps/rocksdb/rocksdb/db/repair_test.cc +37 -15
  118. package/deps/rocksdb/rocksdb/db/snapshot_checker.h +1 -2
  119. package/deps/rocksdb/rocksdb/db/snapshot_impl.h +3 -1
  120. package/deps/rocksdb/rocksdb/db/table_cache.cc +20 -130
  121. package/deps/rocksdb/rocksdb/db/table_cache.h +3 -2
  122. package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +140 -0
  123. package/deps/rocksdb/rocksdb/db/version_builder.cc +1 -1
  124. package/deps/rocksdb/rocksdb/db/version_builder_test.cc +133 -133
  125. package/deps/rocksdb/rocksdb/db/version_edit.cc +22 -2
  126. package/deps/rocksdb/rocksdb/db/version_edit.h +13 -4
  127. package/deps/rocksdb/rocksdb/db/version_edit_test.cc +14 -14
  128. package/deps/rocksdb/rocksdb/db/version_set.cc +207 -214
  129. package/deps/rocksdb/rocksdb/db/version_set.h +14 -3
  130. package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +154 -0
  131. package/deps/rocksdb/rocksdb/db/version_set_test.cc +10 -9
  132. package/deps/rocksdb/rocksdb/db/wal_edit.h +2 -1
  133. package/deps/rocksdb/rocksdb/db/wal_manager.cc +2 -3
  134. package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +1 -1
  135. package/deps/rocksdb/rocksdb/db/write_batch.cc +178 -30
  136. package/deps/rocksdb/rocksdb/db/write_batch_test.cc +6 -6
  137. package/deps/rocksdb/rocksdb/db/write_controller.h +1 -1
  138. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +0 -2
  139. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +9 -6
  140. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compaction_filter.h +2 -1
  141. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +4 -3
  142. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +44 -6
  143. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.cc +4 -1
  144. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.cc +0 -10
  145. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +45 -42
  146. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +374 -275
  147. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +53 -3
  148. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +0 -12
  149. package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +13 -11
  150. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +276 -109
  151. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.h +63 -0
  152. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +45 -54
  153. package/deps/rocksdb/rocksdb/env/composite_env.cc +87 -14
  154. package/deps/rocksdb/rocksdb/env/env.cc +0 -60
  155. package/deps/rocksdb/rocksdb/env/env_encryption.cc +9 -0
  156. package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +1 -1
  157. package/deps/rocksdb/rocksdb/env/env_posix.cc +6 -5
  158. package/deps/rocksdb/rocksdb/env/env_test.cc +18 -5
  159. package/deps/rocksdb/rocksdb/env/fs_posix.cc +17 -12
  160. package/deps/rocksdb/rocksdb/env/io_posix.cc +39 -37
  161. package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +9 -9
  162. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +159 -65
  163. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +44 -22
  164. package/deps/rocksdb/rocksdb/file/file_util.h +2 -0
  165. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +142 -17
  166. package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +5 -2
  167. package/deps/rocksdb/rocksdb/file/sequence_file_reader.cc +7 -0
  168. package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +60 -40
  169. package/deps/rocksdb/rocksdb/file/writable_file_writer.h +1 -0
  170. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +23 -5
  171. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +49 -1
  172. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +5 -5
  173. package/deps/rocksdb/rocksdb/include/rocksdb/cleanable.h +59 -2
  174. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +1 -0
  175. package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +2 -1
  176. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +46 -44
  177. package/deps/rocksdb/rocksdb/include/rocksdb/env.h +1 -1
  178. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +2 -0
  179. package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +2 -4
  180. package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +3 -0
  181. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +45 -3
  182. package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +2 -0
  183. package/deps/rocksdb/rocksdb/include/rocksdb/snapshot.h +4 -1
  184. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +3 -0
  185. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +91 -40
  186. package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +1 -2
  187. package/deps/rocksdb/rocksdb/include/rocksdb/unique_id.h +22 -13
  188. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/customizable_util.h +9 -0
  189. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +4 -0
  190. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/object_registry.h +25 -0
  191. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +378 -103
  192. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +14 -0
  193. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
  194. package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +18 -4
  195. package/deps/rocksdb/rocksdb/memory/arena.h +1 -1
  196. package/deps/rocksdb/rocksdb/memory/concurrent_arena.cc +1 -5
  197. package/deps/rocksdb/rocksdb/memory/concurrent_arena.h +1 -5
  198. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +6 -8
  199. package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +1 -1
  200. package/deps/rocksdb/rocksdb/memtable/write_buffer_manager.cc +1 -1
  201. package/deps/rocksdb/rocksdb/memtable/write_buffer_manager_test.cc +5 -3
  202. package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +266 -45
  203. package/deps/rocksdb/rocksdb/monitoring/histogram.cc +2 -1
  204. package/deps/rocksdb/rocksdb/monitoring/iostats_context.cc +1 -4
  205. package/deps/rocksdb/rocksdb/monitoring/iostats_context_imp.h +4 -4
  206. package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +7 -8
  207. package/deps/rocksdb/rocksdb/monitoring/perf_context_imp.h +2 -2
  208. package/deps/rocksdb/rocksdb/monitoring/perf_level.cc +1 -5
  209. package/deps/rocksdb/rocksdb/monitoring/perf_level_imp.h +1 -5
  210. package/deps/rocksdb/rocksdb/monitoring/persistent_stats_history.cc +2 -2
  211. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +1 -1
  212. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.cc +2 -1
  213. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.h +1 -1
  214. package/deps/rocksdb/rocksdb/monitoring/thread_status_util.cc +3 -3
  215. package/deps/rocksdb/rocksdb/monitoring/thread_status_util.h +2 -2
  216. package/deps/rocksdb/rocksdb/options/cf_options.cc +47 -38
  217. package/deps/rocksdb/rocksdb/options/configurable.cc +9 -27
  218. package/deps/rocksdb/rocksdb/options/configurable_test.cc +1 -1
  219. package/deps/rocksdb/rocksdb/options/customizable.cc +3 -1
  220. package/deps/rocksdb/rocksdb/options/customizable_test.cc +379 -318
  221. package/deps/rocksdb/rocksdb/options/db_options.cc +46 -17
  222. package/deps/rocksdb/rocksdb/options/db_options.h +2 -0
  223. package/deps/rocksdb/rocksdb/options/options.cc +7 -0
  224. package/deps/rocksdb/rocksdb/options/options_helper.cc +86 -39
  225. package/deps/rocksdb/rocksdb/options/options_parser.cc +10 -10
  226. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +12 -7
  227. package/deps/rocksdb/rocksdb/options/options_test.cc +222 -68
  228. package/deps/rocksdb/rocksdb/port/port_posix.h +0 -15
  229. package/deps/rocksdb/rocksdb/port/win/env_win.cc +5 -4
  230. package/deps/rocksdb/rocksdb/port/win/env_win.h +2 -2
  231. package/deps/rocksdb/rocksdb/port/win/port_win.h +0 -31
  232. package/deps/rocksdb/rocksdb/rocksdb.pc.in +11 -0
  233. package/deps/rocksdb/rocksdb/src.mk +6 -1
  234. package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +2 -1
  235. package/deps/rocksdb/rocksdb/table/block_based/block.cc +4 -2
  236. package/deps/rocksdb/rocksdb/table/block_based/block.h +21 -25
  237. package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.cc +3 -4
  238. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +23 -8
  239. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +52 -15
  240. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +81 -7
  241. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +8 -2
  242. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +94 -726
  243. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +21 -15
  244. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +9 -3
  245. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +754 -0
  246. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +44 -73
  247. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +15 -5
  248. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +2 -1
  249. package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +2 -11
  250. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +59 -1
  251. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.h +18 -0
  252. package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +33 -17
  253. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +0 -61
  254. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +0 -13
  255. package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +2 -1
  256. package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +2 -2
  257. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +3 -2
  258. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +2 -1
  259. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +3 -2
  260. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +4 -3
  261. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +8 -4
  262. package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +4 -4
  263. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +2 -1
  264. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +65 -7
  265. package/deps/rocksdb/rocksdb/table/block_fetcher.h +2 -0
  266. package/deps/rocksdb/rocksdb/table/cleanable_test.cc +113 -0
  267. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +1 -1
  268. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.h +1 -1
  269. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +1 -1
  270. package/deps/rocksdb/rocksdb/table/format.cc +22 -20
  271. package/deps/rocksdb/rocksdb/table/iterator.cc +1 -81
  272. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +39 -0
  273. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +2 -2
  274. package/deps/rocksdb/rocksdb/table/multiget_context.h +60 -13
  275. package/deps/rocksdb/rocksdb/table/persistent_cache_options.h +0 -3
  276. package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.cc +12 -1
  277. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +4 -4
  278. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +2 -1
  279. package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +1 -1
  280. package/deps/rocksdb/rocksdb/table/sst_file_writer_collectors.h +1 -1
  281. package/deps/rocksdb/rocksdb/table/table_properties.cc +3 -5
  282. package/deps/rocksdb/rocksdb/table/table_reader.h +13 -0
  283. package/deps/rocksdb/rocksdb/table/table_test.cc +202 -78
  284. package/deps/rocksdb/rocksdb/table/unique_id.cc +84 -25
  285. package/deps/rocksdb/rocksdb/table/unique_id_impl.h +37 -4
  286. package/deps/rocksdb/rocksdb/test_util/testutil.cc +3 -1
  287. package/deps/rocksdb/rocksdb/test_util/testutil.h +11 -8
  288. package/deps/rocksdb/rocksdb/test_util/transaction_test_util.cc +8 -4
  289. package/deps/rocksdb/rocksdb/test_util/transaction_test_util.h +17 -0
  290. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.cc +11 -9
  291. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +3 -3
  292. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +277 -105
  293. package/deps/rocksdb/rocksdb/tools/db_sanity_test.cc +4 -4
  294. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +186 -42
  295. package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +75 -49
  296. package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +9 -8
  297. package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +4 -1
  298. package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +2 -2
  299. package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +26 -4
  300. package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +1 -1
  301. package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.h +1 -1
  302. package/deps/rocksdb/rocksdb/util/async_file_reader.cc +72 -0
  303. package/deps/rocksdb/rocksdb/util/async_file_reader.h +144 -0
  304. package/deps/rocksdb/rocksdb/util/autovector_test.cc +4 -4
  305. package/deps/rocksdb/rocksdb/util/bloom_test.cc +14 -8
  306. package/deps/rocksdb/rocksdb/util/build_version.cc.in +5 -6
  307. package/deps/rocksdb/rocksdb/util/cleanable.cc +180 -0
  308. package/deps/rocksdb/rocksdb/util/comparator.cc +5 -3
  309. package/deps/rocksdb/rocksdb/util/compression.h +56 -7
  310. package/deps/rocksdb/rocksdb/util/coro_utils.h +111 -0
  311. package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +148 -0
  312. package/deps/rocksdb/rocksdb/util/filelock_test.cc +2 -2
  313. package/deps/rocksdb/rocksdb/util/filter_bench.cc +12 -4
  314. package/deps/rocksdb/rocksdb/util/heap.h +5 -3
  315. package/deps/rocksdb/rocksdb/util/random.cc +1 -5
  316. package/deps/rocksdb/rocksdb/util/rate_limiter.cc +12 -9
  317. package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +1 -1
  318. package/deps/rocksdb/rocksdb/util/ribbon_alg.h +1 -1
  319. package/deps/rocksdb/rocksdb/util/ribbon_test.cc +2 -4
  320. package/deps/rocksdb/rocksdb/util/single_thread_executor.h +55 -0
  321. package/deps/rocksdb/rocksdb/util/slice.cc +8 -9
  322. package/deps/rocksdb/rocksdb/util/string_util.cc +3 -2
  323. package/deps/rocksdb/rocksdb/util/string_util.h +0 -13
  324. package/deps/rocksdb/rocksdb/util/thread_local.cc +4 -23
  325. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +99 -22
  326. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_impl.h +7 -0
  327. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +102 -59
  328. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +38 -36
  329. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +2 -2
  330. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +28 -0
  331. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +3 -0
  332. package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +1 -1
  333. package/deps/rocksdb/rocksdb/utilities/object_registry.cc +71 -0
  334. package/deps/rocksdb/rocksdb/utilities/object_registry_test.cc +71 -0
  335. package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +1 -1
  336. package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache_test.cc +5 -5
  337. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.cc +3 -3
  338. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_tracker.cc +0 -13
  339. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +40 -0
  340. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.cc +10 -8
  341. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.h +4 -2
  342. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +17 -0
  343. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc +7 -7
  344. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +8 -1
  345. package/deps/rocksdb/rocksdb/utilities/transactions/snapshot_checker.cc +5 -1
  346. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +21 -15
  347. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.cc +2 -2
  348. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +69 -11
  349. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +22 -9
  350. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +26 -5
  351. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.h +17 -4
  352. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +19 -16
  353. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +7 -3
  354. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +3 -2
  355. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +2 -2
  356. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +2 -2
  357. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +6 -6
  358. package/deps/rocksdb/rocksdb.gyp +47 -37
  359. package/package-lock.json +23687 -0
  360. package/package.json +2 -30
  361. package/prebuilds/darwin-arm64/node.napi.node +0 -0
  362. package/prebuilds/darwin-x64/node.napi.node +0 -0
  363. package/prebuilds/linux-x64/node.napi.node +0 -0
  364. package/deps/liburing/liburing/README +0 -46
  365. package/deps/liburing/liburing/test/232c93d07b74-test.c +0 -305
  366. package/deps/liburing/liburing/test/35fa71a030ca-test.c +0 -329
  367. package/deps/liburing/liburing/test/500f9fbadef8-test.c +0 -89
  368. package/deps/liburing/liburing/test/7ad0e4b2f83c-test.c +0 -93
  369. package/deps/liburing/liburing/test/8a9973408177-test.c +0 -106
  370. package/deps/liburing/liburing/test/917257daa0fe-test.c +0 -53
  371. package/deps/liburing/liburing/test/Makefile +0 -312
  372. package/deps/liburing/liburing/test/a0908ae19763-test.c +0 -58
  373. package/deps/liburing/liburing/test/a4c0b3decb33-test.c +0 -180
  374. package/deps/liburing/liburing/test/accept-link.c +0 -251
  375. package/deps/liburing/liburing/test/accept-reuse.c +0 -164
  376. package/deps/liburing/liburing/test/accept-test.c +0 -79
  377. package/deps/liburing/liburing/test/accept.c +0 -476
  378. package/deps/liburing/liburing/test/across-fork.c +0 -283
  379. package/deps/liburing/liburing/test/b19062a56726-test.c +0 -53
  380. package/deps/liburing/liburing/test/b5837bd5311d-test.c +0 -77
  381. package/deps/liburing/liburing/test/ce593a6c480a-test.c +0 -135
  382. package/deps/liburing/liburing/test/close-opath.c +0 -122
  383. package/deps/liburing/liburing/test/config +0 -10
  384. package/deps/liburing/liburing/test/connect.c +0 -398
  385. package/deps/liburing/liburing/test/cq-full.c +0 -96
  386. package/deps/liburing/liburing/test/cq-overflow.c +0 -294
  387. package/deps/liburing/liburing/test/cq-peek-batch.c +0 -102
  388. package/deps/liburing/liburing/test/cq-ready.c +0 -94
  389. package/deps/liburing/liburing/test/cq-size.c +0 -58
  390. package/deps/liburing/liburing/test/d4ae271dfaae-test.c +0 -96
  391. package/deps/liburing/liburing/test/d77a67ed5f27-test.c +0 -65
  392. package/deps/liburing/liburing/test/defer.c +0 -307
  393. package/deps/liburing/liburing/test/double-poll-crash.c +0 -186
  394. package/deps/liburing/liburing/test/eeed8b54e0df-test.c +0 -114
  395. package/deps/liburing/liburing/test/empty-eownerdead.c +0 -42
  396. package/deps/liburing/liburing/test/eventfd-disable.c +0 -151
  397. package/deps/liburing/liburing/test/eventfd-ring.c +0 -97
  398. package/deps/liburing/liburing/test/eventfd.c +0 -112
  399. package/deps/liburing/liburing/test/fadvise.c +0 -202
  400. package/deps/liburing/liburing/test/fallocate.c +0 -249
  401. package/deps/liburing/liburing/test/fc2a85cb02ef-test.c +0 -138
  402. package/deps/liburing/liburing/test/file-register.c +0 -843
  403. package/deps/liburing/liburing/test/file-update.c +0 -173
  404. package/deps/liburing/liburing/test/files-exit-hang-poll.c +0 -128
  405. package/deps/liburing/liburing/test/files-exit-hang-timeout.c +0 -134
  406. package/deps/liburing/liburing/test/fixed-link.c +0 -90
  407. package/deps/liburing/liburing/test/fsync.c +0 -224
  408. package/deps/liburing/liburing/test/hardlink.c +0 -136
  409. package/deps/liburing/liburing/test/helpers.c +0 -135
  410. package/deps/liburing/liburing/test/helpers.h +0 -67
  411. package/deps/liburing/liburing/test/io-cancel.c +0 -537
  412. package/deps/liburing/liburing/test/io_uring_enter.c +0 -296
  413. package/deps/liburing/liburing/test/io_uring_register.c +0 -664
  414. package/deps/liburing/liburing/test/io_uring_setup.c +0 -192
  415. package/deps/liburing/liburing/test/iopoll.c +0 -366
  416. package/deps/liburing/liburing/test/lfs-openat-write.c +0 -117
  417. package/deps/liburing/liburing/test/lfs-openat.c +0 -273
  418. package/deps/liburing/liburing/test/link-timeout.c +0 -1107
  419. package/deps/liburing/liburing/test/link.c +0 -496
  420. package/deps/liburing/liburing/test/link_drain.c +0 -229
  421. package/deps/liburing/liburing/test/madvise.c +0 -195
  422. package/deps/liburing/liburing/test/mkdir.c +0 -108
  423. package/deps/liburing/liburing/test/multicqes_drain.c +0 -383
  424. package/deps/liburing/liburing/test/nop-all-sizes.c +0 -107
  425. package/deps/liburing/liburing/test/nop.c +0 -115
  426. package/deps/liburing/liburing/test/open-close.c +0 -146
  427. package/deps/liburing/liburing/test/openat2.c +0 -240
  428. package/deps/liburing/liburing/test/personality.c +0 -204
  429. package/deps/liburing/liburing/test/pipe-eof.c +0 -81
  430. package/deps/liburing/liburing/test/pipe-reuse.c +0 -105
  431. package/deps/liburing/liburing/test/poll-cancel-ton.c +0 -139
  432. package/deps/liburing/liburing/test/poll-cancel.c +0 -135
  433. package/deps/liburing/liburing/test/poll-link.c +0 -227
  434. package/deps/liburing/liburing/test/poll-many.c +0 -208
  435. package/deps/liburing/liburing/test/poll-mshot-update.c +0 -273
  436. package/deps/liburing/liburing/test/poll-ring.c +0 -48
  437. package/deps/liburing/liburing/test/poll-v-poll.c +0 -353
  438. package/deps/liburing/liburing/test/poll.c +0 -109
  439. package/deps/liburing/liburing/test/probe.c +0 -137
  440. package/deps/liburing/liburing/test/read-write.c +0 -876
  441. package/deps/liburing/liburing/test/register-restrictions.c +0 -633
  442. package/deps/liburing/liburing/test/rename.c +0 -134
  443. package/deps/liburing/liburing/test/ring-leak.c +0 -173
  444. package/deps/liburing/liburing/test/ring-leak2.c +0 -249
  445. package/deps/liburing/liburing/test/rsrc_tags.c +0 -449
  446. package/deps/liburing/liburing/test/runtests-loop.sh +0 -16
  447. package/deps/liburing/liburing/test/runtests.sh +0 -170
  448. package/deps/liburing/liburing/test/rw_merge_test.c +0 -97
  449. package/deps/liburing/liburing/test/self.c +0 -91
  450. package/deps/liburing/liburing/test/send_recv.c +0 -291
  451. package/deps/liburing/liburing/test/send_recvmsg.c +0 -345
  452. package/deps/liburing/liburing/test/sendmsg_fs_cve.c +0 -198
  453. package/deps/liburing/liburing/test/shared-wq.c +0 -84
  454. package/deps/liburing/liburing/test/short-read.c +0 -75
  455. package/deps/liburing/liburing/test/shutdown.c +0 -163
  456. package/deps/liburing/liburing/test/sigfd-deadlock.c +0 -74
  457. package/deps/liburing/liburing/test/socket-rw-eagain.c +0 -156
  458. package/deps/liburing/liburing/test/socket-rw.c +0 -147
  459. package/deps/liburing/liburing/test/splice.c +0 -511
  460. package/deps/liburing/liburing/test/sq-full-cpp.cc +0 -45
  461. package/deps/liburing/liburing/test/sq-full.c +0 -45
  462. package/deps/liburing/liburing/test/sq-poll-dup.c +0 -200
  463. package/deps/liburing/liburing/test/sq-poll-kthread.c +0 -168
  464. package/deps/liburing/liburing/test/sq-poll-share.c +0 -137
  465. package/deps/liburing/liburing/test/sq-space_left.c +0 -159
  466. package/deps/liburing/liburing/test/sqpoll-cancel-hang.c +0 -159
  467. package/deps/liburing/liburing/test/sqpoll-disable-exit.c +0 -195
  468. package/deps/liburing/liburing/test/sqpoll-exit-hang.c +0 -77
  469. package/deps/liburing/liburing/test/sqpoll-sleep.c +0 -68
  470. package/deps/liburing/liburing/test/statx.c +0 -172
  471. package/deps/liburing/liburing/test/stdout.c +0 -232
  472. package/deps/liburing/liburing/test/submit-link-fail.c +0 -154
  473. package/deps/liburing/liburing/test/submit-reuse.c +0 -239
  474. package/deps/liburing/liburing/test/symlink.c +0 -116
  475. package/deps/liburing/liburing/test/teardowns.c +0 -58
  476. package/deps/liburing/liburing/test/thread-exit.c +0 -131
  477. package/deps/liburing/liburing/test/timeout-new.c +0 -246
  478. package/deps/liburing/liburing/test/timeout-overflow.c +0 -204
  479. package/deps/liburing/liburing/test/timeout.c +0 -1354
  480. package/deps/liburing/liburing/test/unlink.c +0 -111
  481. package/deps/liburing/liburing/test/wakeup-hang.c +0 -162
  482. package/deps/rocksdb/rocksdb/README.md +0 -32
  483. package/deps/rocksdb/rocksdb/microbench/README.md +0 -60
  484. package/deps/rocksdb/rocksdb/plugin/README.md +0 -43
  485. package/deps/rocksdb/rocksdb/port/README +0 -10
  486. package/deps/rocksdb/rocksdb/python.mk +0 -9
  487. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/README +0 -13
  488. package/prebuilds/linux-arm64/node.napi.node +0 -0
@@ -112,7 +112,7 @@ Status UpdateManifestForFilesState(
112
112
  lf->oldest_blob_file_number,
113
113
  lf->oldest_ancester_time, lf->file_creation_time,
114
114
  lf->file_checksum, lf->file_checksum_func_name,
115
- lf->min_timestamp, lf->max_timestamp);
115
+ lf->min_timestamp, lf->max_timestamp, lf->unique_id);
116
116
  }
117
117
  }
118
118
  } else {
@@ -91,7 +91,7 @@ class ExternalSSTFileBasicTest
91
91
  bool write_global_seqno, bool verify_checksums_before_ingest,
92
92
  std::map<std::string, std::string>* true_data) {
93
93
  assert(value_types.size() == 1 || keys.size() == value_types.size());
94
- std::string file_path = sst_files_dir_ + ToString(file_id);
94
+ std::string file_path = sst_files_dir_ + std::to_string(file_id);
95
95
  SstFileWriter sst_file_writer(EnvOptions(), options);
96
96
 
97
97
  Status s = sst_file_writer.Open(file_path);
@@ -123,7 +123,7 @@ class ExternalSSTFileBasicTest
123
123
  }
124
124
  for (size_t i = 0; i < keys.size(); i++) {
125
125
  std::string key = Key(keys[i]);
126
- std::string value = Key(keys[i]) + ToString(file_id);
126
+ std::string value = Key(keys[i]) + std::to_string(file_id);
127
127
  ValueType value_type =
128
128
  (value_types.size() == 1 ? value_types[0] : value_types[i]);
129
129
  switch (value_type) {
@@ -190,10 +190,10 @@ class ExternalSSTFileBasicTest
190
190
  #ifndef ROCKSDB_LITE
191
191
  uint64_t GetSstSizeHelper(Temperature temperature) {
192
192
  std::string prop;
193
- EXPECT_TRUE(
194
- dbfull()->GetProperty(DB::Properties::kLiveSstFilesSizeAtTemperature +
195
- ToString(static_cast<uint8_t>(temperature)),
196
- &prop));
193
+ EXPECT_TRUE(dbfull()->GetProperty(
194
+ DB::Properties::kLiveSstFilesSizeAtTemperature +
195
+ std::to_string(static_cast<uint8_t>(temperature)),
196
+ &prop));
197
197
  return static_cast<uint64_t>(std::atoi(prop.c_str()));
198
198
  }
199
199
  #endif // ROCKSDB_LITE
@@ -1184,7 +1184,7 @@ TEST_F(ExternalSSTFileBasicTest, SyncFailure) {
1184
1184
  std::unique_ptr<SstFileWriter> sst_file_writer(
1185
1185
  new SstFileWriter(EnvOptions(), sst_file_writer_options));
1186
1186
  std::string file_name =
1187
- sst_files_dir_ + "sync_failure_test_" + ToString(i) + ".sst";
1187
+ sst_files_dir_ + "sync_failure_test_" + std::to_string(i) + ".sst";
1188
1188
  ASSERT_OK(sst_file_writer->Open(file_name));
1189
1189
  ASSERT_OK(sst_file_writer->Put("bar", "v2"));
1190
1190
  ASSERT_OK(sst_file_writer->Finish());
@@ -1514,13 +1514,13 @@ TEST_P(ExternalSSTFileBasicTest, IngestFileWithFirstByteTampered) {
1514
1514
  EnvOptions env_options;
1515
1515
  do {
1516
1516
  Options options = CurrentOptions();
1517
- std::string file_path = sst_files_dir_ + ToString(file_id++);
1517
+ std::string file_path = sst_files_dir_ + std::to_string(file_id++);
1518
1518
  SstFileWriter sst_file_writer(env_options, options);
1519
1519
  Status s = sst_file_writer.Open(file_path);
1520
1520
  ASSERT_OK(s);
1521
1521
  for (int i = 0; i != 100; ++i) {
1522
1522
  std::string key = Key(i);
1523
- std::string value = Key(i) + ToString(0);
1523
+ std::string value = Key(i) + std::to_string(0);
1524
1524
  ASSERT_OK(sst_file_writer.Put(key, value));
1525
1525
  }
1526
1526
  ASSERT_OK(sst_file_writer.Finish());
@@ -1585,14 +1585,14 @@ TEST_P(ExternalSSTFileBasicTest, IngestExternalFileWithCorruptedPropsBlock) {
1585
1585
  int file_id = 0;
1586
1586
  Random64 rand(time(nullptr));
1587
1587
  do {
1588
- std::string file_path = sst_files_dir_ + ToString(file_id++);
1588
+ std::string file_path = sst_files_dir_ + std::to_string(file_id++);
1589
1589
  Options options = CurrentOptions();
1590
1590
  SstFileWriter sst_file_writer(EnvOptions(), options);
1591
1591
  Status s = sst_file_writer.Open(file_path);
1592
1592
  ASSERT_OK(s);
1593
1593
  for (int i = 0; i != 100; ++i) {
1594
1594
  std::string key = Key(i);
1595
- std::string value = Key(i) + ToString(0);
1595
+ std::string value = Key(i) + std::to_string(0);
1596
1596
  ASSERT_OK(sst_file_writer.Put(key, value));
1597
1597
  }
1598
1598
  ASSERT_OK(sst_file_writer.Finish());
@@ -1799,7 +1799,7 @@ TEST_F(ExternalSSTFileBasicTest, IngestWithTemperature) {
1799
1799
  TEST_F(ExternalSSTFileBasicTest, FailIfNotBottommostLevel) {
1800
1800
  Options options = GetDefaultOptions();
1801
1801
 
1802
- std::string file_path = sst_files_dir_ + ToString(1);
1802
+ std::string file_path = sst_files_dir_ + std::to_string(1);
1803
1803
  SstFileWriter sfw(EnvOptions(), options);
1804
1804
 
1805
1805
  ASSERT_OK(sfw.Open(file_path));
@@ -1844,6 +1844,85 @@ TEST_F(ExternalSSTFileBasicTest, FailIfNotBottommostLevel) {
1844
1844
  }
1845
1845
  }
1846
1846
 
1847
+ TEST_F(ExternalSSTFileBasicTest, VerifyChecksum) {
1848
+ const std::string kPutVal = "put_val";
1849
+ const std::string kIngestedVal = "ingested_val";
1850
+
1851
+ ASSERT_OK(Put("k", kPutVal, WriteOptions()));
1852
+ ASSERT_OK(Flush());
1853
+
1854
+ std::string external_file = sst_files_dir_ + "/file_to_ingest.sst";
1855
+ {
1856
+ SstFileWriter sst_file_writer{EnvOptions(), CurrentOptions()};
1857
+
1858
+ ASSERT_OK(sst_file_writer.Open(external_file));
1859
+ ASSERT_OK(sst_file_writer.Put("k", kIngestedVal));
1860
+ ASSERT_OK(sst_file_writer.Finish());
1861
+ }
1862
+
1863
+ ASSERT_OK(db_->IngestExternalFile(db_->DefaultColumnFamily(), {external_file},
1864
+ IngestExternalFileOptions()));
1865
+
1866
+ ASSERT_OK(db_->VerifyChecksum());
1867
+ }
1868
+
1869
+ TEST_F(ExternalSSTFileBasicTest, VerifySstUniqueId) {
1870
+ const std::string kPutVal = "put_val";
1871
+ const std::string kIngestedVal = "ingested_val";
1872
+
1873
+ ASSERT_OK(Put("k", kPutVal, WriteOptions()));
1874
+ ASSERT_OK(Flush());
1875
+
1876
+ std::string external_file = sst_files_dir_ + "/file_to_ingest.sst";
1877
+ {
1878
+ SstFileWriter sst_file_writer{EnvOptions(), CurrentOptions()};
1879
+
1880
+ ASSERT_OK(sst_file_writer.Open(external_file));
1881
+ ASSERT_OK(sst_file_writer.Put("k", kIngestedVal));
1882
+ ASSERT_OK(sst_file_writer.Finish());
1883
+ }
1884
+
1885
+ ASSERT_OK(db_->IngestExternalFile(db_->DefaultColumnFamily(), {external_file},
1886
+ IngestExternalFileOptions()));
1887
+ auto options = CurrentOptions();
1888
+ options.verify_sst_unique_id_in_manifest = true;
1889
+ Reopen(options);
1890
+
1891
+ // Test ingest file without session_id and db_id (for example generated by an
1892
+ // older version of sst_writer)
1893
+ SyncPoint::GetInstance()->SetCallBack(
1894
+ "PropertyBlockBuilder::AddTableProperty:Start", [&](void* props_vs) {
1895
+ auto props = static_cast<TableProperties*>(props_vs);
1896
+ // update table property session_id to a different one
1897
+ props->db_session_id = "";
1898
+ props->db_id = "";
1899
+ });
1900
+ std::atomic_int skipped = 0;
1901
+ SyncPoint::GetInstance()->SetCallBack("Version::VerifySstUniqueIds::Skipped",
1902
+ [&](void* /*arg*/) { skipped++; });
1903
+ SyncPoint::GetInstance()->EnableProcessing();
1904
+ SyncPoint::GetInstance()->EnableProcessing();
1905
+
1906
+ external_file = sst_files_dir_ + "/file_to_ingest2.sst";
1907
+ {
1908
+ SstFileWriter sst_file_writer{EnvOptions(), CurrentOptions()};
1909
+
1910
+ ASSERT_OK(sst_file_writer.Open(external_file));
1911
+ ASSERT_OK(sst_file_writer.Put("k", kIngestedVal));
1912
+ ASSERT_OK(sst_file_writer.Finish());
1913
+ }
1914
+
1915
+ ASSERT_OK(db_->IngestExternalFile(db_->DefaultColumnFamily(), {external_file},
1916
+ IngestExternalFileOptions()));
1917
+
1918
+ options.statistics = CreateDBStatistics();
1919
+ options.verify_sst_unique_id_in_manifest = true;
1920
+ ASSERT_EQ(skipped, 0);
1921
+ Reopen(options);
1922
+ // only one sst file is not verified because of missing unique_id
1923
+ ASSERT_EQ(skipped, 1);
1924
+ }
1925
+
1847
1926
  INSTANTIATE_TEST_CASE_P(ExternalSSTFileBasicTest, ExternalSSTFileBasicTest,
1848
1927
  testing::Values(std::make_tuple(true, true),
1849
1928
  std::make_tuple(true, false),
@@ -22,6 +22,7 @@
22
22
  #include "table/scoped_arena_iterator.h"
23
23
  #include "table/sst_file_writer_collectors.h"
24
24
  #include "table/table_builder.h"
25
+ #include "table/unique_id_impl.h"
25
26
  #include "test_util/sync_point.h"
26
27
  #include "util/stop_watch.h"
27
28
 
@@ -142,6 +143,9 @@ Status ExternalSstFileIngestionJob::Prepare(
142
143
  ingestion_options_.failed_move_fall_back_to_copy) {
143
144
  // Original file is on a different FS, use copy instead of hard linking.
144
145
  f.copy_file = true;
146
+ ROCKS_LOG_INFO(db_options_.info_log,
147
+ "Triy to link file %s but it's not supported : %s",
148
+ path_outside_db.c_str(), status.ToString().c_str());
145
149
  }
146
150
  } else {
147
151
  f.copy_file = true;
@@ -446,8 +450,8 @@ Status ExternalSstFileIngestionJob::Run() {
446
450
  f.smallest_internal_key, f.largest_internal_key, f.assigned_seqno,
447
451
  f.assigned_seqno, false, f.file_temperature, kInvalidBlobFileNumber,
448
452
  oldest_ancester_time, current_time, f.file_checksum,
449
- f.file_checksum_func_name, kDisableUserTimestamp,
450
- kDisableUserTimestamp);
453
+ f.file_checksum_func_name, kDisableUserTimestamp, kDisableUserTimestamp,
454
+ f.unique_id);
451
455
  f_metadata.temperature = f.file_temperature;
452
456
  edit_.AddFile(f.picked_level, f_metadata);
453
457
  }
@@ -727,6 +731,16 @@ Status ExternalSstFileIngestionJob::GetIngestedFileInfo(
727
731
 
728
732
  file_to_ingest->table_properties = *props;
729
733
 
734
+ auto s = GetSstInternalUniqueId(props->db_id, props->db_session_id,
735
+ props->orig_file_number,
736
+ &(file_to_ingest->unique_id));
737
+ if (!s.ok()) {
738
+ ROCKS_LOG_WARN(db_options_.info_log,
739
+ "Failed to get SST unique id for file %s",
740
+ file_to_ingest->internal_file_path.c_str());
741
+ file_to_ingest->unique_id = kNullUniqueId64x2;
742
+ }
743
+
730
744
  return status;
731
745
  }
732
746
 
@@ -70,6 +70,8 @@ struct IngestedFileInfo {
70
70
  std::string file_checksum_func_name;
71
71
  // The temperature of the file to be ingested
72
72
  Temperature file_temperature = Temperature::kUnknown;
73
+ // Unique id of the file to be ingested
74
+ UniqueId64x2 unique_id{};
73
75
  };
74
76
 
75
77
  class ExternalSstFileIngestionJob {
@@ -118,7 +118,7 @@ class ExternalSSTFileTest
118
118
  });
119
119
  data.resize(uniq_iter - data.begin());
120
120
  }
121
- std::string file_path = sst_files_dir_ + ToString(file_id);
121
+ std::string file_path = sst_files_dir_ + std::to_string(file_id);
122
122
  SstFileWriter sst_file_writer(EnvOptions(), options, cfh);
123
123
  Status s = sst_file_writer.Open(file_path);
124
124
  if (!s.ok()) {
@@ -172,7 +172,7 @@ class ExternalSSTFileTest
172
172
  });
173
173
  data.resize(uniq_iter - data.begin());
174
174
  }
175
- std::string file_path = sst_files_dir_ + ToString(file_id);
175
+ std::string file_path = sst_files_dir_ + std::to_string(file_id);
176
176
  SstFileWriter sst_file_writer(EnvOptions(), options, cfh);
177
177
 
178
178
  Status s = sst_file_writer.Open(file_path);
@@ -270,7 +270,7 @@ class ExternalSSTFileTest
270
270
  ColumnFamilyHandle* cfh = nullptr) {
271
271
  std::vector<std::pair<std::string, std::string>> file_data;
272
272
  for (auto& k : keys) {
273
- file_data.emplace_back(Key(k), Key(k) + ToString(file_id));
273
+ file_data.emplace_back(Key(k), Key(k) + std::to_string(file_id));
274
274
  }
275
275
  return GenerateAndAddExternalFile(options, file_data, file_id,
276
276
  allow_global_seqno, write_global_seqno,
@@ -966,7 +966,7 @@ TEST_F(ExternalSSTFileTest, MultiThreaded) {
966
966
  // Generate file names
967
967
  std::vector<std::string> file_names;
968
968
  for (int i = 0; i < num_files; i++) {
969
- std::string file_name = "file_" + ToString(i) + ".sst";
969
+ std::string file_name = "file_" + std::to_string(i) + ".sst";
970
970
  file_names.push_back(sst_files_dir_ + file_name);
971
971
  }
972
972
 
@@ -1116,7 +1116,7 @@ TEST_F(ExternalSSTFileTest, OverlappingRanges) {
1116
1116
  int range_end = key_ranges[i].second;
1117
1117
 
1118
1118
  Status s;
1119
- std::string range_val = "range_" + ToString(i);
1119
+ std::string range_val = "range_" + std::to_string(i);
1120
1120
 
1121
1121
  // For 20% of ranges we use DB::Put, for 80% we use DB::AddFile
1122
1122
  if (i && i % 5 == 0) {
@@ -1456,7 +1456,7 @@ TEST_F(ExternalSSTFileTest, CompactDuringAddFileRandom) {
1456
1456
  ASSERT_EQ(Get(Key(range_start)), Key(range_start)) << rid;
1457
1457
  ASSERT_EQ(Get(Key(range_end)), Key(range_end)) << rid;
1458
1458
  for (int k = range_start + 1; k < range_end; k++) {
1459
- std::string v = Key(k) + ToString(rid);
1459
+ std::string v = Key(k) + std::to_string(rid);
1460
1460
  ASSERT_EQ(Get(Key(k)), v) << rid;
1461
1461
  }
1462
1462
  }
@@ -2405,7 +2405,7 @@ TEST_P(ExternalSSTBlockChecksumTest, DISABLED_HugeBlockChecksum) {
2405
2405
  SstFileWriter sst_file_writer(EnvOptions(), options);
2406
2406
 
2407
2407
  // 2^32 - 1, will lead to data block with more than 2^32 bytes
2408
- size_t huge_size = port::kMaxUint32;
2408
+ size_t huge_size = std::numeric_limits<uint32_t>::max();
2409
2409
 
2410
2410
  std::string f = sst_files_dir_ + "f.sst";
2411
2411
  ASSERT_OK(sst_file_writer.Open(f));
@@ -58,10 +58,7 @@ class FileIndexer {
58
58
  void UpdateIndex(Arena* arena, const size_t num_levels,
59
59
  std::vector<FileMetaData*>* const files);
60
60
 
61
- enum {
62
- // MSVC version 1800 still does not have constexpr for ::max()
63
- kLevelMaxIndex = ROCKSDB_NAMESPACE::port::kMaxInt32
64
- };
61
+ enum { kLevelMaxIndex = std::numeric_limits<int32_t>::max() };
65
62
 
66
63
  private:
67
64
  size_t num_levels_;
@@ -9,9 +9,8 @@
9
9
 
10
10
  #include "db/flush_job.h"
11
11
 
12
- #include <cinttypes>
13
-
14
12
  #include <algorithm>
13
+ #include <cinttypes>
15
14
  #include <vector>
16
15
 
17
16
  #include "db/builder.h"
@@ -464,6 +463,7 @@ Status FlushJob::MemPurge() {
464
463
  env, ShouldReportDetailedTime(env, ioptions->stats),
465
464
  true /* internal key corruption is not ok */, range_del_agg.get(),
466
465
  nullptr, ioptions->allow_data_in_errors,
466
+ ioptions->enforce_single_del_contracts,
467
467
  /*compaction=*/nullptr, compaction_filter.get(),
468
468
  /*shutting_down=*/nullptr,
469
469
  /*manual_compaction_paused=*/nullptr,
@@ -809,6 +809,7 @@ Status FlushJob::WriteLevel0Table() {
809
809
 
810
810
  {
811
811
  auto write_hint = cfd_->CalculateSSTWriteHint(0);
812
+ Env::IOPriority io_priority = GetRateLimiterPriorityForWrite();
812
813
  db_mutex_->Unlock();
813
814
  if (log_buffer_) {
814
815
  log_buffer_->FlushBufferToLog();
@@ -924,16 +925,16 @@ Status FlushJob::WriteLevel0Table() {
924
925
  snapshot_checker_, mutable_cf_options_.paranoid_file_checks,
925
926
  cfd_->internal_stats(), &io_s, io_tracer_,
926
927
  BlobFileCreationReason::kFlush, event_logger_, job_context_->job_id,
927
- Env::IO_HIGH, &table_properties_, write_hint, full_history_ts_low,
928
+ io_priority, &table_properties_, write_hint, full_history_ts_low,
928
929
  blob_callback_, &num_input_entries, &memtable_payload_bytes,
929
930
  &memtable_garbage_bytes);
930
931
  // TODO: Cleanup io_status in BuildTable and table builders
931
932
  assert(!s.ok() || io_s.ok());
932
933
  io_s.PermitUncheckedError();
933
934
  if (num_input_entries != total_num_entries && s.ok()) {
934
- std::string msg = "Expected " + ToString(total_num_entries) +
935
+ std::string msg = "Expected " + std::to_string(total_num_entries) +
935
936
  " entries in memtables, but read " +
936
- ToString(num_input_entries);
937
+ std::to_string(num_input_entries);
937
938
  ROCKS_LOG_WARN(db_options_.info_log, "[%s] [JOB %d] Level-0 flush %s",
938
939
  cfd_->GetName().c_str(), job_context_->job_id,
939
940
  msg.c_str());
@@ -950,14 +951,14 @@ Status FlushJob::WriteLevel0Table() {
950
951
  }
951
952
  LogFlush(db_options_.info_log);
952
953
  }
953
- ROCKS_LOG_INFO(db_options_.info_log,
954
- "[%s] [JOB %d] Level-0 flush table #%" PRIu64 ": %" PRIu64
955
- " bytes %s"
956
- "%s",
957
- cfd_->GetName().c_str(), job_context_->job_id,
958
- meta_.fd.GetNumber(), meta_.fd.GetFileSize(),
959
- s.ToString().c_str(),
960
- meta_.marked_for_compaction ? " (needs compaction)" : "");
954
+ ROCKS_LOG_BUFFER(log_buffer_,
955
+ "[%s] [JOB %d] Level-0 flush table #%" PRIu64 ": %" PRIu64
956
+ " bytes %s"
957
+ "%s",
958
+ cfd_->GetName().c_str(), job_context_->job_id,
959
+ meta_.fd.GetNumber(), meta_.fd.GetFileSize(),
960
+ s.ToString().c_str(),
961
+ meta_.marked_for_compaction ? " (needs compaction)" : "");
961
962
 
962
963
  if (s.ok() && output_file_directory_ != nullptr && sync_output_directory_) {
963
964
  s = output_file_directory_->FsyncWithDirOptions(
@@ -987,7 +988,7 @@ Status FlushJob::WriteLevel0Table() {
987
988
  meta_.oldest_blob_file_number, meta_.oldest_ancester_time,
988
989
  meta_.file_creation_time, meta_.file_checksum,
989
990
  meta_.file_checksum_func_name, meta_.min_timestamp,
990
- meta_.max_timestamp);
991
+ meta_.max_timestamp, meta_.unique_id);
991
992
 
992
993
  edit_->SetBlobFileAdditions(std::move(blob_file_additions));
993
994
  }
@@ -1031,6 +1032,19 @@ Status FlushJob::WriteLevel0Table() {
1031
1032
  return s;
1032
1033
  }
1033
1034
 
1035
+ Env::IOPriority FlushJob::GetRateLimiterPriorityForWrite() {
1036
+ if (versions_ && versions_->GetColumnFamilySet() &&
1037
+ versions_->GetColumnFamilySet()->write_controller()) {
1038
+ WriteController* write_controller =
1039
+ versions_->GetColumnFamilySet()->write_controller();
1040
+ if (write_controller->IsStopped() || write_controller->NeedsDelay()) {
1041
+ return Env::IO_USER;
1042
+ }
1043
+ }
1044
+
1045
+ return Env::IO_HIGH;
1046
+ }
1047
+
1034
1048
  #ifndef ROCKSDB_LITE
1035
1049
  std::unique_ptr<FlushJobInfo> FlushJob::GetFlushJobInfo() const {
1036
1050
  db_mutex_->AssertHeld();
@@ -1063,7 +1077,6 @@ std::unique_ptr<FlushJobInfo> FlushJob::GetFlushJobInfo() const {
1063
1077
  }
1064
1078
  return info;
1065
1079
  }
1066
-
1067
1080
  #endif // !ROCKSDB_LITE
1068
1081
 
1069
1082
  } // namespace ROCKSDB_NAMESPACE
@@ -94,6 +94,8 @@ class FlushJob {
94
94
  #endif // !ROCKSDB_LITE
95
95
 
96
96
  private:
97
+ friend class FlushJobTest_GetRateLimiterPriorityForWrite_Test;
98
+
97
99
  void ReportStartedFlush();
98
100
  void ReportFlushInputSize(const autovector<MemTable*>& mems);
99
101
  void RecordFlushIOStats();
@@ -121,6 +123,8 @@ class FlushJob {
121
123
  // process has not matured yet.
122
124
  Status MemPurge();
123
125
  bool MemPurgeDecider();
126
+ // The rate limiter priority (io_priority) is determined dynamically here.
127
+ Env::IOPriority GetRateLimiterPriorityForWrite();
124
128
  #ifndef ROCKSDB_LITE
125
129
  std::unique_ptr<FlushJobInfo> GetFlushJobInfo() const;
126
130
  #endif // !ROCKSDB_LITE
@@ -164,12 +164,12 @@ TEST_F(FlushJobTest, Empty) {
164
164
  SnapshotChecker* snapshot_checker = nullptr; // not relavant
165
165
  FlushJob flush_job(
166
166
  dbname_, versions_->GetColumnFamilySet()->GetDefault(), db_options_,
167
- *cfd->GetLatestMutableCFOptions(), port::kMaxUint64 /* memtable_id */,
168
- env_options_, versions_.get(), &mutex_, &shutting_down_, {},
169
- kMaxSequenceNumber, snapshot_checker, &job_context, nullptr, nullptr,
170
- nullptr, kNoCompression, nullptr, &event_logger, false,
171
- true /* sync_output_directory */, true /* write_manifest */,
172
- Env::Priority::USER, nullptr /*IOTracer*/);
167
+ *cfd->GetLatestMutableCFOptions(),
168
+ std::numeric_limits<uint64_t>::max() /* memtable_id */, env_options_,
169
+ versions_.get(), &mutex_, &shutting_down_, {}, kMaxSequenceNumber,
170
+ snapshot_checker, &job_context, nullptr, nullptr, nullptr, kNoCompression,
171
+ nullptr, &event_logger, false, true /* sync_output_directory */,
172
+ true /* write_manifest */, Env::Priority::USER, nullptr /*IOTracer*/);
173
173
  {
174
174
  InstrumentedMutexLock l(&mutex_);
175
175
  flush_job.PickMemTable();
@@ -191,7 +191,7 @@ TEST_F(FlushJobTest, NonEmpty) {
191
191
  // range-delete "9995" -> "9999" at seqno 10000
192
192
  // blob references with seqnos 10001..10006
193
193
  for (int i = 1; i < 10000; ++i) {
194
- std::string key(ToString((i + 1000) % 10000));
194
+ std::string key(std::to_string((i + 1000) % 10000));
195
195
  std::string value("value" + key);
196
196
  ASSERT_OK(new_mem->Add(SequenceNumber(i), kTypeValue, key, value,
197
197
  nullptr /* kv_prot_info */));
@@ -214,7 +214,7 @@ TEST_F(FlushJobTest, NonEmpty) {
214
214
  constexpr std::array<uint64_t, 6> blob_file_numbers{{
215
215
  kInvalidBlobFileNumber, 5, 103, 17, 102, 101}};
216
216
  for (size_t i = 0; i < blob_file_numbers.size(); ++i) {
217
- std::string key(ToString(i + 10001));
217
+ std::string key(std::to_string(i + 10001));
218
218
  std::string blob_index;
219
219
  if (i == 0) {
220
220
  BlobIndex::EncodeInlinedTTL(&blob_index, /* expiration */ 1234567890ULL,
@@ -248,11 +248,12 @@ TEST_F(FlushJobTest, NonEmpty) {
248
248
  SnapshotChecker* snapshot_checker = nullptr; // not relavant
249
249
  FlushJob flush_job(
250
250
  dbname_, versions_->GetColumnFamilySet()->GetDefault(), db_options_,
251
- *cfd->GetLatestMutableCFOptions(), port::kMaxUint64 /* memtable_id */,
252
- env_options_, versions_.get(), &mutex_, &shutting_down_, {},
253
- kMaxSequenceNumber, snapshot_checker, &job_context, nullptr, nullptr,
254
- nullptr, kNoCompression, db_options_.statistics.get(), &event_logger,
255
- true, true /* sync_output_directory */, true /* write_manifest */,
251
+ *cfd->GetLatestMutableCFOptions(),
252
+ std::numeric_limits<uint64_t>::max() /* memtable_id */, env_options_,
253
+ versions_.get(), &mutex_, &shutting_down_, {}, kMaxSequenceNumber,
254
+ snapshot_checker, &job_context, nullptr, nullptr, nullptr, kNoCompression,
255
+ db_options_.statistics.get(), &event_logger, true,
256
+ true /* sync_output_directory */, true /* write_manifest */,
256
257
  Env::Priority::USER, nullptr /*IOTracer*/);
257
258
 
258
259
  HistogramData hist;
@@ -264,7 +265,7 @@ TEST_F(FlushJobTest, NonEmpty) {
264
265
  db_options_.statistics->histogramData(FLUSH_TIME, &hist);
265
266
  ASSERT_GT(hist.average, 0.0);
266
267
 
267
- ASSERT_EQ(ToString(0), file_meta.smallest.user_key().ToString());
268
+ ASSERT_EQ(std::to_string(0), file_meta.smallest.user_key().ToString());
268
269
  ASSERT_EQ("9999a", file_meta.largest.user_key().ToString());
269
270
  ASSERT_EQ(1, file_meta.fd.smallest_seqno);
270
271
  ASSERT_EQ(10006, file_meta.fd.largest_seqno);
@@ -290,7 +291,7 @@ TEST_F(FlushJobTest, FlushMemTablesSingleColumnFamily) {
290
291
  memtable_ids.push_back(mem->GetID());
291
292
 
292
293
  for (size_t j = 0; j < num_keys_per_table; ++j) {
293
- std::string key(ToString(j + i * num_keys_per_table));
294
+ std::string key(std::to_string(j + i * num_keys_per_table));
294
295
  std::string value("value" + key);
295
296
  ASSERT_OK(mem->Add(SequenceNumber(j + i * num_keys_per_table), kTypeValue,
296
297
  key, value, nullptr /* kv_prot_info */));
@@ -325,7 +326,7 @@ TEST_F(FlushJobTest, FlushMemTablesSingleColumnFamily) {
325
326
  db_options_.statistics->histogramData(FLUSH_TIME, &hist);
326
327
  ASSERT_GT(hist.average, 0.0);
327
328
 
328
- ASSERT_EQ(ToString(0), file_meta.smallest.user_key().ToString());
329
+ ASSERT_EQ(std::to_string(0), file_meta.smallest.user_key().ToString());
329
330
  ASSERT_EQ("99", file_meta.largest.user_key().ToString());
330
331
  ASSERT_EQ(0, file_meta.fd.smallest_seqno);
331
332
  ASSERT_EQ(SequenceNumber(num_mems_to_flush * num_keys_per_table - 1),
@@ -363,7 +364,7 @@ TEST_F(FlushJobTest, FlushMemtablesMultipleColumnFamilies) {
363
364
  mem->Ref();
364
365
 
365
366
  for (size_t j = 0; j != num_keys_per_memtable; ++j) {
366
- std::string key(ToString(j + i * num_keys_per_memtable));
367
+ std::string key(std::to_string(j + i * num_keys_per_memtable));
367
368
  std::string value("value" + key);
368
369
  ASSERT_OK(mem->Add(curr_seqno++, kTypeValue, key, value,
369
370
  nullptr /* kv_prot_info */));
@@ -438,7 +439,7 @@ TEST_F(FlushJobTest, FlushMemtablesMultipleColumnFamilies) {
438
439
  ASSERT_GT(hist.average, 0.0);
439
440
  k = 0;
440
441
  for (const auto& file_meta : file_metas) {
441
- ASSERT_EQ(ToString(0), file_meta.smallest.user_key().ToString());
442
+ ASSERT_EQ(std::to_string(0), file_meta.smallest.user_key().ToString());
442
443
  ASSERT_EQ("999", file_meta.largest.user_key()
443
444
  .ToString()); // max key by bytewise comparator
444
445
  ASSERT_EQ(smallest_seqs[k], file_meta.fd.smallest_seqno);
@@ -479,7 +480,7 @@ TEST_F(FlushJobTest, Snapshots) {
479
480
  SequenceNumber current_seqno = 0;
480
481
  auto inserted_keys = mock::MakeMockFile();
481
482
  for (int i = 1; i < keys; ++i) {
482
- std::string key(ToString(i));
483
+ std::string key(std::to_string(i));
483
484
  int insertions = rnd.Uniform(max_inserts_per_keys);
484
485
  for (int j = 0; j < insertions; ++j) {
485
486
  std::string value(rnd.HumanReadableString(10));
@@ -509,11 +510,12 @@ TEST_F(FlushJobTest, Snapshots) {
509
510
  SnapshotChecker* snapshot_checker = nullptr; // not relavant
510
511
  FlushJob flush_job(
511
512
  dbname_, versions_->GetColumnFamilySet()->GetDefault(), db_options_,
512
- *cfd->GetLatestMutableCFOptions(), port::kMaxUint64 /* memtable_id */,
513
- env_options_, versions_.get(), &mutex_, &shutting_down_, snapshots,
514
- kMaxSequenceNumber, snapshot_checker, &job_context, nullptr, nullptr,
515
- nullptr, kNoCompression, db_options_.statistics.get(), &event_logger,
516
- true, true /* sync_output_directory */, true /* write_manifest */,
513
+ *cfd->GetLatestMutableCFOptions(),
514
+ std::numeric_limits<uint64_t>::max() /* memtable_id */, env_options_,
515
+ versions_.get(), &mutex_, &shutting_down_, snapshots, kMaxSequenceNumber,
516
+ snapshot_checker, &job_context, nullptr, nullptr, nullptr, kNoCompression,
517
+ db_options_.statistics.get(), &event_logger, true,
518
+ true /* sync_output_directory */, true /* write_manifest */,
517
519
  Env::Priority::USER, nullptr /*IOTracer*/);
518
520
  mutex_.Lock();
519
521
  flush_job.PickMemTable();
@@ -526,6 +528,72 @@ TEST_F(FlushJobTest, Snapshots) {
526
528
  job_context.Clean();
527
529
  }
528
530
 
531
+ TEST_F(FlushJobTest, GetRateLimiterPriorityForWrite) {
532
+ // Prepare a FlushJob that flush MemTables of Single Column Family.
533
+ const size_t num_mems = 2;
534
+ const size_t num_mems_to_flush = 1;
535
+ const size_t num_keys_per_table = 100;
536
+ JobContext job_context(0);
537
+ ColumnFamilyData* cfd = versions_->GetColumnFamilySet()->GetDefault();
538
+ std::vector<uint64_t> memtable_ids;
539
+ std::vector<MemTable*> new_mems;
540
+ for (size_t i = 0; i != num_mems; ++i) {
541
+ MemTable* mem = cfd->ConstructNewMemtable(*cfd->GetLatestMutableCFOptions(),
542
+ kMaxSequenceNumber);
543
+ mem->SetID(i);
544
+ mem->Ref();
545
+ new_mems.emplace_back(mem);
546
+ memtable_ids.push_back(mem->GetID());
547
+
548
+ for (size_t j = 0; j < num_keys_per_table; ++j) {
549
+ std::string key(std::to_string(j + i * num_keys_per_table));
550
+ std::string value("value" + key);
551
+ ASSERT_OK(mem->Add(SequenceNumber(j + i * num_keys_per_table), kTypeValue,
552
+ key, value, nullptr /* kv_prot_info */));
553
+ }
554
+ }
555
+
556
+ autovector<MemTable*> to_delete;
557
+ for (auto mem : new_mems) {
558
+ cfd->imm()->Add(mem, &to_delete);
559
+ }
560
+
561
+ EventLogger event_logger(db_options_.info_log.get());
562
+ SnapshotChecker* snapshot_checker = nullptr; // not relavant
563
+
564
+ assert(memtable_ids.size() == num_mems);
565
+ uint64_t smallest_memtable_id = memtable_ids.front();
566
+ uint64_t flush_memtable_id = smallest_memtable_id + num_mems_to_flush - 1;
567
+ FlushJob flush_job(
568
+ dbname_, versions_->GetColumnFamilySet()->GetDefault(), db_options_,
569
+ *cfd->GetLatestMutableCFOptions(), flush_memtable_id, env_options_,
570
+ versions_.get(), &mutex_, &shutting_down_, {}, kMaxSequenceNumber,
571
+ snapshot_checker, &job_context, nullptr, nullptr, nullptr, kNoCompression,
572
+ db_options_.statistics.get(), &event_logger, true,
573
+ true /* sync_output_directory */, true /* write_manifest */,
574
+ Env::Priority::USER, nullptr /*IOTracer*/);
575
+
576
+ // When the state from WriteController is normal.
577
+ ASSERT_EQ(flush_job.GetRateLimiterPriorityForWrite(), Env::IO_HIGH);
578
+
579
+ WriteController* write_controller =
580
+ flush_job.versions_->GetColumnFamilySet()->write_controller();
581
+
582
+ {
583
+ // When the state from WriteController is Delayed.
584
+ std::unique_ptr<WriteControllerToken> delay_token =
585
+ write_controller->GetDelayToken(1000000);
586
+ ASSERT_EQ(flush_job.GetRateLimiterPriorityForWrite(), Env::IO_USER);
587
+ }
588
+
589
+ {
590
+ // When the state from WriteController is Stopped.
591
+ std::unique_ptr<WriteControllerToken> stop_token =
592
+ write_controller->GetStopToken();
593
+ ASSERT_EQ(flush_job.GetRateLimiterPriorityForWrite(), Env::IO_USER);
594
+ }
595
+ }
596
+
529
597
  class FlushJobTimestampTest : public FlushJobTestBase {
530
598
  public:
531
599
  FlushJobTimestampTest()
@@ -577,9 +645,9 @@ TEST_F(FlushJobTimestampTest, AllKeysExpired) {
577
645
  PutFixed64(&full_history_ts_low, std::numeric_limits<uint64_t>::max());
578
646
  FlushJob flush_job(
579
647
  dbname_, cfd, db_options_, *cfd->GetLatestMutableCFOptions(),
580
- port::kMaxUint64 /* memtable_id */, env_options_, versions_.get(),
581
- &mutex_, &shutting_down_, snapshots, kMaxSequenceNumber, snapshot_checker,
582
- &job_context, nullptr, nullptr, nullptr, kNoCompression,
648
+ std::numeric_limits<uint64_t>::max() /* memtable_id */, env_options_,
649
+ versions_.get(), &mutex_, &shutting_down_, snapshots, kMaxSequenceNumber,
650
+ snapshot_checker, &job_context, nullptr, nullptr, nullptr, kNoCompression,
583
651
  db_options_.statistics.get(), &event_logger, true,
584
652
  true /* sync_output_directory */, true /* write_manifest */,
585
653
  Env::Priority::USER, nullptr /*IOTracer*/, /*db_id=*/"",
@@ -628,9 +696,9 @@ TEST_F(FlushJobTimestampTest, NoKeyExpired) {
628
696
  PutFixed64(&full_history_ts_low, 0);
629
697
  FlushJob flush_job(
630
698
  dbname_, cfd, db_options_, *cfd->GetLatestMutableCFOptions(),
631
- port::kMaxUint64 /* memtable_id */, env_options_, versions_.get(),
632
- &mutex_, &shutting_down_, snapshots, kMaxSequenceNumber, snapshot_checker,
633
- &job_context, nullptr, nullptr, nullptr, kNoCompression,
699
+ std::numeric_limits<uint64_t>::max() /* memtable_id */, env_options_,
700
+ versions_.get(), &mutex_, &shutting_down_, snapshots, kMaxSequenceNumber,
701
+ snapshot_checker, &job_context, nullptr, nullptr, nullptr, kNoCompression,
634
702
  db_options_.statistics.get(), &event_logger, true,
635
703
  true /* sync_output_directory */, true /* write_manifest */,
636
704
  Env::Priority::USER, nullptr /*IOTracer*/, /*db_id=*/"",
@@ -604,7 +604,7 @@ bool ForwardIterator::PrepareValue() {
604
604
  Status ForwardIterator::GetProperty(std::string prop_name, std::string* prop) {
605
605
  assert(prop != nullptr);
606
606
  if (prop_name == "rocksdb.iterator.super-version-number") {
607
- *prop = ToString(sv_->version_number);
607
+ *prop = std::to_string(sv_->version_number);
608
608
  return Status::OK();
609
609
  }
610
610
  return Status::InvalidArgument();