@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.
- package/binding.cc +1 -0
- package/deps/rocksdb/rocksdb/CMakeLists.txt +72 -18
- package/deps/rocksdb/rocksdb/Makefile +91 -11
- package/deps/rocksdb/rocksdb/TARGETS +8 -4
- package/deps/rocksdb/rocksdb/cache/cache.cc +5 -0
- package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +13 -8
- package/deps/rocksdb/rocksdb/cache/cache_entry_roles.cc +2 -0
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +116 -57
- package/deps/rocksdb/rocksdb/cache/clock_cache.cc +958 -459
- package/deps/rocksdb/rocksdb/cache/clock_cache.h +407 -622
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +104 -40
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +23 -8
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +350 -184
- package/deps/rocksdb/rocksdb/cache/fast_lru_cache.cc +12 -2
- package/deps/rocksdb/rocksdb/cache/fast_lru_cache.h +2 -0
- package/deps/rocksdb/rocksdb/cache/lru_cache.cc +130 -43
- package/deps/rocksdb/rocksdb/cache/lru_cache.h +24 -2
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +423 -98
- package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +19 -2
- package/deps/rocksdb/rocksdb/cache/sharded_cache.h +10 -7
- package/deps/rocksdb/rocksdb/crash_test.mk +2 -2
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +46 -26
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +9 -3
- package/deps/rocksdb/rocksdb/db/blob/blob_contents.cc +90 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_contents.h +56 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +23 -10
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +64 -59
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +11 -8
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +92 -62
- package/deps/rocksdb/rocksdb/db/blob/blob_source.cc +159 -136
- package/deps/rocksdb/rocksdb/db/blob/blob_source.h +13 -13
- package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +129 -57
- package/deps/rocksdb/rocksdb/db/blob/db_blob_basic_test.cc +81 -3
- package/deps/rocksdb/rocksdb/db/c.cc +29 -0
- package/deps/rocksdb/rocksdb/db/column_family.cc +10 -1
- package/deps/rocksdb/rocksdb/db/column_family_test.cc +21 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +42 -36
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +344 -102
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +163 -28
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +52 -17
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +35 -30
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +8 -3
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +167 -11
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +8 -8
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +10 -13
- package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.cc +0 -117
- package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +6 -49
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +29 -4
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +18 -11
- package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +4 -10
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +12 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +144 -93
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +28 -32
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +5 -9
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +2 -33
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +3 -5
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +11 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +1 -2
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +8 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +2 -1
- package/deps/rocksdb/rocksdb/db/db_iter.cc +76 -138
- package/deps/rocksdb/rocksdb/db/db_iter.h +26 -23
- package/deps/rocksdb/rocksdb/db/db_properties_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +931 -0
- package/deps/rocksdb/rocksdb/db/db_sst_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +6 -0
- package/deps/rocksdb/rocksdb/db/db_test2.cc +44 -22
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +6 -14
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_compaction_test.cc +155 -0
- package/deps/rocksdb/rocksdb/db/db_write_test.cc +45 -0
- package/deps/rocksdb/rocksdb/db/dbformat.h +2 -1
- package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +8 -0
- package/deps/rocksdb/rocksdb/db/experimental.cc +5 -1
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +24 -12
- package/deps/rocksdb/rocksdb/db/internal_stats.cc +7 -1
- package/deps/rocksdb/rocksdb/db/internal_stats.h +3 -0
- package/deps/rocksdb/rocksdb/db/memtable.cc +79 -18
- package/deps/rocksdb/rocksdb/db/memtable.h +5 -0
- package/deps/rocksdb/rocksdb/db/memtable_list.cc +26 -4
- package/deps/rocksdb/rocksdb/db/memtable_list.h +2 -1
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.cc +113 -0
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.h +110 -0
- package/deps/rocksdb/rocksdb/db/{periodic_work_scheduler_test.cc → periodic_task_scheduler_test.cc} +33 -39
- package/deps/rocksdb/rocksdb/db/range_del_aggregator.cc +12 -20
- package/deps/rocksdb/rocksdb/db/range_del_aggregator.h +6 -5
- package/deps/rocksdb/rocksdb/db/range_del_aggregator_test.cc +12 -8
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.cc +20 -5
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +14 -0
- package/deps/rocksdb/rocksdb/db/repair.cc +17 -8
- package/deps/rocksdb/rocksdb/db/repair_test.cc +2 -1
- package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +49 -66
- package/deps/rocksdb/rocksdb/db/table_cache.cc +92 -63
- package/deps/rocksdb/rocksdb/db/table_cache.h +16 -9
- package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +2 -2
- package/deps/rocksdb/rocksdb/db/table_properties_collector.cc +2 -2
- package/deps/rocksdb/rocksdb/db/table_properties_collector.h +3 -3
- package/deps/rocksdb/rocksdb/db/table_properties_collector_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/version_builder.cc +1 -1
- package/deps/rocksdb/rocksdb/db/version_edit.h +1 -2
- package/deps/rocksdb/rocksdb/db/version_set.cc +379 -145
- package/deps/rocksdb/rocksdb/db/version_set.h +26 -24
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +9 -9
- package/deps/rocksdb/rocksdb/db/version_util.h +3 -2
- package/deps/rocksdb/rocksdb/db/wide/db_wide_basic_test.cc +10 -2
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.cc +2 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +5 -8
- package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +5 -8
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress.cc +2 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +71 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +14 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +23 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +26 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +105 -34
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +16 -8
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +6 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +4 -8
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.h +4 -8
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +282 -25
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +6 -4
- package/deps/rocksdb/rocksdb/env/io_posix.cc +3 -1
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +367 -177
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +144 -56
- package/deps/rocksdb/rocksdb/file/filename.cc +3 -3
- package/deps/rocksdb/rocksdb/file/filename.h +4 -2
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +415 -0
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +2 -0
- package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +36 -45
- package/deps/rocksdb/rocksdb/file/writable_file_writer.h +21 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +11 -11
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +15 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +163 -68
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +26 -12
- package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +23 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +21 -17
- package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +17 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/persistent_cache.h +3 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +17 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/table.h +20 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +3 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/option_change_migration.h +4 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/wide_columns.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/write_batch_base.h +2 -1
- package/deps/rocksdb/rocksdb/logging/env_logger.h +2 -2
- package/deps/rocksdb/rocksdb/monitoring/histogram.cc +4 -2
- package/deps/rocksdb/rocksdb/monitoring/histogram.h +2 -0
- package/deps/rocksdb/rocksdb/monitoring/histogram_test.cc +15 -1
- package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.cc +17 -0
- package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.h +14 -3
- package/deps/rocksdb/rocksdb/monitoring/iostats_context_imp.h +3 -0
- package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +50 -0
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +1 -0
- package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +31 -32
- package/deps/rocksdb/rocksdb/options/customizable_test.cc +4 -1
- package/deps/rocksdb/rocksdb/options/options.cc +2 -2
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +2 -1
- package/deps/rocksdb/rocksdb/port/jemalloc_helper.h +1 -0
- package/deps/rocksdb/rocksdb/src.mk +4 -2
- package/deps/rocksdb/rocksdb/table/block_based/block.h +9 -8
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +110 -99
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +12 -10
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +11 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +138 -83
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +25 -24
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +31 -30
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +16 -13
- package/deps/rocksdb/rocksdb/table/block_based/cachable_entry.h +4 -4
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +3 -3
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +3 -3
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +17 -19
- package/deps/rocksdb/rocksdb/table/block_fetcher.h +1 -1
- package/deps/rocksdb/rocksdb/table/format.cc +26 -29
- package/deps/rocksdb/rocksdb/table/format.h +44 -26
- package/deps/rocksdb/rocksdb/table/get_context.cc +17 -12
- package/deps/rocksdb/rocksdb/table/internal_iterator.h +7 -0
- package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +4 -0
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +950 -104
- package/deps/rocksdb/rocksdb/table/merging_iterator.h +28 -1
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +3 -2
- package/deps/rocksdb/rocksdb/table/meta_blocks.h +1 -1
- package/deps/rocksdb/rocksdb/table/persistent_cache_helper.cc +10 -9
- package/deps/rocksdb/rocksdb/table/persistent_cache_helper.h +22 -20
- package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +1 -1
- package/deps/rocksdb/rocksdb/table/sst_file_writer_collectors.h +1 -1
- package/deps/rocksdb/rocksdb/table/table_builder.h +9 -21
- package/deps/rocksdb/rocksdb/table/table_test.cc +12 -12
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_pysim_test.py +4 -4
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_plot.py +1 -0
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +116 -34
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +6 -1
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +1 -1
- package/deps/rocksdb/rocksdb/util/autovector.h +12 -0
- package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +3 -2
- package/deps/rocksdb/rocksdb/util/stderr_logger.cc +30 -0
- package/deps/rocksdb/rocksdb/util/stderr_logger.h +5 -18
- package/deps/rocksdb/rocksdb/util/timer.h +2 -3
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +9 -2
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +34 -53
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.h +9 -14
- package/deps/rocksdb/rocksdb/utilities/debug.cc +2 -4
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +4 -0
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.cc +4 -3
- package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.h +3 -1
- package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration.cc +26 -8
- package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration_test.cc +114 -16
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +59 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +3 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/timestamped_snapshot_test.cc +39 -0
- package/deps/rocksdb/rocksdb.gyp +0 -1
- package/index.js +6 -10
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/prebuilds/linux-x64/node.napi.node +0 -0
- package/deps/rocksdb/rocksdb/db/periodic_work_scheduler.cc +0 -168
- 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
|
-
|
|
589
|
-
|
|
590
|
-
|
|
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/
|
|
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(
|
|
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/
|
|
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
|
-
|
|
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
|
-
|
|
453
|
-
|
|
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 ($(
|
|
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' |
|
|
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
|
|
732
|
-
ROCKSDB_MINOR = $(shell
|
|
733
|
-
ROCKSDB_PATCH = $(shell
|
|
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
|
-
|
|
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
|
|
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 ($(
|
|
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/
|
|
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/
|
|
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="
|
|
5602
|
-
srcs=["db/
|
|
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
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
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
|
}};
|