Skip to content

fix(docker-sandboxes): preserve runner keepalive lifetime - #17

Merged
joecklau merged 3 commits into
developfrom
feat/longjob
Aug 8, 2026
Merged

fix(docker-sandboxes): preserve runner keepalive lifetime#17
joecklau merged 3 commits into
developfrom
feat/longjob

Conversation

@joecklau

@joecklau joecklau commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Keep the Docker Sandboxes managed keepalive alive after the provisioning-attempt context is canceled.
  • Still terminate and reap the keepalive when startup itself is canceled.
  • Add regression coverage for both post-start and during-start cancellation.

Root cause

The pool cancels a per-attempt provisioning context immediately after provisionOne returns. Docker Sandboxes used that context with exec.CommandContext for its long-lived sbx exec ... sleep infinity keepalive, so successful provisioning canceled the keepalive and the sandbox eventually stopped underneath long jobs.

Validation

  • Full Go test suite passed.
  • Focused and race tests for Docker Sandboxes keepalive behavior passed.
  • Windows cross-compilation passed.
  • Live HKAGE E2E attempt 7 ran for 19m33s, including a 16m15s Playwright step, without self-hosted runner communication loss. The workload concluded with three Playwright failures after 211 passing tests, and all artifact, cleanup, and post steps completed.

@joecklau
joecklau marked this pull request as ready for review August 8, 2026 14:26
@joecklau
joecklau merged commit 91cc79c into develop Aug 8, 2026
12 checks passed
@joecklau
joecklau deleted the feat/longjob branch August 8, 2026 14:27
@joecklau
joecklau restored the feat/longjob branch August 8, 2026 14:27
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.

2 participants