-
-
Notifications
You must be signed in to change notification settings - Fork 40k
Description
Summary
On a macOS host (Mac mini 2018, 8GB), the Gateway frequently takes 60–200s to respond to cron.status / cron.list, causing the OpenClaw CLI to error with the default --timeout 10000 ("Error: gateway timeout after 10000ms").
The gateway is healthy (openclaw gateway status → RPC probe: ok) and the cron store is small (~19KB, 9 jobs). This appears to be RPC latency / lane contention, not a corrupted cron store.
Environment
- OpenClaw: 2026.2.2-3
- OS: macOS Sequoia 15.7.2 (Darwin 24.6.0)
- Node: 24.12.0 (service command:
/usr/local/bin/node ... gateway --port 18789) - Gateway bind: loopback 127.0.0.1:18789
Symptoms
openclaw cron status/openclaw cron listoften fail:Error: gateway timeout after 10000ms
- With larger timeout they succeed but are extremely slow:
openclaw cron list --timeout 120000succeeded but took ~114s (observed)
Evidence from gateway logs
From /tmp/openclaw/openclaw-2026-02-04.log, there are many successful but very slow responses:
⇄ res ✓ cron.list 212603ms ...(212s)⇄ res ✓ cron.list 204194ms ...⇄ res ✓ cron.status 118209ms ...
Example (same window also shows long main-lane work):
⇄ res ✓ cron.list 212603ms ...(line ~7596)lane task done: lane=main durationMs=511198 active=0 queued=0(line ~7612)
Additionally, one one-shot job state repeatedly showed:
lastStatus=skippedlastError="timeout waiting for main lane to become idle"
This suggests cron RPC handlers and/or at-job execution may be blocked behind (or coordinated with) main lane idleness, causing cron RPC starvation when the agent is busy.
Expected
cron.status/cron.listshould be fast (sub-second to a few seconds) and not depend on the main agent lane.
Questions
- Are
cron.status/cron.listhandled on the main lane today? - Is there known lane/lock contention between the cron subsystem and the session/agent lane?
- Are there mitigations (config knobs / lane assignment / caching cron snapshot) to avoid starving cron RPC?
Workarounds currently used
- Use
--timeout 120000for cron CLI commands. - For health checks, read
~/.openclaw/cron/jobs.jsondirectly when RPC wedges.