mirror of
https://github.com/tokio-rs/tokio.git
synced 2026-08-17 00:00:11 +02:00
Previously, calling `task::yield_now().await` would yield the current task to the scheduler, but the scheduler would poll it again before polling the resource drivers. This behavior can result in starving the resource drivers. This patch creates a queue tracking yielded tasks. The scheduler notifies those tasks **after** polling the resource drivers. Refs: #5209
50 lines
1.3 KiB
YAML
50 lines
1.3 KiB
YAML
on:
|
|
push:
|
|
branches: ["master", "tokio-*.x"]
|
|
pull_request:
|
|
types: [labeled, opened, synchronize, reopened]
|
|
branches: ["master", "tokio-*.x"]
|
|
|
|
name: Loom
|
|
|
|
env:
|
|
RUSTFLAGS: -Dwarnings
|
|
RUST_BACKTRACE: 1
|
|
# Change to specific Rust release to pin
|
|
rust_stable: stable
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
loom:
|
|
name: loom
|
|
# base_ref is null when it's not a pull request
|
|
if: github.repository_owner == 'tokio-rs' && (contains(github.event.pull_request.labels.*.name, 'R-loom') || (github.base_ref == null))
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
scope:
|
|
- --skip loom_pool
|
|
- loom_pool::group_a
|
|
- loom_pool::group_b
|
|
- loom_pool::group_c
|
|
- loom_pool::group_d
|
|
- time::driver
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- name: Install Rust ${{ env.rust_stable }}
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
toolchain: ${{ env.rust_stable }}
|
|
override: true
|
|
- uses: Swatinem/rust-cache@v1
|
|
- name: loom ${{ matrix.scope }}
|
|
run: cargo test --lib --release --features full -- --nocapture $SCOPE
|
|
working-directory: tokio
|
|
env:
|
|
RUSTFLAGS: --cfg loom --cfg tokio_unstable -Dwarnings
|
|
LOOM_MAX_PREEMPTIONS: 2
|
|
LOOM_MAX_BRANCHES: 10000
|
|
SCOPE: ${{ matrix.scope }}
|