This is an automated email from the ASF dual-hosted git repository. github-merge-queue[bot] pushed a commit to branch gh-readonly-queue/main/pr-11935-873c3f1b223b095aeb6dee61ebf938994001f8b7 in repository https://gitbox.apache.org/repos/asf/arrow-rs.git
commit f971a78518039c1108c8e8ffdc17e4bebc85dec5 Author: Kosta Tarasov <[email protected]> AuthorDate: Wed Oct 28 12:39:39 2026 +0000 Open an issue when daily Miri checks fail (#11935) # Which issue does this PR close? Closes #11548. # Rationale for this change From @Jefffrey's [review of #11631](https://github.com/apache/arrow-rs/pull/11631#pullrequestreview-5598578977): > some follow up work would be a way to notify if this miri run fails (e.g. auto create an issue) # What changes are included in this PR? Failed scheduled Miri runs in `apache/arrow-rs` open a `Daily Miri checks failed` issue linking the failed run and commit. Further failures leave an existing alert alone; maintainers close it after Miri passes again. Manual runs and forks do not create alerts. # Are these changes tested? Validated with a temporary workflow on my fork using simulated Miri partitions and the same alert script, with the repository/event guard adapted for manual fork runs: - A failure created [alert issue #8](https://github.com/sdf-jkl/arrow-rs/issues/8). - A [repeat failure](https://github.com/sdf-jkl/arrow-rs/actions/runs/40513403680) created no duplicate issue or comment. - A [successful run](https://github.com/sdf-jkl/arrow-rs/actions/runs/40513291680) produced no alert. # Are there any significant user-facing changes? No. AI assisted with the workflow implementation, documentation, and validation. --- .github/workflows/README.md | 2 ++ .github/workflows/miri.yaml | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/.github/workflows/README.md b/.github/workflows/README.md index 7b60aa3c96..67db463f0c 100644 --- a/.github/workflows/README.md +++ b/.github/workflows/README.md @@ -26,6 +26,8 @@ A single required status check combines the results and blocks merging on failur Miri runs separately every day at 03:17 UTC and on demand through the `miri` workflow's **Run workflow** button or `gh workflow run miri.yaml --repo apache/arrow-rs --ref <branch-or-tag>`. +Failed scheduled runs in `apache/arrow-rs` open a `Daily Miri checks failed` issue +unless one is already open. Close the issue after Miri passes again to allow new alerts. New jobs that are small and short should use `runs-on: ubuntu-slim`, as ASF Infra recommends. These runners have 1 vCPU, 5 GB of memory, no Docker engine and a 15-minute hard limit, but diff --git a/.github/workflows/miri.yaml b/.github/workflows/miri.yaml index f444faa862..16a16eee58 100644 --- a/.github/workflows/miri.yaml +++ b/.github/workflows/miri.yaml @@ -54,3 +54,36 @@ jobs: RUST_BACKTRACE: full RUST_LOG: "trace" run: bash .github/workflows/miri.sh ${{ matrix.partition }} 12 + + report-failure: + name: Report daily Miri failure + needs: miri-checks + if: failure() && github.event_name == 'schedule' && github.repository == 'apache/arrow-rs' + runs-on: ubuntu-slim + permissions: + issues: write + steps: + - uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 + with: + script: | + const title = 'Daily Miri checks failed'; + const pages = github.paginate.iterator(github.rest.issues.listForRepo, { + ...context.repo, state: 'open', per_page: 100, + }); + for await (const { data: issues } of pages) { + if (issues.some(issue => !issue.pull_request && issue.title === title)) { + return; + } + } + const repositoryUrl = `${context.serverUrl}/${context.repo.owner}/${context.repo.repo}`; + await github.rest.issues.create({ + ...context.repo, + title, + labels: ['development-process'], + body: [ + `The daily Miri run failed: ${repositoryUrl}/actions/runs/${context.runId}`, + `Commit: ${context.sha}`, + `Check [subsequent runs](${repositoryUrl}/actions/workflows/miri.yaml) and close this issue once Miri passes again.`, + 'Further failures will not create another alert while this issue is open.', + ].join('\n\n'), + });
