mirror of
https://github.com/facebook/rocksdb.git
synced 2026-07-07 14:47:40 +08:00
Require C++20 (#13904)
Summary: I am wanting to use std::counting_semaphore for something and the timing seems good to require C++20 support. The internets suggest: * GCC >= 10 is adequate, >= 11 preferred * Clang >= 10 is needed * Visual Studio >= 2019 is adquate And popular linux distributions look like this: * CentOS Stream 9 -> GCC 11.2 (CentOS 8 is EOL) * Ubuntu 22.04 LTS -> GCC 11.x (Ubuntu 20 just ended standard support) * Debian 12 (oldstable) -> GCC 12.2 * (Debian 11 has ended security updates, uses GCC 10.2) This required generating a new docker image based on Ubuntu 22 for CI using gcc. The existing Ubuntu 20 image works for covering appropriate clang versions (though we should maybe add a much later version as well, in the next increment of our Ubuntu 22 image; however the minimum available clang build from apt.llvm.org for Ubuntu 22 is clang 13). Update to SetDumpFilter is to quiet a mysterious gcc-13 warning-as-error. Removed --compile-no-warning-as-error from a cmake command line because cmake in the new docker image is too old for this option. Pull Request resolved: https://github.com/facebook/rocksdb/pull/13904 Test Plan: CI, one minor unit test added to verify std::counting_semaphor works Reviewed By: xingbowang Differential Revision: D81266435 Pulled By: pdillinger fbshipit-source-id: 26040eeccca7004416e29a6ff4f6ea93f2052684
This commit is contained in:
committed by
Facebook GitHub Bot
parent
68efd6fd8e
commit
2950e99219
@@ -10,7 +10,7 @@ jobs:
|
|||||||
runs-on:
|
runs-on:
|
||||||
labels: 16-core-ubuntu
|
labels: 16-core-ubuntu
|
||||||
container:
|
container:
|
||||||
image: zjay437/rocksdb:0.6
|
image: ghcr.io/facebook/rocksdb_ubuntu:22.0
|
||||||
options: --shm-size=16gb
|
options: --shm-size=16gb
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4.1.0
|
- uses: actions/checkout@v4.1.0
|
||||||
@@ -32,7 +32,7 @@ jobs:
|
|||||||
runs-on:
|
runs-on:
|
||||||
labels: 16-core-ubuntu
|
labels: 16-core-ubuntu
|
||||||
container:
|
container:
|
||||||
image: zjay437/rocksdb:0.6
|
image: ghcr.io/facebook/rocksdb_ubuntu:22.0
|
||||||
options: --shm-size=16gb
|
options: --shm-size=16gb
|
||||||
env:
|
env:
|
||||||
TEST_TMPDIR: "/tmp/rocksdb_test_tmp"
|
TEST_TMPDIR: "/tmp/rocksdb_test_tmp"
|
||||||
@@ -63,7 +63,7 @@ jobs:
|
|||||||
runs-on:
|
runs-on:
|
||||||
labels: 16-core-ubuntu
|
labels: 16-core-ubuntu
|
||||||
container:
|
container:
|
||||||
image: zjay437/rocksdb:0.6
|
image: ghcr.io/facebook/rocksdb_ubuntu:22.0
|
||||||
options: --shm-size=16gb
|
options: --shm-size=16gb
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4.1.0
|
- uses: actions/checkout@v4.1.0
|
||||||
@@ -94,7 +94,7 @@ jobs:
|
|||||||
runs-on:
|
runs-on:
|
||||||
labels: 4-core-ubuntu
|
labels: 4-core-ubuntu
|
||||||
container:
|
container:
|
||||||
image: zjay437/rocksdb:0.6
|
image: ghcr.io/facebook/rocksdb_ubuntu:22.0
|
||||||
options: --shm-size=16gb
|
options: --shm-size=16gb
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4.1.0
|
- uses: actions/checkout@v4.1.0
|
||||||
@@ -117,28 +117,13 @@ jobs:
|
|||||||
- name: Build fuzzers
|
- name: Build fuzzers
|
||||||
run: cd fuzz && make sst_file_writer_fuzzer db_fuzzer db_map_fuzzer
|
run: cd fuzz && make sst_file_writer_fuzzer db_fuzzer db_map_fuzzer
|
||||||
- uses: "./.github/actions/post-steps"
|
- uses: "./.github/actions/post-steps"
|
||||||
build-linux-gcc-11-no_test_run:
|
|
||||||
if: ${{ github.repository_owner == 'facebook' }}
|
|
||||||
runs-on:
|
|
||||||
labels: 16-core-ubuntu
|
|
||||||
container:
|
|
||||||
image: zjay437/rocksdb:0.6
|
|
||||||
options: --shm-size=16gb
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4.1.0
|
|
||||||
- uses: "./.github/actions/pre-steps"
|
|
||||||
- run: LIB_MODE=static CC=gcc-11 CXX=g++-11 V=1 make -j32 all microbench
|
|
||||||
- uses: "./.github/actions/post-steps"
|
|
||||||
build-linux-cmake-with-folly-lite-no-test:
|
build-linux-cmake-with-folly-lite-no-test:
|
||||||
if: ${{ github.repository_owner == 'facebook' }}
|
if: ${{ github.repository_owner == 'facebook' }}
|
||||||
runs-on:
|
runs-on:
|
||||||
labels: 16-core-ubuntu
|
labels: 16-core-ubuntu
|
||||||
container:
|
container:
|
||||||
image: zjay437/rocksdb:0.6
|
image: ghcr.io/facebook/rocksdb_ubuntu:22.0
|
||||||
options: --shm-size=16gb
|
options: --shm-size=16gb
|
||||||
env:
|
|
||||||
CC: gcc-10
|
|
||||||
CXX: g++-10
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4.1.0
|
- uses: actions/checkout@v4.1.0
|
||||||
- uses: "./.github/actions/pre-steps"
|
- uses: "./.github/actions/pre-steps"
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ jobs:
|
|||||||
runs-on:
|
runs-on:
|
||||||
labels: 16-core-ubuntu
|
labels: 16-core-ubuntu
|
||||||
container:
|
container:
|
||||||
image: zjay437/rocksdb:0.6
|
image: ghcr.io/facebook/rocksdb_ubuntu:22.0
|
||||||
options: --shm-size=16gb
|
options: --shm-size=16gb
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4.1.0
|
- uses: actions/checkout@v4.1.0
|
||||||
@@ -78,7 +78,7 @@ jobs:
|
|||||||
runs-on:
|
runs-on:
|
||||||
labels: 4-core-ubuntu
|
labels: 4-core-ubuntu
|
||||||
container:
|
container:
|
||||||
image: zjay437/rocksdb:0.6
|
image: ghcr.io/facebook/rocksdb_ubuntu:22.0
|
||||||
options: --shm-size=16gb
|
options: --shm-size=16gb
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4.1.0
|
- uses: actions/checkout@v4.1.0
|
||||||
@@ -97,11 +97,8 @@ jobs:
|
|||||||
runs-on:
|
runs-on:
|
||||||
labels: 16-core-ubuntu
|
labels: 16-core-ubuntu
|
||||||
container:
|
container:
|
||||||
image: zjay437/rocksdb:0.6
|
image: ghcr.io/facebook/rocksdb_ubuntu:22.0
|
||||||
options: --shm-size=16gb
|
options: --shm-size=16gb
|
||||||
env:
|
|
||||||
CC: gcc-10
|
|
||||||
CXX: g++-10
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4.1.0
|
- uses: actions/checkout@v4.1.0
|
||||||
- uses: "./.github/actions/pre-steps"
|
- uses: "./.github/actions/pre-steps"
|
||||||
@@ -114,11 +111,8 @@ jobs:
|
|||||||
runs-on:
|
runs-on:
|
||||||
labels: 16-core-ubuntu
|
labels: 16-core-ubuntu
|
||||||
container:
|
container:
|
||||||
image: zjay437/rocksdb:0.6
|
image: ghcr.io/facebook/rocksdb_ubuntu:22.0
|
||||||
options: --shm-size=16gb
|
options: --shm-size=16gb
|
||||||
env:
|
|
||||||
CC: gcc-10
|
|
||||||
CXX: g++-10
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4.1.0
|
- uses: actions/checkout@v4.1.0
|
||||||
- uses: "./.github/actions/pre-steps"
|
- uses: "./.github/actions/pre-steps"
|
||||||
@@ -131,11 +125,8 @@ jobs:
|
|||||||
runs-on:
|
runs-on:
|
||||||
labels: 16-core-ubuntu
|
labels: 16-core-ubuntu
|
||||||
container:
|
container:
|
||||||
image: zjay437/rocksdb:0.6
|
image: ghcr.io/facebook/rocksdb_ubuntu:22.0
|
||||||
options: --shm-size=16gb
|
options: --shm-size=16gb
|
||||||
env:
|
|
||||||
CC: gcc-10
|
|
||||||
CXX: g++-10
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4.1.0
|
- uses: actions/checkout@v4.1.0
|
||||||
- uses: "./.github/actions/pre-steps"
|
- uses: "./.github/actions/pre-steps"
|
||||||
@@ -147,11 +138,8 @@ jobs:
|
|||||||
runs-on:
|
runs-on:
|
||||||
labels: 16-core-ubuntu
|
labels: 16-core-ubuntu
|
||||||
container:
|
container:
|
||||||
image: zjay437/rocksdb:0.6
|
image: ghcr.io/facebook/rocksdb_ubuntu:22.0
|
||||||
options: --shm-size=16gb
|
options: --shm-size=16gb
|
||||||
env:
|
|
||||||
CC: gcc-10
|
|
||||||
CXX: g++-10
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4.1.0
|
- uses: actions/checkout@v4.1.0
|
||||||
- uses: "./.github/actions/pre-steps"
|
- uses: "./.github/actions/pre-steps"
|
||||||
@@ -164,7 +152,7 @@ jobs:
|
|||||||
runs-on:
|
runs-on:
|
||||||
labels: 16-core-ubuntu
|
labels: 16-core-ubuntu
|
||||||
container:
|
container:
|
||||||
image: zjay437/rocksdb:0.6
|
image: ghcr.io/facebook/rocksdb_ubuntu:22.0
|
||||||
options: --shm-size=16gb
|
options: --shm-size=16gb
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4.1.0
|
- uses: actions/checkout@v4.1.0
|
||||||
@@ -176,7 +164,7 @@ jobs:
|
|||||||
runs-on:
|
runs-on:
|
||||||
labels: 16-core-ubuntu
|
labels: 16-core-ubuntu
|
||||||
container:
|
container:
|
||||||
image: zjay437/rocksdb:0.6
|
image: ghcr.io/facebook/rocksdb_ubuntu:22.0
|
||||||
options: --shm-size=16gb
|
options: --shm-size=16gb
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4.1.0
|
- uses: actions/checkout@v4.1.0
|
||||||
@@ -190,7 +178,7 @@ jobs:
|
|||||||
runs-on:
|
runs-on:
|
||||||
labels: 16-core-ubuntu
|
labels: 16-core-ubuntu
|
||||||
container:
|
container:
|
||||||
image: zjay437/rocksdb:0.6
|
image: ghcr.io/facebook/rocksdb_ubuntu:22.0
|
||||||
options: --shm-size=16gb
|
options: --shm-size=16gb
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4.1.0
|
- uses: actions/checkout@v4.1.0
|
||||||
@@ -236,29 +224,17 @@ jobs:
|
|||||||
- run: make clean
|
- run: make clean
|
||||||
- run: CC=clang-13 CXX=clang++-13 USE_CLANG=1 DEBUG_LEVEL=0 make -j32 release
|
- run: CC=clang-13 CXX=clang++-13 USE_CLANG=1 DEBUG_LEVEL=0 make -j32 release
|
||||||
- uses: "./.github/actions/post-steps"
|
- uses: "./.github/actions/post-steps"
|
||||||
build-linux-gcc-8-no_test_run:
|
build-linux-gcc-13-no_test_run:
|
||||||
if: ${{ github.repository_owner == 'facebook' }}
|
if: ${{ github.repository_owner == 'facebook' }}
|
||||||
runs-on:
|
runs-on:
|
||||||
labels: 16-core-ubuntu
|
labels: 16-core-ubuntu
|
||||||
container:
|
container:
|
||||||
image: zjay437/rocksdb:0.6
|
image: ghcr.io/facebook/rocksdb_ubuntu:22.0
|
||||||
options: --shm-size=16gb
|
options: --shm-size=16gb
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4.1.0
|
- uses: actions/checkout@v4.1.0
|
||||||
- uses: "./.github/actions/pre-steps"
|
- uses: "./.github/actions/pre-steps"
|
||||||
- run: CC=gcc-8 CXX=g++-8 V=1 make -j32 all
|
- run: CC=gcc-13 CXX=g++-13 V=1 make -j32 all microbench
|
||||||
- uses: "./.github/actions/post-steps"
|
|
||||||
build-linux-gcc-10-cxx20-no_test_run:
|
|
||||||
if: ${{ github.repository_owner == 'facebook' }}
|
|
||||||
runs-on:
|
|
||||||
labels: 16-core-ubuntu
|
|
||||||
container:
|
|
||||||
image: zjay437/rocksdb:0.6
|
|
||||||
options: --shm-size=16gb
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4.1.0
|
|
||||||
- uses: "./.github/actions/pre-steps"
|
|
||||||
- run: CC=gcc-10 CXX=g++-10 V=1 ROCKSDB_CXX_STANDARD=c++20 make -j32 all
|
|
||||||
- uses: "./.github/actions/post-steps"
|
- uses: "./.github/actions/post-steps"
|
||||||
|
|
||||||
# ======================== Linux Other Checks ======================= #
|
# ======================== Linux Other Checks ======================= #
|
||||||
@@ -300,7 +276,7 @@ jobs:
|
|||||||
runs-on:
|
runs-on:
|
||||||
labels: 4-core-ubuntu
|
labels: 4-core-ubuntu
|
||||||
container:
|
container:
|
||||||
image: zjay437/rocksdb:0.6
|
image: ghcr.io/facebook/rocksdb_ubuntu:22.0
|
||||||
options: --shm-size=16gb
|
options: --shm-size=16gb
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4.1.0
|
- uses: actions/checkout@v4.1.0
|
||||||
@@ -337,7 +313,7 @@ jobs:
|
|||||||
runs-on:
|
runs-on:
|
||||||
labels: 16-core-ubuntu
|
labels: 16-core-ubuntu
|
||||||
container:
|
container:
|
||||||
image: zjay437/rocksdb:0.6
|
image: ghcr.io/facebook/rocksdb_ubuntu:22.0
|
||||||
options: --shm-size=16gb
|
options: --shm-size=16gb
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4.1.0
|
- uses: actions/checkout@v4.1.0
|
||||||
@@ -404,11 +380,13 @@ jobs:
|
|||||||
runs-on:
|
runs-on:
|
||||||
labels: 4-core-ubuntu
|
labels: 4-core-ubuntu
|
||||||
container:
|
container:
|
||||||
image: evolvedbinary/rocksjava:centos7_x64-be
|
image: ghcr.io/facebook/rocksdb_ubuntu:22.0
|
||||||
options: --shm-size=16gb
|
options: --shm-size=16gb
|
||||||
steps:
|
steps:
|
||||||
# The docker image is intentionally based on an OS that has an older GLIBC version.
|
# The docker image is intentionally based on an OS that has an older GLIBC version.
|
||||||
# That GLIBC is incompatibile with GitHub's actions/checkout. Thus we implement a manual checkout step.
|
# That GLIBC is incompatibile with GitHub's actions/checkout. Thus we implement a manual checkout step.
|
||||||
|
# NOTE: replaced evolvedbinary/rocksjava:centos7_x64-be with ghcr.io/facebook/rocksdb_ubuntu:22.0
|
||||||
|
# until a more appropriate docker image with C++20 support is made.
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
env:
|
env:
|
||||||
GH_TOKEN: ${{ github.token }}
|
GH_TOKEN: ${{ github.token }}
|
||||||
@@ -425,18 +403,21 @@ jobs:
|
|||||||
which java && java -version
|
which java && java -version
|
||||||
which javac && javac -version
|
which javac && javac -version
|
||||||
- name: Test RocksDBJava
|
- name: Test RocksDBJava
|
||||||
run: scl enable devtoolset-7 'make V=1 J=8 -j8 jtest'
|
# NOTE: replaced scl enable devtoolset-7 'make V=1 J=8 -j8 jtest'
|
||||||
# NOTE: post-steps skipped because of compatibility issues with docker image
|
run: make V=1 J=8 -j8 jtest
|
||||||
|
# post-steps skipped because of compatibility issues with docker image
|
||||||
build-linux-java-static:
|
build-linux-java-static:
|
||||||
if: ${{ github.repository_owner == 'facebook' }}
|
if: ${{ github.repository_owner == 'facebook' }}
|
||||||
runs-on:
|
runs-on:
|
||||||
labels: 4-core-ubuntu
|
labels: 4-core-ubuntu
|
||||||
container:
|
container:
|
||||||
image: evolvedbinary/rocksjava:centos7_x64-be
|
image: ghcr.io/facebook/rocksdb_ubuntu:22.0
|
||||||
options: --shm-size=16gb
|
options: --shm-size=16gb
|
||||||
steps:
|
steps:
|
||||||
# The docker image is intentionally based on an OS that has an older GLIBC version.
|
# The docker image is intentionally based on an OS that has an older GLIBC version.
|
||||||
# That GLIBC is incompatibile with GitHub's actions/checkout. Thus we implement a manual checkout step.
|
# That GLIBC is incompatibile with GitHub's actions/checkout. Thus we implement a manual checkout step.
|
||||||
|
# NOTE: replaced evolvedbinary/rocksjava:centos7_x64-be with ghcr.io/facebook/rocksdb_ubuntu:22.0
|
||||||
|
# until a more appropriate docker image with C++20 support is made.
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
env:
|
env:
|
||||||
GH_TOKEN: ${{ github.token }}
|
GH_TOKEN: ${{ github.token }}
|
||||||
@@ -453,8 +434,9 @@ jobs:
|
|||||||
which java && java -version
|
which java && java -version
|
||||||
which javac && javac -version
|
which javac && javac -version
|
||||||
- name: Build RocksDBJava Static Library
|
- name: Build RocksDBJava Static Library
|
||||||
run: scl enable devtoolset-7 'make V=1 J=8 -j8 rocksdbjavastatic'
|
# NOTE: replaced scl enable devtoolset-7 'make V=1 J=8 -j8 rocksdbjavastatic'
|
||||||
# NOTE: post-steps skipped because of compatibility issues with docker image
|
run: make V=1 J=8 -j8 rocksdbjavastatic
|
||||||
|
# post-steps skipped because of compatibility issues with docker image
|
||||||
build-macos-java:
|
build-macos-java:
|
||||||
if: ${{ github.repository_owner == 'facebook' }}
|
if: ${{ github.repository_owner == 'facebook' }}
|
||||||
runs-on: macos-13
|
runs-on: macos-13
|
||||||
|
|||||||
+2
-3
@@ -27,7 +27,7 @@
|
|||||||
#
|
#
|
||||||
# Linux:
|
# Linux:
|
||||||
#
|
#
|
||||||
# 1. Install a recent toolchain if you're on a older distro. C++17 required (GCC >= 7, Clang >= 5)
|
# 1. Install a recent toolchain if you're on a older distro. C++20 required (GCC >= 11, Clang >= 10)
|
||||||
# 2. mkdir build; cd build
|
# 2. mkdir build; cd build
|
||||||
# 3. cmake ..
|
# 3. cmake ..
|
||||||
# 4. make -j
|
# 4. make -j
|
||||||
@@ -100,7 +100,7 @@ endif()
|
|||||||
option(ROCKSDB_BUILD_SHARED "Build shared versions of the RocksDB libraries" ON)
|
option(ROCKSDB_BUILD_SHARED "Build shared versions of the RocksDB libraries" ON)
|
||||||
|
|
||||||
if( NOT DEFINED CMAKE_CXX_STANDARD )
|
if( NOT DEFINED CMAKE_CXX_STANDARD )
|
||||||
set(CMAKE_CXX_STANDARD 17)
|
set(CMAKE_CXX_STANDARD 20)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
include(CMakeDependentOption)
|
include(CMakeDependentOption)
|
||||||
@@ -314,7 +314,6 @@ endif()
|
|||||||
|
|
||||||
# Check if -latomic is required or not
|
# Check if -latomic is required or not
|
||||||
if (NOT MSVC)
|
if (NOT MSVC)
|
||||||
set(CMAKE_REQUIRED_FLAGS "--std=c++17")
|
|
||||||
CHECK_CXX_SOURCE_COMPILES("
|
CHECK_CXX_SOURCE_COMPILES("
|
||||||
#include <atomic>
|
#include <atomic>
|
||||||
std::atomic<uint64_t> x(0);
|
std::atomic<uint64_t> x(0);
|
||||||
|
|||||||
+5
-5
@@ -6,7 +6,7 @@ than release mode.
|
|||||||
|
|
||||||
RocksDB's library should be able to compile without any dependency installed,
|
RocksDB's library should be able to compile without any dependency installed,
|
||||||
although we recommend installing some compression libraries (see below).
|
although we recommend installing some compression libraries (see below).
|
||||||
We do depend on newer gcc/clang with C++17 support (GCC >= 7, Clang >= 5).
|
We do depend on newer gcc/clang with C++20 support (GCC >= 11, Clang >= 10).
|
||||||
|
|
||||||
There are few options when compiling RocksDB:
|
There are few options when compiling RocksDB:
|
||||||
|
|
||||||
@@ -60,7 +60,7 @@ most processors made since roughly 2013.
|
|||||||
## Supported platforms
|
## Supported platforms
|
||||||
|
|
||||||
* **Linux - Ubuntu**
|
* **Linux - Ubuntu**
|
||||||
* Upgrade your gcc to version at least 7 to get C++17 support.
|
* Upgrade your gcc to version at least 11 to get C++20 support.
|
||||||
* Install gflags. First, try: `sudo apt-get install libgflags-dev`
|
* Install gflags. First, try: `sudo apt-get install libgflags-dev`
|
||||||
If this doesn't work and you're using Ubuntu, here's a nice tutorial:
|
If this doesn't work and you're using Ubuntu, here's a nice tutorial:
|
||||||
(http://askubuntu.com/questions/312173/installing-gflags-12-04)
|
(http://askubuntu.com/questions/312173/installing-gflags-12-04)
|
||||||
@@ -72,7 +72,7 @@ most processors made since roughly 2013.
|
|||||||
* Install zstandard: `sudo apt-get install libzstd-dev`.
|
* Install zstandard: `sudo apt-get install libzstd-dev`.
|
||||||
|
|
||||||
* **Linux - CentOS / RHEL**
|
* **Linux - CentOS / RHEL**
|
||||||
* Upgrade your gcc to version at least 7 to get C++17 support
|
* Upgrade your gcc to version at least 11 to get C++20 support
|
||||||
* Install gflags:
|
* Install gflags:
|
||||||
|
|
||||||
git clone https://github.com/gflags/gflags.git
|
git clone https://github.com/gflags/gflags.git
|
||||||
@@ -122,7 +122,7 @@ most processors made since roughly 2013.
|
|||||||
make && sudo make install
|
make && sudo make install
|
||||||
|
|
||||||
* **OS X**:
|
* **OS X**:
|
||||||
* Install latest C++ compiler that supports C++ 17:
|
* Install latest C++ compiler that supports C++20:
|
||||||
* Update XCode: run `xcode-select --install` (or install it from XCode App's settting).
|
* Update XCode: run `xcode-select --install` (or install it from XCode App's settting).
|
||||||
* Install via [homebrew](http://brew.sh/).
|
* Install via [homebrew](http://brew.sh/).
|
||||||
* If you're first time developer in MacOS, you still need to run: `xcode-select --install` in your command line.
|
* If you're first time developer in MacOS, you still need to run: `xcode-select --install` in your command line.
|
||||||
@@ -213,7 +213,7 @@ most processors made since roughly 2013.
|
|||||||
export PATH=/opt/freeware/bin:$PATH
|
export PATH=/opt/freeware/bin:$PATH
|
||||||
|
|
||||||
* **Solaris Sparc**
|
* **Solaris Sparc**
|
||||||
* Install GCC 7 and higher.
|
* Install GCC 11 and higher.
|
||||||
* Use these environment variables:
|
* Use these environment variables:
|
||||||
|
|
||||||
export CC=gcc
|
export CC=gcc
|
||||||
|
|||||||
@@ -148,10 +148,8 @@ ifeq ($(USE_COROUTINES), 1)
|
|||||||
USE_FOLLY = 1
|
USE_FOLLY = 1
|
||||||
# glog/logging.h requires HAVE_CXX11_ATOMIC
|
# glog/logging.h requires HAVE_CXX11_ATOMIC
|
||||||
OPT += -DUSE_COROUTINES -DHAVE_CXX11_ATOMIC
|
OPT += -DUSE_COROUTINES -DHAVE_CXX11_ATOMIC
|
||||||
ROCKSDB_CXX_STANDARD = c++2a
|
|
||||||
USE_RTTI = 1
|
USE_RTTI = 1
|
||||||
ifneq ($(USE_CLANG), 1)
|
ifneq ($(USE_CLANG), 1)
|
||||||
ROCKSDB_CXX_STANDARD = c++20
|
|
||||||
PLATFORM_CXXFLAGS += -fcoroutines
|
PLATFORM_CXXFLAGS += -fcoroutines
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
@@ -683,7 +681,7 @@ am__v_CCH_1 =
|
|||||||
# user build settings
|
# user build settings
|
||||||
%.h.pub: %.h # .h.pub not actually created, so re-checked on each invocation
|
%.h.pub: %.h # .h.pub not actually created, so re-checked on each invocation
|
||||||
$(AM_V_CCH) cd include/ && echo '#include "$(patsubst include/%,%,$<)"' | \
|
$(AM_V_CCH) cd include/ && echo '#include "$(patsubst include/%,%,$<)"' | \
|
||||||
$(CXX) -I. -DROCKSDB_NAMESPACE=42 -x c++ -c - -o /dev/null
|
$(CXX) -std=$(or $(ROCKSDB_CXX_STANDARD),c++20) -I. -DROCKSDB_NAMESPACE=42 -x c++ -c - -o /dev/null
|
||||||
|
|
||||||
check-headers: $(HEADER_OK_FILES)
|
check-headers: $(HEADER_OK_FILES)
|
||||||
|
|
||||||
@@ -2251,7 +2249,7 @@ libsnappy.a: snappy-$(SNAPPY_VER).tar.gz
|
|||||||
-rm -rf snappy-$(SNAPPY_VER)
|
-rm -rf snappy-$(SNAPPY_VER)
|
||||||
tar xvzf snappy-$(SNAPPY_VER).tar.gz
|
tar xvzf snappy-$(SNAPPY_VER).tar.gz
|
||||||
mkdir snappy-$(SNAPPY_VER)/build
|
mkdir snappy-$(SNAPPY_VER)/build
|
||||||
cd snappy-$(SNAPPY_VER)/build && CFLAGS='$(ARCHFLAG) ${JAVA_STATIC_DEPS_CCFLAGS} ${EXTRA_CFLAGS}' CXXFLAGS='$(ARCHFLAG) ${JAVA_STATIC_DEPS_CXXFLAGS} ${EXTRA_CXXFLAGS}' LDFLAGS='${JAVA_STATIC_DEPS_LDFLAGS} ${EXTRA_LDFLAGS}' cmake -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DSNAPPY_BUILD_BENCHMARKS=OFF -DSNAPPY_BUILD_TESTS=OFF --compile-no-warning-as-error ${PLATFORM_CMAKE_FLAGS} .. && $(MAKE) ${SNAPPY_MAKE_TARGET}
|
cd snappy-$(SNAPPY_VER)/build && CFLAGS='$(ARCHFLAG) ${JAVA_STATIC_DEPS_CCFLAGS} ${EXTRA_CFLAGS}' CXXFLAGS='$(ARCHFLAG) ${JAVA_STATIC_DEPS_CXXFLAGS} ${EXTRA_CXXFLAGS}' LDFLAGS='${JAVA_STATIC_DEPS_LDFLAGS} ${EXTRA_LDFLAGS}' cmake -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DSNAPPY_BUILD_BENCHMARKS=OFF -DSNAPPY_BUILD_TESTS=OFF ${PLATFORM_CMAKE_FLAGS} .. && $(MAKE) ${SNAPPY_MAKE_TARGET}
|
||||||
cp snappy-$(SNAPPY_VER)/build/libsnappy.a .
|
cp snappy-$(SNAPPY_VER)/build/libsnappy.a .
|
||||||
|
|
||||||
lz4-$(LZ4_VER).tar.gz:
|
lz4-$(LZ4_VER).tar.gz:
|
||||||
|
|||||||
@@ -45,11 +45,11 @@ if test -z "$OUTPUT"; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# we depend on C++17, but should be compatible with newer standards
|
# we depend on C++20, but should be compatible with newer standards
|
||||||
if [ "$ROCKSDB_CXX_STANDARD" ]; then
|
if [ "$ROCKSDB_CXX_STANDARD" ]; then
|
||||||
PLATFORM_CXXFLAGS="-std=$ROCKSDB_CXX_STANDARD"
|
PLATFORM_CXXFLAGS="-std=$ROCKSDB_CXX_STANDARD"
|
||||||
else
|
else
|
||||||
PLATFORM_CXXFLAGS="-std=c++17"
|
PLATFORM_CXXFLAGS="-std=c++20"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# we currently depend on POSIX platform
|
# we currently depend on POSIX platform
|
||||||
|
|||||||
@@ -0,0 +1,80 @@
|
|||||||
|
# INSTRUCTIONS:
|
||||||
|
# I was not about to build docker images on an isolated devserver because of
|
||||||
|
# issues with proxy internet access. Use a public cloud or other Linux system.
|
||||||
|
# (I used a Debian system after installing docker features, adding my user to
|
||||||
|
# the docker and docker-registry groups, and logging out and back in to pick
|
||||||
|
# those up.)
|
||||||
|
#
|
||||||
|
# Follow https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-container-registry#authenticating-with-a-personal-access-token-classic
|
||||||
|
# to login with your GitHub credentials, as in
|
||||||
|
#
|
||||||
|
# $ docker login ghcr.io -u pdillinger
|
||||||
|
#
|
||||||
|
# and paste the limited-purpose GitHub token into the terminal.
|
||||||
|
#
|
||||||
|
# Then in the build_tools/ubuntu22_image directory, (bump minor version for
|
||||||
|
# random docker file updates, major version tracks Ubuntu release)
|
||||||
|
#
|
||||||
|
# $ docker build -t ghcr.io/facebook/rocksdb_ubuntu:22.0
|
||||||
|
# $ docker push ghcr.io/facebook/rocksdb_ubuntu:22.0
|
||||||
|
#
|
||||||
|
# Might need to change visibility to public through
|
||||||
|
# https://github.com/orgs/facebook/packages/container/rocksdb_ubuntu/settings
|
||||||
|
# or similar.
|
||||||
|
|
||||||
|
# from official ubuntu 22.04
|
||||||
|
FROM ubuntu:22.04
|
||||||
|
# update system
|
||||||
|
RUN apt-get update
|
||||||
|
RUN apt-get upgrade -y
|
||||||
|
# install basic tools
|
||||||
|
RUN apt-get install -y vim wget curl
|
||||||
|
# install tzdata noninteractive
|
||||||
|
RUN DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC apt-get -y install tzdata
|
||||||
|
# install git and default compilers
|
||||||
|
RUN apt-get install -y git gcc g++ clang clang-tools
|
||||||
|
# install basic package
|
||||||
|
RUN apt-get install -y lsb-release software-properties-common gnupg
|
||||||
|
# install gflags, tbb
|
||||||
|
RUN apt-get install -y libgflags-dev libtbb-dev
|
||||||
|
# install compression libs
|
||||||
|
RUN apt-get install -y libsnappy-dev zlib1g-dev libbz2-dev liblz4-dev libzstd-dev
|
||||||
|
# install cmake
|
||||||
|
RUN apt-get install -y cmake
|
||||||
|
RUN apt-get install -y libssl-dev
|
||||||
|
# install clang-13
|
||||||
|
WORKDIR /root
|
||||||
|
RUN wget https://apt.llvm.org/llvm.sh
|
||||||
|
RUN chmod +x llvm.sh
|
||||||
|
RUN ./llvm.sh 13 all
|
||||||
|
# install gcc-10 and more, default is 11
|
||||||
|
RUN apt-get install -y gcc-10 g++-10
|
||||||
|
RUN add-apt-repository -y ppa:ubuntu-toolchain-r/test
|
||||||
|
RUN apt-get install -y gcc-13 g++-13
|
||||||
|
# install apt-get install -y valgrind
|
||||||
|
RUN apt-get install -y valgrind
|
||||||
|
# install folly depencencies
|
||||||
|
RUN apt-get install -y libunwind-dev libgoogle-glog-dev
|
||||||
|
# install openjdk 8
|
||||||
|
RUN apt-get install -y openjdk-8-jdk
|
||||||
|
ENV JAVA_HOME /usr/lib/jvm/java-1.8.0-openjdk-amd64
|
||||||
|
# install mingw
|
||||||
|
RUN apt-get install -y mingw-w64
|
||||||
|
|
||||||
|
# install gtest-parallel package
|
||||||
|
RUN git clone --single-branch --branch master --depth 1 https://github.com/google/gtest-parallel.git ~/gtest-parallel
|
||||||
|
ENV PATH $PATH:/root/gtest-parallel
|
||||||
|
|
||||||
|
# install libprotobuf for fuzzers test
|
||||||
|
RUN apt-get install -y ninja-build binutils liblzma-dev libz-dev pkg-config autoconf libtool
|
||||||
|
RUN git clone --branch v1.0 https://github.com/google/libprotobuf-mutator.git ~/libprotobuf-mutator && cd ~/libprotobuf-mutator && git checkout ffd86a32874e5c08a143019aad1aaf0907294c9f && mkdir build && cd build && cmake .. -GNinja -DCMAKE_C_COMPILER=clang-13 -DCMAKE_CXX_COMPILER=clang++-13 -DCMAKE_BUILD_TYPE=Release -DLIB_PROTO_MUTATOR_DOWNLOAD_PROTOBUF=ON && ninja && ninja install
|
||||||
|
ENV PKG_CONFIG_PATH /usr/local/OFF/:/root/libprotobuf-mutator/build/external.protobuf/lib/pkgconfig/
|
||||||
|
ENV PROTOC_BIN /root/libprotobuf-mutator/build/external.protobuf/bin/protoc
|
||||||
|
|
||||||
|
# install the latest google benchmark
|
||||||
|
RUN git clone --depth 1 --branch v1.7.0 https://github.com/google/benchmark.git ~/benchmark
|
||||||
|
RUN cd ~/benchmark && mkdir build && cd build && cmake .. -GNinja -DCMAKE_BUILD_TYPE=Release -DBENCHMARK_ENABLE_GTEST_TESTS=0 && ninja && ninja install
|
||||||
|
|
||||||
|
# clean up
|
||||||
|
RUN rm -rf /var/lib/apt/lists/*
|
||||||
|
RUN rm -rf /root/benchmark
|
||||||
@@ -1245,13 +1245,11 @@ Status DBImpl::SetOptions(
|
|||||||
WriteOptionsFile(write_options, true /*db_mutex_already_held*/);
|
WriteOptionsFile(write_options, true /*db_mutex_already_held*/);
|
||||||
bg_cv_.SignalAll();
|
bg_cv_.SignalAll();
|
||||||
|
|
||||||
#if __cplusplus >= 202002L
|
|
||||||
assert(new_options_copy == cfd->GetLatestMutableCFOptions());
|
assert(new_options_copy == cfd->GetLatestMutableCFOptions());
|
||||||
assert(cfd->GetLatestMutableCFOptions() ==
|
assert(cfd->GetLatestMutableCFOptions() ==
|
||||||
cfd->GetCurrentMutableCFOptions());
|
cfd->GetCurrentMutableCFOptions());
|
||||||
assert(cfd->GetCurrentMutableCFOptions() ==
|
assert(cfd->GetCurrentMutableCFOptions() ==
|
||||||
cfd->current()->GetMutableCFOptions());
|
cfd->current()->GetMutableCFOptions());
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sv_context.Clean();
|
sv_context.Clean();
|
||||||
|
|||||||
+9
-9
@@ -19,16 +19,16 @@ CFLAGS += -Wstrict-prototypes
|
|||||||
all: simple_example column_families_example compact_files_example c_simple_example optimistic_transaction_example transaction_example compaction_filter_example options_file_example rocksdb_backup_restore_example
|
all: simple_example column_families_example compact_files_example c_simple_example optimistic_transaction_example transaction_example compaction_filter_example options_file_example rocksdb_backup_restore_example
|
||||||
|
|
||||||
simple_example: librocksdb simple_example.cc
|
simple_example: librocksdb simple_example.cc
|
||||||
$(CXX) $(CXXFLAGS) $@.cc -o$@ ../librocksdb.a -I../include -O2 -std=c++17 $(PLATFORM_LDFLAGS) $(PLATFORM_CXXFLAGS) $(EXEC_LDFLAGS)
|
$(CXX) $(CXXFLAGS) $@.cc -o$@ ../librocksdb.a -I../include -O2 -std=c++20 $(PLATFORM_LDFLAGS) $(PLATFORM_CXXFLAGS) $(EXEC_LDFLAGS)
|
||||||
|
|
||||||
column_families_example: librocksdb column_families_example.cc
|
column_families_example: librocksdb column_families_example.cc
|
||||||
$(CXX) $(CXXFLAGS) $@.cc -o$@ ../librocksdb.a -I../include -O2 -std=c++17 $(PLATFORM_LDFLAGS) $(PLATFORM_CXXFLAGS) $(EXEC_LDFLAGS)
|
$(CXX) $(CXXFLAGS) $@.cc -o$@ ../librocksdb.a -I../include -O2 -std=c++20 $(PLATFORM_LDFLAGS) $(PLATFORM_CXXFLAGS) $(EXEC_LDFLAGS)
|
||||||
|
|
||||||
compaction_filter_example: librocksdb compaction_filter_example.cc
|
compaction_filter_example: librocksdb compaction_filter_example.cc
|
||||||
$(CXX) $(CXXFLAGS) $@.cc -o$@ ../librocksdb.a -I../include -O2 -std=c++17 $(PLATFORM_LDFLAGS) $(PLATFORM_CXXFLAGS) $(EXEC_LDFLAGS)
|
$(CXX) $(CXXFLAGS) $@.cc -o$@ ../librocksdb.a -I../include -O2 -std=c++20 $(PLATFORM_LDFLAGS) $(PLATFORM_CXXFLAGS) $(EXEC_LDFLAGS)
|
||||||
|
|
||||||
compact_files_example: librocksdb compact_files_example.cc
|
compact_files_example: librocksdb compact_files_example.cc
|
||||||
$(CXX) $(CXXFLAGS) $@.cc -o$@ ../librocksdb.a -I../include -O2 -std=c++17 $(PLATFORM_LDFLAGS) $(PLATFORM_CXXFLAGS) $(EXEC_LDFLAGS)
|
$(CXX) $(CXXFLAGS) $@.cc -o$@ ../librocksdb.a -I../include -O2 -std=c++20 $(PLATFORM_LDFLAGS) $(PLATFORM_CXXFLAGS) $(EXEC_LDFLAGS)
|
||||||
|
|
||||||
.c.o:
|
.c.o:
|
||||||
$(CC) $(CFLAGS) -c $< -o $@ -I../include
|
$(CC) $(CFLAGS) -c $< -o $@ -I../include
|
||||||
@@ -37,19 +37,19 @@ c_simple_example: librocksdb c_simple_example.o
|
|||||||
$(CXX) $@.o -o$@ ../librocksdb.a $(PLATFORM_LDFLAGS) $(EXEC_LDFLAGS)
|
$(CXX) $@.o -o$@ ../librocksdb.a $(PLATFORM_LDFLAGS) $(EXEC_LDFLAGS)
|
||||||
|
|
||||||
optimistic_transaction_example: librocksdb optimistic_transaction_example.cc
|
optimistic_transaction_example: librocksdb optimistic_transaction_example.cc
|
||||||
$(CXX) $(CXXFLAGS) $@.cc -o$@ ../librocksdb.a -I../include -O2 -std=c++17 $(PLATFORM_LDFLAGS) $(PLATFORM_CXXFLAGS) $(EXEC_LDFLAGS)
|
$(CXX) $(CXXFLAGS) $@.cc -o$@ ../librocksdb.a -I../include -O2 -std=c++20 $(PLATFORM_LDFLAGS) $(PLATFORM_CXXFLAGS) $(EXEC_LDFLAGS)
|
||||||
|
|
||||||
transaction_example: librocksdb transaction_example.cc
|
transaction_example: librocksdb transaction_example.cc
|
||||||
$(CXX) $(CXXFLAGS) $@.cc -o$@ ../librocksdb.a -I../include -O2 -std=c++17 $(PLATFORM_LDFLAGS) $(PLATFORM_CXXFLAGS) $(EXEC_LDFLAGS)
|
$(CXX) $(CXXFLAGS) $@.cc -o$@ ../librocksdb.a -I../include -O2 -std=c++20 $(PLATFORM_LDFLAGS) $(PLATFORM_CXXFLAGS) $(EXEC_LDFLAGS)
|
||||||
|
|
||||||
options_file_example: librocksdb options_file_example.cc
|
options_file_example: librocksdb options_file_example.cc
|
||||||
$(CXX) $(CXXFLAGS) $@.cc -o$@ ../librocksdb.a -I../include -O2 -std=c++17 $(PLATFORM_LDFLAGS) $(PLATFORM_CXXFLAGS) $(EXEC_LDFLAGS)
|
$(CXX) $(CXXFLAGS) $@.cc -o$@ ../librocksdb.a -I../include -O2 -std=c++20 $(PLATFORM_LDFLAGS) $(PLATFORM_CXXFLAGS) $(EXEC_LDFLAGS)
|
||||||
|
|
||||||
multi_processes_example: librocksdb multi_processes_example.cc
|
multi_processes_example: librocksdb multi_processes_example.cc
|
||||||
$(CXX) $(CXXFLAGS) $@.cc -o$@ ../librocksdb.a -I../include -O2 -std=c++17 $(PLATFORM_LDFLAGS) $(PLATFORM_CXXFLAGS) $(EXEC_LDFLAGS)
|
$(CXX) $(CXXFLAGS) $@.cc -o$@ ../librocksdb.a -I../include -O2 -std=c++20 $(PLATFORM_LDFLAGS) $(PLATFORM_CXXFLAGS) $(EXEC_LDFLAGS)
|
||||||
|
|
||||||
rocksdb_backup_restore_example: librocksdb rocksdb_backup_restore_example.cc
|
rocksdb_backup_restore_example: librocksdb rocksdb_backup_restore_example.cc
|
||||||
$(CXX) $(CXXFLAGS) $@.cc -o$@ ../librocksdb.a -I../include -O2 -std=c++17 $(PLATFORM_LDFLAGS) $(PLATFORM_CXXFLAGS) $(EXEC_LDFLAGS)
|
$(CXX) $(CXXFLAGS) $@.cc -o$@ ../librocksdb.a -I../include -O2 -std=c++20 $(PLATFORM_LDFLAGS) $(PLATFORM_CXXFLAGS) $(EXEC_LDFLAGS)
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -rf ./simple_example ./column_families_example ./compact_files_example ./compaction_filter_example ./c_simple_example c_simple_example.o ./optimistic_transaction_example ./transaction_example ./options_file_example ./multi_processes_example ./rocksdb_backup_restore_example
|
rm -rf ./simple_example ./column_families_example ./compact_files_example ./compaction_filter_example ./c_simple_example c_simple_example.o ./optimistic_transaction_example ./transaction_example ./options_file_example ./multi_processes_example ./rocksdb_backup_restore_example
|
||||||
|
|||||||
@@ -64,9 +64,7 @@ enum CompactionPri : char {
|
|||||||
struct FileTemperatureAge {
|
struct FileTemperatureAge {
|
||||||
Temperature temperature = Temperature::kUnknown;
|
Temperature temperature = Temperature::kUnknown;
|
||||||
uint64_t age = 0;
|
uint64_t age = 0;
|
||||||
#if __cplusplus >= 202002L
|
|
||||||
bool operator==(const FileTemperatureAge& rhs) const = default;
|
bool operator==(const FileTemperatureAge& rhs) const = default;
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct CompactionOptionsFIFO {
|
struct CompactionOptionsFIFO {
|
||||||
@@ -135,9 +133,7 @@ struct CompactionOptionsFIFO {
|
|||||||
: max_table_files_size(_max_table_files_size),
|
: max_table_files_size(_max_table_files_size),
|
||||||
allow_compaction(_allow_compaction) {}
|
allow_compaction(_allow_compaction) {}
|
||||||
|
|
||||||
#if __cplusplus >= 202002L
|
|
||||||
bool operator==(const CompactionOptionsFIFO& rhs) const = default;
|
bool operator==(const CompactionOptionsFIFO& rhs) const = default;
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// The control option of how the cache tiers will be used. Currently rocksdb
|
// The control option of how the cache tiers will be used. Currently rocksdb
|
||||||
|
|||||||
@@ -313,9 +313,7 @@ struct CompressionOptions {
|
|||||||
max_compressed_bytes_per_kb = static_cast<int>(1024.0 / min_ratio + 0.5);
|
max_compressed_bytes_per_kb = static_cast<int>(1024.0 / min_ratio + 0.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if __cplusplus >= 202002L
|
|
||||||
bool operator==(const CompressionOptions& rhs) const = default;
|
bool operator==(const CompressionOptions& rhs) const = default;
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// See advanced_compression.h
|
// See advanced_compression.h
|
||||||
|
|||||||
@@ -24,7 +24,7 @@
|
|||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <string_view> // RocksDB now requires C++17 support
|
#include <string_view>
|
||||||
|
|
||||||
#include "rocksdb/cleanable.h"
|
#include "rocksdb/cleanable.h"
|
||||||
|
|
||||||
|
|||||||
@@ -144,9 +144,7 @@ class CompactionOptionsUniversal {
|
|||||||
incremental(false),
|
incremental(false),
|
||||||
reduce_file_locking(false) {}
|
reduce_file_locking(false) {}
|
||||||
|
|
||||||
#if __cplusplus >= 202002L
|
|
||||||
bool operator==(const CompactionOptionsUniversal& rhs) const = default;
|
bool operator==(const CompactionOptionsUniversal& rhs) const = default;
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace ROCKSDB_NAMESPACE
|
} // namespace ROCKSDB_NAMESPACE
|
||||||
|
|||||||
@@ -90,7 +90,7 @@ class CacheDumper {
|
|||||||
public:
|
public:
|
||||||
virtual ~CacheDumper() = default;
|
virtual ~CacheDumper() = default;
|
||||||
// Only dump the blocks in the block cache that belong to the DBs in this list
|
// Only dump the blocks in the block cache that belong to the DBs in this list
|
||||||
virtual Status SetDumpFilter(std::vector<DB*> db_list) {
|
virtual Status SetDumpFilter(const std::vector<DB*>& db_list) {
|
||||||
(void)db_list;
|
(void)db_list;
|
||||||
return Status::NotSupported("SetDumpFilter is not supported");
|
return Status::NotSupported("SetDumpFilter is not supported");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -257,9 +257,7 @@ struct MutableCFOptions {
|
|||||||
|
|
||||||
void Dump(Logger* log) const;
|
void Dump(Logger* log) const;
|
||||||
|
|
||||||
#if __cplusplus >= 202002L
|
|
||||||
bool operator==(const MutableCFOptions& rhs) const = default;
|
bool operator==(const MutableCFOptions& rhs) const = default;
|
||||||
#endif
|
|
||||||
|
|
||||||
// Memtable related options
|
// Memtable related options
|
||||||
size_t write_buffer_size;
|
size_t write_buffer_size;
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
* RocksDB now requires a C++20 compatible compiler (GCC >= 11, Clang >= 10, Visual Studio >= 2019), including for any code using RocksDB headers.
|
||||||
@@ -7,6 +7,8 @@
|
|||||||
|
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
#include <semaphore>
|
||||||
|
|
||||||
#include "port/port.h"
|
#include "port/port.h"
|
||||||
#include "port/stack_trace.h"
|
#include "port/stack_trace.h"
|
||||||
#include "rocksdb/data_structure.h"
|
#include "rocksdb/data_structure.h"
|
||||||
@@ -422,6 +424,24 @@ TEST(ToBaseCharsStringTest, Tests) {
|
|||||||
ASSERT_EQ(ToBaseCharsString<32>(2, 255, false), "7v");
|
ASSERT_EQ(ToBaseCharsString<32>(2, 255, false), "7v");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(SemaphoreTest, BasicStdCountingSemaphore) {
|
||||||
|
// Verify the C++20 API is available and apparently working
|
||||||
|
std::counting_semaphore sem{0};
|
||||||
|
int kCount = 5;
|
||||||
|
std::vector<std::thread> threads;
|
||||||
|
for (int i = 0; i < kCount; ++i) {
|
||||||
|
threads.emplace_back([&sem] { sem.release(); });
|
||||||
|
}
|
||||||
|
for (int i = 0; i < kCount; ++i) {
|
||||||
|
threads.emplace_back([&sem] { sem.acquire(); });
|
||||||
|
}
|
||||||
|
for (auto& t : threads) {
|
||||||
|
t.join();
|
||||||
|
}
|
||||||
|
// Nothing left on the semaphore
|
||||||
|
ASSERT_FALSE(sem.try_acquire());
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace ROCKSDB_NAMESPACE
|
} // namespace ROCKSDB_NAMESPACE
|
||||||
|
|
||||||
int main(int argc, char** argv) {
|
int main(int argc, char** argv) {
|
||||||
|
|||||||
+2
-16
@@ -20,20 +20,6 @@
|
|||||||
#include "port/sys_time.h"
|
#include "port/sys_time.h"
|
||||||
#include "rocksdb/slice.h"
|
#include "rocksdb/slice.h"
|
||||||
|
|
||||||
#ifndef __has_cpp_attribute
|
|
||||||
#define ROCKSDB_HAS_CPP_ATTRIBUTE(x) 0
|
|
||||||
#else
|
|
||||||
#define ROCKSDB_HAS_CPP_ATTRIBUTE(x) __has_cpp_attribute(x)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ROCKSDB_HAS_CPP_ATTRIBUTE(maybe_unused) && __cplusplus >= 201703L
|
|
||||||
#define ROCKSDB_MAYBE_UNUSED [[maybe_unused]]
|
|
||||||
#elif ROCKSDB_HAS_CPP_ATTRIBUTE(gnu::unused) || __GNUC__
|
|
||||||
#define ROCKSDB_MAYBE_UNUSED [[gnu::unused]]
|
|
||||||
#else
|
|
||||||
#define ROCKSDB_MAYBE_UNUSED
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace ROCKSDB_NAMESPACE {
|
namespace ROCKSDB_NAMESPACE {
|
||||||
|
|
||||||
const std::string kNullptrString = "nullptr";
|
const std::string kNullptrString = "nullptr";
|
||||||
@@ -501,7 +487,7 @@ bool TryParseTimeRangeString(const std::string& value, int& start_time,
|
|||||||
// selects proper function.
|
// selects proper function.
|
||||||
|
|
||||||
#if !(defined(_WIN32) && (defined(__MINGW32__) || defined(_MSC_VER)))
|
#if !(defined(_WIN32) && (defined(__MINGW32__) || defined(_MSC_VER)))
|
||||||
ROCKSDB_MAYBE_UNUSED
|
[[maybe_unused]]
|
||||||
static std::string invoke_strerror_r(int (*strerror_r)(int, char*, size_t),
|
static std::string invoke_strerror_r(int (*strerror_r)(int, char*, size_t),
|
||||||
int err, char* buf, size_t buflen) {
|
int err, char* buf, size_t buflen) {
|
||||||
// Using XSI-compatible strerror_r
|
// Using XSI-compatible strerror_r
|
||||||
@@ -515,7 +501,7 @@ static std::string invoke_strerror_r(int (*strerror_r)(int, char*, size_t),
|
|||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
ROCKSDB_MAYBE_UNUSED
|
[[maybe_unused]]
|
||||||
static std::string invoke_strerror_r(char* (*strerror_r)(int, char*, size_t),
|
static std::string invoke_strerror_r(char* (*strerror_r)(int, char*, size_t),
|
||||||
int err, char* buf, size_t buflen) {
|
int err, char* buf, size_t buflen) {
|
||||||
// Using GNU strerror_r
|
// Using GNU strerror_r
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ namespace ROCKSDB_NAMESPACE {
|
|||||||
// DBs and we may only want to dump out the blocks belonging to certain DB(s).
|
// DBs and we may only want to dump out the blocks belonging to certain DB(s).
|
||||||
// Therefore, a filter is need to decide if the key of the block satisfy the
|
// Therefore, a filter is need to decide if the key of the block satisfy the
|
||||||
// requirement.
|
// requirement.
|
||||||
Status CacheDumperImpl::SetDumpFilter(std::vector<DB*> db_list) {
|
Status CacheDumperImpl::SetDumpFilter(const std::vector<DB*>& db_list) {
|
||||||
Status s = Status::OK();
|
Status s = Status::OK();
|
||||||
dump_all_keys_ = false;
|
dump_all_keys_ = false;
|
||||||
for (size_t i = 0; i < db_list.size(); i++) {
|
for (size_t i = 0; i < db_list.size(); i++) {
|
||||||
|
|||||||
@@ -100,7 +100,7 @@ class CacheDumperImpl : public CacheDumper {
|
|||||||
dumped_size_bytes_ = 0;
|
dumped_size_bytes_ = 0;
|
||||||
}
|
}
|
||||||
~CacheDumperImpl() { writer_.reset(); }
|
~CacheDumperImpl() { writer_.reset(); }
|
||||||
Status SetDumpFilter(std::vector<DB*> db_list) override;
|
Status SetDumpFilter(const std::vector<DB*>& db_list) override;
|
||||||
IOStatus DumpCacheEntriesToWriter() override;
|
IOStatus DumpCacheEntriesToWriter() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
Reference in New Issue
Block a user