Skip to content

cron.status / cron.list often take 60–200s → CLI times out at default 10s (macOS, lane contention?) #9452

@copperdogma

Description

@copperdogma

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 statusRPC 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 list often fail:
    • Error: gateway timeout after 10000ms
  • With larger timeout they succeed but are extremely slow:
    • openclaw cron list --timeout 120000 succeeded 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=skipped
  • lastError="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.list should be fast (sub-second to a few seconds) and not depend on the main agent lane.

Questions

  1. Are cron.status / cron.list handled on the main lane today?
  2. Is there known lane/lock contention between the cron subsystem and the session/agent lane?
  3. Are there mitigations (config knobs / lane assignment / caching cron snapshot) to avoid starving cron RPC?

Workarounds currently used

  • Use --timeout 120000 for cron CLI commands.
  • For health checks, read ~/.openclaw/cron/jobs.json directly when RPC wedges.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions