Skip to content

openclaw: bump checkForUpdate AbortSignal timeout from 3s → 10s #109

@kaghni

Description

@kaghni

Symptom

OpenClaw's checkForUpdate() (called once on gateway start, plus from a couple of registered commands) frequently fails on cold start with:

[plugins] Auto-update check failed: The operation was aborted due to timeout

The expected ⬆️ Hivemind update available: X.Y.Z → ... Run: hivemind update notice never renders.

Reproduces on every fresh systemctl --user restart openclaw-gateway against a cold gateway. Confirmed on the run from 2026-05-07 at 07:32:32 (PR #97 follow-ups) and again at 07:42:13 (PR #98 follow-ups).

Where

Three call sites in openclaw/src/index.ts, all using AbortSignal.timeout(3000):

  • openclaw/src/index.ts:194 — initial checkForUpdate on gateway start
  • openclaw/src/index.ts:667 — registered command path
  • openclaw/src/index.ts:949 — second registered command path

(The original PR #97 followup documented this as a 5s timeout; main is now at 3s, which is even more likely to trip on a cold gateway.)

Confirmation that the registry itself is fast

$ time curl -sS -o /dev/null https://registry.npmjs.org/@deeplake/hivemind/latest
real 0m0.167s

Registry steady-state response is ~167ms. The 3s budget is exceeded by cold TLS + bonjour-watchdog noise running concurrently with plugin register, not by the network call itself.

Suggested fix

Either:

  • Bump AbortSignal.timeout(3000) to AbortSignal.timeout(10000) at all three sites (matches what's plenty in CI/dev observed steady state — 167ms × 60x headroom).
  • Or: keep 3000 and add a single AbortError retry with ~1s backoff (more invasive but eliminates the cold-start race entirely).

Lean toward the timeout bump — minimal diff, no new failure modes.

What this followup carried over from

.followups-pr97.md § "OpenClaw — version-check timed out at 5s during test run". The fix was deferred at the time so PR #97 could land.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions