fix(canvas): skip config.yaml write for openclaw + bump request timeout to 35s #1237
Merged
devops-engineer
merged 1 commits from 2026-05-15 21:58:41 +00:00
fix/openclaw-skip-config-write-and-canvas-timeout into staging
1 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
0466a228e2 |
fix(canvas): skip config.yaml write for openclaw + bump request timeout to 35s
Block internal-flavored paths / Block forbidden paths (pull_request) Successful in 14s
Harness Replays / detect-changes (pull_request) Successful in 20s
qa-review / approved (pull_request) Successful in 27s
security-review / approved (pull_request) Successful in 25s
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 32s
gate-check-v3 / gate-check (pull_request) Successful in 31s
sop-checklist / all-items-acked (pull_request) Successful in 26s
CI / Detect changes (pull_request) Successful in 49s
E2E API Smoke Test / detect-changes (pull_request) Successful in 47s
Handlers Postgres Integration / detect-changes (pull_request) Successful in 47s
sop-tier-check / tier-check (pull_request) Successful in 18s
Runtime PR-Built Compatibility / detect-changes (pull_request) Successful in 42s
Harness Replays / Harness Replays (pull_request) Successful in 8s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 8s
E2E API Smoke Test / E2E API Smoke Test (pull_request) Successful in 11s
CI / Python Lint & Test (pull_request) Successful in 12s
Handlers Postgres Integration / Handlers Postgres Integration (pull_request) Successful in 11s
Runtime PR-Built Compatibility / PR-built wheel + import smoke (pull_request) Successful in 8s
lint-required-no-paths / lint-required-no-paths (pull_request) Successful in 1m25s
CI / Platform (Go) (pull_request) Failing after 7m33s
CI / Canvas (Next.js) (pull_request) Successful in 11m52s
CI / Canvas Deploy Reminder (pull_request) Has been skipped
CI / all-required (pull_request) Successful in 10s
audit-force-merge / audit (pull_request) Successful in 19s
Canvas "Save & Restart" was timing out for openclaw workspaces because two bugs compounded: 1. **Pointless config.yaml write.** openclaw manages its own prompt surface via SOUL/BOOTSTRAP/AGENTS multi-file system — it does NOT read the platform's config.yaml. But ConfigTab.tsx was still issuing `PUT /workspaces/:id/files/config.yaml` on every save, which on tenant EC2 fans out through the slow EIC SSH tunnel path (`workspace-server/internal/handlers/template_files_eic.go`). Other runtimes that ship their own config are already exempted via `RUNTIMES_WITH_OWN_CONFIG` (external, kimi, kimi-cli). Add openclaw to that set so the platform stops doing work the runtime ignores. 2. **Client aborts before server returns.** `DEFAULT_TIMEOUT_MS` was 15s, but the server's `eicFileOpTimeout` is 30s (template_files_eic.go L118). When EIC was slow or the EC2's ec2-instance-connect daemon was unhealthy, the canvas aborted with a generic timeout *before* the workspace-server returned its real 5xx — so the user saw a useless "request timed out" instead of the actual cause. Raise the default to 35s so the server's error surfaces. The AbortController contract is unchanged; callers can still override `timeoutMs` per-request. Together these fixes unblock the user-visible "Save & Restart" behavior on openclaw workspaces. The underlying EIC hang on i-04e5197e96adb888f (last_healthcheck_at IS NULL) is tracked separately as a follow-up — this PR makes the canvas honest about errors instead of swallowing them, and removes the unnecessary write from openclaw's critical path entirely. Refs: internal#418 (Canvas Save & Restart timeout on openclaw) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> |