openclaw - 💡(How to fix) Fix [Bug]: Cron jobs fail with 503 overloaded error — no fallback model configured

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…

Error Message

{ "event": "embedded_run_failover_decision", "tags": ["error_handling","failover","assistant","surface_error"], "stage": "assistant", "decision": "surface_error", "failoverReason": "overloaded", "profileFailureReason": "overloaded", "provider": "minimax-cn", "model": "MiniMax-M2.7", "sourceProvider": "minimax-cn", "sourceModel": "MiniMax-M2.7", "profileId": "sha256:cfce464480ae", "fallbackConfigured": false, "timedOut": false, "aborted": false, "rawErrorPreview": "{"type":"error","error":{"type":"overloaded_error","message":"server is busy, please retry later"}}", "rawErrorHash": "sha256:a4575a5d6fd5", "providerRuntimeFailureKind": "timeout", "providerErrorType": "overloaded_error", "providerErrorMessagePreview": "server is busy, please retry later" } { "event": "model_fallback_decision", "decision": "candidate_failed", "requestedProvider": "minimax-cn", "requestedModel": "MiniMax-M2.7", "candidateProvider": "minimax-cn", "candidateModel": "MiniMax-M2.7", "attempt": 1, "total": 1, "reason": "overloaded", "status": 503, "fallbackStepType": "fallback_step", "fallbackStepFromModel": "minimax-cn/MiniMax-M2.7", "fallbackStepFromFailureReason": "overloaded", "fallbackStepFromFailureDetail": "server is busy, please retry later", "fallbackStepChainPosition": 1, "fallbackStepFinalOutcome": "chain_exhausted", "isPrimary": true, "requestedModelMatched": true, "fallbackConfigured": false } { "event": "embedded_run_agent_end", "isError": true, "error": "The AI service is temporarily overloaded. Please try again in a moment.", "failoverReason": "overloaded", "model": "MiniMax-M2.7", "provider": "minimax-cn", "rawErrorPreview": "{"type":"error","error":{"type":"overloaded_error","message":"server is busy, please retry later"}}", "rawErrorHash": "sha256:a4575a5d6fd5", "rawErrorFingerprint": "sha256:929b1addd15f", "providerRuntimeFailureKind": "timeout", "providerErrorType": "overloaded_error" } { "event": "auth_profile_failure_state_updated", "profileId": "sha256:cfce464480ae", "provider": "minimax-cn", "reason": "overloaded", "windowType": "cooldown", "windowReused": false, "previousErrorCount": 1, "errorCount": 1, "cooldownUntil": 1779732159138, "failureCounts": {"overloaded": 1} } { "jobId": "f7514063-efc1-452a-babf-87598f9c8cd8", "jobName": "AI资讯早报", "consecutiveErrors": 6, "backoffMs": 3600000, "nextRunAtMs": 1779832800000 } { "lane": "cron-nested", "error": "FailoverError: The AI service is temporarily overloaded. Please try again in a moment." }

Code Example

{
  "event": "embedded_run_failover_decision",
  "tags": ["error_handling","failover","assistant","surface_error"],
  "stage": "assistant",
  "decision": "surface_error",
  "failoverReason": "overloaded",
  "profileFailureReason": "overloaded",
  "provider": "minimax-cn",
  "model": "MiniMax-M2.7",
  "sourceProvider": "minimax-cn",
  "sourceModel": "MiniMax-M2.7",
  "profileId": "sha256:cfce464480ae",
  "fallbackConfigured": false,
  "timedOut": false,
  "aborted": false,
  "rawErrorPreview": "{\"type\":\"error\",\"error\":{\"type\":\"overloaded_error\",\"message\":\"server is busy, please retry later\"}}",
  "rawErrorHash": "sha256:a4575a5d6fd5",
  "providerRuntimeFailureKind": "timeout",
  "providerErrorType": "overloaded_error",
  "providerErrorMessagePreview": "server is busy, please retry later"
}
{
  "event": "model_fallback_decision",
  "decision": "candidate_failed",
  "requestedProvider": "minimax-cn",
  "requestedModel": "MiniMax-M2.7",
  "candidateProvider": "minimax-cn",
  "candidateModel": "MiniMax-M2.7",
  "attempt": 1,
  "total": 1,
  "reason": "overloaded",
  "status": 503,
  "fallbackStepType": "fallback_step",
  "fallbackStepFromModel": "minimax-cn/MiniMax-M2.7",
  "fallbackStepFromFailureReason": "overloaded",
  "fallbackStepFromFailureDetail": "server is busy, please retry later",
  "fallbackStepChainPosition": 1,
  "fallbackStepFinalOutcome": "chain_exhausted",
  "isPrimary": true,
  "requestedModelMatched": true,
  "fallbackConfigured": false
}
{
  "event": "embedded_run_agent_end",
  "isError": true,
  "error": "The AI service is temporarily overloaded. Please try again in a moment.",
  "failoverReason": "overloaded",
  "model": "MiniMax-M2.7",
  "provider": "minimax-cn",
  "rawErrorPreview": "{\"type\":\"error\",\"error\":{\"type\":\"overloaded_error\",\"message\":\"server is busy, please retry later\"}}",
  "rawErrorHash": "sha256:a4575a5d6fd5",
  "rawErrorFingerprint": "sha256:929b1addd15f",
  "providerRuntimeFailureKind": "timeout",
  "providerErrorType": "overloaded_error"
}
{
  "event": "auth_profile_failure_state_updated",
  "profileId": "sha256:cfce464480ae",
  "provider": "minimax-cn",
  "reason": "overloaded",
  "windowType": "cooldown",
  "windowReused": false,
  "previousErrorCount": 1,
  "errorCount": 1,
  "cooldownUntil": 1779732159138,
  "failureCounts": {"overloaded": 1}
}
{
  "jobId": "f7514063-efc1-452a-babf-87598f9c8cd8",
  "jobName": "AI资讯早报",
  "consecutiveErrors": 6,
  "backoffMs": 3600000,
  "nextRunAtMs": 1779832800000
}
{
  "lane": "cron-nested",
  "error": "FailoverError: The AI service is temporarily overloaded. Please try again in a moment."
}
RAW_BUFFERClick to expand / collapse

Bug type

Regression (worked before, now fails)

Beta release blocker

No

Summary

Bug Description

Multiple cron jobs are failing with FailoverError: The AI service is temporarily overloaded when calling the MiniMax API. HTTP 503 returned but no fallback mechanism.

Steps to Reproduce

  1. Set up cron jobs with isolated session targets using minimax-cn/MiniMax-M2.7 model
  2. Wait for scheduled execution (02:00, 04:00, 06:00 CST)
  3. Observe all cron jobs failing with the same error

Expected Behavior

  • When MiniMax API returns 503 overloaded_error, the system should either:
    • Retry with exponential backoff
    • Fall back to an alternative model if configured

Actual Behavior

FailoverError: The AI service is temporarily overloaded. Please try again in a moment.

  • fallbackConfigured: false — no fallback model is available
  • fallbackStepFinalOutcome: chain_exhausted
  • After 6 consecutive errors, backoff increases to 1 hour

Environment

  • OpenClaw version: latest (2026.5.x)
  • Node.js: v24.15.0
  • Model: minimax-cn/MiniMax-M2.7
  • Platform: Linux (CentOS/EL9)
  • Channel: Feishu

Suggested Fixes

  1. Retry with backoff: When overloaded_error (503) is received, retry with exponential backoff
  2. Add fallback model support: Allow users to configure a fallback model that activates on 503
  3. Cron job resilience: Add automatic retry logic for cron job executions

Steps to reproduce

  1. Set up a cron job using an isolated agent session (e.g. daily backup, security audit, or AI news job)
  2. Wait for the scheduled runtime
  3. The AI provider returns HTTP 503 with "server is busy, please retry later"
  4. The job immediately fails with FailoverError

Expected behavior

  • System should automatically retry with exponential backoff
  • If a fallback model is configured, it should be used when the primary model returns 503 overloaded
  • Cron jobs should survive transient provider outages

Actual behavior

  • Model fallback decision detects overloaded_error (status 503)
  • No fallback model is configured (fallbackConfigured: false)
  • Fallback chain exhausts immediately (chain_exhausted)
  • Job fails without retry: "FailoverError: The AI service is temporarily overloaded"

OpenClaw version

2026.5.22

Operating system

Linux 5.14.0-611.54.3.el9_7.x86_64

Install method

No response

Model

MiniMax-M2.7

Provider / routing chain

minimax-cn

Additional provider/model setup details

No response

Logs, screenshots, and evidence

{
  "event": "embedded_run_failover_decision",
  "tags": ["error_handling","failover","assistant","surface_error"],
  "stage": "assistant",
  "decision": "surface_error",
  "failoverReason": "overloaded",
  "profileFailureReason": "overloaded",
  "provider": "minimax-cn",
  "model": "MiniMax-M2.7",
  "sourceProvider": "minimax-cn",
  "sourceModel": "MiniMax-M2.7",
  "profileId": "sha256:cfce464480ae",
  "fallbackConfigured": false,
  "timedOut": false,
  "aborted": false,
  "rawErrorPreview": "{\"type\":\"error\",\"error\":{\"type\":\"overloaded_error\",\"message\":\"server is busy, please retry later\"}}",
  "rawErrorHash": "sha256:a4575a5d6fd5",
  "providerRuntimeFailureKind": "timeout",
  "providerErrorType": "overloaded_error",
  "providerErrorMessagePreview": "server is busy, please retry later"
}
{
  "event": "model_fallback_decision",
  "decision": "candidate_failed",
  "requestedProvider": "minimax-cn",
  "requestedModel": "MiniMax-M2.7",
  "candidateProvider": "minimax-cn",
  "candidateModel": "MiniMax-M2.7",
  "attempt": 1,
  "total": 1,
  "reason": "overloaded",
  "status": 503,
  "fallbackStepType": "fallback_step",
  "fallbackStepFromModel": "minimax-cn/MiniMax-M2.7",
  "fallbackStepFromFailureReason": "overloaded",
  "fallbackStepFromFailureDetail": "server is busy, please retry later",
  "fallbackStepChainPosition": 1,
  "fallbackStepFinalOutcome": "chain_exhausted",
  "isPrimary": true,
  "requestedModelMatched": true,
  "fallbackConfigured": false
}
{
  "event": "embedded_run_agent_end",
  "isError": true,
  "error": "The AI service is temporarily overloaded. Please try again in a moment.",
  "failoverReason": "overloaded",
  "model": "MiniMax-M2.7",
  "provider": "minimax-cn",
  "rawErrorPreview": "{\"type\":\"error\",\"error\":{\"type\":\"overloaded_error\",\"message\":\"server is busy, please retry later\"}}",
  "rawErrorHash": "sha256:a4575a5d6fd5",
  "rawErrorFingerprint": "sha256:929b1addd15f",
  "providerRuntimeFailureKind": "timeout",
  "providerErrorType": "overloaded_error"
}
{
  "event": "auth_profile_failure_state_updated",
  "profileId": "sha256:cfce464480ae",
  "provider": "minimax-cn",
  "reason": "overloaded",
  "windowType": "cooldown",
  "windowReused": false,
  "previousErrorCount": 1,
  "errorCount": 1,
  "cooldownUntil": 1779732159138,
  "failureCounts": {"overloaded": 1}
}
{
  "jobId": "f7514063-efc1-452a-babf-87598f9c8cd8",
  "jobName": "AI资讯早报",
  "consecutiveErrors": 6,
  "backoffMs": 3600000,
  "nextRunAtMs": 1779832800000
}
{
  "lane": "cron-nested",
  "error": "FailoverError: The AI service is temporarily overloaded. Please try again in a moment."
}

Impact and severity

No response

Additional information

No response

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

FAQ

Expected behavior

  • System should automatically retry with exponential backoff
  • If a fallback model is configured, it should be used when the primary model returns 503 overloaded
  • Cron jobs should survive transient provider outages

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING