Skip to content

fix(docker): explain unsupported E2E resource limits#109587

Merged
steipete merged 4 commits into
mainfrom
fix/docker-e2e-resource-diagnostics
Jul 17, 2026
Merged

fix(docker): explain unsupported E2E resource limits#109587
steipete merged 4 commits into
mainfrom
fix/docker-e2e-resource-diagnostics

Conversation

@steipete

@steipete steipete commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

Related: #98601

AI-assisted maintainer change approved by Peter.

What Problem This Solves

Fixes an issue where operators running Docker E2E on a runtime without the required cgroup resource controllers would receive a low-level Docker failure without an actionable explanation.

Why This Change Was Made

Keep resource limits fail-closed and make recognized Docker runtime incompatibilities actionable. The original error and exit status remain intact, Docker runs only once, live stderr remains streamed, and only a 64 KiB tail is retained for classification. The diagnostic points to the existing explicit OPENCLAW_DOCKER_E2E_DISABLE_RESOURCE_LIMITS=1 opt-out instead of silently retrying with weaker constraints.

User Impact

Operators can distinguish an incompatible Docker runtime from other Docker failures and deliberately choose whether to repair cgroup support or opt out of E2E resource limits.

Evidence

  • node scripts/run-vitest.mjs test/scripts/docker-build-helper.test.ts — 173 passed.
  • bash -n scripts/lib/docker-e2e-resource-diagnostics.sh scripts/lib/docker-e2e-container.sh scripts/lib/docker-e2e-package.sh — passed.
  • node scripts/check-docker-e2e-boundaries.mjs — passed.
  • git diff --check — passed.
  • Docker build signal-interruption regression — 5/5 repeated focused runs passed after raising its brittle one-second wait budget to five seconds.
  • .agents/skills/autoreview/scripts/autoreview --mode uncommitted — clean after fixing all accepted findings, including best-effort capture setup, Bash 3.2 synchronization, package fallback coverage, bounded capture, basename sourcing, and redirected-stderr preservation.
  • Blacksmith changed gate passed all pre-typecheck lanes; its stale delegated checkout reproduced an unrelated release-checklist export failure already fixed on current main. Exact-head PR CI is the landing gate.

@openclaw-barnacle openclaw-barnacle Bot added scripts Repository scripts docker Docker and sandbox tooling size: M maintainer Maintainer-authored PR labels Jul 17, 2026
@steipete
steipete force-pushed the fix/docker-e2e-resource-diagnostics branch 3 times, most recently from a5b2ef2 to 0391c0c Compare July 17, 2026 03:40
@steipete
steipete force-pushed the fix/docker-e2e-resource-diagnostics branch from 0391c0c to 419b94f Compare July 17, 2026 03:46
@steipete

Copy link
Copy Markdown
Contributor Author

AI-assisted (approved by Peter)

Land-ready. The fix keeps Docker resource limits fail-closed, runs Docker once, streams original stderr, retains only a private 64 KiB tail for diagnosis, preserves the exit status, and points recognized cgroup incompatibilities to the existing explicit OPENCLAW_DOCKER_E2E_DISABLE_RESOURCE_LIMITS=1 opt-out.

Proof: 173 focused helper tests passed; the signal-interruption case passed 5/5 repeated runs; fresh branch autoreview is clean; exact-head CI is green: https://github.com/openclaw/openclaw/actions/runs/29553208145

@steipete
steipete merged commit ff9b291 into main Jul 17, 2026
100 checks passed
@steipete
steipete deleted the fix/docker-e2e-resource-diagnostics branch July 17, 2026 03:56
@steipete

Copy link
Copy Markdown
Contributor Author

Merged via squash.

github-actions Bot pushed a commit to Desicool/openclaw that referenced this pull request Jul 17, 2026
* fix(docker): diagnose unsupported E2E resource limits

* test(docker): track diagnostic temp dirs

* fix(docker): bound resource diagnostic capture

* fix(docker): restrict diagnostic FIFO access
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

docker Docker and sandbox tooling maintainer Maintainer-authored PR scripts Repository scripts size: M

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant