Skip to content

ci: add arm64 unit test jobs and run all flavors on Oracle VM runners#20282

Merged
arthurschreiber merged 2 commits into
mainfrom
arthur/unit-test-arm64
Jun 15, 2026
Merged

ci: add arm64 unit test jobs and run all flavors on Oracle VM runners#20282
arthurschreiber merged 2 commits into
mainfrom
arthur/unit-test-arm64

Conversation

@arthurschreiber

@arthurschreiber arthurschreiber commented Jun 10, 2026

Copy link
Copy Markdown
Member

Description

This adds arm64 coverage to the unit test workflow and moves all unit test flavors onto the 16-CPU Oracle VM runners when running inside vitessio/vitess.

Two new matrix entries run the mysql80 unit tests (with and without the evalengine) on arm64. Oracle's apt repo only publishes amd64 packages for Ubuntu, so on arm64 the setup-mysql action now installs MySQL 8.0 from the Ubuntu archive instead — that's also why arm64 coverage is limited to mysql80 for now (no 5.7 or 8.4 packages exist for arm64; adding 8.4 would need Oracle's generic aarch64 tarballs).

Once we've got this up and running, I think it might make sense to investigate installing MySQL via the aarch64 tarballs on ARM64 instead to also get MySQL 8.4 unit tests running against ARM64.

Previously only the race jobs ran on oracle-vm-16cpu-64gb-x86-64. Now all jobs use the Oracle VMs in-repo, picking -x86-64 or -arm64 based on the matrix arch. Forks keep using the GitHub-hosted ubuntu-24.04 / ubuntu-24.04-arm runners.

Related Issue(s)

N/A

Checklist

  • "Backport to:" labels have been added if this change should be back-ported to release branches
  • If this change is to be back-ported to previous releases, a justification is included in the PR description
  • Tests were added or are not required
  • Did the new or modified tests pass consistently locally and on CI?
  • Documentation was added or is not required

Deployment Notes

N/A — CI-only change.

AI Disclosure

This PR was written by Claude Code, with direction and review from me.

Copilot AI review requested due to automatic review settings June 10, 2026 09:40
@github-actions github-actions Bot added this to the v25.0.0 milestone Jun 10, 2026
@vitess-bot vitess-bot Bot added NeedsWebsiteDocsUpdate What it says NeedsDescriptionUpdate The description is not clear or comprehensive enough, and needs work NeedsIssue A linked issue is missing for this Pull Request NeedsBackportReason If backport labels have been applied to a PR, a justification is required labels Jun 10, 2026
@vitess-bot

vitess-bot Bot commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

Review Checklist

Hello reviewers! 👋 Please follow this checklist when reviewing this Pull Request.

General

  • Ensure that the Pull Request has a descriptive title.
  • Ensure there is a link to an issue (except for internal cleanup and flaky test fixes), new features should have an RFC that documents use cases and test cases.

Tests

  • Bug fixes should have at least one unit or end-to-end test, enhancement and new features should have a sufficient number of tests.

Documentation

  • Apply the release notes (needs details) label if users need to know about this change.
  • New features should be documented.
  • There should be some code comments as to why things are implemented the way they are.
  • There should be a comment at the top of each new or modified test to explain what the test does.

New flags

  • Is this flag really necessary?
  • Flag names must be clear and intuitive, use dashes (-), and have a clear help text.

If a workflow is added or modified:

  • Each item in Jobs should be named in order to mark it as required.
  • If the workflow needs to be marked as required, the maintainer team must be notified.

Backward compatibility

  • Protobuf changes should be wire-compatible.
  • Changes to _vt tables and RPCs need to be backward compatible.
  • RPC changes should be compatible with vitess-operator
  • If a flag is removed, then it should also be removed from vitess-operator and arewefastyet, if used there.
  • vtctl command output order should be stable and awk-able.

Copilot AI 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.

Pull request overview

This PR expands CI unit-test coverage by adding arm64 unit-test jobs (MySQL 8.0 only) and standardizes runner selection so that, in vitessio/vitess, all unit-test flavors run on the 16‑CPU Oracle VM runners (x86_64 or arm64 depending on the matrix entry). It also updates the internal MySQL setup composite action to install MySQL differently on arm64, since Oracle’s apt repo does not publish arm64 Ubuntu packages.

Changes:

  • Add two new arm64 matrix entries for mysql80 unit tests (with and without evalengine).
  • Switch unit-test runner selection to Oracle VM runners for all matrix variants when running in-repo, with arch-aware runner selection.
  • Update the setup-mysql composite action to install MySQL 8.0 from Ubuntu archives on arm64, while preserving Oracle apt-repo installation on amd64.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.

File Description
.github/workflows/unit_test.yml Adds arm64 unit-test matrix entries and updates runs-on / job naming to be arch-aware and to use Oracle VM runners in-repo.
.github/actions/setup-mysql/action.yml Adds arm64-aware install path (Ubuntu archive MySQL 8.0 only) and keeps Oracle apt-repo install flow for amd64 flavors.

@arthurschreiber

Copy link
Copy Markdown
Member Author

This seems to have uncovered a flaky behavior in the connection pool code on ARM64:

=== RUN   TestStressCloseDuringTraffic/cycle-054
2026-06-10 09:46:01.128 UTC ERR smartconnpool/pool.go:375 failed to reopen pool "": Code: ABORTED
timed out while waiting for connections to be returned to the pool (capacity=0, active=6, borrowed=0)

    stress_test.go:1016: 
        	Error Trace:	/home/ubuntu/_work/vitess/vitess/go/pools/smartconnpool/stress_test.go:1183
        	            				/home/ubuntu/_work/vitess/vitess/go/pools/smartconnpool/stress_test.go:1016
        	Error:      	Condition never satisfied
        	Test:       	TestStressCloseDuringTraffic/cycle-054
        	Messages:   	cycle 54: CloseWithContext stalled: capacity=0 active=10 borrowed=0 open=144 isOpen=true liveGetWorkers=24 capacityInProgress=true connectsAfterClose=0
    stress_test.go:1016: 
        	Error Trace:	/home/ubuntu/_work/vitess/vitess/go/pools/smartconnpool/stress_test.go:1193
        	            				/home/ubuntu/_work/vitess/vitess/go/pools/smartconnpool/stress_test.go:1016
        	Error:      	CloseWithContext stalled
        	Test:       	TestStressCloseDuringTraffic/cycle-054
        	Messages:   	cycle 54: capacity=0 active=6 borrowed=0 open=149 isOpen=false liveGetWorkers=0 capacityInProgress=false connectsAfterClose=5
--- FAIL: TestStressCloseDuringTraffic/cycle-054 (30.01s)

Copilot AI review requested due to automatic review settings June 10, 2026 11:17

Copilot AI 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.

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated no new comments.

Add two arm64 unit test matrix entries (mysql80, evalengine on/off)
running on arm64 runners. Oracle's apt repo only publishes amd64
packages for Ubuntu, so on arm64 the setup-mysql action installs
MySQL 8.0 from the Ubuntu archive instead; other flavors are not
available on arm64.

Inside vitessio/vitess, all unit test jobs (not just race) now run
on the 16-CPU Oracle VM runners, picking the x86-64 or arm64 variant
based on the matrix arch. Forks keep using the GitHub-hosted
ubuntu-24.04 and ubuntu-24.04-arm runners.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: Arthur Schreiber <arthur@planetscale.com>
@arthurschreiber arthurschreiber force-pushed the arthur/unit-test-arm64 branch from afc41c2 to 19cf85e Compare June 10, 2026 17:07
@arthurschreiber arthurschreiber removed NeedsDescriptionUpdate The description is not clear or comprehensive enough, and needs work NeedsWebsiteDocsUpdate What it says NeedsIssue A linked issue is missing for this Pull Request NeedsBackportReason If backport labels have been applied to a PR, a justification is required labels Jun 11, 2026
@arthurschreiber arthurschreiber marked this pull request as ready for review June 11, 2026 11:55
Copilot AI review requested due to automatic review settings June 11, 2026 11:55

Copilot AI 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.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 3 comments.

Comment thread .github/workflows/unit_test.yml
Comment thread .github/actions/setup-mysql/action.yml Outdated
Comment thread .github/actions/setup-mysql/action.yml Outdated
Signed-off-by: Arthur Schreiber <arthur@planetscale.com>

# Conflicts:
#	.github/actions/setup-mysql/action.yml
@arthurschreiber arthurschreiber enabled auto-merge (squash) June 15, 2026 20:12
@arthurschreiber arthurschreiber merged commit 7a48310 into main Jun 15, 2026
109 checks passed
@arthurschreiber arthurschreiber deleted the arthur/unit-test-arm64 branch June 15, 2026 20:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants