@nxtedition/rocksdb 6.0.1 → 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 (310) hide show
  1. package/BUILDING.md +2 -2
  2. package/binding.cc +14 -17
  3. package/deps/rocksdb/build_version.cc +4 -10
  4. package/deps/rocksdb/rocksdb/CMakeLists.txt +17 -3
  5. package/deps/rocksdb/rocksdb/Makefile +57 -86
  6. package/deps/rocksdb/rocksdb/TARGETS +4 -0
  7. package/deps/rocksdb/rocksdb/cache/cache_test.cc +29 -17
  8. package/deps/rocksdb/rocksdb/cache/fast_lru_cache.cc +511 -0
  9. package/deps/rocksdb/rocksdb/cache/fast_lru_cache.h +299 -0
  10. package/deps/rocksdb/rocksdb/cache/lru_cache.cc +3 -0
  11. package/deps/rocksdb/rocksdb/cache/lru_cache.h +7 -0
  12. package/deps/rocksdb/rocksdb/common.mk +30 -0
  13. package/deps/rocksdb/rocksdb/crash_test.mk +3 -3
  14. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +1 -1
  15. package/deps/rocksdb/rocksdb/db/blob/blob_index.h +3 -3
  16. package/deps/rocksdb/rocksdb/db/blob/db_blob_index_test.cc +7 -7
  17. package/deps/rocksdb/rocksdb/db/builder.cc +11 -4
  18. package/deps/rocksdb/rocksdb/db/c.cc +45 -0
  19. package/deps/rocksdb/rocksdb/db/c_test.c +25 -2
  20. package/deps/rocksdb/rocksdb/db/column_family.cc +4 -3
  21. package/deps/rocksdb/rocksdb/db/column_family_test.cc +23 -22
  22. package/deps/rocksdb/rocksdb/db/compact_files_test.cc +11 -11
  23. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +2 -2
  24. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +36 -10
  25. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +4 -1
  26. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +3 -2
  27. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +25 -10
  28. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +6 -0
  29. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +3 -3
  30. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +69 -14
  31. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +7 -7
  32. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +1 -1
  33. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +21 -21
  34. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +1 -1
  35. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +135 -32
  36. package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +1 -1
  37. package/deps/rocksdb/rocksdb/db/convenience.cc +8 -6
  38. package/deps/rocksdb/rocksdb/db/corruption_test.cc +209 -38
  39. package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +2 -2
  40. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +2 -2
  41. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +28 -25
  42. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +85 -138
  43. package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +68 -3
  44. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +38 -13
  45. package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +1 -1
  46. package/deps/rocksdb/rocksdb/db/db_flush_test.cc +1 -1
  47. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +9 -8
  48. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +1 -1
  49. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +5 -4
  50. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +5 -4
  51. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +2 -2
  52. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +9 -3
  53. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +6 -3
  54. package/deps/rocksdb/rocksdb/db/db_info_dumper.cc +26 -18
  55. package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +8 -7
  56. package/deps/rocksdb/rocksdb/db/db_iter_test.cc +8 -8
  57. package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +6 -3
  58. package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +2 -2
  59. package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +6 -6
  60. package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +2 -2
  61. package/deps/rocksdb/rocksdb/db/db_options_test.cc +12 -12
  62. package/deps/rocksdb/rocksdb/db/db_properties_test.cc +16 -15
  63. package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +6 -4
  64. package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +15 -14
  65. package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +6 -6
  66. package/deps/rocksdb/rocksdb/db/db_sst_test.cc +68 -7
  67. package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +6 -5
  68. package/deps/rocksdb/rocksdb/db/db_test.cc +44 -42
  69. package/deps/rocksdb/rocksdb/db/db_test2.cc +23 -19
  70. package/deps/rocksdb/rocksdb/db/db_test_util.cc +95 -17
  71. package/deps/rocksdb/rocksdb/db/db_test_util.h +48 -0
  72. package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +1 -1
  73. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +7 -7
  74. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +4 -4
  75. package/deps/rocksdb/rocksdb/db/db_write_test.cc +6 -6
  76. package/deps/rocksdb/rocksdb/db/dbformat.h +2 -1
  77. package/deps/rocksdb/rocksdb/db/deletefile_test.cc +1 -1
  78. package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +8 -8
  79. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +34 -12
  80. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +3 -0
  81. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +7 -7
  82. package/deps/rocksdb/rocksdb/db/file_indexer.h +1 -4
  83. package/deps/rocksdb/rocksdb/db/flush_job.cc +18 -4
  84. package/deps/rocksdb/rocksdb/db/flush_job.h +4 -0
  85. package/deps/rocksdb/rocksdb/db/flush_job_test.cc +98 -30
  86. package/deps/rocksdb/rocksdb/db/forward_iterator.cc +1 -1
  87. package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +3 -0
  88. package/deps/rocksdb/rocksdb/db/internal_stats.cc +12 -12
  89. package/deps/rocksdb/rocksdb/db/listener_test.cc +4 -3
  90. package/deps/rocksdb/rocksdb/db/memtable.cc +2 -2
  91. package/deps/rocksdb/rocksdb/db/memtable_list.h +1 -1
  92. package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +37 -25
  93. package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +1 -1
  94. package/deps/rocksdb/rocksdb/db/perf_context_test.cc +18 -18
  95. package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +6 -6
  96. package/deps/rocksdb/rocksdb/db/prefix_test.cc +1 -1
  97. package/deps/rocksdb/rocksdb/db/repair.cc +1 -1
  98. package/deps/rocksdb/rocksdb/db/repair_test.cc +5 -5
  99. package/deps/rocksdb/rocksdb/db/snapshot_checker.h +1 -2
  100. package/deps/rocksdb/rocksdb/db/table_cache.cc +2 -4
  101. package/deps/rocksdb/rocksdb/db/version_builder.cc +1 -1
  102. package/deps/rocksdb/rocksdb/db/version_builder_test.cc +3 -5
  103. package/deps/rocksdb/rocksdb/db/version_edit.cc +2 -2
  104. package/deps/rocksdb/rocksdb/db/version_set.cc +2 -2
  105. package/deps/rocksdb/rocksdb/db/version_set.h +3 -3
  106. package/deps/rocksdb/rocksdb/db/wal_edit.h +2 -1
  107. package/deps/rocksdb/rocksdb/db/wal_manager.cc +2 -3
  108. package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +1 -1
  109. package/deps/rocksdb/rocksdb/db/write_batch.cc +178 -30
  110. package/deps/rocksdb/rocksdb/db/write_batch_test.cc +6 -6
  111. package/deps/rocksdb/rocksdb/db/write_controller.h +1 -1
  112. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +0 -2
  113. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +7 -6
  114. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compaction_filter.h +2 -1
  115. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +4 -3
  116. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +31 -6
  117. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.cc +4 -1
  118. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.cc +0 -10
  119. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +45 -42
  120. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +359 -275
  121. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +53 -3
  122. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +0 -12
  123. package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +13 -11
  124. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +276 -109
  125. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.h +63 -0
  126. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +45 -54
  127. package/deps/rocksdb/rocksdb/env/composite_env.cc +87 -14
  128. package/deps/rocksdb/rocksdb/env/env.cc +0 -60
  129. package/deps/rocksdb/rocksdb/env/env_encryption.cc +9 -0
  130. package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +1 -1
  131. package/deps/rocksdb/rocksdb/env/env_posix.cc +6 -5
  132. package/deps/rocksdb/rocksdb/env/env_test.cc +18 -5
  133. package/deps/rocksdb/rocksdb/env/fs_posix.cc +17 -12
  134. package/deps/rocksdb/rocksdb/env/io_posix.cc +39 -37
  135. package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +9 -9
  136. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +1 -1
  137. package/deps/rocksdb/rocksdb/file/file_util.h +2 -0
  138. package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +5 -2
  139. package/deps/rocksdb/rocksdb/file/sequence_file_reader.cc +7 -0
  140. package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +69 -45
  141. package/deps/rocksdb/rocksdb/file/writable_file_writer.h +3 -1
  142. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +35 -0
  143. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +5 -5
  144. package/deps/rocksdb/rocksdb/include/rocksdb/cleanable.h +59 -2
  145. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +1 -0
  146. package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +2 -1
  147. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +46 -44
  148. package/deps/rocksdb/rocksdb/include/rocksdb/env.h +1 -1
  149. package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +2 -4
  150. package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +3 -0
  151. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +28 -3
  152. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +91 -40
  153. package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +1 -2
  154. package/deps/rocksdb/rocksdb/include/rocksdb/unique_id.h +22 -13
  155. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/customizable_util.h +9 -0
  156. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +4 -0
  157. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/object_registry.h +25 -0
  158. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +189 -103
  159. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +14 -0
  160. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
  161. package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +18 -4
  162. package/deps/rocksdb/rocksdb/memory/arena.h +1 -1
  163. package/deps/rocksdb/rocksdb/memory/concurrent_arena.cc +1 -5
  164. package/deps/rocksdb/rocksdb/memory/concurrent_arena.h +1 -5
  165. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +6 -8
  166. package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +1 -1
  167. package/deps/rocksdb/rocksdb/memtable/write_buffer_manager.cc +1 -1
  168. package/deps/rocksdb/rocksdb/memtable/write_buffer_manager_test.cc +5 -3
  169. package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +266 -45
  170. package/deps/rocksdb/rocksdb/monitoring/histogram.cc +2 -1
  171. package/deps/rocksdb/rocksdb/monitoring/iostats_context.cc +1 -4
  172. package/deps/rocksdb/rocksdb/monitoring/iostats_context_imp.h +4 -4
  173. package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +2 -8
  174. package/deps/rocksdb/rocksdb/monitoring/perf_context_imp.h +2 -2
  175. package/deps/rocksdb/rocksdb/monitoring/perf_level.cc +1 -5
  176. package/deps/rocksdb/rocksdb/monitoring/perf_level_imp.h +1 -5
  177. package/deps/rocksdb/rocksdb/monitoring/persistent_stats_history.cc +2 -2
  178. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.cc +2 -1
  179. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.h +1 -1
  180. package/deps/rocksdb/rocksdb/monitoring/thread_status_util.cc +3 -3
  181. package/deps/rocksdb/rocksdb/monitoring/thread_status_util.h +2 -2
  182. package/deps/rocksdb/rocksdb/options/cf_options.cc +34 -38
  183. package/deps/rocksdb/rocksdb/options/configurable.cc +9 -27
  184. package/deps/rocksdb/rocksdb/options/configurable_test.cc +1 -1
  185. package/deps/rocksdb/rocksdb/options/customizable.cc +3 -1
  186. package/deps/rocksdb/rocksdb/options/customizable_test.cc +379 -318
  187. package/deps/rocksdb/rocksdb/options/db_options.cc +38 -17
  188. package/deps/rocksdb/rocksdb/options/db_options.h +1 -0
  189. package/deps/rocksdb/rocksdb/options/options_helper.cc +82 -39
  190. package/deps/rocksdb/rocksdb/options/options_parser.cc +10 -10
  191. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +6 -3
  192. package/deps/rocksdb/rocksdb/options/options_test.cc +115 -59
  193. package/deps/rocksdb/rocksdb/port/port_posix.h +0 -15
  194. package/deps/rocksdb/rocksdb/port/win/env_win.cc +5 -4
  195. package/deps/rocksdb/rocksdb/port/win/env_win.h +2 -2
  196. package/deps/rocksdb/rocksdb/port/win/port_win.h +0 -31
  197. package/deps/rocksdb/rocksdb/rocksdb.pc.in +11 -0
  198. package/deps/rocksdb/rocksdb/src.mk +2 -0
  199. package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +2 -1
  200. package/deps/rocksdb/rocksdb/table/block_based/block.cc +4 -2
  201. package/deps/rocksdb/rocksdb/table/block_based/block.h +21 -25
  202. package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.cc +3 -4
  203. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +14 -4
  204. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +52 -15
  205. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +1 -1
  206. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +85 -41
  207. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +42 -72
  208. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +7 -5
  209. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +2 -1
  210. package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +1 -1
  211. package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +33 -17
  212. package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +2 -1
  213. package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +2 -2
  214. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +2 -1
  215. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +2 -1
  216. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +2 -1
  217. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +6 -3
  218. package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +4 -4
  219. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +5 -5
  220. package/deps/rocksdb/rocksdb/table/cleanable_test.cc +113 -0
  221. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +1 -1
  222. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.h +1 -1
  223. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +1 -1
  224. package/deps/rocksdb/rocksdb/table/format.cc +22 -20
  225. package/deps/rocksdb/rocksdb/table/iterator.cc +1 -81
  226. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +2 -2
  227. package/deps/rocksdb/rocksdb/table/multiget_context.h +14 -11
  228. package/deps/rocksdb/rocksdb/table/persistent_cache_options.h +0 -3
  229. package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.cc +12 -1
  230. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +4 -4
  231. package/deps/rocksdb/rocksdb/table/sst_file_writer_collectors.h +1 -1
  232. package/deps/rocksdb/rocksdb/table/table_properties.cc +3 -5
  233. package/deps/rocksdb/rocksdb/table/table_test.cc +202 -78
  234. package/deps/rocksdb/rocksdb/table/unique_id.cc +57 -25
  235. package/deps/rocksdb/rocksdb/table/unique_id_impl.h +34 -4
  236. package/deps/rocksdb/rocksdb/test_util/testutil.cc +1 -1
  237. package/deps/rocksdb/rocksdb/test_util/testutil.h +11 -8
  238. package/deps/rocksdb/rocksdb/test_util/transaction_test_util.cc +8 -4
  239. package/deps/rocksdb/rocksdb/test_util/transaction_test_util.h +17 -0
  240. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.cc +11 -9
  241. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +3 -3
  242. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +254 -98
  243. package/deps/rocksdb/rocksdb/tools/db_sanity_test.cc +4 -4
  244. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +186 -42
  245. package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +75 -49
  246. package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +9 -8
  247. package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +4 -1
  248. package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +2 -2
  249. package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +17 -3
  250. package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +1 -1
  251. package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.h +1 -1
  252. package/deps/rocksdb/rocksdb/util/autovector_test.cc +4 -4
  253. package/deps/rocksdb/rocksdb/util/bloom_test.cc +14 -8
  254. package/deps/rocksdb/rocksdb/util/build_version.cc.in +5 -6
  255. package/deps/rocksdb/rocksdb/util/cleanable.cc +180 -0
  256. package/deps/rocksdb/rocksdb/util/comparator.cc +5 -3
  257. package/deps/rocksdb/rocksdb/util/compression.h +7 -7
  258. package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +148 -0
  259. package/deps/rocksdb/rocksdb/util/filelock_test.cc +2 -2
  260. package/deps/rocksdb/rocksdb/util/filter_bench.cc +12 -4
  261. package/deps/rocksdb/rocksdb/util/heap.h +5 -3
  262. package/deps/rocksdb/rocksdb/util/random.cc +1 -5
  263. package/deps/rocksdb/rocksdb/util/rate_limiter.cc +12 -9
  264. package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +1 -1
  265. package/deps/rocksdb/rocksdb/util/ribbon_alg.h +1 -1
  266. package/deps/rocksdb/rocksdb/util/ribbon_test.cc +2 -4
  267. package/deps/rocksdb/rocksdb/util/slice.cc +8 -9
  268. package/deps/rocksdb/rocksdb/util/string_util.cc +3 -2
  269. package/deps/rocksdb/rocksdb/util/string_util.h +0 -13
  270. package/deps/rocksdb/rocksdb/util/thread_local.cc +4 -23
  271. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +99 -22
  272. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_impl.h +7 -0
  273. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +102 -59
  274. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +38 -36
  275. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +2 -2
  276. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +28 -0
  277. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +3 -0
  278. package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +1 -1
  279. package/deps/rocksdb/rocksdb/utilities/object_registry.cc +71 -0
  280. package/deps/rocksdb/rocksdb/utilities/object_registry_test.cc +71 -0
  281. package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +1 -1
  282. package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache_test.cc +5 -5
  283. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.cc +3 -3
  284. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_tracker.cc +0 -13
  285. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +40 -0
  286. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.cc +10 -8
  287. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.h +4 -2
  288. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +17 -0
  289. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc +7 -7
  290. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +8 -1
  291. package/deps/rocksdb/rocksdb/utilities/transactions/snapshot_checker.cc +5 -1
  292. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +21 -15
  293. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.cc +2 -2
  294. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +69 -11
  295. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +22 -9
  296. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +26 -5
  297. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.h +17 -4
  298. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +19 -16
  299. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +7 -3
  300. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +3 -2
  301. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +2 -2
  302. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +2 -2
  303. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +6 -6
  304. package/deps/rocksdb/rocksdb.gyp +8 -2
  305. package/package.json +1 -1
  306. package/prebuilds/darwin-arm64/node.napi.node +0 -0
  307. package/prebuilds/linux-x64/node.napi.node +0 -0
  308. package/deps/rocksdb/rocksdb/python.mk +0 -9
  309. package/prebuilds/darwin-x64/node.napi.node +0 -0
  310. package/prebuilds/linux-arm64/node.napi.node +0 -0
package/BUILDING.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # LINUX
2
2
 
3
3
  - Run `./configure` in `deps/liburing`.
4
- - Install and build zstd with `CFLAGS="-O3 -fPIC" make -C lib libzstd.a` and copy to `/usr/lib/x86_64-linux-gnu/libzstd_pic.a`.
5
- - Put headers at `/usr/lib/x86_64-linux-gnu/include`.
4
+ - Clone and build zstd with `CFLAGS="-O3 -fPIC" make -C lib libzstd.a` and copy `libzstd.a` to `/usr/lib/x86_64-linux-gnu/libzstd_pic.a`.
5
+ - Put zstd headers at `/usr/lib/x86_64-linux-gnu/include`.
6
6
 
7
7
  # OSX
8
8
 
package/binding.cc CHANGED
@@ -200,16 +200,7 @@ static void Finalize(napi_env env, void* data, void* hint) {
200
200
  }
201
201
  }
202
202
 
203
- napi_status Convert(napi_env env, std::string s, bool asBuffer, napi_value& result) {
204
- if (asBuffer) {
205
- auto ptr = new std::string(std::move(s));
206
- return napi_create_external_buffer(env, ptr->size(), ptr->data(), Finalize<std::string>, ptr, &result);
207
- } else {
208
- return napi_create_string_utf8(env, s.data(), s.size(), &result);
209
- }
210
- }
211
-
212
- napi_status Convert(napi_env env, rocksdb::PinnableSlice s, bool asBuffer, napi_value& result) {
203
+ napi_status Convert(napi_env env, rocksdb::PinnableSlice&& s, bool asBuffer, napi_value& result) {
213
204
  if (asBuffer) {
214
205
  auto ptr = new rocksdb::PinnableSlice(std::move(s));
215
206
  return napi_create_external_buffer(env, ptr->size(), const_cast<char*>(ptr->data()),
@@ -735,7 +726,7 @@ struct GetWorker final : public Worker {
735
726
  options.fill_cache = fillCache_;
736
727
  options.snapshot = snapshot_.get();
737
728
 
738
- auto status = database.db_->Get(options, key_, &value_);
729
+ auto status = database.db_->Get(options, database.db_->DefaultColumnFamily(), key_, &value_);
739
730
 
740
731
  key_.clear();
741
732
  snapshot_ = nullptr;
@@ -757,7 +748,7 @@ struct GetWorker final : public Worker {
757
748
 
758
749
  private:
759
750
  std::string key_;
760
- std::string value_;
751
+ rocksdb::PinnableSlice value_;
761
752
  const bool asBuffer_;
762
753
  const bool fillCache_;
763
754
  std::shared_ptr<const rocksdb::Snapshot> snapshot_;
@@ -1080,18 +1071,24 @@ struct NextWorker final : public Worker {
1080
1071
  if (iterator_->keys_ && iterator_->values_) {
1081
1072
  auto k = iterator_->CurrentKey();
1082
1073
  auto v = iterator_->CurrentValue();
1083
- cache_.emplace_back(k.data(), k.size());
1084
- cache_.emplace_back(v.data(), v.size());
1074
+ cache_.push_back({});
1075
+ cache_.back().PinSelf(k);
1076
+ cache_.push_back({});
1077
+ cache_.back().PinSelf(v);
1085
1078
  bytesRead += k.size() + v.size();
1086
1079
  } else if (iterator_->keys_) {
1087
1080
  auto k = iterator_->CurrentKey();
1088
- cache_.emplace_back(k.data(), k.size());
1089
1081
  cache_.push_back({});
1082
+ cache_.back().PinSelf(k);
1083
+ cache_.push_back({});
1084
+ // no value
1090
1085
  bytesRead += k.size();
1091
1086
  } else if (iterator_->values_) {
1092
1087
  auto v = iterator_->CurrentValue();
1093
1088
  cache_.push_back({});
1094
- cache_.emplace_back(v.data(), v.size());
1089
+ // no key
1090
+ cache_.push_back({});
1091
+ cache_.back().PinSelf(v);
1095
1092
  bytesRead += v.size();
1096
1093
  }
1097
1094
 
@@ -1130,7 +1127,7 @@ struct NextWorker final : public Worker {
1130
1127
  }
1131
1128
 
1132
1129
  private:
1133
- std::vector<std::string> cache_;
1130
+ std::vector<rocksdb::PinnableSlice> cache_;
1134
1131
  Iterator* iterator_ = nullptr;
1135
1132
  uint32_t size_ = 0;
1136
1133
  bool finished_ = false;
@@ -12,12 +12,7 @@ static const std::string rocksdb_build_git_sha = "rocksdb_build_git_sha:None";
12
12
  static const std::string rocksdb_build_git_tag = "rocksdb_build_git_tag:None";
13
13
  static const std::string rocksdb_build_date = "rocksdb_build_date:None";
14
14
 
15
- #ifndef ROCKSDB_LITE
16
- extern "C" {
17
- } // extern "C"
18
-
19
15
  std::unordered_map<std::string, ROCKSDB_NAMESPACE::RegistrarFunc> ROCKSDB_NAMESPACE::ObjectRegistry::builtins_ = {};
20
- #endif //ROCKSDB_LITE
21
16
 
22
17
  namespace ROCKSDB_NAMESPACE {
23
18
  static void AddProperty(std::unordered_map<std::string, std::string> *props, const std::string& name) {
@@ -31,7 +26,7 @@ static void AddProperty(std::unordered_map<std::string, std::string> *props, con
31
26
  }
32
27
  }
33
28
  }
34
-
29
+
35
30
  static std::unordered_map<std::string, std::string>* LoadPropertiesSet() {
36
31
  auto * properties = new std::unordered_map<std::string, std::string>();
37
32
  AddProperty(properties, rocksdb_build_git_sha);
@@ -46,14 +41,14 @@ const std::unordered_map<std::string, std::string>& GetRocksBuildProperties() {
46
41
  }
47
42
 
48
43
  std::string GetRocksVersionAsString(bool with_patch) {
49
- std::string version = ToString(ROCKSDB_MAJOR) + "." + ToString(ROCKSDB_MINOR);
44
+ std::string version = std::to_string(ROCKSDB_MAJOR) + "." + std::to_string(ROCKSDB_MINOR);
50
45
  if (with_patch) {
51
- return version + "." + ToString(ROCKSDB_PATCH);
46
+ return version + "." + std::to_string(ROCKSDB_PATCH);
52
47
  } else {
53
48
  return version;
54
49
  }
55
50
  }
56
-
51
+
57
52
  std::string GetRocksBuildInfoAsString(const std::string& program, bool verbose) {
58
53
  std::string info = program + " (RocksDB) " + GetRocksVersionAsString(true);
59
54
  if (verbose) {
@@ -67,4 +62,3 @@ std::string GetRocksBuildInfoAsString(const std::string& program, bool verbose)
67
62
  return info;
68
63
  }
69
64
  } // namespace ROCKSDB_NAMESPACE
70
-
@@ -40,6 +40,8 @@ include(GoogleTest)
40
40
  get_rocksdb_version(rocksdb_VERSION)
41
41
  project(rocksdb
42
42
  VERSION ${rocksdb_VERSION}
43
+ DESCRIPTION "An embeddable persistent key-value store for fast storage"
44
+ HOMEPAGE_URL https://rocksdb.org/
43
45
  LANGUAGES CXX C ASM)
44
46
 
45
47
  if(POLICY CMP0042)
@@ -335,9 +337,6 @@ endif()
335
337
  # Reset the required flags
336
338
  set(CMAKE_REQUIRED_FLAGS ${OLD_CMAKE_REQUIRED_FLAGS})
337
339
 
338
- # thread_local is part of C++11 and later (TODO: clean up this define)
339
- add_definitions(-DROCKSDB_SUPPORT_THREAD_LOCAL)
340
-
341
340
  option(WITH_IOSTATS_CONTEXT "Enable IO stats context" ON)
342
341
  if (NOT WITH_IOSTATS_CONTEXT)
343
342
  add_definitions(-DNIOSTATS_CONTEXT)
@@ -596,6 +595,7 @@ set(SOURCES
596
595
  cache/cache_reservation_manager.cc
597
596
  cache/clock_cache.cc
598
597
  cache/compressed_secondary_cache.cc
598
+ cache/fast_lru_cache.cc
599
599
  cache/lru_cache.cc
600
600
  cache/sharded_cache.cc
601
601
  db/arena_wrapped_db_iter.cc
@@ -796,6 +796,7 @@ set(SOURCES
796
796
  trace_replay/trace_record_result.cc
797
797
  trace_replay/trace_record.cc
798
798
  trace_replay/trace_replay.cc
799
+ util/cleanable.cc
799
800
  util/coding.cc
800
801
  util/compaction_job_stats_impl.cc
801
802
  util/comparator.cc
@@ -1119,6 +1120,12 @@ if(NOT WIN32 OR ROCKSDB_INSTALL_ON_WINDOWS)
1119
1120
  COMPATIBILITY SameMajorVersion
1120
1121
  )
1121
1122
 
1123
+ configure_file(
1124
+ ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}.pc.in
1125
+ ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc
1126
+ @ONLY
1127
+ )
1128
+
1122
1129
  install(DIRECTORY include/rocksdb COMPONENT devel DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")
1123
1130
 
1124
1131
  install(DIRECTORY "${PROJECT_SOURCE_DIR}/cmake/modules" COMPONENT devel DESTINATION ${package_config_destination})
@@ -1157,6 +1164,13 @@ if(NOT WIN32 OR ROCKSDB_INSTALL_ON_WINDOWS)
1157
1164
  COMPONENT devel
1158
1165
  DESTINATION ${package_config_destination}
1159
1166
  )
1167
+
1168
+ install(
1169
+ FILES
1170
+ ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc
1171
+ COMPONENT devel
1172
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig
1173
+ )
1160
1174
  endif()
1161
1175
 
1162
1176
  option(WITH_ALL_TESTS "Build all test, rather than a small subset" ON)
@@ -8,7 +8,7 @@
8
8
 
9
9
  BASH_EXISTS := $(shell which bash)
10
10
  SHELL := $(shell which bash)
11
- include python.mk
11
+ include common.mk
12
12
 
13
13
  CLEAN_FILES = # deliberately empty, so we can append below.
14
14
  CFLAGS += ${EXTRA_CFLAGS}
@@ -340,6 +340,8 @@ endif
340
340
  # ASAN doesn't work well with jemalloc. If we're compiling with ASAN, we should use regular malloc.
341
341
  ifdef COMPILE_WITH_ASAN
342
342
  DISABLE_JEMALLOC=1
343
+ ASAN_OPTIONS?=detect_stack_use_after_return=1
344
+ export ASAN_OPTIONS
343
345
  EXEC_LDFLAGS += -fsanitize=address
344
346
  PLATFORM_CCFLAGS += -fsanitize=address
345
347
  PLATFORM_CXXFLAGS += -fsanitize=address
@@ -596,9 +598,6 @@ am__v_CCH_1 =
596
598
  check-headers: $(HEADER_OK_FILES)
597
599
 
598
600
  # options_settable_test doesn't pass with UBSAN as we use hack in the test
599
- ifdef COMPILE_WITH_UBSAN
600
- TESTS := $(shell echo $(TESTS) | sed 's/\boptions_settable_test\b//g')
601
- endif
602
601
  ifdef ASSERT_STATUS_CHECKED
603
602
  # TODO: finish fixing all tests to pass this check
604
603
  TESTS_FAILING_ASC = \
@@ -633,7 +632,6 @@ TESTS_PLATFORM_DEPENDENT := \
633
632
  db_basic_test \
634
633
  db_blob_basic_test \
635
634
  db_encryption_test \
636
- db_test2 \
637
635
  external_sst_file_basic_test \
638
636
  auto_roll_logger_test \
639
637
  bloom_test \
@@ -655,7 +653,6 @@ TESTS_PLATFORM_DEPENDENT := \
655
653
  rate_limiter_test \
656
654
  perf_context_test \
657
655
  iostats_context_test \
658
- db_wal_test \
659
656
 
660
657
  # Sort ROCKSDBTESTS_SUBSET for filtering, except db_test is special (expensive)
661
658
  # so is placed first (out-of-order)
@@ -796,17 +793,10 @@ $(SHARED4): $(LIB_OBJECTS)
796
793
  $(AM_V_CCLD) $(CXX) $(PLATFORM_SHARED_LDFLAGS)$(SHARED3) $(LIB_OBJECTS) $(LDFLAGS) -o $@
797
794
  endif # PLATFORM_SHARED_EXT
798
795
 
799
- .PHONY: blackbox_crash_test check clean coverage crash_test ldb_tests package \
800
- release tags tags0 valgrind_check whitebox_crash_test format static_lib shared_lib all \
801
- dbg rocksdbjavastatic rocksdbjava gen-pc install install-static install-shared uninstall \
802
- analyze tools tools_lib check-headers checkout_folly \
803
- blackbox_crash_test_with_atomic_flush whitebox_crash_test_with_atomic_flush \
804
- blackbox_crash_test_with_txn whitebox_crash_test_with_txn \
805
- blackbox_crash_test_with_best_efforts_recovery \
806
- blackbox_crash_test_with_ts whitebox_crash_test_with_ts \
807
- blackbox_crash_test_with_multiops_wc_txn \
808
- blackbox_crash_test_with_multiops_wp_txn
809
-
796
+ .PHONY: check clean coverage ldb_tests package dbg gen-pc build_size \
797
+ release tags tags0 valgrind_check format static_lib shared_lib all \
798
+ rocksdbjavastatic rocksdbjava install install-static install-shared \
799
+ uninstall analyze tools tools_lib check-headers checkout_folly
810
800
 
811
801
  all: $(LIBRARY) $(BENCHMARKS) tools tools_lib test_libs $(TESTS)
812
802
 
@@ -843,18 +833,6 @@ coverage: clean
843
833
  # Delete intermediate files
844
834
  $(FIND) . -type f \( -name "*.gcda" -o -name "*.gcno" \) -exec rm -f {} \;
845
835
 
846
- ifneq (,$(filter check parallel_check,$(MAKECMDGOALS)),)
847
- # Use /dev/shm if it has the sticky bit set (otherwise, /tmp),
848
- # and create a randomly-named rocksdb.XXXX directory therein.
849
- # We'll use that directory in the "make check" rules.
850
- ifeq ($(TMPD),)
851
- TMPDIR := $(shell echo $${TMPDIR:-/tmp})
852
- TMPD := $(shell f=/dev/shm; test -k $$f || f=$(TMPDIR); \
853
- perl -le 'use File::Temp "tempdir";' \
854
- -e 'print tempdir("'$$f'/rocksdb.XXXX", CLEANUP => 0)')
855
- endif
856
- endif
857
-
858
836
  # Run all tests in parallel, accumulating per-test logs in t/log-*.
859
837
  #
860
838
  # Each t/run-* file is a tiny generated bourne shell script that invokes one of
@@ -894,7 +872,7 @@ $(parallel_tests):
894
872
  TEST_SCRIPT=t/run-$$TEST_BINARY-$${TEST_NAME//\//-}; \
895
873
  printf '%s\n' \
896
874
  '#!/bin/sh' \
897
- "d=\$(TMPD)$$TEST_SCRIPT" \
875
+ "d=\$(TEST_TMPDIR)$$TEST_SCRIPT" \
898
876
  'mkdir -p $$d' \
899
877
  "TEST_TMPDIR=\$$d $(DRIVER) ./$$TEST_BINARY --gtest_filter=$$TEST_NAME" \
900
878
  > $$TEST_SCRIPT; \
@@ -954,7 +932,6 @@ endif
954
932
 
955
933
  .PHONY: check_0
956
934
  check_0:
957
- $(AM_V_GEN)export TEST_TMPDIR=$(TMPD); \
958
935
  printf '%s\n' '' \
959
936
  'To monitor subtest <duration,pass/fail,name>,' \
960
937
  ' run "make watch-log" in a separate window' ''; \
@@ -965,7 +942,8 @@ check_0:
965
942
  | $(prioritize_long_running_tests) \
966
943
  | grep -E '$(tests-regexp)' \
967
944
  | grep -E -v '$(EXCLUDE_TESTS_REGEX)' \
968
- | build_tools/gnu_parallel -j$(J) --plain --joblog=LOG --eta --gnu '{} $(parallel_redir)' ; \
945
+ | build_tools/gnu_parallel -j$(J) --plain --joblog=LOG --eta --gnu \
946
+ --tmpdir=$(TEST_TMPDIR) '{} $(parallel_redir)' ; \
969
947
  parallel_retcode=$$? ; \
970
948
  awk '{ if ($$7 != 0 || $$8 != 0) { if ($$7 == "Exitval") { h = $$0; } else { if (!f) print h; print; f = 1 } } } END { if(f) exit 1; }' < LOG ; \
971
949
  awk_retcode=$$?; \
@@ -976,7 +954,6 @@ valgrind-exclude-regexp = InlineSkipTest.ConcurrentInsert|TransactionStressTest.
976
954
  .PHONY: valgrind_check_0
977
955
  valgrind_check_0: test_log_prefix := valgrind_
978
956
  valgrind_check_0:
979
- $(AM_V_GEN)export TEST_TMPDIR=$(TMPD); \
980
957
  printf '%s\n' '' \
981
958
  'To monitor subtest <duration,pass/fail,name>,' \
982
959
  ' run "make watch-log" in a separate window' ''; \
@@ -988,10 +965,11 @@ valgrind_check_0:
988
965
  | grep -E '$(tests-regexp)' \
989
966
  | grep -E -v '$(valgrind-exclude-regexp)' \
990
967
  | build_tools/gnu_parallel -j$(J) --plain --joblog=LOG --eta --gnu \
991
- '(if [[ "{}" == "./"* ]] ; then $(DRIVER) {}; else {}; fi) \
968
+ --tmpdir=$(TEST_TMPDIR) \
969
+ '(if [[ "{}" == "./"* ]] ; then $(DRIVER) {}; else {}; fi) \
992
970
  $(parallel_redir)' \
993
971
 
994
- CLEAN_FILES += t LOG $(TMPD)
972
+ CLEAN_FILES += t LOG $(TEST_TMPDIR)
995
973
 
996
974
  # When running parallel "make check", you can monitor its progress
997
975
  # from another window.
@@ -1014,12 +992,12 @@ check: all
1014
992
  && (build_tools/gnu_parallel --gnu --help 2>/dev/null) | \
1015
993
  grep -q 'GNU Parallel'; \
1016
994
  then \
1017
- $(MAKE) T="$$t" TMPD=$(TMPD) check_0; \
995
+ $(MAKE) T="$$t" check_0; \
1018
996
  else \
1019
997
  for t in $(TESTS); do \
1020
998
  echo "===== Running $$t (`date`)"; ./$$t || exit 1; done; \
1021
999
  fi
1022
- rm -rf $(TMPD)
1000
+ rm -rf $(TEST_TMPDIR)
1023
1001
  ifneq ($(PLATFORM), OS_AIX)
1024
1002
  $(PYTHON) tools/check_all_python.py
1025
1003
  ifeq ($(filter -DROCKSDB_LITE,$(OPT)),)
@@ -1046,31 +1024,31 @@ ldb_tests: ldb
1046
1024
  include crash_test.mk
1047
1025
 
1048
1026
  asan_check: clean
1049
- ASAN_OPTIONS=detect_stack_use_after_return=1 COMPILE_WITH_ASAN=1 $(MAKE) check -j32
1027
+ COMPILE_WITH_ASAN=1 $(MAKE) check -j32
1050
1028
  $(MAKE) clean
1051
1029
 
1052
1030
  asan_crash_test: clean
1053
- ASAN_OPTIONS=detect_stack_use_after_return=1 COMPILE_WITH_ASAN=1 $(MAKE) crash_test
1031
+ COMPILE_WITH_ASAN=1 $(MAKE) crash_test
1054
1032
  $(MAKE) clean
1055
1033
 
1056
1034
  whitebox_asan_crash_test: clean
1057
- ASAN_OPTIONS=detect_stack_use_after_return=1 COMPILE_WITH_ASAN=1 $(MAKE) whitebox_crash_test
1035
+ COMPILE_WITH_ASAN=1 $(MAKE) whitebox_crash_test
1058
1036
  $(MAKE) clean
1059
1037
 
1060
1038
  blackbox_asan_crash_test: clean
1061
- ASAN_OPTIONS=detect_stack_use_after_return=1 COMPILE_WITH_ASAN=1 $(MAKE) blackbox_crash_test
1039
+ COMPILE_WITH_ASAN=1 $(MAKE) blackbox_crash_test
1062
1040
  $(MAKE) clean
1063
1041
 
1064
1042
  asan_crash_test_with_atomic_flush: clean
1065
- ASAN_OPTIONS=detect_stack_use_after_return=1 COMPILE_WITH_ASAN=1 $(MAKE) crash_test_with_atomic_flush
1043
+ COMPILE_WITH_ASAN=1 $(MAKE) crash_test_with_atomic_flush
1066
1044
  $(MAKE) clean
1067
1045
 
1068
1046
  asan_crash_test_with_txn: clean
1069
- ASAN_OPTIONS=detect_stack_use_after_return=1 COMPILE_WITH_ASAN=1 $(MAKE) crash_test_with_txn
1047
+ COMPILE_WITH_ASAN=1 $(MAKE) crash_test_with_txn
1070
1048
  $(MAKE) clean
1071
1049
 
1072
1050
  asan_crash_test_with_best_efforts_recovery: clean
1073
- ASAN_OPTIONS=detect_stack_use_after_return=1 COMPILE_WITH_ASAN=1 $(MAKE) crash_test_with_best_efforts_recovery
1051
+ COMPILE_WITH_ASAN=1 $(MAKE) crash_test_with_best_efforts_recovery
1074
1052
  $(MAKE) clean
1075
1053
 
1076
1054
  ubsan_check: clean
@@ -1116,11 +1094,11 @@ valgrind_test_some:
1116
1094
  valgrind_check: $(TESTS)
1117
1095
  $(MAKE) DRIVER="$(VALGRIND_VER) $(VALGRIND_OPTS)" gen_parallel_tests
1118
1096
  $(AM_V_GEN)if test "$(J)" != 1 \
1119
- && (build_tools/gnu_parallel --gnu --help 2>/dev/null) | \
1097
+ && (build_tools/gnu_parallel --gnu --help 2>/dev/null) | \
1120
1098
  grep -q 'GNU Parallel'; \
1121
1099
  then \
1122
- $(MAKE) TMPD=$(TMPD) \
1123
- DRIVER="$(VALGRIND_VER) $(VALGRIND_OPTS)" valgrind_check_0; \
1100
+ $(MAKE) \
1101
+ DRIVER="$(VALGRIND_VER) $(VALGRIND_OPTS)" valgrind_check_0; \
1124
1102
  else \
1125
1103
  for t in $(filter-out %skiplist_test options_settable_test,$(TESTS)); do \
1126
1104
  $(VALGRIND_VER) $(VALGRIND_OPTS) ./$$t; \
@@ -1140,27 +1118,6 @@ valgrind_check_some: $(ROCKSDBTESTS_SUBSET)
1140
1118
  fi; \
1141
1119
  done
1142
1120
 
1143
- ifneq ($(PAR_TEST),)
1144
- parloop:
1145
- ret_bad=0; \
1146
- for t in $(PAR_TEST); do \
1147
- echo "===== Running $$t in parallel $(NUM_PAR) (`date`)";\
1148
- if [ $(db_test) -eq 1 ]; then \
1149
- seq $(J) | v="$$t" build_tools/gnu_parallel --gnu --plain 's=$(TMPD)/rdb-{}; export TEST_TMPDIR=$$s;' \
1150
- 'timeout 2m ./db_test --gtest_filter=$$v >> $$s/log-{} 2>1'; \
1151
- else\
1152
- seq $(J) | v="./$$t" build_tools/gnu_parallel --gnu --plain 's=$(TMPD)/rdb-{};' \
1153
- 'export TEST_TMPDIR=$$s; timeout 10m $$v >> $$s/log-{} 2>1'; \
1154
- fi; \
1155
- ret_code=$$?; \
1156
- if [ $$ret_code -ne 0 ]; then \
1157
- ret_bad=$$ret_code; \
1158
- echo $$t exited with $$ret_code; \
1159
- fi; \
1160
- done; \
1161
- exit $$ret_bad;
1162
- endif
1163
-
1164
1121
  test_names = \
1165
1122
  ./db_test --gtest_list_tests \
1166
1123
  | perl -n \
@@ -1168,24 +1125,6 @@ test_names = \
1168
1125
  -e '/^(\s*)(\S+)/; !$$1 and do {$$p=$$2; break};' \
1169
1126
  -e 'print qq! $$p$$2!'
1170
1127
 
1171
- parallel_check: $(TESTS)
1172
- $(AM_V_GEN)if test "$(J)" > 1 \
1173
- && (build_tools/gnu_parallel --gnu --help 2>/dev/null) | \
1174
- grep -q 'GNU Parallel'; \
1175
- then \
1176
- echo Running in parallel $(J); \
1177
- else \
1178
- echo "Need to have GNU Parallel and J > 1"; exit 1; \
1179
- fi; \
1180
- ret_bad=0; \
1181
- echo $(J);\
1182
- echo Test Dir: $(TMPD); \
1183
- seq $(J) | build_tools/gnu_parallel --gnu --plain 's=$(TMPD)/rdb-{}; rm -rf $$s; mkdir $$s'; \
1184
- $(MAKE) PAR_TEST="$(shell $(test_names))" TMPD=$(TMPD) \
1185
- J=$(J) db_test=1 parloop; \
1186
- $(MAKE) PAR_TEST="$(filter-out db_test, $(TESTS))" \
1187
- TMPD=$(TMPD) J=$(J) db_test=0 parloop;
1188
-
1189
1128
  analyze: clean
1190
1129
  USE_CLANG=1 $(MAKE) analyze_incremental
1191
1130
 
@@ -2405,6 +2344,38 @@ checkout_folly:
2405
2344
  @# NOTE: this hack is not needed if using FBCODE compiler config
2406
2345
  perl -pi -e 's/^(#include <boost)/\/\/$$1/' third-party/folly/folly/functional/Invoke.h
2407
2346
 
2347
+ # ---------------------------------------------------------------------------
2348
+ # Build size testing
2349
+ # ---------------------------------------------------------------------------
2350
+
2351
+ REPORT_BUILD_STATISTIC?=echo STATISTIC:
2352
+
2353
+ build_size:
2354
+ # === normal build, static ===
2355
+ $(MAKE) clean
2356
+ $(MAKE) static_lib
2357
+ $(REPORT_BUILD_STATISTIC) rocksdb.build_size.static_lib $$(stat --printf="%s" librocksdb.a)
2358
+ strip librocksdb.a
2359
+ $(REPORT_BUILD_STATISTIC) rocksdb.build_size.static_lib_stripped $$(stat --printf="%s" librocksdb.a)
2360
+ # === normal build, shared ===
2361
+ $(MAKE) clean
2362
+ $(MAKE) shared_lib
2363
+ $(REPORT_BUILD_STATISTIC) rocksdb.build_size.shared_lib $$(stat --printf="%s" `readlink -f librocksdb.so`)
2364
+ strip `readlink -f librocksdb.so`
2365
+ $(REPORT_BUILD_STATISTIC) rocksdb.build_size.shared_lib_stripped $$(stat --printf="%s" `readlink -f librocksdb.so`)
2366
+ # === lite build, static ===
2367
+ $(MAKE) clean
2368
+ $(MAKE) LITE=1 static_lib
2369
+ $(REPORT_BUILD_STATISTIC) rocksdb.build_size.static_lib_lite $$(stat --printf="%s" librocksdb.a)
2370
+ strip librocksdb.a
2371
+ $(REPORT_BUILD_STATISTIC) rocksdb.build_size.static_lib_lite_stripped $$(stat --printf="%s" librocksdb.a)
2372
+ # === lite build, shared ===
2373
+ $(MAKE) clean
2374
+ $(MAKE) LITE=1 shared_lib
2375
+ $(REPORT_BUILD_STATISTIC) rocksdb.build_size.shared_lib_lite $$(stat --printf="%s" `readlink -f librocksdb.so`)
2376
+ strip `readlink -f librocksdb.so`
2377
+ $(REPORT_BUILD_STATISTIC) rocksdb.build_size.shared_lib_lite_stripped $$(stat --printf="%s" `readlink -f librocksdb.so`)
2378
+
2408
2379
  # ---------------------------------------------------------------------------
2409
2380
  # Platform-specific compilation
2410
2381
  # ---------------------------------------------------------------------------
@@ -15,6 +15,7 @@ cpp_library_wrapper(name="rocksdb_lib", srcs=[
15
15
  "cache/cache_reservation_manager.cc",
16
16
  "cache/clock_cache.cc",
17
17
  "cache/compressed_secondary_cache.cc",
18
+ "cache/fast_lru_cache.cc",
18
19
  "cache/lru_cache.cc",
19
20
  "cache/sharded_cache.cc",
20
21
  "db/arena_wrapped_db_iter.cc",
@@ -224,6 +225,7 @@ cpp_library_wrapper(name="rocksdb_lib", srcs=[
224
225
  "trace_replay/trace_record_result.cc",
225
226
  "trace_replay/trace_replay.cc",
226
227
  "util/build_version.cc",
228
+ "util/cleanable.cc",
227
229
  "util/coding.cc",
228
230
  "util/compaction_job_stats_impl.cc",
229
231
  "util/comparator.cc",
@@ -334,6 +336,7 @@ cpp_library_wrapper(name="rocksdb_whole_archive_lib", srcs=[
334
336
  "cache/cache_reservation_manager.cc",
335
337
  "cache/clock_cache.cc",
336
338
  "cache/compressed_secondary_cache.cc",
339
+ "cache/fast_lru_cache.cc",
337
340
  "cache/lru_cache.cc",
338
341
  "cache/sharded_cache.cc",
339
342
  "db/arena_wrapped_db_iter.cc",
@@ -543,6 +546,7 @@ cpp_library_wrapper(name="rocksdb_whole_archive_lib", srcs=[
543
546
  "trace_replay/trace_record_result.cc",
544
547
  "trace_replay/trace_replay.cc",
545
548
  "util/build_version.cc",
549
+ "util/cleanable.cc",
546
550
  "util/coding.cc",
547
551
  "util/compaction_job_stats_impl.cc",
548
552
  "util/comparator.cc",
@@ -14,7 +14,9 @@
14
14
  #include <iostream>
15
15
  #include <string>
16
16
  #include <vector>
17
+
17
18
  #include "cache/clock_cache.h"
19
+ #include "cache/fast_lru_cache.h"
18
20
  #include "cache/lru_cache.h"
19
21
  #include "test_util/testharness.h"
20
22
  #include "util/coding.h"
@@ -39,6 +41,7 @@ static int DecodeValue(void* v) {
39
41
 
40
42
  const std::string kLRU = "lru";
41
43
  const std::string kClock = "clock";
44
+ const std::string kFast = "fast";
42
45
 
43
46
  void dumbDeleter(const Slice& /*key*/, void* /*value*/) {}
44
47
 
@@ -83,6 +86,9 @@ class CacheTest : public testing::TestWithParam<std::string> {
83
86
  if (type == kClock) {
84
87
  return NewClockCache(capacity);
85
88
  }
89
+ if (type == kFast) {
90
+ return NewFastLRUCache(capacity);
91
+ }
86
92
  return nullptr;
87
93
  }
88
94
 
@@ -103,6 +109,10 @@ class CacheTest : public testing::TestWithParam<std::string> {
103
109
  return NewClockCache(capacity, num_shard_bits, strict_capacity_limit,
104
110
  charge_policy);
105
111
  }
112
+ if (type == kFast) {
113
+ return NewFastLRUCache(capacity, num_shard_bits, strict_capacity_limit,
114
+ charge_policy);
115
+ }
106
116
  return nullptr;
107
117
  }
108
118
 
@@ -183,7 +193,7 @@ TEST_P(CacheTest, UsageTest) {
183
193
 
184
194
  // make sure the cache will be overloaded
185
195
  for (uint64_t i = 1; i < kCapacity; ++i) {
186
- auto key = ToString(i);
196
+ auto key = std::to_string(i);
187
197
  ASSERT_OK(cache->Insert(key, reinterpret_cast<void*>(value), key.size() + 5,
188
198
  dumbDeleter));
189
199
  ASSERT_OK(precise_cache->Insert(key, reinterpret_cast<void*>(value),
@@ -255,7 +265,7 @@ TEST_P(CacheTest, PinnedUsageTest) {
255
265
 
256
266
  // check that overloading the cache does not change the pinned usage
257
267
  for (uint64_t i = 1; i < 2 * kCapacity; ++i) {
258
- auto key = ToString(i);
268
+ auto key = std::to_string(i);
259
269
  ASSERT_OK(cache->Insert(key, reinterpret_cast<void*>(value), key.size() + 5,
260
270
  dumbDeleter));
261
271
  ASSERT_OK(precise_cache->Insert(key, reinterpret_cast<void*>(value),
@@ -575,7 +585,7 @@ TEST_P(CacheTest, SetCapacity) {
575
585
  std::vector<Cache::Handle*> handles(10);
576
586
  // Insert 5 entries, but not releasing.
577
587
  for (size_t i = 0; i < 5; i++) {
578
- std::string key = ToString(i+1);
588
+ std::string key = std::to_string(i + 1);
579
589
  Status s = cache->Insert(key, new Value(i + 1), 1, &deleter, &handles[i]);
580
590
  ASSERT_TRUE(s.ok());
581
591
  }
@@ -590,7 +600,7 @@ TEST_P(CacheTest, SetCapacity) {
590
600
  // then decrease capacity to 7, final capacity should be 7
591
601
  // and usage should be 7
592
602
  for (size_t i = 5; i < 10; i++) {
593
- std::string key = ToString(i+1);
603
+ std::string key = std::to_string(i + 1);
594
604
  Status s = cache->Insert(key, new Value(i + 1), 1, &deleter, &handles[i]);
595
605
  ASSERT_TRUE(s.ok());
596
606
  }
@@ -621,7 +631,7 @@ TEST_P(LRUCacheTest, SetStrictCapacityLimit) {
621
631
  std::vector<Cache::Handle*> handles(10);
622
632
  Status s;
623
633
  for (size_t i = 0; i < 10; i++) {
624
- std::string key = ToString(i + 1);
634
+ std::string key = std::to_string(i + 1);
625
635
  s = cache->Insert(key, new Value(i + 1), 1, &deleter, &handles[i]);
626
636
  ASSERT_OK(s);
627
637
  ASSERT_NE(nullptr, handles[i]);
@@ -645,7 +655,7 @@ TEST_P(LRUCacheTest, SetStrictCapacityLimit) {
645
655
  // test3: init with flag being true.
646
656
  std::shared_ptr<Cache> cache2 = NewCache(5, 0, true);
647
657
  for (size_t i = 0; i < 5; i++) {
648
- std::string key = ToString(i + 1);
658
+ std::string key = std::to_string(i + 1);
649
659
  s = cache2->Insert(key, new Value(i + 1), 1, &deleter, &handles[i]);
650
660
  ASSERT_OK(s);
651
661
  ASSERT_NE(nullptr, handles[i]);
@@ -675,14 +685,14 @@ TEST_P(CacheTest, OverCapacity) {
675
685
 
676
686
  // Insert n+1 entries, but not releasing.
677
687
  for (size_t i = 0; i < n + 1; i++) {
678
- std::string key = ToString(i+1);
688
+ std::string key = std::to_string(i + 1);
679
689
  Status s = cache->Insert(key, new Value(i + 1), 1, &deleter, &handles[i]);
680
690
  ASSERT_TRUE(s.ok());
681
691
  }
682
692
 
683
693
  // Guess what's in the cache now?
684
694
  for (size_t i = 0; i < n + 1; i++) {
685
- std::string key = ToString(i+1);
695
+ std::string key = std::to_string(i + 1);
686
696
  auto h = cache->Lookup(key);
687
697
  ASSERT_TRUE(h != nullptr);
688
698
  if (h) cache->Release(h);
@@ -703,7 +713,7 @@ TEST_P(CacheTest, OverCapacity) {
703
713
  // This is consistent with the LRU policy since the element 0
704
714
  // was released first
705
715
  for (size_t i = 0; i < n + 1; i++) {
706
- std::string key = ToString(i+1);
716
+ std::string key = std::to_string(i + 1);
707
717
  auto h = cache->Lookup(key);
708
718
  if (h) {
709
719
  ASSERT_NE(i, 0U);
@@ -744,9 +754,9 @@ TEST_P(CacheTest, ApplyToAllEntriesTest) {
744
754
  std::vector<std::string> callback_state;
745
755
  const auto callback = [&](const Slice& key, void* value, size_t charge,
746
756
  Cache::DeleterFn deleter) {
747
- callback_state.push_back(ToString(DecodeKey(key)) + "," +
748
- ToString(DecodeValue(value)) + "," +
749
- ToString(charge));
757
+ callback_state.push_back(std::to_string(DecodeKey(key)) + "," +
758
+ std::to_string(DecodeValue(value)) + "," +
759
+ std::to_string(charge));
750
760
  assert(deleter == &CacheTest::Deleter);
751
761
  };
752
762
 
@@ -755,8 +765,8 @@ TEST_P(CacheTest, ApplyToAllEntriesTest) {
755
765
 
756
766
  for (int i = 0; i < 10; ++i) {
757
767
  Insert(i, i * 2, i + 1);
758
- inserted.push_back(ToString(i) + "," + ToString(i * 2) + "," +
759
- ToString(i + 1));
768
+ inserted.push_back(std::to_string(i) + "," + std::to_string(i * 2) + "," +
769
+ std::to_string(i + 1));
760
770
  }
761
771
  cache_->ApplyToAllEntries(callback, /*opts*/ {});
762
772
 
@@ -838,11 +848,13 @@ TEST_P(CacheTest, GetChargeAndDeleter) {
838
848
  std::shared_ptr<Cache> (*new_clock_cache_func)(
839
849
  size_t, int, bool, CacheMetadataChargePolicy) = NewClockCache;
840
850
  INSTANTIATE_TEST_CASE_P(CacheTestInstance, CacheTest,
841
- testing::Values(kLRU, kClock));
851
+ testing::Values(kLRU, kClock, kFast));
842
852
  #else
843
- INSTANTIATE_TEST_CASE_P(CacheTestInstance, CacheTest, testing::Values(kLRU));
853
+ INSTANTIATE_TEST_CASE_P(CacheTestInstance, CacheTest,
854
+ testing::Values(kLRU, kFast));
844
855
  #endif // SUPPORT_CLOCK_CACHE
845
- INSTANTIATE_TEST_CASE_P(CacheTestInstance, LRUCacheTest, testing::Values(kLRU));
856
+ INSTANTIATE_TEST_CASE_P(CacheTestInstance, LRUCacheTest,
857
+ testing::Values(kLRU, kFast));
846
858
 
847
859
  } // namespace ROCKSDB_NAMESPACE
848
860