openclaw - 💡(How to fix) Fix [Bug]: Multi-account Telegram startup — all 16 bots timeout simultaneously, 10s timeout blown to 41-82s with no circuit breaker [1 comments, 2 participants]

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…
GitHub stats
openclaw/openclaw#78353Fetched 2026-05-07 03:37:58
View on GitHub
Comments
1
Participants
2
Timeline
2
Reactions
3
Timeline (top)
commented ×1cross-referenced ×1

When running OpenClaw with 16 Telegram bot accounts, every single bot's getMe health check fails with fetch-timeout during startup. The 10-second timeout is repeatedly blown out to 41-82 seconds elapsed due to event loop starvation — but the root issue here is that the Telegram channel init pipeline lacks any circuit breaker or staggered retry logic for multi-account scenarios.

Error Message

  1. Each timeout generates a WARN log → more I/O → more EL pressure

Root Cause

  1. All 16 bots fire getMe nearly simultaneously during channels.telegram.start-account
  2. Event loop is saturated by synchronous initialization work
  3. Timer callbacks are delayed by 56-72 seconds
  4. Fetch timeouts fire late (or not at all) because the timer itself was delayed
  5. Each timeout generates a WARN log → more I/O → more EL pressure
  6. Subsequent operations (session recovery, model prewarm) are further delayed

Code Example

[fetch-timeout] fetch timeout after 10000ms (elapsed 66668ms)
timer delayed 56668ms, likely event-loop starvation
operation=fetchWithTimeout url=https://api.telegram.org/bot856265...5qhQ/getMe

[fetch-timeout] fetch timeout after 10000ms (elapsed 82339ms)
timer delayed 72339ms, likely event-loop starvation
operation=fetchWithTimeout url=https://api.telegram.org/bot809652...ZAHE/getMe
RAW_BUFFERClick to expand / collapse

Description

When running OpenClaw with 16 Telegram bot accounts, every single bot's getMe health check fails with fetch-timeout during startup. The 10-second timeout is repeatedly blown out to 41-82 seconds elapsed due to event loop starvation — but the root issue here is that the Telegram channel init pipeline lacks any circuit breaker or staggered retry logic for multi-account scenarios.

Environment

  • OS: Windows 10.0.26200 (x64)
  • Node.js: v25.9.0
  • OpenClaw: 2026.5.x
  • Telegram bots: 16 concurrent bot accounts

Observed Behavior

All 16 Telegram bots fail getMe during startup:

Bot Token (suffix)TimeoutElapsedTimer Delay
...5qhQ10,000ms66,668ms56,668ms
...8YYQ10,000ms29,368ms19,368ms
...ZAHE10,000ms41,638ms31,638ms
...yl6g10,000ms13,245ms3,245ms
...4A_Y10,000ms10,852ms852ms
...Pgpk10,000ms10,506ms506ms
(+ 10 more)10,000ms10,000-82,000msvaried

Log Samples

[fetch-timeout] fetch timeout after 10000ms (elapsed 66668ms)
timer delayed 56668ms, likely event-loop starvation
operation=fetchWithTimeout url=https://api.telegram.org/bot856265...5qhQ/getMe

[fetch-timeout] fetch timeout after 10000ms (elapsed 82339ms)
timer delayed 72339ms, likely event-loop starvation
operation=fetchWithTimeout url=https://api.telegram.org/bot809652...ZAHE/getMe

Chain Reaction

  1. All 16 bots fire getMe nearly simultaneously during channels.telegram.start-account
  2. Event loop is saturated by synchronous initialization work
  3. Timer callbacks are delayed by 56-72 seconds
  4. Fetch timeouts fire late (or not at all) because the timer itself was delayed
  5. Each timeout generates a WARN log → more I/O → more EL pressure
  6. Subsequent operations (session recovery, model prewarm) are further delayed

Relationship to Existing Issues

  • #77900 covers a single bot with ENETUNREACH (network offline) lacking circuit breaker
  • This issue is about multi-account startup cascade — all 16 accounts timing out simultaneously even when the network is healthy. The root cause is serial initialization + no stagger + no batch-aware retry.

Impact

  • Startup time: 2-3+ minutes before all bots either succeed or give up
  • User perception: "Gateway started but Telegram not responding" for minutes
  • Cascading failure: Event loop starvation from this phase bleeds into all other subsystems
  • False alarms: Diagnostic liveness warnings trigger because the ELU stays at 1.0 during startup

Suggested Fix Direction

  1. Staggered startup — Add configurable delay between bot account initializations (e.g., 2-3s gap per account)
  2. Batch-aware circuit breaker — If >50% of getMe calls fail within a window, pause and back off
  3. Worker-thread offload — Move fetchWithTimeout for channel health checks off the main event loop
  4. Adaptive timeout — During startup phase, increase timeout to 30s instead of flat 10s
  5. Parallel-but-bounded — Limit concurrent getMe calls to N at a time (e.g., 4 concurrent) instead of all 16 simultaneously

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…

Still need to ship something?

×6

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

Back to top recommendations

TRENDING

openclaw - 💡(How to fix) Fix [Bug]: Multi-account Telegram startup — all 16 bots timeout simultaneously, 10s timeout blown to 41-82s with no circuit breaker [1 comments, 2 participants]