@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
@@ -410,6 +410,10 @@ DEFINE_double(read_random_exp_range, 0.0,
410
410
 
411
411
  DEFINE_bool(histogram, false, "Print histogram of operation timings");
412
412
 
413
+ DEFINE_bool(confidence_interval_only, false,
414
+ "Print 95% confidence interval upper and lower bounds only for "
415
+ "aggregate stats.");
416
+
413
417
  DEFINE_bool(enable_numa, false,
414
418
  "Make operations aware of NUMA architecture and bind memory "
415
419
  "and cpus corresponding to nodes together. In NUMA, memory "
@@ -1125,10 +1129,20 @@ DEFINE_bool(async_io, false,
1125
1129
  "When set true, RocksDB does asynchronous reads for internal auto "
1126
1130
  "readahead prefetching.");
1127
1131
 
1128
- DEFINE_bool(reserve_table_reader_memory, false,
1129
- "A dynamically updating charge to block cache, loosely based on "
1130
- "the actual memory usage of table reader, will occur to account "
1131
- "the memory, if block cache available.");
1132
+ DEFINE_bool(charge_compression_dictionary_building_buffer, false,
1133
+ "Setting for "
1134
+ "CacheEntryRoleOptions::charged of"
1135
+ "CacheEntryRole::kCompressionDictionaryBuildingBuffer");
1136
+
1137
+ DEFINE_bool(charge_filter_construction, false,
1138
+ "Setting for "
1139
+ "CacheEntryRoleOptions::charged of"
1140
+ "CacheEntryRole::kFilterConstruction");
1141
+
1142
+ DEFINE_bool(charge_table_reader, false,
1143
+ "Setting for "
1144
+ "CacheEntryRoleOptions::charged of"
1145
+ "CacheEntryRole::kBlockBasedTableReader");
1132
1146
 
1133
1147
  static enum ROCKSDB_NAMESPACE::CompressionType StringToCompressionType(
1134
1148
  const char* ctype) {
@@ -1948,9 +1962,9 @@ class ReporterAgent {
1948
1962
  auto secs_elapsed =
1949
1963
  (clock->NowMicros() - time_started + kMicrosInSecond / 2) /
1950
1964
  kMicrosInSecond;
1951
- std::string report = ToString(secs_elapsed) + "," +
1952
- ToString(total_ops_done_snapshot - last_report_) +
1953
- "\n";
1965
+ std::string report =
1966
+ std::to_string(secs_elapsed) + "," +
1967
+ std::to_string(total_ops_done_snapshot - last_report_) + "\n";
1954
1968
  auto s = report_file_->Append(report);
1955
1969
  if (s.ok()) {
1956
1970
  s = report_file_->Flush();
@@ -2204,7 +2218,7 @@ class Stats {
2204
2218
  if (db->GetProperty(
2205
2219
  db_with_cfh->cfh[i],
2206
2220
  "rocksdb.aggregated-table-properties-at-level" +
2207
- ToString(level),
2221
+ std::to_string(level),
2208
2222
  &stats)) {
2209
2223
  if (stats.find("# entries=0") == std::string::npos) {
2210
2224
  fprintf(stderr, "Level[%d]: %s\n", level,
@@ -2228,7 +2242,7 @@ class Stats {
2228
2242
  for (int level = 0; level < FLAGS_num_levels; ++level) {
2229
2243
  if (db->GetProperty(
2230
2244
  "rocksdb.aggregated-table-properties-at-level" +
2231
- ToString(level),
2245
+ std::to_string(level),
2232
2246
  &stats)) {
2233
2247
  if (stats.find("# entries=0") == std::string::npos) {
2234
2248
  fprintf(stderr, "Level[%d]: %s\n", level, stats.c_str());
@@ -2261,25 +2275,23 @@ class Stats {
2261
2275
  if (done_ < 1) done_ = 1;
2262
2276
 
2263
2277
  std::string extra;
2278
+ double elapsed = (finish_ - start_) * 1e-6;
2264
2279
  if (bytes_ > 0) {
2265
2280
  // Rate is computed on actual elapsed time, not the sum of per-thread
2266
2281
  // elapsed times.
2267
- double elapsed = (finish_ - start_) * 1e-6;
2268
2282
  char rate[100];
2269
2283
  snprintf(rate, sizeof(rate), "%6.1f MB/s",
2270
2284
  (bytes_ / 1048576.0) / elapsed);
2271
2285
  extra = rate;
2272
2286
  }
2273
2287
  AppendWithSpace(&extra, message_);
2274
- double elapsed = (finish_ - start_) * 1e-6;
2275
2288
  double throughput = (double)done_/elapsed;
2276
2289
 
2277
- fprintf(stdout, "%-12s : %11.3f micros/op %ld ops/sec;%s%s\n",
2278
- name.ToString().c_str(),
2279
- seconds_ * 1e6 / done_,
2280
- (long)throughput,
2281
- (extra.empty() ? "" : " "),
2282
- extra.c_str());
2290
+ fprintf(stdout,
2291
+ "%-12s : %11.3f micros/op %ld ops/sec %.3f seconds %" PRIu64
2292
+ " operations;%s%s\n",
2293
+ name.ToString().c_str(), seconds_ * 1e6 / done_, (long)throughput,
2294
+ elapsed, done_, (extra.empty() ? "" : " "), extra.c_str());
2283
2295
  if (FLAGS_histogram) {
2284
2296
  for (auto it = hist_.begin(); it != hist_.end(); ++it) {
2285
2297
  fprintf(stdout, "Microseconds per %s:\n%s\n",
@@ -2319,28 +2331,83 @@ class CombinedStats {
2319
2331
  }
2320
2332
 
2321
2333
  void Report(const std::string& bench_name) {
2334
+ if (throughput_ops_.size() < 2) {
2335
+ // skip if there are not enough samples
2336
+ return;
2337
+ }
2338
+
2339
+ const char* name = bench_name.c_str();
2340
+ int num_runs = static_cast<int>(throughput_ops_.size());
2341
+
2342
+ if (throughput_mbs_.size() == throughput_ops_.size()) {
2343
+ fprintf(stdout,
2344
+ "%s [AVG %d runs] : %d (± %d) ops/sec; %6.1f (± %.1f) MB/sec\n",
2345
+ name, num_runs, static_cast<int>(CalcAvg(throughput_ops_)),
2346
+ static_cast<int>(CalcConfidence95(throughput_ops_)),
2347
+ CalcAvg(throughput_mbs_), CalcConfidence95(throughput_mbs_));
2348
+ } else {
2349
+ fprintf(stdout, "%s [AVG %d runs] : %d (± %d) ops/sec\n", name, num_runs,
2350
+ static_cast<int>(CalcAvg(throughput_ops_)),
2351
+ static_cast<int>(CalcConfidence95(throughput_ops_)));
2352
+ }
2353
+ }
2354
+
2355
+ void ReportWithConfidenceIntervals(const std::string& bench_name) {
2356
+ if (throughput_ops_.size() < 2) {
2357
+ // skip if there are not enough samples
2358
+ return;
2359
+ }
2360
+
2361
+ const char* name = bench_name.c_str();
2362
+ int num_runs = static_cast<int>(throughput_ops_.size());
2363
+
2364
+ int ops_avg = static_cast<int>(CalcAvg(throughput_ops_));
2365
+ int ops_confidence_95 = static_cast<int>(CalcConfidence95(throughput_ops_));
2366
+
2367
+ if (throughput_mbs_.size() == throughput_ops_.size()) {
2368
+ double mbs_avg = CalcAvg(throughput_mbs_);
2369
+ double mbs_confidence_95 = CalcConfidence95(throughput_mbs_);
2370
+ fprintf(stdout,
2371
+ "%s [CI95 %d runs] : (%d, %d) ops/sec; (%.1f, %.1f) MB/sec\n",
2372
+ name, num_runs, ops_avg - ops_confidence_95,
2373
+ ops_avg + ops_confidence_95, mbs_avg - mbs_confidence_95,
2374
+ mbs_avg + mbs_confidence_95);
2375
+ } else {
2376
+ fprintf(stdout, "%s [CI95 %d runs] : (%d, %d) ops/sec\n", name, num_runs,
2377
+ ops_avg - ops_confidence_95, ops_avg + ops_confidence_95);
2378
+ }
2379
+ }
2380
+
2381
+ void ReportFinal(const std::string& bench_name) {
2382
+ if (throughput_ops_.size() < 2) {
2383
+ // skip if there are not enough samples
2384
+ return;
2385
+ }
2386
+
2322
2387
  const char* name = bench_name.c_str();
2323
2388
  int num_runs = static_cast<int>(throughput_ops_.size());
2324
2389
 
2325
2390
  if (throughput_mbs_.size() == throughput_ops_.size()) {
2326
2391
  fprintf(stdout,
2327
- "%s [AVG %d runs] : %d ops/sec; %6.1f MB/sec\n"
2392
+ "%s [AVG %d runs] : %d (± %d) ops/sec; %6.1f (± %.1f) MB/sec\n"
2328
2393
  "%s [MEDIAN %d runs] : %d ops/sec; %6.1f MB/sec\n",
2329
2394
  name, num_runs, static_cast<int>(CalcAvg(throughput_ops_)),
2330
- CalcAvg(throughput_mbs_), name, num_runs,
2331
- static_cast<int>(CalcMedian(throughput_ops_)),
2395
+ static_cast<int>(CalcConfidence95(throughput_ops_)),
2396
+ CalcAvg(throughput_mbs_), CalcConfidence95(throughput_mbs_), name,
2397
+ num_runs, static_cast<int>(CalcMedian(throughput_ops_)),
2332
2398
  CalcMedian(throughput_mbs_));
2333
2399
  } else {
2334
2400
  fprintf(stdout,
2335
- "%s [AVG %d runs] : %d ops/sec\n"
2401
+ "%s [AVG %d runs] : %d (± %d) ops/sec\n"
2336
2402
  "%s [MEDIAN %d runs] : %d ops/sec\n",
2337
- name, num_runs, static_cast<int>(CalcAvg(throughput_ops_)), name,
2403
+ name, num_runs, static_cast<int>(CalcAvg(throughput_ops_)),
2404
+ static_cast<int>(CalcConfidence95(throughput_ops_)), name,
2338
2405
  num_runs, static_cast<int>(CalcMedian(throughput_ops_)));
2339
2406
  }
2340
2407
  }
2341
2408
 
2342
2409
  private:
2343
- double CalcAvg(std::vector<double> data) {
2410
+ double CalcAvg(std::vector<double>& data) {
2344
2411
  double avg = 0;
2345
2412
  for (double x : data) {
2346
2413
  avg += x;
@@ -2349,7 +2416,20 @@ class CombinedStats {
2349
2416
  return avg;
2350
2417
  }
2351
2418
 
2352
- double CalcMedian(std::vector<double> data) {
2419
+ // Calculates 95% CI assuming a normal distribution of samples.
2420
+ // Samples are not from a normal distribution, but it still
2421
+ // provides useful approximation.
2422
+ double CalcConfidence95(std::vector<double>& data) {
2423
+ assert(data.size() > 1);
2424
+ double avg = CalcAvg(data);
2425
+ double std_error = CalcStdDev(data, avg) / std::sqrt(data.size());
2426
+
2427
+ // Z score for the 97.5 percentile
2428
+ // see https://en.wikipedia.org/wiki/1.96
2429
+ return 1.959964 * std_error;
2430
+ }
2431
+
2432
+ double CalcMedian(std::vector<double>& data) {
2353
2433
  assert(data.size() > 0);
2354
2434
  std::sort(data.begin(), data.end());
2355
2435
 
@@ -2363,6 +2443,18 @@ class CombinedStats {
2363
2443
  }
2364
2444
  }
2365
2445
 
2446
+ double CalcStdDev(std::vector<double>& data, double average) {
2447
+ assert(data.size() > 1);
2448
+ double squared_sum = 0.0;
2449
+ for (double x : data) {
2450
+ squared_sum += std::pow(x - average, 2);
2451
+ }
2452
+
2453
+ // using samples count - 1 following Bessel's correction
2454
+ // see https://en.wikipedia.org/wiki/Bessel%27s_correction
2455
+ return std::sqrt(squared_sum / (data.size() - 1));
2456
+ }
2457
+
2366
2458
  std::vector<double> throughput_ops_;
2367
2459
  std::vector<double> throughput_mbs_;
2368
2460
  };
@@ -3060,7 +3152,7 @@ class Benchmark {
3060
3152
  }
3061
3153
  #endif
3062
3154
  }
3063
- return base_name + ToString(id);
3155
+ return base_name + std::to_string(id);
3064
3156
  }
3065
3157
 
3066
3158
  void VerifyDBFromDB(std::string& truth_db_name) {
@@ -3525,9 +3617,14 @@ class Benchmark {
3525
3617
  for (int i = 0; i < num_repeat; i++) {
3526
3618
  Stats stats = RunBenchmark(num_threads, name, method);
3527
3619
  combined_stats.AddStats(stats);
3620
+ if (FLAGS_confidence_interval_only) {
3621
+ combined_stats.ReportWithConfidenceIntervals(name);
3622
+ } else {
3623
+ combined_stats.Report(name);
3624
+ }
3528
3625
  }
3529
3626
  if (num_repeat > 1) {
3530
- combined_stats.Report(name);
3627
+ combined_stats.ReportFinal(name);
3531
3628
  }
3532
3629
  }
3533
3630
  if (post_process_method != nullptr) {
@@ -3704,7 +3801,7 @@ class Benchmark {
3704
3801
  static inline void ChecksumBenchmark(FnType fn, ThreadState* thread,
3705
3802
  Args... args) {
3706
3803
  const int size = FLAGS_block_size; // use --block_size option for db_bench
3707
- std::string labels = "(" + ToString(FLAGS_block_size) + " per op)";
3804
+ std::string labels = "(" + std::to_string(FLAGS_block_size) + " per op)";
3708
3805
  const char* label = labels.c_str();
3709
3806
 
3710
3807
  std::string data(size, 'x');
@@ -3857,6 +3954,26 @@ class Benchmark {
3857
3954
  assert(db_.db == nullptr);
3858
3955
 
3859
3956
  options.env = FLAGS_env;
3957
+ options.wal_dir = FLAGS_wal_dir;
3958
+ options.dump_malloc_stats = FLAGS_dump_malloc_stats;
3959
+ options.stats_dump_period_sec =
3960
+ static_cast<unsigned int>(FLAGS_stats_dump_period_sec);
3961
+ options.stats_persist_period_sec =
3962
+ static_cast<unsigned int>(FLAGS_stats_persist_period_sec);
3963
+ options.persist_stats_to_disk = FLAGS_persist_stats_to_disk;
3964
+ options.stats_history_buffer_size =
3965
+ static_cast<size_t>(FLAGS_stats_history_buffer_size);
3966
+ options.avoid_flush_during_recovery = FLAGS_avoid_flush_during_recovery;
3967
+
3968
+ options.compression_opts.level = FLAGS_compression_level;
3969
+ options.compression_opts.max_dict_bytes = FLAGS_compression_max_dict_bytes;
3970
+ options.compression_opts.zstd_max_train_bytes =
3971
+ FLAGS_compression_zstd_max_train_bytes;
3972
+ options.compression_opts.parallel_threads =
3973
+ FLAGS_compression_parallel_threads;
3974
+ options.compression_opts.max_dict_buffer_bytes =
3975
+ FLAGS_compression_max_dict_buffer_bytes;
3976
+
3860
3977
  options.max_open_files = FLAGS_open_files;
3861
3978
  if (FLAGS_cost_write_buffer_to_cache || FLAGS_db_write_buffer_size != 0) {
3862
3979
  options.write_buffer_manager.reset(
@@ -4055,8 +4172,21 @@ class Benchmark {
4055
4172
  true;
4056
4173
  }
4057
4174
  block_based_options.block_cache = cache_;
4058
- block_based_options.reserve_table_reader_memory =
4059
- FLAGS_reserve_table_reader_memory;
4175
+ block_based_options.cache_usage_options.options_overrides.insert(
4176
+ {CacheEntryRole::kCompressionDictionaryBuildingBuffer,
4177
+ {/*.charged = */ FLAGS_charge_compression_dictionary_building_buffer
4178
+ ? CacheEntryRoleOptions::Decision::kEnabled
4179
+ : CacheEntryRoleOptions::Decision::kDisabled}});
4180
+ block_based_options.cache_usage_options.options_overrides.insert(
4181
+ {CacheEntryRole::kFilterConstruction,
4182
+ {/*.charged = */ FLAGS_charge_filter_construction
4183
+ ? CacheEntryRoleOptions::Decision::kEnabled
4184
+ : CacheEntryRoleOptions::Decision::kDisabled}});
4185
+ block_based_options.cache_usage_options.options_overrides.insert(
4186
+ {CacheEntryRole::kBlockBasedTableReader,
4187
+ {/*.charged = */ FLAGS_charge_table_reader
4188
+ ? CacheEntryRoleOptions::Decision::kEnabled
4189
+ : CacheEntryRoleOptions::Decision::kDisabled}});
4060
4190
  block_based_options.block_cache_compressed = compressed_cache_;
4061
4191
  block_based_options.block_size = FLAGS_block_size;
4062
4192
  block_based_options.block_restart_interval = FLAGS_block_restart_interval;
@@ -4285,94 +4415,104 @@ class Benchmark {
4285
4415
  }
4286
4416
 
4287
4417
  void InitializeOptionsGeneral(Options* opts) {
4418
+ // Be careful about what is set here to avoid accidentally overwriting
4419
+ // settings already configured by OPTIONS file. Only configure settings that
4420
+ // are needed for the benchmark to run, settings for shared objects that
4421
+ // were not configured already, settings that require dynamically invoking
4422
+ // APIs, and settings for the benchmark itself.
4288
4423
  Options& options = *opts;
4289
4424
 
4290
- options.create_missing_column_families = FLAGS_num_column_families > 1;
4291
- options.statistics = dbstats;
4292
- options.wal_dir = FLAGS_wal_dir;
4293
- options.create_if_missing = !FLAGS_use_existing_db;
4294
- options.dump_malloc_stats = FLAGS_dump_malloc_stats;
4295
- options.stats_dump_period_sec =
4296
- static_cast<unsigned int>(FLAGS_stats_dump_period_sec);
4297
- options.stats_persist_period_sec =
4298
- static_cast<unsigned int>(FLAGS_stats_persist_period_sec);
4299
- options.persist_stats_to_disk = FLAGS_persist_stats_to_disk;
4300
- options.stats_history_buffer_size =
4301
- static_cast<size_t>(FLAGS_stats_history_buffer_size);
4302
- options.avoid_flush_during_recovery = FLAGS_avoid_flush_during_recovery;
4425
+ // Always set these since they are harmless when not needed and prevent
4426
+ // a guaranteed failure when they are needed.
4427
+ options.create_missing_column_families = true;
4428
+ options.create_if_missing = true;
4429
+
4430
+ if (options.statistics == nullptr) {
4431
+ options.statistics = dbstats;
4432
+ }
4303
4433
 
4304
- options.compression_opts.level = FLAGS_compression_level;
4305
- options.compression_opts.max_dict_bytes = FLAGS_compression_max_dict_bytes;
4306
- options.compression_opts.zstd_max_train_bytes =
4307
- FLAGS_compression_zstd_max_train_bytes;
4308
- options.compression_opts.parallel_threads =
4309
- FLAGS_compression_parallel_threads;
4310
- options.compression_opts.max_dict_buffer_bytes =
4311
- FLAGS_compression_max_dict_buffer_bytes;
4312
- // If this is a block based table, set some related options
4313
4434
  auto table_options =
4314
4435
  options.table_factory->GetOptions<BlockBasedTableOptions>();
4315
4436
  if (table_options != nullptr) {
4316
- if (FLAGS_cache_size) {
4437
+ if (FLAGS_cache_size > 0) {
4438
+ // This violates this function's rules on when to set options. But we
4439
+ // have to do it because the case of unconfigured block cache in OPTIONS
4440
+ // file is indistinguishable (it is sanitized to 8MB by this point, not
4441
+ // nullptr), and our regression tests assume this will be the shared
4442
+ // block cache, even with OPTIONS file provided.
4317
4443
  table_options->block_cache = cache_;
4318
4444
  }
4319
- if (FLAGS_bloom_bits < 0) {
4320
- table_options->filter_policy = BlockBasedTableOptions().filter_policy;
4321
- } else if (FLAGS_bloom_bits == 0) {
4322
- table_options->filter_policy.reset();
4323
- } else if (FLAGS_use_block_based_filter) {
4324
- // Use back-door way of enabling obsolete block-based Bloom
4325
- Status s = FilterPolicy::CreateFromString(
4326
- ConfigOptions(),
4327
- "rocksdb.internal.DeprecatedBlockBasedBloomFilter:" +
4328
- ROCKSDB_NAMESPACE::ToString(FLAGS_bloom_bits),
4329
- &table_options->filter_policy);
4330
- if (!s.ok()) {
4331
- fprintf(stderr, "failure creating obsolete block-based filter: %s\n",
4332
- s.ToString().c_str());
4333
- exit(1);
4445
+ if (table_options->filter_policy == nullptr) {
4446
+ if (FLAGS_bloom_bits < 0) {
4447
+ table_options->filter_policy = BlockBasedTableOptions().filter_policy;
4448
+ } else if (FLAGS_bloom_bits == 0) {
4449
+ table_options->filter_policy.reset();
4450
+ } else if (FLAGS_use_block_based_filter) {
4451
+ // Use back-door way of enabling obsolete block-based Bloom
4452
+ Status s = FilterPolicy::CreateFromString(
4453
+ ConfigOptions(),
4454
+ "rocksdb.internal.DeprecatedBlockBasedBloomFilter:" +
4455
+ std::to_string(FLAGS_bloom_bits),
4456
+ &table_options->filter_policy);
4457
+ if (!s.ok()) {
4458
+ fprintf(stderr,
4459
+ "failure creating obsolete block-based filter: %s\n",
4460
+ s.ToString().c_str());
4461
+ exit(1);
4462
+ }
4463
+ } else {
4464
+ table_options->filter_policy.reset(
4465
+ FLAGS_use_ribbon_filter ? NewRibbonFilterPolicy(FLAGS_bloom_bits)
4466
+ : NewBloomFilterPolicy(FLAGS_bloom_bits));
4334
4467
  }
4335
- } else {
4336
- table_options->filter_policy.reset(
4337
- FLAGS_use_ribbon_filter ? NewRibbonFilterPolicy(FLAGS_bloom_bits)
4338
- : NewBloomFilterPolicy(FLAGS_bloom_bits));
4339
4468
  }
4340
4469
  }
4341
- if (FLAGS_row_cache_size) {
4342
- if (FLAGS_cache_numshardbits >= 1) {
4343
- options.row_cache =
4344
- NewLRUCache(FLAGS_row_cache_size, FLAGS_cache_numshardbits);
4345
- } else {
4346
- options.row_cache = NewLRUCache(FLAGS_row_cache_size);
4470
+
4471
+ if (options.row_cache == nullptr) {
4472
+ if (FLAGS_row_cache_size) {
4473
+ if (FLAGS_cache_numshardbits >= 1) {
4474
+ options.row_cache =
4475
+ NewLRUCache(FLAGS_row_cache_size, FLAGS_cache_numshardbits);
4476
+ } else {
4477
+ options.row_cache = NewLRUCache(FLAGS_row_cache_size);
4478
+ }
4347
4479
  }
4348
4480
  }
4481
+
4482
+ if (options.env == Env::Default()) {
4483
+ options.env = FLAGS_env;
4484
+ }
4349
4485
  if (FLAGS_enable_io_prio) {
4350
- FLAGS_env->LowerThreadPoolIOPriority(Env::LOW);
4351
- FLAGS_env->LowerThreadPoolIOPriority(Env::HIGH);
4486
+ options.env->LowerThreadPoolIOPriority(Env::LOW);
4487
+ options.env->LowerThreadPoolIOPriority(Env::HIGH);
4352
4488
  }
4353
4489
  if (FLAGS_enable_cpu_prio) {
4354
- FLAGS_env->LowerThreadPoolCPUPriority(Env::LOW);
4355
- FLAGS_env->LowerThreadPoolCPUPriority(Env::HIGH);
4490
+ options.env->LowerThreadPoolCPUPriority(Env::LOW);
4491
+ options.env->LowerThreadPoolCPUPriority(Env::HIGH);
4356
4492
  }
4357
- options.env = FLAGS_env;
4493
+
4358
4494
  if (FLAGS_sine_write_rate) {
4359
4495
  FLAGS_benchmark_write_rate_limit = static_cast<uint64_t>(SineRate(0));
4360
4496
  }
4361
4497
 
4362
- if (FLAGS_rate_limiter_bytes_per_sec > 0) {
4363
- options.rate_limiter.reset(NewGenericRateLimiter(
4364
- FLAGS_rate_limiter_bytes_per_sec, FLAGS_rate_limiter_refill_period_us,
4365
- 10 /* fairness */,
4366
- FLAGS_rate_limit_bg_reads ? RateLimiter::Mode::kReadsOnly
4367
- : RateLimiter::Mode::kWritesOnly,
4368
- FLAGS_rate_limiter_auto_tuned));
4498
+ if (options.rate_limiter == nullptr) {
4499
+ if (FLAGS_rate_limiter_bytes_per_sec > 0) {
4500
+ options.rate_limiter.reset(NewGenericRateLimiter(
4501
+ FLAGS_rate_limiter_bytes_per_sec,
4502
+ FLAGS_rate_limiter_refill_period_us, 10 /* fairness */,
4503
+ FLAGS_rate_limit_bg_reads ? RateLimiter::Mode::kReadsOnly
4504
+ : RateLimiter::Mode::kWritesOnly,
4505
+ FLAGS_rate_limiter_auto_tuned));
4506
+ }
4369
4507
  }
4370
4508
 
4371
4509
  options.listeners.emplace_back(listener_);
4372
4510
 
4373
- if (FLAGS_file_checksum) {
4374
- options.file_checksum_gen_factory.reset(
4375
- new FileChecksumGenCrc32cFactory());
4511
+ if (options.file_checksum_gen_factory == nullptr) {
4512
+ if (FLAGS_file_checksum) {
4513
+ options.file_checksum_gen_factory.reset(
4514
+ new FileChecksumGenCrc32cFactory());
4515
+ }
4376
4516
  }
4377
4517
 
4378
4518
  if (FLAGS_num_multi_db <= 1) {
@@ -4391,9 +4531,11 @@ class Benchmark {
4391
4531
  }
4392
4532
 
4393
4533
  // KeepFilter is a noop filter, this can be used to test compaction filter
4394
- if (FLAGS_use_keep_filter) {
4395
- options.compaction_filter = new KeepFilter();
4396
- fprintf(stdout, "A noop compaction filter is used\n");
4534
+ if (options.compaction_filter == nullptr) {
4535
+ if (FLAGS_use_keep_filter) {
4536
+ options.compaction_filter = new KeepFilter();
4537
+ fprintf(stdout, "A noop compaction filter is used\n");
4538
+ }
4397
4539
  }
4398
4540
 
4399
4541
  if (FLAGS_use_existing_keys) {
@@ -7900,14 +8042,27 @@ class Benchmark {
7900
8042
  flush_opt.wait = true;
7901
8043
 
7902
8044
  if (db_.db != nullptr) {
7903
- Status s = db_.db->Flush(flush_opt, db_.cfh);
8045
+ Status s;
8046
+ if (FLAGS_num_column_families > 1) {
8047
+ s = db_.db->Flush(flush_opt, db_.cfh);
8048
+ } else {
8049
+ s = db_.db->Flush(flush_opt, db_.db->DefaultColumnFamily());
8050
+ }
8051
+
7904
8052
  if (!s.ok()) {
7905
8053
  fprintf(stderr, "Flush failed: %s\n", s.ToString().c_str());
7906
8054
  exit(1);
7907
8055
  }
7908
8056
  } else {
7909
8057
  for (const auto& db_with_cfh : multi_dbs_) {
7910
- Status s = db_with_cfh.db->Flush(flush_opt, db_with_cfh.cfh);
8058
+ Status s;
8059
+ if (FLAGS_num_column_families > 1) {
8060
+ s = db_with_cfh.db->Flush(flush_opt, db_with_cfh.cfh);
8061
+ } else {
8062
+ s = db_with_cfh.db->Flush(flush_opt,
8063
+ db_with_cfh.db->DefaultColumnFamily());
8064
+ }
8065
+
7911
8066
  if (!s.ok()) {
7912
8067
  fprintf(stderr, "Flush failed: %s\n", s.ToString().c_str());
7913
8068
  exit(1);
@@ -7941,7 +8096,8 @@ class Benchmark {
7941
8096
  }
7942
8097
 
7943
8098
  std::unique_ptr<StatsHistoryIterator> shi;
7944
- Status s = db->GetStatsHistory(0, port::kMaxUint64, &shi);
8099
+ Status s =
8100
+ db->GetStatsHistory(0, std::numeric_limits<uint64_t>::max(), &shi);
7945
8101
  if (!s.ok()) {
7946
8102
  fprintf(stdout, "%s\n", s.ToString().c_str());
7947
8103
  return;
@@ -45,8 +45,8 @@ class SanityTest {
45
45
  return s;
46
46
  }
47
47
  for (int i = 0; i < 1000000; ++i) {
48
- std::string k = "key" + ToString(i);
49
- std::string v = "value" + ToString(i);
48
+ std::string k = "key" + std::to_string(i);
49
+ std::string v = "value" + std::to_string(i);
50
50
  s = db->Put(WriteOptions(), Slice(k), Slice(v));
51
51
  if (!s.ok()) {
52
52
  return s;
@@ -63,8 +63,8 @@ class SanityTest {
63
63
  return s;
64
64
  }
65
65
  for (int i = 0; i < 1000000; ++i) {
66
- std::string k = "key" + ToString(i);
67
- std::string v = "value" + ToString(i);
66
+ std::string k = "key" + std::to_string(i);
67
+ std::string v = "value" + std::to_string(i);
68
68
  std::string result;
69
69
  s = db->Get(ReadOptions(), Slice(k), &result);
70
70
  if (!s.ok()) {