Reclaim unscheduled timer tasks instead of holding slots until run_time #2966
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build and Test on Linux | |
| on: | |
| push: | |
| branches: [ master ] | |
| paths-ignore: | |
| - '**.md' | |
| pull_request: | |
| branches: [ master ] | |
| paths-ignore: | |
| - '**.md' | |
| env: | |
| proc_num: $(nproc) | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
| cancel-in-progress: ${{ github.event_name == 'pull_request' }} | |
| # https://github.com/actions/runner-images | |
| jobs: | |
| compile-with-make: | |
| runs-on: ubuntu-22.04 | |
| steps: | |
| - uses: actions/checkout@v2 | |
| - uses: ./.github/actions/install-all-dependencies | |
| - name: gcc with default options | |
| uses: ./.github/actions/compile-with-make | |
| with: | |
| options: --headers=/usr/include --libs=/usr/lib /usr/lib64 --cc=gcc --cxx=g++ --werror | |
| - name: gcc with all options | |
| uses: ./.github/actions/compile-with-make | |
| with: | |
| options: --headers=/usr/include --libs=/usr/lib /usr/lib64 --cc=gcc --cxx=g++ --werror \ | |
| --with-thrift --with-glog --with-rdma --with-debug-bthread-sche-safety \ | |
| --with-debug-lock --with-bthread-tracer --with-asan | |
| - name: clang with default options | |
| uses: ./.github/actions/compile-with-make | |
| with: | |
| options: --headers=/usr/include --libs=/usr/lib /usr/lib64 --cc=clang --cxx=clang++ --werror | |
| - name: clang with all options | |
| uses: ./.github/actions/compile-with-make | |
| with: | |
| options: --headers=/usr/include --libs=/usr/lib /usr/lib64 --cc=clang --cxx=clang++ --werror \ | |
| --with-thrift --with-glog --with-rdma --with-debug-bthread-sche-safety \ | |
| --with-debug-lock --with-bthread-tracer --with-asan | |
| compile-with-cmake: | |
| runs-on: ubuntu-22.04 | |
| steps: | |
| - uses: actions/checkout@v2 | |
| - uses: ./.github/actions/install-all-dependencies | |
| - name: gcc with default options | |
| run: | | |
| export CC=gcc && export CXX=g++ | |
| mkdir gcc_build && cd gcc_build && cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 .. | |
| make -j ${{env.proc_num}} && make clean | |
| - name: gcc with all options | |
| run: | | |
| export CC=gcc && export CXX=g++ | |
| mkdir gcc_build_all && cd gcc_build_all | |
| cmake -DWITH_MESALINK=OFF -DWITH_GLOG=ON -DWITH_THRIFT=ON -DWITH_RDMA=ON \ | |
| -DWITH_DEBUG_BTHREAD_SCHE_SAFETY=ON -DWITH_DEBUG_LOCK=ON -DWITH_BTHREAD_TRACER=ON \ | |
| -DWITH_ASAN=ON -DCMAKE_POLICY_VERSION_MINIMUM=3.5 .. | |
| make -j ${{env.proc_num}} && make clean | |
| - name: clang with default options | |
| run: | | |
| export CC=clang && export CXX=clang++ | |
| mkdir clang_build && cd clang_build && cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 .. | |
| make -j ${{env.proc_num}} && make clean | |
| - name: clang with all options | |
| run: | | |
| export CC=clang && export CXX=clang++ | |
| mkdir clang_build_all && cd clang_build_all | |
| cmake -DWITH_MESALINK=OFF -DWITH_GLOG=ON -DWITH_THRIFT=ON -DWITH_RDMA=ON \ | |
| -DWITH_DEBUG_BTHREAD_SCHE_SAFETY=ON -DWITH_DEBUG_LOCK=ON -DWITH_BTHREAD_TRACER=ON \ | |
| -DWITH_ASAN=ON -DCMAKE_POLICY_VERSION_MINIMUM=3.5 .. | |
| make -j ${{env.proc_num}} && make clean | |
| gcc-compile-with-make-protobuf: | |
| runs-on: ubuntu-22.04 | |
| steps: | |
| - uses: actions/checkout@v2 | |
| - uses: ./.github/actions/install-essential-dependencies | |
| - name: protobuf 3.5.1 | |
| uses: ./.github/actions/compile-with-make-protobuf | |
| with: | |
| protobuf-version: 3.5.1 | |
| protobuf-cpp-version: 3.5.1 | |
| protobuf-install-dir: /protobuf-3.5.1 | |
| config-brpc-options: --cc=gcc --cxx=g++ --werror | |
| - name: protobuf 3.12.4 | |
| uses: ./.github/actions/compile-with-make-protobuf | |
| with: | |
| protobuf-version: 3.12.4 | |
| protobuf-cpp-version: 3.12.4 | |
| protobuf-install-dir: /protobuf-3.12.4 | |
| config-brpc-options: --cc=gcc --cxx=g++ --werror | |
| - name: protobuf 21.12 | |
| uses: ./.github/actions/compile-with-make-protobuf | |
| with: | |
| protobuf-version: 21.12 | |
| protobuf-cpp-version: 3.21.12 | |
| protobuf-install-dir: /protobuf-3.21.12 | |
| config-brpc-options: --cc=gcc --cxx=g++ --werror | |
| gcc-unittest-with-bazel: | |
| runs-on: ubuntu-22.04 | |
| steps: | |
| - uses: actions/checkout@v2 | |
| # Install redis-server/mysql-server so the integration tests that fork a | |
| # real server (e.g. brpc_redis_unittest) actually run under bazel instead | |
| # of skipping. Same shared action the make-based unittest jobs use. | |
| - uses: ./.github/actions/install-essential-dependencies | |
| - run: bazel test //test/... | |
| gcc-compile-with-bazel-all-options: | |
| runs-on: ubuntu-22.04 | |
| steps: | |
| - uses: actions/checkout@v2 | |
| - run: | | |
| bazel build --define with_mesalink=false \ | |
| --define with_glog=true \ | |
| --define with_thrift=true \ | |
| --define BRPC_WITH_BORINGSSL=true \ | |
| --define with_debug_bthread_sche_safety=true \ | |
| --define with_debug_lock=true \ | |
| --define with_asan=true \ | |
| --define with_bthread_tracer=true \ | |
| --define BRPC_WITH_NO_PTHREAD_MUTEX_HOOK=true \ | |
| --define with_babylon_counter=true \ | |
| -- //:brpc | |
| clang-compile-with-make-protobuf: | |
| runs-on: ubuntu-22.04 | |
| steps: | |
| - uses: actions/checkout@v2 | |
| - uses: ./.github/actions/install-essential-dependencies | |
| - name: protobuf 3.5.1 | |
| uses: ./.github/actions/compile-with-make-protobuf | |
| with: | |
| protobuf-version: 3.5.1 | |
| protobuf-cpp-version: 3.5.1 | |
| protobuf-install-dir: /protobuf-3.5.1 | |
| config-brpc-options: --cc=clang --cxx=clang++ --werror | |
| - name: protobuf 3.12.4 | |
| uses: ./.github/actions/compile-with-make-protobuf | |
| with: | |
| protobuf-version: 3.12.4 | |
| protobuf-cpp-version: 3.12.4 | |
| protobuf-install-dir: /protobuf-3.12.4 | |
| config-brpc-options: --cc=clang --cxx=clang++ --werror | |
| - name: protobuf 21.12 | |
| uses: ./.github/actions/compile-with-make-protobuf | |
| with: | |
| protobuf-version: 21.12 | |
| protobuf-cpp-version: 3.21.12 | |
| protobuf-install-dir: /protobuf-3.21.12 | |
| config-brpc-options: --cc=clang --cxx=clang++ --werror | |
| clang-unittest-with-bazel: | |
| runs-on: ubuntu-22.04 | |
| steps: | |
| - uses: actions/checkout@v2 | |
| # Install redis-server/mysql-server so the forked-server integration tests | |
| # actually run under bazel (see gcc-unittest-with-bazel). | |
| - uses: ./.github/actions/install-essential-dependencies | |
| - run: | | |
| bazel test --test_output=streamed \ | |
| --action_env=CC=clang \ | |
| //test/... | |
| clang-compile-with-bazel-all-options: | |
| runs-on: ubuntu-22.04 | |
| steps: | |
| - uses: actions/checkout@v2 | |
| - run: | | |
| bazel build --action_env=CC=clang \ | |
| --define with_mesalink=false \ | |
| --define with_glog=true \ | |
| --define with_thrift=true \ | |
| --define BRPC_WITH_BORINGSSL=true \ | |
| --define with_debug_bthread_sche_safety=true \ | |
| --define with_debug_lock=true \ | |
| --define with_asan=true \ | |
| --define with_bthread_tracer=true \ | |
| --define BRPC_WITH_NO_PTHREAD_MUTEX_HOOK=true \ | |
| --define with_babylon_counter=true \ | |
| -- //:brpc | |
| clang-unittest: | |
| runs-on: ubuntu-22.04 | |
| steps: | |
| - uses: actions/checkout@v2 | |
| - uses: ./.github/actions/install-essential-dependencies | |
| - uses: ./.github/actions/init-ut-make-config | |
| with: | |
| options: --with-bthread-tracer | |
| - name: compile tests | |
| run: | | |
| cat config.mk | |
| cd test | |
| make -j ${{env.proc_num}} | |
| - name: run tests | |
| run: | | |
| cd test | |
| sh ./run_tests.sh | |
| clang-unittest-asan: | |
| runs-on: ubuntu-22.04 | |
| steps: | |
| - uses: actions/checkout@v2 | |
| - uses: ./.github/actions/install-essential-dependencies | |
| - uses: ./.github/actions/init-ut-make-config | |
| with: | |
| options: --with-bthread-tracer --with-asan | |
| - name: compile tests | |
| run: | | |
| cat config.mk | |
| cd test | |
| make NEED_GPERFTOOLS=0 -j ${{env.proc_num}} | |
| - name: run tests | |
| run: | | |
| cd test | |
| # The redis integration tests (sanity/keys_with_spaces/incr_and_decr/by_components/auth) | |
| # fork a real redis-server and connect after a fixed 50ms wait; under ASan redis starts | |
| # too slowly, so they flake here (connection refused). Skip just those under ASan; the | |
| # redis codec/server tests still run, and the full suite runs in clang-unittest. | |
| GTEST_FILTER='-RedisTest.sanity:RedisTest.keys_with_spaces:RedisTest.incr_and_decr:RedisTest.by_components:RedisTest.auth' sh ./run_tests.sh | |
| clang-unittest-bazel-with-babylon-and-new-pb: | |
| runs-on: ubuntu-22.04 | |
| env: | |
| TEST_PROTOBUF_VERSION: "34.1" | |
| # protobuf >= 34.x uses new ProtoInfo fields (option_deps, | |
| # extension_declarations) introduced in Bazel 8.x. The repo's | |
| # .bazelversion (7.2.1) is too old. bazelisk honors USE_BAZEL_VERSION. | |
| USE_BAZEL_VERSION: "8.3.1" | |
| steps: | |
| - uses: actions/checkout@v2 | |
| # Install redis-server/mysql-server so the forked-server integration tests | |
| # actually run under bazel (see gcc-unittest-with-bazel). | |
| - uses: ./.github/actions/install-essential-dependencies | |
| - name: Override protobuf version for testing | |
| run: | | |
| sed -i -E "s/(bazel_dep\(name = ['\"]protobuf['\"], version = ['\"])[^'\"]+/\1${TEST_PROTOBUF_VERSION}/" MODULE.bazel | |
| echo "After override:" | |
| grep -E "bazel_dep\(name = ['\"]protobuf['\"]" MODULE.bazel | |
| grep -qE "bazel_dep\(name = ['\"]protobuf['\"], version = ['\"]${TEST_PROTOBUF_VERSION}['\"]" MODULE.bazel \ | |
| || { echo "ERROR: failed to override protobuf version in MODULE.bazel to ${TEST_PROTOBUF_VERSION}"; exit 1; } | |
| - run: | | |
| bazel test --action_env=CC=clang --config=rdma \ | |
| --define with_bthread_tracer=true \ | |
| --define with_babylon_counter=true \ | |
| //test/... --test_arg=--gtest_filter=-RdmaRpcTest.* |