Skip to content

Improve compute sanitizer workflow - #360

Open
bdice wants to merge 2 commits into
rapidsai:mainfrom
bdice:codex/fix-compute-sanitizer-image-resolution
Open

Improve compute sanitizer workflow#360
bdice wants to merge 2 commits into
rapidsai:mainfrom
bdice:codex/fix-compute-sanitizer-image-resolution

Conversation

@bdice

@bdice bdice commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Change velox-compute-sanitizer-trigger.yaml into a lightweight scheduler/manual dispatcher that starts separate velox-compute-sanitizer-run.yaml workflows for memcheck, racecheck, and synccheck.
  • Move test discovery into velox-compute-sanitizer-run.yaml, matching the cuDF pattern where the run workflow owns discovery and execution.
  • Keep the compute-sanitizer default image on velox-latest-gpu-cuda13.1 and copy the clearer GHCR image guidance into the manual dispatch inputs.
  • Update the workflow README to describe the new split.

Context

The previous trigger workflow was not just a trigger: it discovered tests and ran the full weekly sanitizer matrix through reusable workflow calls. The cuDF workflow uses a cleaner split where the trigger workflow schedules separate run workflows, and the run workflow handles discovery plus execution. This PR reshapes Velox in that direction while preserving its current weekly tool coverage.

Validation

  • yq e . .github/workflows/velox-compute-sanitizer-trigger.yaml
  • yq e . .github/workflows/velox-compute-sanitizer-run.yaml
  • git diff --check
  • Commit hooks: whitespace, EOF, codespell, zizmor

actionlint was not installed in this local environment.

@copy-pr-bot

copy-pr-bot Bot commented Jun 12, 2026

Copy link
Copy Markdown

Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually.

Contributors can view more details about this message here.

@bdice bdice changed the title [codex] Update compute sanitizer CUDA image default [codex] Align compute sanitizer workflow split Jun 12, 2026
@bdice bdice changed the title [codex] Align compute sanitizer workflow split Improve compute sanitizer workflow Jun 23, 2026
@bdice
bdice marked this pull request as ready for review June 23, 2026 16:11
@bdice
bdice requested a review from a team as a code owner June 23, 2026 16:11
@bdice
bdice requested a review from kingcrimsontianyu June 23, 2026 16:11

@misiugodfrey misiugodfrey left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good. Just a few minor comments for your consideration.

needs:
- resolve-image
- discover-sanitizer-tests
if: ${{ !cancelled() }}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does !cancelled() override the default behavior of "skip if dependent job failed"?

My understanding of the intent here is that we want to run this even if discover-sanitizer-tests was skipped (i.e. if tests to run were manually specified), but I don't think we want to run if it, or the resolve-image steps failed.

Perhaps something like: if: ${{ !cancelled() && (inputs.test_names != '' }} conveys the intend more explicitly?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I will check into this.

tool_name: "synccheck"
test_names: ${{ needs.discover-tests.outputs.tests }}
velox_image: ${{ needs.discover-tests.outputs.velox_image }}
gh workflow run velox-compute-sanitizer-run.yaml "${args[@]}"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IIUC this job will now be green as long as the sub-jobs have been dispatched - regardless of whether they pass or not. Is this ok with how we intend to view/report these results?
I don't think we want to leave the triggering job spinning as it waits for the other jobs to finish; I just want to make sure we aren't going to miss failures if they do occur by looking at the wrong reporting. If those jobs are hooked into slack or something then that's probably fine.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, this succeeds if the trigger succeeds. I think that’s fine. We can’t spin-wait here because the actual runs take too long.

steps:
- name: Checkout code
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think trigger-sanitizer needs the checkout action any more? Since it's just calling gh workflow run now, I think we can remove this action (and possibly the contents: read requirement).

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Probably so. I will check that.

steps:
- name: Checkout code
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not familiar with workflow management with yaml in general. Claude flagged a minor issue. Not sure if it makes sense or not. Just fyi:

velox-compute-sanitizer-trigger.yaml:35 — the actions/checkout step is unnecessary. The job's only real step is gh workflow run …, which is a pure REST call (uses GH_TOKEN + the auto-set GITHUB_REPOSITORY); it never reads the working tree. The checkout — and the contents: read permission it forces at line 26 — is dead work that can be removed, leaving the job with just actions: write.

type: string
required: false
default: ''
default: ""

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there any difference between using single/double quotes in this yaml file? Or is this simply to maintain format consistency and use double quotes wherever possible?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants