Skip to content

ci: reduce Windows Go test critical path - #1335

Merged
mariusvniekerk merged 2 commits into
mainfrom
windows-ci-perf
Aug 2, 2026
Merged

ci: reduce Windows Go test critical path#1335
mariusvniekerk merged 2 commits into
mainfrom
windows-ci-perf

Conversation

@wesm

@wesm wesm commented Aug 2, 2026

Copy link
Copy Markdown
Member

Windows Go tests became the CI critical path after redundant Linux work was removed. Recent successful jobs spend nearly all of their wall time inside the Go test command, with real SQLite fixture setup and the CGo-heavy DuckDB package competing for four runner cores; adding broad t.Parallel calls would increase contention without addressing that work.

The suite now constructs high-cardinality SQLite fixtures transactionally while preserving the production triggers, scale comparisons, and 1,024-row claim boundary they protect. The ordinary database suite deterministically verifies the closed-writer fallback, while the concurrent close/reopen stress case remains in the existing Linux race job. On Windows, DuckDB runs on an independent runner and the main package set avoids verbose log I/O, allowing both long test groups to advance concurrently.

This trades additional Windows runner-minutes for a shorter required-check critical path. The principal review points are the package split in .github/workflows/ci.yml, the deterministic/race coverage split in internal/db, and the transaction-backed fixtures in internal/artifact, internal/parser, and internal/sync.

wesm added 2 commits August 2, 2026 06:32
The plain Windows Go test job is now the CI critical path, with test-only SQLite commits and a probabilistic git stress loop consuming minutes without adding proportional coverage. Keep the real scale and page boundaries, but seed large fixtures transactionally and exercise the close/reopen stress case only under the race detector while retaining a deterministic normal-suite fallback assertion. This reduces serial I/O without increasing test parallelism or weakening the production paths under test.
The four-core Windows runner spends several minutes with a package worker occupied by the CGo-heavy DuckDB suite while other long SQLite packages compete for the remaining workers. Run DuckDB on an independent Windows runner so both test sets advance concurrently, and keep routine Windows output non-verbose to avoid unnecessary log I/O.\n\nArtifact export boundary tests also created thousands of deliberately bare rows through individual commits. Seed those rows transactionally while retaining the real queue triggers, 1,024-row claim boundary, and observable export assertions; the affected tests dropped from 17.1 to 11.0 seconds locally.
@roborev-ci

roborev-ci Bot commented Aug 2, 2026

Copy link
Copy Markdown

roborev: Combined Review (aac8b76)

No issues found.


Reviewers: 2 done | Synthesis: codex | Total: 2m31s

@mariusvniekerk mariusvniekerk self-assigned this Aug 2, 2026
@mariusvniekerk
mariusvniekerk merged commit 66bc76f into main Aug 2, 2026
20 checks passed
@mariusvniekerk
mariusvniekerk deleted the windows-ci-perf branch August 2, 2026 23:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants