@nxtedition/rocksdb 7.1.14 → 7.1.16

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 (223) hide show
  1. package/binding.cc +1 -0
  2. package/deps/rocksdb/rocksdb/CMakeLists.txt +72 -18
  3. package/deps/rocksdb/rocksdb/Makefile +91 -11
  4. package/deps/rocksdb/rocksdb/TARGETS +8 -4
  5. package/deps/rocksdb/rocksdb/cache/cache.cc +5 -0
  6. package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +13 -8
  7. package/deps/rocksdb/rocksdb/cache/cache_entry_roles.cc +2 -0
  8. package/deps/rocksdb/rocksdb/cache/cache_test.cc +116 -57
  9. package/deps/rocksdb/rocksdb/cache/clock_cache.cc +958 -459
  10. package/deps/rocksdb/rocksdb/cache/clock_cache.h +407 -622
  11. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +104 -40
  12. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +23 -8
  13. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +350 -184
  14. package/deps/rocksdb/rocksdb/cache/fast_lru_cache.cc +12 -2
  15. package/deps/rocksdb/rocksdb/cache/fast_lru_cache.h +2 -0
  16. package/deps/rocksdb/rocksdb/cache/lru_cache.cc +130 -43
  17. package/deps/rocksdb/rocksdb/cache/lru_cache.h +24 -2
  18. package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +423 -98
  19. package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +19 -2
  20. package/deps/rocksdb/rocksdb/cache/sharded_cache.h +10 -7
  21. package/deps/rocksdb/rocksdb/crash_test.mk +2 -2
  22. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +46 -26
  23. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +9 -3
  24. package/deps/rocksdb/rocksdb/db/blob/blob_contents.cc +90 -0
  25. package/deps/rocksdb/rocksdb/db/blob/blob_contents.h +56 -0
  26. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +23 -10
  27. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +64 -59
  28. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +11 -8
  29. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +92 -62
  30. package/deps/rocksdb/rocksdb/db/blob/blob_source.cc +159 -136
  31. package/deps/rocksdb/rocksdb/db/blob/blob_source.h +13 -13
  32. package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +129 -57
  33. package/deps/rocksdb/rocksdb/db/blob/db_blob_basic_test.cc +81 -3
  34. package/deps/rocksdb/rocksdb/db/c.cc +29 -0
  35. package/deps/rocksdb/rocksdb/db/column_family.cc +10 -1
  36. package/deps/rocksdb/rocksdb/db/column_family_test.cc +21 -0
  37. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +42 -36
  38. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +344 -102
  39. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +163 -28
  40. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +52 -17
  41. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +35 -30
  42. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +8 -3
  43. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +167 -11
  44. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +8 -8
  45. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +10 -13
  46. package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.cc +0 -117
  47. package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +6 -49
  48. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +29 -4
  49. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +18 -11
  50. package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +4 -10
  51. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +1 -1
  52. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +12 -0
  53. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +144 -93
  54. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +28 -32
  55. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +1 -1
  56. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +5 -9
  57. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +2 -33
  58. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +3 -5
  59. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +11 -0
  60. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +1 -2
  61. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +8 -0
  62. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +2 -1
  63. package/deps/rocksdb/rocksdb/db/db_iter.cc +76 -138
  64. package/deps/rocksdb/rocksdb/db/db_iter.h +26 -23
  65. package/deps/rocksdb/rocksdb/db/db_properties_test.cc +1 -1
  66. package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +931 -0
  67. package/deps/rocksdb/rocksdb/db/db_sst_test.cc +2 -2
  68. package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +6 -0
  69. package/deps/rocksdb/rocksdb/db/db_test2.cc +44 -22
  70. package/deps/rocksdb/rocksdb/db/db_test_util.cc +6 -14
  71. package/deps/rocksdb/rocksdb/db/db_with_timestamp_compaction_test.cc +155 -0
  72. package/deps/rocksdb/rocksdb/db/db_write_test.cc +45 -0
  73. package/deps/rocksdb/rocksdb/db/dbformat.h +2 -1
  74. package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +8 -0
  75. package/deps/rocksdb/rocksdb/db/experimental.cc +5 -1
  76. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +24 -12
  77. package/deps/rocksdb/rocksdb/db/internal_stats.cc +7 -1
  78. package/deps/rocksdb/rocksdb/db/internal_stats.h +3 -0
  79. package/deps/rocksdb/rocksdb/db/memtable.cc +79 -18
  80. package/deps/rocksdb/rocksdb/db/memtable.h +5 -0
  81. package/deps/rocksdb/rocksdb/db/memtable_list.cc +26 -4
  82. package/deps/rocksdb/rocksdb/db/memtable_list.h +2 -1
  83. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.cc +113 -0
  84. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.h +110 -0
  85. package/deps/rocksdb/rocksdb/db/{periodic_work_scheduler_test.cc → periodic_task_scheduler_test.cc} +33 -39
  86. package/deps/rocksdb/rocksdb/db/range_del_aggregator.cc +12 -20
  87. package/deps/rocksdb/rocksdb/db/range_del_aggregator.h +6 -5
  88. package/deps/rocksdb/rocksdb/db/range_del_aggregator_test.cc +12 -8
  89. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.cc +20 -5
  90. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +14 -0
  91. package/deps/rocksdb/rocksdb/db/repair.cc +17 -8
  92. package/deps/rocksdb/rocksdb/db/repair_test.cc +2 -1
  93. package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +49 -66
  94. package/deps/rocksdb/rocksdb/db/table_cache.cc +92 -63
  95. package/deps/rocksdb/rocksdb/db/table_cache.h +16 -9
  96. package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +2 -2
  97. package/deps/rocksdb/rocksdb/db/table_properties_collector.cc +2 -2
  98. package/deps/rocksdb/rocksdb/db/table_properties_collector.h +3 -3
  99. package/deps/rocksdb/rocksdb/db/table_properties_collector_test.cc +1 -1
  100. package/deps/rocksdb/rocksdb/db/version_builder.cc +1 -1
  101. package/deps/rocksdb/rocksdb/db/version_edit.h +1 -2
  102. package/deps/rocksdb/rocksdb/db/version_set.cc +379 -145
  103. package/deps/rocksdb/rocksdb/db/version_set.h +26 -24
  104. package/deps/rocksdb/rocksdb/db/version_set_test.cc +9 -9
  105. package/deps/rocksdb/rocksdb/db/version_util.h +3 -2
  106. package/deps/rocksdb/rocksdb/db/wide/db_wide_basic_test.cc +10 -2
  107. package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.cc +2 -0
  108. package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +5 -8
  109. package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +5 -8
  110. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress.cc +2 -0
  111. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +71 -0
  112. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +14 -0
  113. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +23 -0
  114. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +26 -1
  115. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +105 -34
  116. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +16 -8
  117. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +6 -0
  118. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +4 -8
  119. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.h +4 -8
  120. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +282 -25
  121. package/deps/rocksdb/rocksdb/env/fs_posix.cc +6 -4
  122. package/deps/rocksdb/rocksdb/env/io_posix.cc +3 -1
  123. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +367 -177
  124. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +144 -56
  125. package/deps/rocksdb/rocksdb/file/filename.cc +3 -3
  126. package/deps/rocksdb/rocksdb/file/filename.h +4 -2
  127. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +415 -0
  128. package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +2 -0
  129. package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +36 -45
  130. package/deps/rocksdb/rocksdb/file/writable_file_writer.h +21 -3
  131. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +11 -11
  132. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +15 -1
  133. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +163 -68
  134. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +26 -12
  135. package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +23 -5
  136. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +21 -17
  137. package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +17 -0
  138. package/deps/rocksdb/rocksdb/include/rocksdb/persistent_cache.h +3 -3
  139. package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +17 -6
  140. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +3 -0
  141. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +20 -0
  142. package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +3 -3
  143. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/option_change_migration.h +4 -0
  144. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +1 -1
  145. package/deps/rocksdb/rocksdb/include/rocksdb/wide_columns.h +3 -0
  146. package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +2 -1
  147. package/deps/rocksdb/rocksdb/include/rocksdb/write_batch_base.h +2 -1
  148. package/deps/rocksdb/rocksdb/logging/env_logger.h +2 -2
  149. package/deps/rocksdb/rocksdb/monitoring/histogram.cc +4 -2
  150. package/deps/rocksdb/rocksdb/monitoring/histogram.h +2 -0
  151. package/deps/rocksdb/rocksdb/monitoring/histogram_test.cc +15 -1
  152. package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.cc +17 -0
  153. package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.h +14 -3
  154. package/deps/rocksdb/rocksdb/monitoring/iostats_context_imp.h +3 -0
  155. package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +50 -0
  156. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +1 -0
  157. package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +31 -32
  158. package/deps/rocksdb/rocksdb/options/customizable_test.cc +4 -1
  159. package/deps/rocksdb/rocksdb/options/options.cc +2 -2
  160. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +2 -1
  161. package/deps/rocksdb/rocksdb/port/jemalloc_helper.h +1 -0
  162. package/deps/rocksdb/rocksdb/src.mk +4 -2
  163. package/deps/rocksdb/rocksdb/table/block_based/block.h +9 -8
  164. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +110 -99
  165. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +12 -10
  166. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +11 -2
  167. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +138 -83
  168. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +25 -24
  169. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +31 -30
  170. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +16 -13
  171. package/deps/rocksdb/rocksdb/table/block_based/cachable_entry.h +4 -4
  172. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +3 -3
  173. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +3 -3
  174. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +17 -19
  175. package/deps/rocksdb/rocksdb/table/block_fetcher.h +1 -1
  176. package/deps/rocksdb/rocksdb/table/format.cc +26 -29
  177. package/deps/rocksdb/rocksdb/table/format.h +44 -26
  178. package/deps/rocksdb/rocksdb/table/get_context.cc +17 -12
  179. package/deps/rocksdb/rocksdb/table/internal_iterator.h +7 -0
  180. package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +4 -0
  181. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +950 -104
  182. package/deps/rocksdb/rocksdb/table/merging_iterator.h +28 -1
  183. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +3 -2
  184. package/deps/rocksdb/rocksdb/table/meta_blocks.h +1 -1
  185. package/deps/rocksdb/rocksdb/table/persistent_cache_helper.cc +10 -9
  186. package/deps/rocksdb/rocksdb/table/persistent_cache_helper.h +22 -20
  187. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +1 -1
  188. package/deps/rocksdb/rocksdb/table/sst_file_writer_collectors.h +1 -1
  189. package/deps/rocksdb/rocksdb/table/table_builder.h +9 -21
  190. package/deps/rocksdb/rocksdb/table/table_test.cc +12 -12
  191. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_pysim_test.py +4 -4
  192. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_plot.py +1 -0
  193. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +116 -34
  194. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +6 -1
  195. package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +1 -1
  196. package/deps/rocksdb/rocksdb/util/autovector.h +12 -0
  197. package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +3 -2
  198. package/deps/rocksdb/rocksdb/util/stderr_logger.cc +30 -0
  199. package/deps/rocksdb/rocksdb/util/stderr_logger.h +5 -18
  200. package/deps/rocksdb/rocksdb/util/timer.h +2 -3
  201. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +9 -2
  202. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +1 -1
  203. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +1 -1
  204. package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +34 -53
  205. package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.h +9 -14
  206. package/deps/rocksdb/rocksdb/utilities/debug.cc +2 -4
  207. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +4 -0
  208. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +1 -1
  209. package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.cc +4 -3
  210. package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.h +3 -1
  211. package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration.cc +26 -8
  212. package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration_test.cc +114 -16
  213. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.cc +1 -1
  214. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +59 -0
  215. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +3 -0
  216. package/deps/rocksdb/rocksdb/utilities/transactions/timestamped_snapshot_test.cc +39 -0
  217. package/deps/rocksdb/rocksdb.gyp +0 -1
  218. package/index.js +6 -10
  219. package/package.json +1 -1
  220. package/prebuilds/darwin-arm64/node.napi.node +0 -0
  221. package/prebuilds/linux-x64/node.napi.node +0 -0
  222. package/deps/rocksdb/rocksdb/db/periodic_work_scheduler.cc +0 -168
  223. package/deps/rocksdb/rocksdb/db/periodic_work_scheduler.h +0 -90
package/binding.cc CHANGED
@@ -958,6 +958,7 @@ NAPI_METHOD(db_get_many) {
958
958
  readOptions.snapshot = snapshot.get();
959
959
  readOptions.async_io = true;
960
960
  readOptions.ignore_range_deletions = ignoreRangeDeletions;
961
+ readOptions.optimize_multiget_for_io = true;
961
962
 
962
963
  const auto size = keys.size();
963
964
 
@@ -74,6 +74,7 @@ option(WITH_WINDOWS_UTF8_FILENAMES "use UTF8 as characterset for opening files,
74
74
  if (WITH_WINDOWS_UTF8_FILENAMES)
75
75
  add_definitions(-DROCKSDB_WINDOWS_UTF8_FILENAMES)
76
76
  endif()
77
+ option(ROCKSDB_BUILD_SHARED "Build shared versions of the RocksDB libraries" ON)
77
78
 
78
79
  if ($ENV{CIRCLECI})
79
80
  message(STATUS "Build for CircieCI env, a few tests may be disabled")
@@ -584,10 +585,61 @@ endif()
584
585
 
585
586
  include_directories(${PROJECT_SOURCE_DIR})
586
587
  include_directories(${PROJECT_SOURCE_DIR}/include)
588
+
589
+ if(USE_COROUTINES)
590
+ if(USE_FOLLY OR USE_FOLLY_LITE)
591
+ message(FATAL_ERROR "Please specify exactly one of USE_COROUTINES,"
592
+ " USE_FOLLY, and USE_FOLLY_LITE")
593
+ endif()
594
+ set(CMAKE_CXX_STANDARD 20)
595
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fcoroutines -Wno-maybe-uninitialized")
596
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated")
597
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-redundant-move")
598
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-invalid-memory-model")
599
+ add_compile_definitions(USE_COROUTINES)
600
+ set(USE_FOLLY 1)
601
+ endif()
602
+
587
603
  if(USE_FOLLY)
588
- include_directories(${PROJECT_SOURCE_DIR}/third-party/folly)
589
- add_definitions(-DUSE_FOLLY -DFOLLY_NO_CONFIG)
590
- list(APPEND THIRDPARTY_LIBS glog)
604
+ if(USE_FOLLY_LITE)
605
+ message(FATAL_ERROR "Please specify one of USE_FOLLY or USE_FOLLY_LITE")
606
+ endif()
607
+ if(ROCKSDB_BUILD_SHARED)
608
+ message(FATAL_ERROR "Cannot build RocksDB shared library with folly")
609
+ endif()
610
+ set(ROCKSDB_BUILD_SHARED OFF)
611
+ set(GFLAGS_SHARED FALSE)
612
+ find_package(folly)
613
+ # If cmake could not find the folly-config.cmake file, fall back
614
+ # to looking in third-party/folly for folly and its dependencies
615
+ if(NOT FOLLY_LIBRARIES)
616
+ exec_program(python3 ${PROJECT_SOURCE_DIR}/third-party/folly ARGS
617
+ build/fbcode_builder/getdeps.py show-inst-dir OUTPUT_VARIABLE
618
+ FOLLY_INST_PATH)
619
+ exec_program(ls ARGS -d ${FOLLY_INST_PATH}/../boost* OUTPUT_VARIABLE
620
+ BOOST_INST_PATH)
621
+ exec_program(ls ARGS -d ${FOLLY_INST_PATH}/../fmt* OUTPUT_VARIABLE
622
+ FMT_INST_PATH)
623
+ exec_program(ls ARGS -d ${FOLLY_INST_PATH}/../gflags* OUTPUT_VARIABLE
624
+ GFLAGS_INST_PATH)
625
+ set(Boost_DIR ${BOOST_INST_PATH}/lib/cmake/Boost-1.78.0)
626
+ if(EXISTS ${FMT_INST_PATH}/lib64)
627
+ set(fmt_DIR ${FMT_INST_PATH}/lib64/cmake/fmt)
628
+ else()
629
+ set(fmt_DIR ${FMT_INST_PATH}/lib/cmake/fmt)
630
+ endif()
631
+ set(gflags_DIR ${GFLAGS_INST_PATH}/lib/cmake/gflags)
632
+
633
+ exec_program(sed ARGS -i 's/gflags_shared//g'
634
+ ${FOLLY_INST_PATH}/lib/cmake/folly/folly-targets.cmake)
635
+
636
+ include(${FOLLY_INST_PATH}/lib/cmake/folly/folly-config.cmake)
637
+ endif()
638
+
639
+ add_compile_definitions(USE_FOLLY FOLLY_NO_CONFIG HAVE_CXX11_ATOMIC)
640
+ list(APPEND THIRDPARTY_LIBS Folly::folly)
641
+ set(FOLLY_LIBS Folly::folly)
642
+ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--copy-dt-needed-entries")
591
643
  endif()
592
644
  find_package(Threads REQUIRED)
593
645
 
@@ -605,6 +657,7 @@ set(SOURCES
605
657
  cache/lru_cache.cc
606
658
  cache/sharded_cache.cc
607
659
  db/arena_wrapped_db_iter.cc
660
+ db/blob/blob_contents.cc
608
661
  db/blob/blob_fetcher.cc
609
662
  db/blob/blob_file_addition.cc
610
663
  db/blob/blob_file_builder.cc
@@ -667,7 +720,7 @@ set(SOURCES
667
720
  db/merge_helper.cc
668
721
  db/merge_operator.cc
669
722
  db/output_validator.cc
670
- db/periodic_work_scheduler.cc
723
+ db/periodic_task_scheduler.cc
671
724
  db/range_del_aggregator.cc
672
725
  db/range_tombstone_fragmenter.cc
673
726
  db/repair.cc
@@ -827,6 +880,7 @@ set(SOURCES
827
880
  util/slice.cc
828
881
  util/file_checksum_helper.cc
829
882
  util/status.cc
883
+ util/stderr_logger.cc
830
884
  util/string_util.cc
831
885
  util/thread_local.cc
832
886
  util/threadpool_imp.cc
@@ -981,7 +1035,7 @@ else()
981
1035
  env/io_posix.cc)
982
1036
  endif()
983
1037
 
984
- if(USE_FOLLY)
1038
+ if(USE_FOLLY_LITE)
985
1039
  list(APPEND SOURCES
986
1040
  third-party/folly/folly/container/detail/F14Table.cpp
987
1041
  third-party/folly/folly/detail/Futex.cpp
@@ -991,13 +1045,14 @@ if(USE_FOLLY)
991
1045
  third-party/folly/folly/synchronization/AtomicNotification.cpp
992
1046
  third-party/folly/folly/synchronization/DistributedMutex.cpp
993
1047
  third-party/folly/folly/synchronization/ParkingLot.cpp)
1048
+ include_directories(${PROJECT_SOURCE_DIR}/third-party/folly)
1049
+ add_definitions(-DUSE_FOLLY -DFOLLY_NO_CONFIG)
1050
+ list(APPEND THIRDPARTY_LIBS glog)
994
1051
  endif()
995
1052
 
996
1053
  set(ROCKSDB_STATIC_LIB rocksdb${ARTIFACT_SUFFIX})
997
1054
  set(ROCKSDB_SHARED_LIB rocksdb-shared${ARTIFACT_SUFFIX})
998
1055
 
999
- option(ROCKSDB_BUILD_SHARED "Build shared versions of the RocksDB libraries" ON)
1000
-
1001
1056
 
1002
1057
  if(WIN32)
1003
1058
  set(SYSTEM_LIBS ${SYSTEM_LIBS} shlwapi.lib rpcrt4.lib)
@@ -1008,7 +1063,6 @@ endif()
1008
1063
  set(ROCKSDB_PLUGIN_EXTERNS "")
1009
1064
  set(ROCKSDB_PLUGIN_BUILTINS "")
1010
1065
  message(STATUS "ROCKSDB PLUGINS TO BUILD ${ROCKSDB_PLUGINS}")
1011
- list(APPEND PLUGINS ${ROCKSDB_PLUGINS})
1012
1066
  foreach(PLUGIN IN LISTS PLUGINS)
1013
1067
  set(PLUGIN_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/plugin/${PLUGIN}/")
1014
1068
  message("including rocksb plugin ${PLUGIN_ROOT}")
@@ -1297,7 +1351,7 @@ if(WITH_TESTS)
1297
1351
  db/merge_test.cc
1298
1352
  db/options_file_test.cc
1299
1353
  db/perf_context_test.cc
1300
- db/periodic_work_scheduler_test.cc
1354
+ db/periodic_task_scheduler_test.cc
1301
1355
  db/plain_table_db_test.cc
1302
1356
  db/seqno_time_test.cc
1303
1357
  db/prefix_test.cc
@@ -1424,7 +1478,7 @@ if(WITH_TESTS)
1424
1478
  add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND})
1425
1479
  set(TESTUTILLIB testutillib${ARTIFACT_SUFFIX})
1426
1480
  add_library(${TESTUTILLIB} STATIC ${TESTUTIL_SOURCE})
1427
- target_link_libraries(${TESTUTILLIB} ${ROCKSDB_LIB})
1481
+ target_link_libraries(${TESTUTILLIB} ${ROCKSDB_LIB} ${FOLLY_LIBS})
1428
1482
  if(MSVC)
1429
1483
  set_target_properties(${TESTUTILLIB} PROPERTIES COMPILE_FLAGS "/Fd${CMAKE_CFG_INTDIR}/testutillib${ARTIFACT_SUFFIX}.pdb")
1430
1484
  endif()
@@ -1482,32 +1536,32 @@ if(WITH_BENCHMARK_TOOLS)
1482
1536
  cache/cache_bench.cc
1483
1537
  cache/cache_bench_tool.cc)
1484
1538
  target_link_libraries(cache_bench${ARTIFACT_SUFFIX}
1485
- ${ROCKSDB_LIB} ${GFLAGS_LIB})
1539
+ ${ROCKSDB_LIB} ${GFLAGS_LIB} ${FOLLY_LIBS})
1486
1540
 
1487
1541
  add_executable(memtablerep_bench${ARTIFACT_SUFFIX}
1488
1542
  memtable/memtablerep_bench.cc)
1489
1543
  target_link_libraries(memtablerep_bench${ARTIFACT_SUFFIX}
1490
- ${ROCKSDB_LIB} ${GFLAGS_LIB})
1544
+ ${ROCKSDB_LIB} ${GFLAGS_LIB} ${FOLLY_LIBS})
1491
1545
 
1492
1546
  add_executable(range_del_aggregator_bench${ARTIFACT_SUFFIX}
1493
1547
  db/range_del_aggregator_bench.cc)
1494
1548
  target_link_libraries(range_del_aggregator_bench${ARTIFACT_SUFFIX}
1495
- ${ROCKSDB_LIB} ${GFLAGS_LIB})
1549
+ ${ROCKSDB_LIB} ${GFLAGS_LIB} ${FOLLY_LIBS})
1496
1550
 
1497
1551
  add_executable(table_reader_bench${ARTIFACT_SUFFIX}
1498
1552
  table/table_reader_bench.cc)
1499
1553
  target_link_libraries(table_reader_bench${ARTIFACT_SUFFIX}
1500
- ${ROCKSDB_LIB} testharness ${GFLAGS_LIB})
1554
+ ${ROCKSDB_LIB} testharness ${GFLAGS_LIB} ${FOLLY_LIBS})
1501
1555
 
1502
1556
  add_executable(filter_bench${ARTIFACT_SUFFIX}
1503
1557
  util/filter_bench.cc)
1504
1558
  target_link_libraries(filter_bench${ARTIFACT_SUFFIX}
1505
- ${ROCKSDB_LIB} ${GFLAGS_LIB})
1559
+ ${ROCKSDB_LIB} ${GFLAGS_LIB} ${FOLLY_LIBS})
1506
1560
 
1507
1561
  add_executable(hash_table_bench${ARTIFACT_SUFFIX}
1508
1562
  utilities/persistent_cache/hash_table_bench.cc)
1509
1563
  target_link_libraries(hash_table_bench${ARTIFACT_SUFFIX}
1510
- ${ROCKSDB_LIB} ${GFLAGS_LIB})
1564
+ ${ROCKSDB_LIB} ${GFLAGS_LIB} ${FOLLY_LIBS})
1511
1565
  endif()
1512
1566
 
1513
1567
  option(WITH_TRACE_TOOLS "build with trace tools" ON)
@@ -1515,12 +1569,12 @@ if(WITH_TRACE_TOOLS)
1515
1569
  add_executable(block_cache_trace_analyzer_tool${ARTIFACT_SUFFIX}
1516
1570
  tools/block_cache_analyzer/block_cache_trace_analyzer_tool.cc)
1517
1571
  target_link_libraries(block_cache_trace_analyzer_tool${ARTIFACT_SUFFIX}
1518
- ${ROCKSDB_LIB} ${GFLAGS_LIB})
1572
+ ${ROCKSDB_LIB} ${GFLAGS_LIB} ${FOLLY_LIBS})
1519
1573
 
1520
1574
  add_executable(trace_analyzer${ARTIFACT_SUFFIX}
1521
1575
  tools/trace_analyzer.cc)
1522
1576
  target_link_libraries(trace_analyzer${ARTIFACT_SUFFIX}
1523
- ${ROCKSDB_LIB} ${GFLAGS_LIB})
1577
+ ${ROCKSDB_LIB} ${GFLAGS_LIB} ${FOLLY_LIBS})
1524
1578
 
1525
1579
  endif()
1526
1580
 
@@ -139,9 +139,14 @@ endif
139
139
  GIT_COMMAND ?= git
140
140
  ifeq ($(USE_COROUTINES), 1)
141
141
  USE_FOLLY = 1
142
- OPT += -DUSE_COROUTINES
142
+ # glog/logging.h requires HAVE_CXX11_ATOMIC
143
+ OPT += -DUSE_COROUTINES -DHAVE_CXX11_ATOMIC
143
144
  ROCKSDB_CXX_STANDARD = c++2a
144
145
  USE_RTTI = 1
146
+ ifneq ($(USE_CLANG), 1)
147
+ ROCKSDB_CXX_STANDARD = c++20
148
+ PLATFORM_CXXFLAGS += -fcoroutines
149
+ endif
145
150
  endif
146
151
 
147
152
  # if we're compiling for release, compile without debug code (-DNDEBUG)
@@ -185,6 +190,16 @@ ifeq ($(USE_LTO), 1)
185
190
  LDFLAGS += -flto -fuse-linker-plugin
186
191
  endif
187
192
 
193
+ # `COERCE_CONTEXT_SWITCH=1` will inject spurious wakeup and
194
+ # random length of sleep or context switch at critical
195
+ # points (e.g, before acquring db mutex) in RocksDB.
196
+ # In this way, it coerces as many excution orders as possible in the hope of
197
+ # exposing the problematic excution order
198
+ COERCE_CONTEXT_SWITCH ?= 0
199
+ ifeq ($(COERCE_CONTEXT_SWITCH), 1)
200
+ OPT += -DCOERCE_CONTEXT_SWITCH
201
+ endif
202
+
188
203
  #-----------------------------------------------
189
204
  include src.mk
190
205
 
@@ -235,6 +250,7 @@ dummy := $(shell (export ROCKSDB_ROOT="$(CURDIR)"; \
235
250
  export USE_CLANG="$(USE_CLANG)"; \
236
251
  export LIB_MODE="$(LIB_MODE)"; \
237
252
  export ROCKSDB_CXX_STANDARD="$(ROCKSDB_CXX_STANDARD)"; \
253
+ export USE_FOLLY="$(USE_FOLLY)"; \
238
254
  "$(CURDIR)/build_tools/build_detect_platform" "$(CURDIR)/make_config.mk"))
239
255
  # this file is generated by the previous line to set build flags and sources
240
256
  include make_config.mk
@@ -415,6 +431,10 @@ ifndef DISABLE_JEMALLOC
415
431
  PLATFORM_CXXFLAGS += -DUSE_JEMALLOC
416
432
  PLATFORM_CCFLAGS += -DUSE_JEMALLOC
417
433
  endif
434
+ ifeq ($(USE_FOLLY_LITE),1)
435
+ PLATFORM_CXXFLAGS += -DUSE_JEMALLOC
436
+ PLATFORM_CCFLAGS += -DUSE_JEMALLOC
437
+ endif
418
438
  endif
419
439
  ifdef WITH_JEMALLOC_FLAG
420
440
  PLATFORM_LDFLAGS += -ljemalloc
@@ -448,10 +468,57 @@ endif
448
468
 
449
469
  # This provides a Makefile simulation of a Meta-internal folly integration.
450
470
  # It is not validated for general use.
471
+ #
472
+ # USE_FOLLY links the build targets with libfolly.a. The latter could be
473
+ # built using 'make build_folly', or built externally and specified in
474
+ # the CXXFLAGS and EXTRA_LDFLAGS env variables. The build_detect_platform
475
+ # script tries to detect if an external folly dependency has been specified.
476
+ # If not, it exports FOLLY_PATH to the path of the installed Folly and
477
+ # dependency libraries.
478
+ #
479
+ # USE_FOLLY_LITE cherry picks source files from Folly to include in the
480
+ # RocksDB library. Its faster and has fewer dependencies on 3rd party
481
+ # libraries, but with limited functionality. For example, coroutine
482
+ # functionality is not available.
451
483
  ifeq ($(USE_FOLLY),1)
452
- ifeq (,$(FOLLY_DIR))
453
- FOLLY_DIR = ./third-party/folly
484
+ ifeq ($(USE_FOLLY_LITE),1)
485
+ $(error Please specify only one of USE_FOLLY and USE_FOLLY_LITE)
486
+ endif
487
+ ifneq ($(strip $(FOLLY_PATH)),)
488
+ BOOST_PATH = $(shell (ls -d $(FOLLY_PATH)/../boost*))
489
+ DBL_CONV_PATH = $(shell (ls -d $(FOLLY_PATH)/../double-conversion*))
490
+ GFLAGS_PATH = $(shell (ls -d $(FOLLY_PATH)/../gflags*))
491
+ GLOG_PATH = $(shell (ls -d $(FOLLY_PATH)/../glog*))
492
+ LIBEVENT_PATH = $(shell (ls -d $(FOLLY_PATH)/../libevent*))
493
+ XZ_PATH = $(shell (ls -d $(FOLLY_PATH)/../xz*))
494
+ LIBSODIUM_PATH = $(shell (ls -d $(FOLLY_PATH)/../libsodium*))
495
+ FMT_PATH = $(shell (ls -d $(FOLLY_PATH)/../fmt*))
496
+
497
+ # For some reason, glog and fmt libraries are under either lib or lib64
498
+ GLOG_LIB_PATH = $(shell (ls -d $(GLOG_PATH)/lib*))
499
+ FMT_LIB_PATH = $(shell (ls -d $(FMT_PATH)/lib*))
500
+
501
+ # AIX: pre-defined system headers are surrounded by an extern "C" block
502
+ ifeq ($(PLATFORM), OS_AIX)
503
+ PLATFORM_CCFLAGS += -I$(BOOST_PATH)/include -I$(DBL_CONV_PATH)/include -I$(GLOG_PATH)/include -I$(LIBEVENT_PATH)/include -I$(XZ_PATH)/include -I$(LIBSODIUM_PATH)/include -I$(FOLLY_PATH)/include -I$(FMT_PATH)/include
504
+ PLATFORM_CXXFLAGS += -I$(BOOST_PATH)/include -I$(DBL_CONV_PATH)/include -I$(GLOG_PATH)/include -I$(LIBEVENT_PATH)/include -I$(XZ_PATH)/include -I$(LIBSODIUM_PATH)/include -I$(FOLLY_PATH)/include -I$(FMT_PATH)/include
505
+ else
506
+ PLATFORM_CCFLAGS += -isystem $(BOOST_PATH)/include -isystem $(DBL_CONV_PATH)/include -isystem $(GLOG_PATH)/include -isystem $(LIBEVENT_PATH)/include -isystem $(XZ_PATH)/include -isystem $(LIBSODIUM_PATH)/include -isystem $(FOLLY_PATH)/include -isystem $(FMT_PATH)/include
507
+ PLATFORM_CXXFLAGS += -isystem $(BOOST_PATH)/include -isystem $(DBL_CONV_PATH)/include -isystem $(GLOG_PATH)/include -isystem $(LIBEVENT_PATH)/include -isystem $(XZ_PATH)/include -isystem $(LIBSODIUM_PATH)/include -isystem $(FOLLY_PATH)/include -isystem $(FMT_PATH)/include
454
508
  endif
509
+
510
+ # Add -ldl at the end as gcc resolves a symbol in a library by searching only in libraries specified later
511
+ # in the command line
512
+ PLATFORM_LDFLAGS += $(FOLLY_PATH)/lib/libfolly.a $(BOOST_PATH)/lib/libboost_context.a $(BOOST_PATH)/lib/libboost_filesystem.a $(BOOST_PATH)/lib/libboost_atomic.a $(BOOST_PATH)/lib/libboost_program_options.a $(BOOST_PATH)/lib/libboost_regex.a $(BOOST_PATH)/lib/libboost_system.a $(BOOST_PATH)/lib/libboost_thread.a $(DBL_CONV_PATH)/lib/libdouble-conversion.a $(FMT_LIB_PATH)/libfmt.a $(GLOG_LIB_PATH)/libglog.so $(GFLAGS_PATH)/lib/libgflags.so.2.2 $(LIBEVENT_PATH)/lib/libevent-2.1.so -ldl
513
+ PLATFORM_LDFLAGS += -Wl,-rpath=$(GFLAGS_PATH)/lib -Wl,-rpath=$(GLOG_LIB_PATH) -Wl,-rpath=$(LIBEVENT_PATH)/lib -Wl,-rpath=$(LIBSODIUM_PATH)/lib -Wl,-rpath=$(LIBEVENT_PATH)/lib
514
+ endif
515
+ PLATFORM_CCFLAGS += -DUSE_FOLLY -DFOLLY_NO_CONFIG
516
+ PLATFORM_CXXFLAGS += -DUSE_FOLLY -DFOLLY_NO_CONFIG
517
+ endif
518
+
519
+ ifeq ($(USE_FOLLY_LITE),1)
520
+ # Path to the Folly source code and include files
521
+ FOLLY_DIR = ./third-party/folly
455
522
  # AIX: pre-defined system headers are surrounded by an extern "C" block
456
523
  ifeq ($(PLATFORM), OS_AIX)
457
524
  PLATFORM_CCFLAGS += -I$(FOLLY_DIR)
@@ -550,7 +617,7 @@ LIB_OBJECTS += $(patsubst %.c, $(OBJ_DIR)/%.o, $(LIB_SOURCES_C))
550
617
  LIB_OBJECTS += $(patsubst %.S, $(OBJ_DIR)/%.o, $(LIB_SOURCES_ASM))
551
618
  endif
552
619
 
553
- ifeq ($(USE_FOLLY),1)
620
+ ifeq ($(USE_FOLLY_LITE),1)
554
621
  LIB_OBJECTS += $(patsubst %.cpp, $(OBJ_DIR)/%.o, $(FOLLY_SOURCES))
555
622
  endif
556
623
 
@@ -591,7 +658,7 @@ ifneq ($(filter check-headers, $(MAKECMDGOALS)),)
591
658
  # TODO: add/support JNI headers
592
659
  DEV_HEADER_DIRS := $(sort include/ $(dir $(ALL_SOURCES)))
593
660
  # Some headers like in port/ are platform-specific
594
- DEV_HEADERS := $(shell $(FIND) $(DEV_HEADER_DIRS) -type f -name '*.h' | egrep -v 'port/|plugin/|lua/|range_tree/')
661
+ DEV_HEADERS := $(shell $(FIND) $(DEV_HEADER_DIRS) -type f -name '*.h' | grep -E -v 'port/|plugin/|lua/|range_tree/')
595
662
  else
596
663
  DEV_HEADERS :=
597
664
  endif
@@ -728,9 +795,9 @@ TOOLS_LIBRARY=$(STATIC_TOOLS_LIBRARY)
728
795
  endif
729
796
  STRESS_LIBRARY=$(STATIC_STRESS_LIBRARY)
730
797
 
731
- ROCKSDB_MAJOR = $(shell egrep "ROCKSDB_MAJOR.[0-9]" include/rocksdb/version.h | cut -d ' ' -f 3)
732
- ROCKSDB_MINOR = $(shell egrep "ROCKSDB_MINOR.[0-9]" include/rocksdb/version.h | cut -d ' ' -f 3)
733
- ROCKSDB_PATCH = $(shell egrep "ROCKSDB_PATCH.[0-9]" include/rocksdb/version.h | cut -d ' ' -f 3)
798
+ ROCKSDB_MAJOR = $(shell grep -E "ROCKSDB_MAJOR.[0-9]" include/rocksdb/version.h | cut -d ' ' -f 3)
799
+ ROCKSDB_MINOR = $(shell grep -E "ROCKSDB_MINOR.[0-9]" include/rocksdb/version.h | cut -d ' ' -f 3)
800
+ ROCKSDB_PATCH = $(shell grep -E "ROCKSDB_PATCH.[0-9]" include/rocksdb/version.h | cut -d ' ' -f 3)
734
801
 
735
802
  # If NO_UPDATE_BUILD_VERSION is set we don't update util/build_version.cc, but
736
803
  # the file needs to already exist or else the build will fail
@@ -1882,7 +1949,7 @@ blob_garbage_meter_test: $(OBJ_DIR)/db/blob/blob_garbage_meter_test.o $(TEST_LIB
1882
1949
  timer_test: $(OBJ_DIR)/util/timer_test.o $(TEST_LIBRARY) $(LIBRARY)
1883
1950
  $(AM_LINK)
1884
1951
 
1885
- periodic_work_scheduler_test: $(OBJ_DIR)/db/periodic_work_scheduler_test.o $(TEST_LIBRARY) $(LIBRARY)
1952
+ periodic_task_scheduler_test: $(OBJ_DIR)/db/periodic_task_scheduler_test.o $(TEST_LIBRARY) $(LIBRARY)
1886
1953
  $(AM_LINK)
1887
1954
 
1888
1955
  testutil_test: $(OBJ_DIR)/test_util/testutil_test.o $(TEST_LIBRARY) $(LIBRARY)
@@ -2371,13 +2438,26 @@ checkout_folly:
2371
2438
  @# need to worry about folly breaking our integration. Update periodically
2372
2439
  cd third-party/folly && git reset --hard beacd86d63cd71c904632262e6c36f60874d78ba
2373
2440
  @# A hack to remove boost dependency.
2374
- @# NOTE: this hack is not needed if using FBCODE compiler config
2441
+ @# NOTE: this hack is only needed if building using USE_FOLLY_LITE
2375
2442
  perl -pi -e 's/^(#include <boost)/\/\/$$1/' third-party/folly/folly/functional/Invoke.h
2376
2443
  @# NOTE: this hack is required for clang in some cases
2377
2444
  perl -pi -e 's/int rv = syscall/int rv = (int)syscall/' third-party/folly/folly/detail/Futex.cpp
2378
2445
  @# NOTE: this hack is required for gcc in some cases
2379
2446
  perl -pi -e 's/(__has_include.<experimental.memory_resource>.)/__cpp_rtti && $$1/' third-party/folly/folly/memory/MemoryResource.h
2380
2447
 
2448
+ build_folly:
2449
+ FOLLY_INST_PATH=`cd third-party/folly; $(PYTHON) build/fbcode_builder/getdeps.py show-inst-dir`; \
2450
+ if [ "$$FOLLY_INST_PATH" ]; then \
2451
+ rm -rf $${FOLLY_INST_PATH}/../../*; \
2452
+ else \
2453
+ echo "Please run checkout_folly first"; \
2454
+ false; \
2455
+ fi
2456
+ # Restore the original version of Invoke.h with boost dependency
2457
+ cd third-party/folly && ${GIT_COMMAND} checkout folly/functional/Invoke.h
2458
+ cd third-party/folly && MAYBE_AVX2=`echo $(CXXFLAGS) | grep -o -- -DHAVE_AVX2 | sed 's/-DHAVE_AVX2/-mavx2/g' || true` && \
2459
+ CXXFLAGS=" $$MAYBE_AVX2 -DHAVE_CXX11_ATOMIC " $(PYTHON) build/fbcode_builder/getdeps.py build --no-tests
2460
+
2381
2461
  # ---------------------------------------------------------------------------
2382
2462
  # Build size testing
2383
2463
  # ---------------------------------------------------------------------------
@@ -2462,7 +2542,7 @@ endif
2462
2542
  ifneq ($(SKIP_DEPENDS), 1)
2463
2543
  DEPFILES = $(patsubst %.cc, $(OBJ_DIR)/%.cc.d, $(ALL_SOURCES))
2464
2544
  DEPFILES+ = $(patsubst %.c, $(OBJ_DIR)/%.c.d, $(LIB_SOURCES_C) $(TEST_MAIN_SOURCES_C))
2465
- ifeq ($(USE_FOLLY),1)
2545
+ ifeq ($(USE_FOLLY_LITE),1)
2466
2546
  DEPFILES +=$(patsubst %.cpp, $(OBJ_DIR)/%.cpp.d, $(FOLLY_SOURCES))
2467
2547
  endif
2468
2548
  endif
@@ -20,6 +20,7 @@ cpp_library_wrapper(name="rocksdb_lib", srcs=[
20
20
  "cache/lru_cache.cc",
21
21
  "cache/sharded_cache.cc",
22
22
  "db/arena_wrapped_db_iter.cc",
23
+ "db/blob/blob_contents.cc",
23
24
  "db/blob/blob_fetcher.cc",
24
25
  "db/blob/blob_file_addition.cc",
25
26
  "db/blob/blob_file_builder.cc",
@@ -82,7 +83,7 @@ cpp_library_wrapper(name="rocksdb_lib", srcs=[
82
83
  "db/merge_helper.cc",
83
84
  "db/merge_operator.cc",
84
85
  "db/output_validator.cc",
85
- "db/periodic_work_scheduler.cc",
86
+ "db/periodic_task_scheduler.cc",
86
87
  "db/range_del_aggregator.cc",
87
88
  "db/range_tombstone_fragmenter.cc",
88
89
  "db/repair.cc",
@@ -252,6 +253,7 @@ cpp_library_wrapper(name="rocksdb_lib", srcs=[
252
253
  "util/ribbon_config.cc",
253
254
  "util/slice.cc",
254
255
  "util/status.cc",
256
+ "util/stderr_logger.cc",
255
257
  "util/string_util.cc",
256
258
  "util/thread_local.cc",
257
259
  "util/threadpool_imp.cc",
@@ -357,6 +359,7 @@ cpp_library_wrapper(name="rocksdb_whole_archive_lib", srcs=[
357
359
  "cache/lru_cache.cc",
358
360
  "cache/sharded_cache.cc",
359
361
  "db/arena_wrapped_db_iter.cc",
362
+ "db/blob/blob_contents.cc",
360
363
  "db/blob/blob_fetcher.cc",
361
364
  "db/blob/blob_file_addition.cc",
362
365
  "db/blob/blob_file_builder.cc",
@@ -419,7 +422,7 @@ cpp_library_wrapper(name="rocksdb_whole_archive_lib", srcs=[
419
422
  "db/merge_helper.cc",
420
423
  "db/merge_operator.cc",
421
424
  "db/output_validator.cc",
422
- "db/periodic_work_scheduler.cc",
425
+ "db/periodic_task_scheduler.cc",
423
426
  "db/range_del_aggregator.cc",
424
427
  "db/range_tombstone_fragmenter.cc",
425
428
  "db/repair.cc",
@@ -589,6 +592,7 @@ cpp_library_wrapper(name="rocksdb_whole_archive_lib", srcs=[
589
592
  "util/ribbon_config.cc",
590
593
  "util/slice.cc",
591
594
  "util/status.cc",
595
+ "util/stderr_logger.cc",
592
596
  "util/string_util.cc",
593
597
  "util/thread_local.cc",
594
598
  "util/threadpool_imp.cc",
@@ -5598,8 +5602,8 @@ cpp_unittest_wrapper(name="perf_context_test",
5598
5602
  extra_compiler_flags=[])
5599
5603
 
5600
5604
 
5601
- cpp_unittest_wrapper(name="periodic_work_scheduler_test",
5602
- srcs=["db/periodic_work_scheduler_test.cc"],
5605
+ cpp_unittest_wrapper(name="periodic_task_scheduler_test",
5606
+ srcs=["db/periodic_task_scheduler_test.cc"],
5603
5607
  deps=[":rocksdb_test_lib"],
5604
5608
  extra_compiler_flags=[])
5605
5609
 
@@ -58,6 +58,11 @@ static std::unordered_map<std::string, OptionTypeInfo>
58
58
  compress_format_version),
59
59
  OptionType::kUInt32T, OptionVerificationType::kNormal,
60
60
  OptionTypeFlags::kMutable}},
61
+ {"enable_custom_split_merge",
62
+ {offsetof(struct CompressedSecondaryCacheOptions,
63
+ enable_custom_split_merge),
64
+ OptionType::kBoolean, OptionVerificationType::kNormal,
65
+ OptionTypeFlags::kMutable}},
61
66
  };
62
67
  #endif // ROCKSDB_LITE
63
68
 
@@ -13,7 +13,6 @@
13
13
  #include <set>
14
14
  #include <sstream>
15
15
 
16
- #include "cache/clock_cache.h"
17
16
  #include "cache/fast_lru_cache.h"
18
17
  #include "db/db_impl/db_impl.h"
19
18
  #include "monitoring/histogram.h"
@@ -292,13 +291,12 @@ class CacheBench {
292
291
  }
293
292
 
294
293
  if (FLAGS_cache_type == "clock_cache") {
295
- cache_ = ExperimentalNewClockCache(
296
- FLAGS_cache_size, FLAGS_value_bytes, FLAGS_num_shard_bits,
297
- false /*strict_capacity_limit*/, kDefaultCacheMetadataChargePolicy);
298
- if (!cache_) {
299
- fprintf(stderr, "Clock cache not supported.\n");
300
- exit(1);
301
- }
294
+ fprintf(stderr, "Old clock cache implementation has been removed.\n");
295
+ exit(1);
296
+ } else if (FLAGS_cache_type == "hyper_clock_cache") {
297
+ cache_ = HyperClockCacheOptions(FLAGS_cache_size, FLAGS_value_bytes,
298
+ FLAGS_num_shard_bits)
299
+ .MakeSharedCache();
302
300
  } else if (FLAGS_cache_type == "fast_lru_cache") {
303
301
  cache_ = NewFastLRUCache(
304
302
  FLAGS_cache_size, FLAGS_value_bytes, FLAGS_num_shard_bits,
@@ -441,6 +439,8 @@ class CacheBench {
441
439
  uint64_t total_key_size = 0;
442
440
  uint64_t total_charge = 0;
443
441
  uint64_t total_entry_count = 0;
442
+ uint64_t table_occupancy = 0;
443
+ uint64_t table_size = 0;
444
444
  std::set<Cache::DeleterFn> deleters;
445
445
  StopWatchNano timer(clock);
446
446
 
@@ -456,6 +456,9 @@ class CacheBench {
456
456
  std::ostringstream ostr;
457
457
  ostr << "Most recent cache entry stats:\n"
458
458
  << "Number of entries: " << total_entry_count << "\n"
459
+ << "Table occupancy: " << table_occupancy << " / "
460
+ << table_size << " = "
461
+ << (100.0 * table_occupancy / table_size) << "%\n"
459
462
  << "Total charge: " << BytesToHumanString(total_charge) << "\n"
460
463
  << "Average key size: "
461
464
  << (1.0 * total_key_size / total_entry_count) << "\n"
@@ -492,6 +495,8 @@ class CacheBench {
492
495
  Cache::ApplyToAllEntriesOptions opts;
493
496
  opts.average_entries_per_lock = FLAGS_gather_stats_entries_per_lock;
494
497
  shared->GetCacheBench()->cache_->ApplyToAllEntries(fn, opts);
498
+ table_occupancy = shared->GetCacheBench()->cache_->GetOccupancyCount();
499
+ table_size = shared->GetCacheBench()->cache_->GetTableAddressCount();
495
500
  stats_hist->Add(timer.ElapsedNanos() / 1000);
496
501
  }
497
502
  }
@@ -23,6 +23,7 @@ std::array<std::string, kNumCacheEntryRoles> kCacheEntryRoleToCamelString{{
23
23
  "FilterConstruction",
24
24
  "BlockBasedTableReader",
25
25
  "FileMetadata",
26
+ "BlobValue",
26
27
  "BlobCache",
27
28
  "Misc",
28
29
  }};
@@ -39,6 +40,7 @@ std::array<std::string, kNumCacheEntryRoles> kCacheEntryRoleToHyphenString{{
39
40
  "filter-construction",
40
41
  "block-based-table-reader",
41
42
  "file-metadata",
43
+ "blob-value",
42
44
  "blob-cache",
43
45
  "misc",
44
46
  }};