@nxtedition/rocksdb 6.0.0-alpha.0 → 6.0.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 (311) hide show
  1. package/BUILDING.md +10 -0
  2. package/binding.cc +14 -17
  3. package/binding.gyp +2 -2
  4. package/deps/rocksdb/build_version.cc +4 -10
  5. package/deps/rocksdb/rocksdb/CMakeLists.txt +17 -3
  6. package/deps/rocksdb/rocksdb/Makefile +57 -86
  7. package/deps/rocksdb/rocksdb/TARGETS +4 -0
  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/common.mk +30 -0
  14. package/deps/rocksdb/rocksdb/crash_test.mk +3 -3
  15. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +1 -1
  16. package/deps/rocksdb/rocksdb/db/blob/blob_index.h +3 -3
  17. package/deps/rocksdb/rocksdb/db/blob/db_blob_index_test.cc +7 -7
  18. package/deps/rocksdb/rocksdb/db/builder.cc +11 -4
  19. package/deps/rocksdb/rocksdb/db/c.cc +45 -0
  20. package/deps/rocksdb/rocksdb/db/c_test.c +25 -2
  21. package/deps/rocksdb/rocksdb/db/column_family.cc +4 -3
  22. package/deps/rocksdb/rocksdb/db/column_family_test.cc +23 -22
  23. package/deps/rocksdb/rocksdb/db/compact_files_test.cc +11 -11
  24. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +2 -2
  25. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +36 -10
  26. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +4 -1
  27. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +3 -2
  28. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +25 -10
  29. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +6 -0
  30. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +3 -3
  31. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +69 -14
  32. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +7 -7
  33. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +1 -1
  34. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +21 -21
  35. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +1 -1
  36. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +135 -32
  37. package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +1 -1
  38. package/deps/rocksdb/rocksdb/db/convenience.cc +8 -6
  39. package/deps/rocksdb/rocksdb/db/corruption_test.cc +209 -38
  40. package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +2 -2
  41. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +2 -2
  42. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +28 -25
  43. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +85 -138
  44. package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +68 -3
  45. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +38 -13
  46. package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +1 -1
  47. package/deps/rocksdb/rocksdb/db/db_flush_test.cc +1 -1
  48. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +9 -8
  49. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +1 -1
  50. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +5 -4
  51. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +5 -4
  52. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +2 -2
  53. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +9 -3
  54. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +6 -3
  55. package/deps/rocksdb/rocksdb/db/db_info_dumper.cc +26 -18
  56. package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +8 -7
  57. package/deps/rocksdb/rocksdb/db/db_iter_test.cc +8 -8
  58. package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +6 -3
  59. package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +2 -2
  60. package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +6 -6
  61. package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +2 -2
  62. package/deps/rocksdb/rocksdb/db/db_options_test.cc +12 -12
  63. package/deps/rocksdb/rocksdb/db/db_properties_test.cc +16 -15
  64. package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +6 -4
  65. package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +15 -14
  66. package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +6 -6
  67. package/deps/rocksdb/rocksdb/db/db_sst_test.cc +68 -7
  68. package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +6 -5
  69. package/deps/rocksdb/rocksdb/db/db_test.cc +44 -42
  70. package/deps/rocksdb/rocksdb/db/db_test2.cc +23 -19
  71. package/deps/rocksdb/rocksdb/db/db_test_util.cc +95 -17
  72. package/deps/rocksdb/rocksdb/db/db_test_util.h +48 -0
  73. package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +1 -1
  74. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +7 -7
  75. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +4 -4
  76. package/deps/rocksdb/rocksdb/db/db_write_test.cc +6 -6
  77. package/deps/rocksdb/rocksdb/db/dbformat.h +2 -1
  78. package/deps/rocksdb/rocksdb/db/deletefile_test.cc +1 -1
  79. package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +8 -8
  80. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +34 -12
  81. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +3 -0
  82. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +7 -7
  83. package/deps/rocksdb/rocksdb/db/file_indexer.h +1 -4
  84. package/deps/rocksdb/rocksdb/db/flush_job.cc +18 -4
  85. package/deps/rocksdb/rocksdb/db/flush_job.h +4 -0
  86. package/deps/rocksdb/rocksdb/db/flush_job_test.cc +98 -30
  87. package/deps/rocksdb/rocksdb/db/forward_iterator.cc +1 -1
  88. package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +3 -0
  89. package/deps/rocksdb/rocksdb/db/internal_stats.cc +12 -12
  90. package/deps/rocksdb/rocksdb/db/listener_test.cc +4 -3
  91. package/deps/rocksdb/rocksdb/db/memtable.cc +2 -2
  92. package/deps/rocksdb/rocksdb/db/memtable_list.h +1 -1
  93. package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +37 -25
  94. package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +1 -1
  95. package/deps/rocksdb/rocksdb/db/perf_context_test.cc +18 -18
  96. package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +6 -6
  97. package/deps/rocksdb/rocksdb/db/prefix_test.cc +1 -1
  98. package/deps/rocksdb/rocksdb/db/repair.cc +1 -1
  99. package/deps/rocksdb/rocksdb/db/repair_test.cc +5 -5
  100. package/deps/rocksdb/rocksdb/db/snapshot_checker.h +1 -2
  101. package/deps/rocksdb/rocksdb/db/table_cache.cc +2 -4
  102. package/deps/rocksdb/rocksdb/db/version_builder.cc +1 -1
  103. package/deps/rocksdb/rocksdb/db/version_builder_test.cc +3 -5
  104. package/deps/rocksdb/rocksdb/db/version_edit.cc +2 -2
  105. package/deps/rocksdb/rocksdb/db/version_set.cc +2 -2
  106. package/deps/rocksdb/rocksdb/db/version_set.h +3 -3
  107. package/deps/rocksdb/rocksdb/db/wal_edit.h +2 -1
  108. package/deps/rocksdb/rocksdb/db/wal_manager.cc +2 -3
  109. package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +1 -1
  110. package/deps/rocksdb/rocksdb/db/write_batch.cc +178 -30
  111. package/deps/rocksdb/rocksdb/db/write_batch_test.cc +6 -6
  112. package/deps/rocksdb/rocksdb/db/write_controller.h +1 -1
  113. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +0 -2
  114. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +7 -6
  115. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compaction_filter.h +2 -1
  116. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +4 -3
  117. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +31 -6
  118. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.cc +4 -1
  119. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.cc +0 -10
  120. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +45 -42
  121. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +359 -275
  122. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +53 -3
  123. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +0 -12
  124. package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +13 -11
  125. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +276 -109
  126. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.h +63 -0
  127. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +45 -54
  128. package/deps/rocksdb/rocksdb/env/composite_env.cc +87 -14
  129. package/deps/rocksdb/rocksdb/env/env.cc +0 -60
  130. package/deps/rocksdb/rocksdb/env/env_encryption.cc +9 -0
  131. package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +1 -1
  132. package/deps/rocksdb/rocksdb/env/env_posix.cc +6 -5
  133. package/deps/rocksdb/rocksdb/env/env_test.cc +18 -5
  134. package/deps/rocksdb/rocksdb/env/fs_posix.cc +17 -12
  135. package/deps/rocksdb/rocksdb/env/io_posix.cc +39 -37
  136. package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +9 -9
  137. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +1 -1
  138. package/deps/rocksdb/rocksdb/file/file_util.h +2 -0
  139. package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +5 -2
  140. package/deps/rocksdb/rocksdb/file/sequence_file_reader.cc +7 -0
  141. package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +69 -45
  142. package/deps/rocksdb/rocksdb/file/writable_file_writer.h +3 -1
  143. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +35 -0
  144. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +5 -5
  145. package/deps/rocksdb/rocksdb/include/rocksdb/cleanable.h +59 -2
  146. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +1 -0
  147. package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +2 -1
  148. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +46 -44
  149. package/deps/rocksdb/rocksdb/include/rocksdb/env.h +1 -1
  150. package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +2 -4
  151. package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +3 -0
  152. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +28 -3
  153. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +91 -40
  154. package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +1 -2
  155. package/deps/rocksdb/rocksdb/include/rocksdb/unique_id.h +22 -13
  156. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/customizable_util.h +9 -0
  157. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +4 -0
  158. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/object_registry.h +25 -0
  159. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +189 -103
  160. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +14 -0
  161. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
  162. package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +18 -4
  163. package/deps/rocksdb/rocksdb/memory/arena.h +1 -1
  164. package/deps/rocksdb/rocksdb/memory/concurrent_arena.cc +1 -5
  165. package/deps/rocksdb/rocksdb/memory/concurrent_arena.h +1 -5
  166. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +6 -8
  167. package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +1 -1
  168. package/deps/rocksdb/rocksdb/memtable/write_buffer_manager.cc +1 -1
  169. package/deps/rocksdb/rocksdb/memtable/write_buffer_manager_test.cc +5 -3
  170. package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +266 -45
  171. package/deps/rocksdb/rocksdb/monitoring/histogram.cc +2 -1
  172. package/deps/rocksdb/rocksdb/monitoring/iostats_context.cc +1 -4
  173. package/deps/rocksdb/rocksdb/monitoring/iostats_context_imp.h +4 -4
  174. package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +2 -8
  175. package/deps/rocksdb/rocksdb/monitoring/perf_context_imp.h +2 -2
  176. package/deps/rocksdb/rocksdb/monitoring/perf_level.cc +1 -5
  177. package/deps/rocksdb/rocksdb/monitoring/perf_level_imp.h +1 -5
  178. package/deps/rocksdb/rocksdb/monitoring/persistent_stats_history.cc +2 -2
  179. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.cc +2 -1
  180. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.h +1 -1
  181. package/deps/rocksdb/rocksdb/monitoring/thread_status_util.cc +3 -3
  182. package/deps/rocksdb/rocksdb/monitoring/thread_status_util.h +2 -2
  183. package/deps/rocksdb/rocksdb/options/cf_options.cc +34 -38
  184. package/deps/rocksdb/rocksdb/options/configurable.cc +9 -27
  185. package/deps/rocksdb/rocksdb/options/configurable_test.cc +1 -1
  186. package/deps/rocksdb/rocksdb/options/customizable.cc +3 -1
  187. package/deps/rocksdb/rocksdb/options/customizable_test.cc +379 -318
  188. package/deps/rocksdb/rocksdb/options/db_options.cc +38 -17
  189. package/deps/rocksdb/rocksdb/options/db_options.h +1 -0
  190. package/deps/rocksdb/rocksdb/options/options_helper.cc +82 -39
  191. package/deps/rocksdb/rocksdb/options/options_parser.cc +10 -10
  192. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +6 -3
  193. package/deps/rocksdb/rocksdb/options/options_test.cc +115 -59
  194. package/deps/rocksdb/rocksdb/port/port_posix.h +0 -15
  195. package/deps/rocksdb/rocksdb/port/win/env_win.cc +5 -4
  196. package/deps/rocksdb/rocksdb/port/win/env_win.h +2 -2
  197. package/deps/rocksdb/rocksdb/port/win/port_win.h +0 -31
  198. package/deps/rocksdb/rocksdb/rocksdb.pc.in +11 -0
  199. package/deps/rocksdb/rocksdb/src.mk +2 -0
  200. package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +2 -1
  201. package/deps/rocksdb/rocksdb/table/block_based/block.cc +4 -2
  202. package/deps/rocksdb/rocksdb/table/block_based/block.h +21 -25
  203. package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.cc +3 -4
  204. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +14 -4
  205. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +52 -15
  206. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +1 -1
  207. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +85 -41
  208. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +42 -72
  209. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +7 -5
  210. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +2 -1
  211. package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +1 -1
  212. package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +33 -17
  213. package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +2 -1
  214. package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +2 -2
  215. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +2 -1
  216. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +2 -1
  217. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +2 -1
  218. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +6 -3
  219. package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +4 -4
  220. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +5 -5
  221. package/deps/rocksdb/rocksdb/table/cleanable_test.cc +113 -0
  222. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +1 -1
  223. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.h +1 -1
  224. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +1 -1
  225. package/deps/rocksdb/rocksdb/table/format.cc +22 -20
  226. package/deps/rocksdb/rocksdb/table/iterator.cc +1 -81
  227. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +2 -2
  228. package/deps/rocksdb/rocksdb/table/multiget_context.h +14 -11
  229. package/deps/rocksdb/rocksdb/table/persistent_cache_options.h +0 -3
  230. package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.cc +12 -1
  231. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +4 -4
  232. package/deps/rocksdb/rocksdb/table/sst_file_writer_collectors.h +1 -1
  233. package/deps/rocksdb/rocksdb/table/table_properties.cc +3 -5
  234. package/deps/rocksdb/rocksdb/table/table_test.cc +202 -78
  235. package/deps/rocksdb/rocksdb/table/unique_id.cc +57 -25
  236. package/deps/rocksdb/rocksdb/table/unique_id_impl.h +34 -4
  237. package/deps/rocksdb/rocksdb/test_util/testutil.cc +1 -1
  238. package/deps/rocksdb/rocksdb/test_util/testutil.h +11 -8
  239. package/deps/rocksdb/rocksdb/test_util/transaction_test_util.cc +8 -4
  240. package/deps/rocksdb/rocksdb/test_util/transaction_test_util.h +17 -0
  241. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.cc +11 -9
  242. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +3 -3
  243. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +254 -98
  244. package/deps/rocksdb/rocksdb/tools/db_sanity_test.cc +4 -4
  245. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +186 -42
  246. package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +75 -49
  247. package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +9 -8
  248. package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +4 -1
  249. package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +2 -2
  250. package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +17 -3
  251. package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +1 -1
  252. package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.h +1 -1
  253. package/deps/rocksdb/rocksdb/util/autovector_test.cc +4 -4
  254. package/deps/rocksdb/rocksdb/util/bloom_test.cc +14 -8
  255. package/deps/rocksdb/rocksdb/util/build_version.cc.in +5 -6
  256. package/deps/rocksdb/rocksdb/util/cleanable.cc +180 -0
  257. package/deps/rocksdb/rocksdb/util/comparator.cc +5 -3
  258. package/deps/rocksdb/rocksdb/util/compression.h +7 -7
  259. package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +148 -0
  260. package/deps/rocksdb/rocksdb/util/filelock_test.cc +2 -2
  261. package/deps/rocksdb/rocksdb/util/filter_bench.cc +12 -4
  262. package/deps/rocksdb/rocksdb/util/heap.h +5 -3
  263. package/deps/rocksdb/rocksdb/util/random.cc +1 -5
  264. package/deps/rocksdb/rocksdb/util/rate_limiter.cc +12 -9
  265. package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +1 -1
  266. package/deps/rocksdb/rocksdb/util/ribbon_alg.h +1 -1
  267. package/deps/rocksdb/rocksdb/util/ribbon_test.cc +2 -4
  268. package/deps/rocksdb/rocksdb/util/slice.cc +8 -9
  269. package/deps/rocksdb/rocksdb/util/string_util.cc +3 -2
  270. package/deps/rocksdb/rocksdb/util/string_util.h +0 -13
  271. package/deps/rocksdb/rocksdb/util/thread_local.cc +4 -23
  272. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +99 -22
  273. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_impl.h +7 -0
  274. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +102 -59
  275. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +38 -36
  276. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +2 -2
  277. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +28 -0
  278. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +3 -0
  279. package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +1 -1
  280. package/deps/rocksdb/rocksdb/utilities/object_registry.cc +71 -0
  281. package/deps/rocksdb/rocksdb/utilities/object_registry_test.cc +71 -0
  282. package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +1 -1
  283. package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache_test.cc +5 -5
  284. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.cc +3 -3
  285. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_tracker.cc +0 -13
  286. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +40 -0
  287. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.cc +10 -8
  288. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.h +4 -2
  289. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +17 -0
  290. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc +7 -7
  291. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +8 -1
  292. package/deps/rocksdb/rocksdb/utilities/transactions/snapshot_checker.cc +5 -1
  293. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +21 -15
  294. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.cc +2 -2
  295. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +69 -11
  296. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +22 -9
  297. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +26 -5
  298. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.h +17 -4
  299. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +19 -16
  300. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +7 -3
  301. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +3 -2
  302. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +2 -2
  303. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +2 -2
  304. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +6 -6
  305. package/deps/rocksdb/rocksdb.gyp +40 -31
  306. package/package.json +2 -2
  307. package/prebuilds/darwin-arm64/node.napi.node +0 -0
  308. package/prebuilds/linux-x64/node.napi.node +0 -0
  309. package/deps/rocksdb/rocksdb/python.mk +0 -9
  310. package/prebuilds/darwin-x64/node.napi.node +0 -0
  311. package/prebuilds/linux-arm64/node.napi.node +0 -0
@@ -84,7 +84,8 @@ TEST_F(DBTablePropertiesTest, GetPropertiesOfAllTablesTest) {
84
84
  }
85
85
  // Build file
86
86
  for (int i = 0; i < 10 + table; ++i) {
87
- ASSERT_OK(db_->Put(WriteOptions(), ToString(table * 100 + i), "val"));
87
+ ASSERT_OK(
88
+ db_->Put(WriteOptions(), std::to_string(table * 100 + i), "val"));
88
89
  }
89
90
  ASSERT_OK(db_->Flush(FlushOptions()));
90
91
  }
@@ -113,7 +114,7 @@ TEST_F(DBTablePropertiesTest, GetPropertiesOfAllTablesTest) {
113
114
  // fetch key from 1st and 2nd table, which will internally place that table to
114
115
  // the table cache.
115
116
  for (int i = 0; i < 2; ++i) {
116
- Get(ToString(i * 100 + 0));
117
+ Get(std::to_string(i * 100 + 0));
117
118
  }
118
119
 
119
120
  VerifyTableProperties(db_, 10 + 11 + 12 + 13);
@@ -122,7 +123,7 @@ TEST_F(DBTablePropertiesTest, GetPropertiesOfAllTablesTest) {
122
123
  Reopen(options);
123
124
  // fetch key from all tables, which will place them in table cache.
124
125
  for (int i = 0; i < 4; ++i) {
125
- Get(ToString(i * 100 + 0));
126
+ Get(std::to_string(i * 100 + 0));
126
127
  }
127
128
  VerifyTableProperties(db_, 10 + 11 + 12 + 13);
128
129
 
@@ -156,7 +157,7 @@ TEST_F(DBTablePropertiesTest, GetPropertiesOfAllTablesTest) {
156
157
  } else {
157
158
  bool found_corruption = false;
158
159
  for (int i = 0; i < 4; ++i) {
159
- std::string result = Get(ToString(i * 100 + 0));
160
+ std::string result = Get(std::to_string(i * 100 + 0));
160
161
  if (result.find_first_of("Corruption: block checksum mismatch") !=
161
162
  std::string::npos) {
162
163
  found_corruption = true;
@@ -187,7 +188,7 @@ TEST_F(DBTablePropertiesTest, InvalidIgnored) {
187
188
 
188
189
  // Build file
189
190
  for (int i = 0; i < 10; ++i) {
190
- ASSERT_OK(db_->Put(WriteOptions(), ToString(i), "val"));
191
+ ASSERT_OK(db_->Put(WriteOptions(), std::to_string(i), "val"));
191
192
  }
192
193
  ASSERT_OK(db_->Flush(FlushOptions()));
193
194
 
@@ -2427,8 +2427,8 @@ TEST_F(DBTest, SnapshotFiles) {
2427
2427
 
2428
2428
  // Also test GetLiveFilesStorageInfo
2429
2429
  std::vector<LiveFileStorageInfo> new_infos;
2430
- ASSERT_OK(dbfull()->GetLiveFilesStorageInfo(LiveFilesStorageInfoOptions(),
2431
- &new_infos));
2430
+ ASSERT_OK(db_->GetLiveFilesStorageInfo(LiveFilesStorageInfoOptions(),
2431
+ &new_infos));
2432
2432
 
2433
2433
  // Close DB (while deletions disabled)
2434
2434
  Close();
@@ -2734,7 +2734,7 @@ TEST_P(MultiThreadedDBTest, MultiThreaded) {
2734
2734
  Options options = CurrentOptions(options_override);
2735
2735
  std::vector<std::string> cfs;
2736
2736
  for (int i = 1; i < kColumnFamilies; ++i) {
2737
- cfs.push_back(ToString(i));
2737
+ cfs.push_back(std::to_string(i));
2738
2738
  }
2739
2739
  Reopen(options);
2740
2740
  CreateAndReopenWithCF(cfs, options);
@@ -2786,7 +2786,7 @@ static void GCThreadBody(void* arg) {
2786
2786
  WriteOptions wo;
2787
2787
 
2788
2788
  for (int i = 0; i < kGCNumKeys; ++i) {
2789
- std::string kv(ToString(i + id * kGCNumKeys));
2789
+ std::string kv(std::to_string(i + id * kGCNumKeys));
2790
2790
  ASSERT_OK(db->Put(wo, kv, kv));
2791
2791
  }
2792
2792
  t->done = true;
@@ -2822,7 +2822,7 @@ TEST_F(DBTest, GroupCommitTest) {
2822
2822
 
2823
2823
  std::vector<std::string> expected_db;
2824
2824
  for (int i = 0; i < kGCNumThreads * kGCNumKeys; ++i) {
2825
- expected_db.push_back(ToString(i));
2825
+ expected_db.push_back(std::to_string(i));
2826
2826
  }
2827
2827
  std::sort(expected_db.begin(), expected_db.end());
2828
2828
 
@@ -3591,7 +3591,7 @@ TEST_P(DBTestWithParam, FIFOCompactionTest) {
3591
3591
  Random rnd(301);
3592
3592
  for (int i = 0; i < 6; ++i) {
3593
3593
  for (int j = 0; j < 110; ++j) {
3594
- ASSERT_OK(Put(ToString(i * 100 + j), rnd.RandomString(980)));
3594
+ ASSERT_OK(Put(std::to_string(i * 100 + j), rnd.RandomString(980)));
3595
3595
  }
3596
3596
  // flush should happen here
3597
3597
  ASSERT_OK(dbfull()->TEST_WaitForFlushMemTable());
@@ -3607,7 +3607,7 @@ TEST_P(DBTestWithParam, FIFOCompactionTest) {
3607
3607
  ASSERT_EQ(NumTableFilesAtLevel(0), 5);
3608
3608
  for (int i = 0; i < 50; ++i) {
3609
3609
  // these keys should be deleted in previous compaction
3610
- ASSERT_EQ("NOT_FOUND", Get(ToString(i)));
3610
+ ASSERT_EQ("NOT_FOUND", Get(std::to_string(i)));
3611
3611
  }
3612
3612
  }
3613
3613
  }
@@ -3629,7 +3629,7 @@ TEST_F(DBTest, FIFOCompactionTestWithCompaction) {
3629
3629
  for (int i = 0; i < 60; i++) {
3630
3630
  // Generate and flush a file about 20KB.
3631
3631
  for (int j = 0; j < 20; j++) {
3632
- ASSERT_OK(Put(ToString(i * 20 + j), rnd.RandomString(980)));
3632
+ ASSERT_OK(Put(std::to_string(i * 20 + j), rnd.RandomString(980)));
3633
3633
  }
3634
3634
  ASSERT_OK(Flush());
3635
3635
  ASSERT_OK(dbfull()->TEST_WaitForCompact());
@@ -3640,7 +3640,7 @@ TEST_F(DBTest, FIFOCompactionTestWithCompaction) {
3640
3640
  for (int i = 0; i < 60; i++) {
3641
3641
  // Generate and flush a file about 20KB.
3642
3642
  for (int j = 0; j < 20; j++) {
3643
- ASSERT_OK(Put(ToString(i * 20 + j + 2000), rnd.RandomString(980)));
3643
+ ASSERT_OK(Put(std::to_string(i * 20 + j + 2000), rnd.RandomString(980)));
3644
3644
  }
3645
3645
  ASSERT_OK(Flush());
3646
3646
  ASSERT_OK(dbfull()->TEST_WaitForCompact());
@@ -3670,27 +3670,27 @@ TEST_F(DBTest, FIFOCompactionStyleWithCompactionAndDelete) {
3670
3670
  Random rnd(301);
3671
3671
  for (int i = 0; i < 3; i++) {
3672
3672
  // Each file contains a different key which will be dropped later.
3673
- ASSERT_OK(Put("a" + ToString(i), rnd.RandomString(500)));
3674
- ASSERT_OK(Put("key" + ToString(i), ""));
3675
- ASSERT_OK(Put("z" + ToString(i), rnd.RandomString(500)));
3673
+ ASSERT_OK(Put("a" + std::to_string(i), rnd.RandomString(500)));
3674
+ ASSERT_OK(Put("key" + std::to_string(i), ""));
3675
+ ASSERT_OK(Put("z" + std::to_string(i), rnd.RandomString(500)));
3676
3676
  ASSERT_OK(Flush());
3677
3677
  ASSERT_OK(dbfull()->TEST_WaitForCompact());
3678
3678
  }
3679
3679
  ASSERT_EQ(NumTableFilesAtLevel(0), 1);
3680
3680
  for (int i = 0; i < 3; i++) {
3681
- ASSERT_EQ("", Get("key" + ToString(i)));
3681
+ ASSERT_EQ("", Get("key" + std::to_string(i)));
3682
3682
  }
3683
3683
  for (int i = 0; i < 3; i++) {
3684
3684
  // Each file contains a different key which will be dropped later.
3685
- ASSERT_OK(Put("a" + ToString(i), rnd.RandomString(500)));
3686
- ASSERT_OK(Delete("key" + ToString(i)));
3687
- ASSERT_OK(Put("z" + ToString(i), rnd.RandomString(500)));
3685
+ ASSERT_OK(Put("a" + std::to_string(i), rnd.RandomString(500)));
3686
+ ASSERT_OK(Delete("key" + std::to_string(i)));
3687
+ ASSERT_OK(Put("z" + std::to_string(i), rnd.RandomString(500)));
3688
3688
  ASSERT_OK(Flush());
3689
3689
  ASSERT_OK(dbfull()->TEST_WaitForCompact());
3690
3690
  }
3691
3691
  ASSERT_EQ(NumTableFilesAtLevel(0), 2);
3692
3692
  for (int i = 0; i < 3; i++) {
3693
- ASSERT_EQ("NOT_FOUND", Get("key" + ToString(i)));
3693
+ ASSERT_EQ("NOT_FOUND", Get("key" + std::to_string(i)));
3694
3694
  }
3695
3695
  }
3696
3696
 
@@ -3759,7 +3759,7 @@ TEST_F(DBTest, FIFOCompactionWithTTLTest) {
3759
3759
  for (int i = 0; i < 10; i++) {
3760
3760
  // Generate and flush a file about 10KB.
3761
3761
  for (int j = 0; j < 10; j++) {
3762
- ASSERT_OK(Put(ToString(i * 20 + j), rnd.RandomString(980)));
3762
+ ASSERT_OK(Put(std::to_string(i * 20 + j), rnd.RandomString(980)));
3763
3763
  }
3764
3764
  ASSERT_OK(Flush());
3765
3765
  ASSERT_OK(dbfull()->TEST_WaitForCompact());
@@ -3791,7 +3791,7 @@ TEST_F(DBTest, FIFOCompactionWithTTLTest) {
3791
3791
  for (int i = 0; i < 10; i++) {
3792
3792
  // Generate and flush a file about 10KB.
3793
3793
  for (int j = 0; j < 10; j++) {
3794
- ASSERT_OK(Put(ToString(i * 20 + j), rnd.RandomString(980)));
3794
+ ASSERT_OK(Put(std::to_string(i * 20 + j), rnd.RandomString(980)));
3795
3795
  }
3796
3796
  ASSERT_OK(Flush());
3797
3797
  ASSERT_OK(dbfull()->TEST_WaitForCompact());
@@ -3807,7 +3807,7 @@ TEST_F(DBTest, FIFOCompactionWithTTLTest) {
3807
3807
  // Create 1 more file to trigger TTL compaction. The old files are dropped.
3808
3808
  for (int i = 0; i < 1; i++) {
3809
3809
  for (int j = 0; j < 10; j++) {
3810
- ASSERT_OK(Put(ToString(i * 20 + j), rnd.RandomString(980)));
3810
+ ASSERT_OK(Put(std::to_string(i * 20 + j), rnd.RandomString(980)));
3811
3811
  }
3812
3812
  ASSERT_OK(Flush());
3813
3813
  }
@@ -3833,7 +3833,7 @@ TEST_F(DBTest, FIFOCompactionWithTTLTest) {
3833
3833
  for (int i = 0; i < 3; i++) {
3834
3834
  // Generate and flush a file about 10KB.
3835
3835
  for (int j = 0; j < 10; j++) {
3836
- ASSERT_OK(Put(ToString(i * 20 + j), rnd.RandomString(980)));
3836
+ ASSERT_OK(Put(std::to_string(i * 20 + j), rnd.RandomString(980)));
3837
3837
  }
3838
3838
  ASSERT_OK(Flush());
3839
3839
  ASSERT_OK(dbfull()->TEST_WaitForCompact());
@@ -3848,7 +3848,7 @@ TEST_F(DBTest, FIFOCompactionWithTTLTest) {
3848
3848
 
3849
3849
  for (int i = 0; i < 5; i++) {
3850
3850
  for (int j = 0; j < 140; j++) {
3851
- ASSERT_OK(Put(ToString(i * 20 + j), rnd.RandomString(980)));
3851
+ ASSERT_OK(Put(std::to_string(i * 20 + j), rnd.RandomString(980)));
3852
3852
  }
3853
3853
  ASSERT_OK(Flush());
3854
3854
  ASSERT_OK(dbfull()->TEST_WaitForCompact());
@@ -3871,7 +3871,7 @@ TEST_F(DBTest, FIFOCompactionWithTTLTest) {
3871
3871
  for (int i = 0; i < 10; i++) {
3872
3872
  // Generate and flush a file about 10KB.
3873
3873
  for (int j = 0; j < 10; j++) {
3874
- ASSERT_OK(Put(ToString(i * 20 + j), rnd.RandomString(980)));
3874
+ ASSERT_OK(Put(std::to_string(i * 20 + j), rnd.RandomString(980)));
3875
3875
  }
3876
3876
  ASSERT_OK(Flush());
3877
3877
  ASSERT_OK(dbfull()->TEST_WaitForCompact());
@@ -3890,7 +3890,7 @@ TEST_F(DBTest, FIFOCompactionWithTTLTest) {
3890
3890
  // Create 10 more files. The old 5 files are dropped as their ttl expired.
3891
3891
  for (int i = 0; i < 10; i++) {
3892
3892
  for (int j = 0; j < 10; j++) {
3893
- ASSERT_OK(Put(ToString(i * 20 + j), rnd.RandomString(980)));
3893
+ ASSERT_OK(Put(std::to_string(i * 20 + j), rnd.RandomString(980)));
3894
3894
  }
3895
3895
  ASSERT_OK(Flush());
3896
3896
  ASSERT_OK(dbfull()->TEST_WaitForCompact());
@@ -3915,7 +3915,7 @@ TEST_F(DBTest, FIFOCompactionWithTTLTest) {
3915
3915
  for (int i = 0; i < 60; i++) {
3916
3916
  // Generate and flush a file about 20KB.
3917
3917
  for (int j = 0; j < 20; j++) {
3918
- ASSERT_OK(Put(ToString(i * 20 + j), rnd.RandomString(980)));
3918
+ ASSERT_OK(Put(std::to_string(i * 20 + j), rnd.RandomString(980)));
3919
3919
  }
3920
3920
  ASSERT_OK(Flush());
3921
3921
  ASSERT_OK(dbfull()->TEST_WaitForCompact());
@@ -3926,7 +3926,8 @@ TEST_F(DBTest, FIFOCompactionWithTTLTest) {
3926
3926
  for (int i = 0; i < 60; i++) {
3927
3927
  // Generate and flush a file about 20KB.
3928
3928
  for (int j = 0; j < 20; j++) {
3929
- ASSERT_OK(Put(ToString(i * 20 + j + 2000), rnd.RandomString(980)));
3929
+ ASSERT_OK(
3930
+ Put(std::to_string(i * 20 + j + 2000), rnd.RandomString(980)));
3930
3931
  }
3931
3932
  ASSERT_OK(Flush());
3932
3933
  ASSERT_OK(dbfull()->TEST_WaitForCompact());
@@ -4207,7 +4208,7 @@ TEST_F(DBTest, ConcurrentFlushWAL) {
4207
4208
  std::vector<port::Thread> threads;
4208
4209
  threads.emplace_back([&] {
4209
4210
  for (size_t i = 0; i < cnt; i++) {
4210
- auto istr = ToString(i);
4211
+ auto istr = std::to_string(i);
4211
4212
  ASSERT_OK(db_->Put(wopt, db_->DefaultColumnFamily(), "a" + istr,
4212
4213
  "b" + istr));
4213
4214
  }
@@ -4215,7 +4216,7 @@ TEST_F(DBTest, ConcurrentFlushWAL) {
4215
4216
  if (two_write_queues) {
4216
4217
  threads.emplace_back([&] {
4217
4218
  for (size_t i = cnt; i < 2 * cnt; i++) {
4218
- auto istr = ToString(i);
4219
+ auto istr = std::to_string(i);
4219
4220
  WriteBatch batch;
4220
4221
  ASSERT_OK(batch.Put("a" + istr, "b" + istr));
4221
4222
  ASSERT_OK(
@@ -4236,7 +4237,7 @@ TEST_F(DBTest, ConcurrentFlushWAL) {
4236
4237
  Reopen(options);
4237
4238
  for (size_t i = 0; i < cnt; i++) {
4238
4239
  PinnableSlice pval;
4239
- auto istr = ToString(i);
4240
+ auto istr = std::to_string(i);
4240
4241
  ASSERT_OK(
4241
4242
  db_->Get(ropt, db_->DefaultColumnFamily(), "a" + istr, &pval));
4242
4243
  ASSERT_TRUE(pval == ("b" + istr));
@@ -4259,7 +4260,7 @@ TEST_F(DBTest, ManualFlushWalAndWriteRace) {
4259
4260
 
4260
4261
  port::Thread writeThread([&]() {
4261
4262
  for (int i = 0; i < 100; i++) {
4262
- auto istr = ToString(i);
4263
+ auto istr = std::to_string(i);
4263
4264
  ASSERT_OK(dbfull()->Put(wopts, "key_" + istr, "value_" + istr));
4264
4265
  }
4265
4266
  });
@@ -4607,7 +4608,7 @@ TEST_P(DBTestWithParam, ThreadStatusSingleCompaction) {
4607
4608
  // The Put Phase.
4608
4609
  for (int file = 0; file < kNumL0Files; ++file) {
4609
4610
  for (int key = 0; key < kEntriesPerBuffer; ++key) {
4610
- ASSERT_OK(Put(ToString(key + file * kEntriesPerBuffer),
4611
+ ASSERT_OK(Put(std::to_string(key + file * kEntriesPerBuffer),
4611
4612
  rnd.RandomString(kTestValueSize)));
4612
4613
  }
4613
4614
  ASSERT_OK(Flush());
@@ -4758,7 +4759,7 @@ TEST_P(DBTestWithParam, PreShutdownMultipleCompaction) {
4758
4759
  int operation_count[ThreadStatus::NUM_OP_TYPES] = {0};
4759
4760
  for (int file = 0; file < 16 * kNumL0Files; ++file) {
4760
4761
  for (int k = 0; k < kEntriesPerBuffer; ++k) {
4761
- ASSERT_OK(Put(ToString(key++), rnd.RandomString(kTestValueSize)));
4762
+ ASSERT_OK(Put(std::to_string(key++), rnd.RandomString(kTestValueSize)));
4762
4763
  }
4763
4764
 
4764
4765
  ASSERT_OK(env_->GetThreadList(&thread_list));
@@ -4845,7 +4846,7 @@ TEST_P(DBTestWithParam, PreShutdownCompactionMiddle) {
4845
4846
  int operation_count[ThreadStatus::NUM_OP_TYPES] = {0};
4846
4847
  for (int file = 0; file < 16 * kNumL0Files; ++file) {
4847
4848
  for (int k = 0; k < kEntriesPerBuffer; ++k) {
4848
- ASSERT_OK(Put(ToString(key++), rnd.RandomString(kTestValueSize)));
4849
+ ASSERT_OK(Put(std::to_string(key++), rnd.RandomString(kTestValueSize)));
4849
4850
  }
4850
4851
 
4851
4852
  ASSERT_OK(env_->GetThreadList(&thread_list));
@@ -5156,8 +5157,9 @@ TEST_F(DBTest, DynamicCompactionOptions) {
5156
5157
  // Writing to 64KB L0 files should trigger a compaction. Since these
5157
5158
  // 2 L0 files have the same key range, compaction merge them and should
5158
5159
  // result in 2 32KB L1 files.
5159
- ASSERT_OK(dbfull()->SetOptions({{"level0_file_num_compaction_trigger", "2"},
5160
- {"target_file_size_base", ToString(k32KB)}}));
5160
+ ASSERT_OK(
5161
+ dbfull()->SetOptions({{"level0_file_num_compaction_trigger", "2"},
5162
+ {"target_file_size_base", std::to_string(k32KB)}}));
5161
5163
 
5162
5164
  gen_l0_kb(0, 64, 1);
5163
5165
  ASSERT_EQ("1,1", FilesPerLevel());
@@ -5176,8 +5178,8 @@ TEST_F(DBTest, DynamicCompactionOptions) {
5176
5178
  // Increase level base size to 256KB and write enough data that will
5177
5179
  // fill L1 and L2. L1 size should be around 256KB while L2 size should be
5178
5180
  // around 256KB x 4.
5179
- ASSERT_OK(
5180
- dbfull()->SetOptions({{"max_bytes_for_level_base", ToString(k1MB)}}));
5181
+ ASSERT_OK(dbfull()->SetOptions(
5182
+ {{"max_bytes_for_level_base", std::to_string(k1MB)}}));
5181
5183
 
5182
5184
  // writing 96 x 64KB => 6 * 1024KB
5183
5185
  // (L1 + L2) = (1 + 4) * 1024KB
@@ -5196,9 +5198,9 @@ TEST_F(DBTest, DynamicCompactionOptions) {
5196
5198
  // max_bytes_for_level_base. Now, reduce both mulitplier and level base,
5197
5199
  // After filling enough data that can fit in L1 - L3, we should see L1 size
5198
5200
  // reduces to 128KB from 256KB which was asserted previously. Same for L2.
5199
- ASSERT_OK(
5200
- dbfull()->SetOptions({{"max_bytes_for_level_multiplier", "2"},
5201
- {"max_bytes_for_level_base", ToString(k128KB)}}));
5201
+ ASSERT_OK(dbfull()->SetOptions(
5202
+ {{"max_bytes_for_level_multiplier", "2"},
5203
+ {"max_bytes_for_level_base", std::to_string(k128KB)}}));
5202
5204
 
5203
5205
  // writing 20 x 64KB = 10 x 128KB
5204
5206
  // (L1 + L2 + L3) = (1 + 2 + 4) * 128KB
@@ -5854,7 +5856,7 @@ TEST_P(DBTestWithParam, FilterCompactionTimeTest) {
5854
5856
  // put some data
5855
5857
  for (int table = 0; table < 4; ++table) {
5856
5858
  for (int i = 0; i < 10 + table; ++i) {
5857
- ASSERT_OK(Put(ToString(table * 100 + i), "val"));
5859
+ ASSERT_OK(Put(std::to_string(table * 100 + i), "val"));
5858
5860
  ++n;
5859
5861
  }
5860
5862
  ASSERT_OK(Flush());
@@ -6238,7 +6240,7 @@ TEST_F(DBTest, LargeBatchWithColumnFamilies) {
6238
6240
  (write_size / 1024 / 1024), pass);
6239
6241
  for (;;) {
6240
6242
  std::string data(3000, j++ % 127 + 20);
6241
- data += ToString(j);
6243
+ data += std::to_string(j);
6242
6244
  ASSERT_OK(batch.Put(handles_[0], Slice(data), Slice(data)));
6243
6245
  if (batch.GetDataSize() > write_size) {
6244
6246
  break;
@@ -38,10 +38,10 @@ class DBTest2 : public DBTestBase {
38
38
  #ifndef ROCKSDB_LITE
39
39
  uint64_t GetSstSizeHelper(Temperature temperature) {
40
40
  std::string prop;
41
- EXPECT_TRUE(
42
- dbfull()->GetProperty(DB::Properties::kLiveSstFilesSizeAtTemperature +
43
- ToString(static_cast<uint8_t>(temperature)),
44
- &prop));
41
+ EXPECT_TRUE(dbfull()->GetProperty(
42
+ DB::Properties::kLiveSstFilesSizeAtTemperature +
43
+ std::to_string(static_cast<uint8_t>(temperature)),
44
+ &prop));
45
45
  return static_cast<uint64_t>(std::atoi(prop.c_str()));
46
46
  }
47
47
  #endif // ROCKSDB_LITE
@@ -1694,9 +1694,9 @@ class CompactionCompressionListener : public EventListener {
1694
1694
  int bottommost_level = 0;
1695
1695
  for (int level = 0; level < db->NumberLevels(); level++) {
1696
1696
  std::string files_at_level;
1697
- ASSERT_TRUE(db->GetProperty(
1698
- "rocksdb.num-files-at-level" + ROCKSDB_NAMESPACE::ToString(level),
1699
- &files_at_level));
1697
+ ASSERT_TRUE(
1698
+ db->GetProperty("rocksdb.num-files-at-level" + std::to_string(level),
1699
+ &files_at_level));
1700
1700
  if (files_at_level != "0") {
1701
1701
  bottommost_level = level;
1702
1702
  }
@@ -2492,14 +2492,14 @@ TEST_F(DBTest2, TestPerfContextIterCpuTime) {
2492
2492
 
2493
2493
  const size_t kNumEntries = 10;
2494
2494
  for (size_t i = 0; i < kNumEntries; ++i) {
2495
- ASSERT_OK(Put("k" + ToString(i), "v" + ToString(i)));
2495
+ ASSERT_OK(Put("k" + std::to_string(i), "v" + std::to_string(i)));
2496
2496
  }
2497
2497
  ASSERT_OK(Flush());
2498
2498
  for (size_t i = 0; i < kNumEntries; ++i) {
2499
- ASSERT_EQ("v" + ToString(i), Get("k" + ToString(i)));
2499
+ ASSERT_EQ("v" + std::to_string(i), Get("k" + std::to_string(i)));
2500
2500
  }
2501
- std::string last_key = "k" + ToString(kNumEntries - 1);
2502
- std::string last_value = "v" + ToString(kNumEntries - 1);
2501
+ std::string last_key = "k" + std::to_string(kNumEntries - 1);
2502
+ std::string last_value = "v" + std::to_string(kNumEntries - 1);
2503
2503
  env_->now_cpu_count_.store(0);
2504
2504
  env_->SetMockSleep();
2505
2505
 
@@ -3987,12 +3987,14 @@ TEST_F(DBTest2, RateLimitedCompactionReads) {
3987
3987
 
3988
3988
  // should be slightly above 512KB due to non-data blocks read. Arbitrarily
3989
3989
  // chose 1MB as the upper bound on the total bytes read.
3990
- size_t rate_limited_bytes =
3991
- options.rate_limiter->GetTotalBytesThrough(Env::IO_TOTAL);
3992
- // There must be no charges at non-`IO_LOW` priorities.
3990
+ size_t rate_limited_bytes = static_cast<size_t>(
3991
+ options.rate_limiter->GetTotalBytesThrough(Env::IO_TOTAL));
3992
+ // The charges can exist for `IO_LOW` and `IO_USER` priorities.
3993
+ size_t rate_limited_bytes_by_pri =
3994
+ options.rate_limiter->GetTotalBytesThrough(Env::IO_LOW) +
3995
+ options.rate_limiter->GetTotalBytesThrough(Env::IO_USER);
3993
3996
  ASSERT_EQ(rate_limited_bytes,
3994
- static_cast<size_t>(
3995
- options.rate_limiter->GetTotalBytesThrough(Env::IO_LOW)));
3997
+ static_cast<size_t>(rate_limited_bytes_by_pri));
3996
3998
  // Include the explicit prefetch of the footer in direct I/O case.
3997
3999
  size_t direct_io_extra = use_direct_io ? 512 * 1024 : 0;
3998
4000
  ASSERT_GE(
@@ -4010,9 +4012,11 @@ TEST_F(DBTest2, RateLimitedCompactionReads) {
4010
4012
  }
4011
4013
  delete iter;
4012
4014
  // bytes read for user iterator shouldn't count against the rate limit.
4015
+ rate_limited_bytes_by_pri =
4016
+ options.rate_limiter->GetTotalBytesThrough(Env::IO_LOW) +
4017
+ options.rate_limiter->GetTotalBytesThrough(Env::IO_USER);
4013
4018
  ASSERT_EQ(rate_limited_bytes,
4014
- static_cast<size_t>(
4015
- options.rate_limiter->GetTotalBytesThrough(Env::IO_LOW)));
4019
+ static_cast<size_t>(rate_limited_bytes_by_pri));
4016
4020
  }
4017
4021
  }
4018
4022
  }
@@ -5553,7 +5557,7 @@ TEST_F(DBTest2, MultiDBParallelOpenTest) {
5553
5557
  Options options = CurrentOptions();
5554
5558
  std::vector<std::string> dbnames;
5555
5559
  for (int i = 0; i < kNumDbs; ++i) {
5556
- dbnames.emplace_back(test::PerThreadDBPath(env_, "db" + ToString(i)));
5560
+ dbnames.emplace_back(test::PerThreadDBPath(env_, "db" + std::to_string(i)));
5557
5561
  ASSERT_OK(DestroyDB(dbnames.back(), options));
5558
5562
  }
5559
5563
 
@@ -9,8 +9,11 @@
9
9
 
10
10
  #include "db/db_test_util.h"
11
11
 
12
+ #include "cache/cache_reservation_manager.h"
12
13
  #include "db/forward_iterator.h"
13
14
  #include "env/mock_env.h"
15
+ #include "port/lang.h"
16
+ #include "rocksdb/cache.h"
14
17
  #include "rocksdb/convenience.h"
15
18
  #include "rocksdb/env_encryption.h"
16
19
  #include "rocksdb/unique_id.h"
@@ -360,6 +363,17 @@ Options DBTestBase::GetOptions(
360
363
  ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->ClearCallBack(
361
364
  "NewWritableFile:O_DIRECT");
362
365
  #endif
366
+ // kMustFreeHeapAllocations -> indicates ASAN build
367
+ if (kMustFreeHeapAllocations && !options_override.full_block_cache) {
368
+ // Detecting block cache use-after-free is normally difficult in unit
369
+ // tests, because as a cache, it tends to keep unreferenced entries in
370
+ // memory, and we normally want unit tests to take advantage of block
371
+ // cache for speed. However, we also want a strong chance of detecting
372
+ // block cache use-after-free in unit tests in ASAN builds, so for ASAN
373
+ // builds we use a trivially small block cache to which entries can be
374
+ // added but are immediately freed on no more references.
375
+ table_options.block_cache = NewLRUCache(/* too small */ 1);
376
+ }
363
377
 
364
378
  bool can_allow_mmap = IsMemoryMappedAccessSupported();
365
379
  switch (option_config) {
@@ -831,7 +845,7 @@ std::vector<std::string> DBTestBase::MultiGet(std::vector<int> cfs,
831
845
  std::vector<Status> s;
832
846
  if (!batched) {
833
847
  s = db_->MultiGet(options, handles, keys, &result);
834
- for (unsigned int i = 0; i < s.size(); ++i) {
848
+ for (size_t i = 0; i < s.size(); ++i) {
835
849
  if (s[i].IsNotFound()) {
836
850
  result[i] = "NOT_FOUND";
837
851
  } else if (!s[i].ok()) {
@@ -844,13 +858,16 @@ std::vector<std::string> DBTestBase::MultiGet(std::vector<int> cfs,
844
858
  s.resize(cfs.size());
845
859
  db_->MultiGet(options, cfs.size(), handles.data(), keys.data(),
846
860
  pin_values.data(), s.data());
847
- for (unsigned int i = 0; i < s.size(); ++i) {
861
+ for (size_t i = 0; i < s.size(); ++i) {
848
862
  if (s[i].IsNotFound()) {
849
863
  result[i] = "NOT_FOUND";
850
864
  } else if (!s[i].ok()) {
851
865
  result[i] = s[i].ToString();
852
866
  } else {
853
867
  result[i].assign(pin_values[i].data(), pin_values[i].size());
868
+ // Increase likelihood of detecting potential use-after-free bugs with
869
+ // PinnableSlices tracking the same resource
870
+ pin_values[i].Reset();
854
871
  }
855
872
  }
856
873
  }
@@ -863,23 +880,25 @@ std::vector<std::string> DBTestBase::MultiGet(const std::vector<std::string>& k,
863
880
  options.verify_checksums = true;
864
881
  options.snapshot = snapshot;
865
882
  std::vector<Slice> keys;
866
- std::vector<std::string> result;
883
+ std::vector<std::string> result(k.size());
867
884
  std::vector<Status> statuses(k.size());
868
885
  std::vector<PinnableSlice> pin_values(k.size());
869
886
 
870
- for (unsigned int i = 0; i < k.size(); ++i) {
887
+ for (size_t i = 0; i < k.size(); ++i) {
871
888
  keys.push_back(k[i]);
872
889
  }
873
890
  db_->MultiGet(options, dbfull()->DefaultColumnFamily(), keys.size(),
874
891
  keys.data(), pin_values.data(), statuses.data());
875
- result.resize(k.size());
876
- for (auto iter = result.begin(); iter != result.end(); ++iter) {
877
- iter->assign(pin_values[iter - result.begin()].data(),
878
- pin_values[iter - result.begin()].size());
879
- }
880
- for (unsigned int i = 0; i < statuses.size(); ++i) {
892
+ for (size_t i = 0; i < statuses.size(); ++i) {
881
893
  if (statuses[i].IsNotFound()) {
882
894
  result[i] = "NOT_FOUND";
895
+ } else if (!statuses[i].ok()) {
896
+ result[i] = statuses[i].ToString();
897
+ } else {
898
+ result[i].assign(pin_values[i].data(), pin_values[i].size());
899
+ // Increase likelihood of detecting potential use-after-free bugs with
900
+ // PinnableSlices tracking the same resource
901
+ pin_values[i].Reset();
883
902
  }
884
903
  }
885
904
  return result;
@@ -1068,12 +1087,12 @@ int DBTestBase::NumTableFilesAtLevel(int level, int cf) {
1068
1087
  std::string property;
1069
1088
  if (cf == 0) {
1070
1089
  // default cfd
1071
- EXPECT_TRUE(db_->GetProperty("rocksdb.num-files-at-level" + ToString(level),
1072
- &property));
1090
+ EXPECT_TRUE(db_->GetProperty(
1091
+ "rocksdb.num-files-at-level" + std::to_string(level), &property));
1073
1092
  } else {
1074
- EXPECT_TRUE(db_->GetProperty(handles_[cf],
1075
- "rocksdb.num-files-at-level" + ToString(level),
1076
- &property));
1093
+ EXPECT_TRUE(db_->GetProperty(
1094
+ handles_[cf], "rocksdb.num-files-at-level" + std::to_string(level),
1095
+ &property));
1077
1096
  }
1078
1097
  return atoi(property.c_str());
1079
1098
  }
@@ -1083,10 +1102,12 @@ double DBTestBase::CompressionRatioAtLevel(int level, int cf) {
1083
1102
  if (cf == 0) {
1084
1103
  // default cfd
1085
1104
  EXPECT_TRUE(db_->GetProperty(
1086
- "rocksdb.compression-ratio-at-level" + ToString(level), &property));
1105
+ "rocksdb.compression-ratio-at-level" + std::to_string(level),
1106
+ &property));
1087
1107
  } else {
1088
1108
  EXPECT_TRUE(db_->GetProperty(
1089
- handles_[cf], "rocksdb.compression-ratio-at-level" + ToString(level),
1109
+ handles_[cf],
1110
+ "rocksdb.compression-ratio-at-level" + std::to_string(level),
1090
1111
  &property));
1091
1112
  }
1092
1113
  return std::stod(property);
@@ -1663,4 +1684,61 @@ void VerifySstUniqueIds(const TablePropertiesCollection& props) {
1663
1684
  }
1664
1685
  }
1665
1686
 
1687
+ template <CacheEntryRole R>
1688
+ TargetCacheChargeTrackingCache<R>::TargetCacheChargeTrackingCache(
1689
+ std::shared_ptr<Cache> target)
1690
+ : CacheWrapper(std::move(target)),
1691
+ cur_cache_charge_(0),
1692
+ cache_charge_peak_(0),
1693
+ cache_charge_increment_(0),
1694
+ last_peak_tracked_(false),
1695
+ cache_charge_increments_sum_(0) {}
1696
+
1697
+ template <CacheEntryRole R>
1698
+ Status TargetCacheChargeTrackingCache<R>::Insert(
1699
+ const Slice& key, void* value, size_t charge,
1700
+ void (*deleter)(const Slice& key, void* value), Handle** handle,
1701
+ Priority priority) {
1702
+ Status s = target_->Insert(key, value, charge, deleter, handle, priority);
1703
+ if (deleter == kNoopDeleter) {
1704
+ if (last_peak_tracked_) {
1705
+ cache_charge_peak_ = 0;
1706
+ cache_charge_increment_ = 0;
1707
+ last_peak_tracked_ = false;
1708
+ }
1709
+ if (s.ok()) {
1710
+ cur_cache_charge_ += charge;
1711
+ }
1712
+ cache_charge_peak_ = std::max(cache_charge_peak_, cur_cache_charge_);
1713
+ cache_charge_increment_ += charge;
1714
+ }
1715
+
1716
+ return s;
1717
+ }
1718
+
1719
+ template <CacheEntryRole R>
1720
+ bool TargetCacheChargeTrackingCache<R>::Release(Handle* handle,
1721
+ bool erase_if_last_ref) {
1722
+ auto deleter = GetDeleter(handle);
1723
+ if (deleter == kNoopDeleter) {
1724
+ if (!last_peak_tracked_) {
1725
+ cache_charge_peaks_.push_back(cache_charge_peak_);
1726
+ cache_charge_increments_sum_ += cache_charge_increment_;
1727
+ last_peak_tracked_ = true;
1728
+ }
1729
+ cur_cache_charge_ -= GetCharge(handle);
1730
+ }
1731
+ bool is_successful = target_->Release(handle, erase_if_last_ref);
1732
+ return is_successful;
1733
+ }
1734
+
1735
+ template <CacheEntryRole R>
1736
+ const Cache::DeleterFn TargetCacheChargeTrackingCache<R>::kNoopDeleter =
1737
+ CacheReservationManagerImpl<R>::TEST_GetNoopDeleterForRole();
1738
+
1739
+ template class TargetCacheChargeTrackingCache<
1740
+ CacheEntryRole::kFilterConstruction>;
1741
+ template class TargetCacheChargeTrackingCache<
1742
+ CacheEntryRole::kBlockBasedTableReader>;
1743
+
1666
1744
  } // namespace ROCKSDB_NAMESPACE