ci: bound the unit-test job at ten minutes by Jocs · Pull Request #5448 · marktext/marktext · GitHub
Skip to content

ci: bound the unit-test job at ten minutes - #5448

Merged
Jocs merged 1 commit into
developfrom
fix/test-job-timeout
Sep 18, 2026
Merged

Jocs merged 1 commit into
developfrom
fix/test-job-timeout

Conversation

@Jocs

@Jocs Jocs commented Sep 18, 2026

Copy link
Copy Markdown
Member

Summary

Follow-up to #5323, which added a windows-latest leg to the unit-test matrix.

The test job sets no timeout-minutes and so inherits GitHub's 360-minute default. The repo's other long-running workflows do set one — muya-spec.yml uses 15 and muya-e2e.yml uses 20 — this job was simply never given one back when it was a single 56-second Linux job.

It now also runs on Windows, which is the platform where a worker that never exits is most plausible: an unreleased file watcher, an EBUSY rename, the same fs semantics that already force it.skipIf(process.platform === 'win32') in write-file-atomic.spec.ts:65.

If that happens once, the consequences are out of proportion to the cause:

  • test (windows-latest) stays pending for six hours while fail-fast: false lets the Linux leg report green beside it, so the PR shows half green / half spinning — which reads as a slow queue, not a failure;
  • a runner is held for those six hours, and the concurrency pool is shared with every other PR in the repo;
  • cancel-in-progress only frees it when someone pushes to the same branch again; otherwise it takes a manual cancel.

timeout-minutes: 10 turns all of that into a clear red check ten minutes in. That is four times the slowest run observed so far (2m25s on windows-latest, 56s on ubuntu-latest), so it leaves ample headroom for a cold pnpm cache.

Type of change

  • Bug fix (non-breaking, fixes an issue)
  • New feature (non-breaking, adds functionality)
  • Breaking change (causes existing functionality to change)
  • Documentation update

🤖 Generated with Claude Code

The job sets no timeout and so inherits GitHub's 360-minute default, unlike
muya-spec.yml (15) and muya-e2e.yml (20). Since #5323 it also runs on
windows-latest, the platform where a worker that never exits is most likely —
an unreleased file watcher or an EBUSY rename, the same fs semantics that
already force `it.skipIf(process.platform === 'win32')` in
write-file-atomic.spec.ts.

One hang would leave the check pending for six hours while the Linux leg
reports green beside it, which reads as a slow queue rather than a failure, and
would hold a concurrency slot shared with every other PR. `cancel-in-progress`
only frees it once someone pushes again.

Ten minutes is four times the slowest run observed so far (2m25s on Windows,
56s on Linux).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

@Jocs
Jocs merged commit b6b05f6 into develop Sep 18, 2026
11 checks passed
@Jocs
Jocs deleted the fix/test-job-timeout branch September 18, 2026 11:14
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.

1 participant