Telegram 응답 안 감: 네트워크 에러 후 polling 죽음 + 409 conflict 복합 장애

증상

원인

3가지 문제가 동시에 발생하는 복합 장애:

원인 1: IPv6 실패 → Node.js 소켓 풀 고착 (GitHub #53338, #52116)

sendChatAction failed: Network request for 'sendChatAction' failed!
fetch fallback: enabling sticky IPv4-only dispatcher (codes=ETIMEDOUT,EHOSTUNREACH)

원인 2: curl 직접 호출 → 409 자기강화 루프 (GitHub #50064)

Telegram getUpdates conflict: 409: Conflict: terminated by other getUpdates request

원인 3: probe/polling 이중 클라이언트 (GitHub #50064)

해결법

즉시 해결 (마스터용, 지금 실행)

Step 1: 모든 getUpdates 세션 강제 종료

# 1. 게이트웨이 완전 정지
openclaw gateway stop

# 2. 남은 프로세스 확인 & 강제 종료
ps aux | grep openclaw | grep -v grep
kill -9 $(pgrep -f "openclaw")

# 3. Telegram 측 getUpdates 연결 초기화 (중요!)
# deleteWebhook + drop_pending_updates로 서버 측 연결 정리
curl -s "https://api.telegram.org/bot<BOT_TOKEN>/deleteWebhook?drop_pending_updates=true"

# 4. 10초 대기 (서버 측 long-poll 연결 타임아웃)
sleep 10

# 5. getUpdates 클린 상태 확인 (빈 배열이면 정상)
curl -s "https://api.telegram.org/bot<BOT_TOKEN>/getUpdates?timeout=1" | python3 -m json.tool

Step 2: IPv4 강제 + 소켓 풀 리셋

# openclaw.json 수정
# ~/.openclaw/openclaw.json 에서 telegram 섹션:
{
  "channels": {
    "telegram": {
      "enabled": true,
      "botToken": "<TOKEN>",
      "network": {
        "autoSelectFamily": false
      }
    }
  }
}

Step 3: fetch.timeout 줄이기 (409 자기강화 루프 방지)

# 이것은 런타임 패치가 필요함. 임시 환경변수로:
export OPENCLAW_TELEGRAM_POLL_TIMEOUT=10

Step 4: 게이트웨이 클린 스타트

# 게이트웨이 재시작
openclaw gateway start

# 로그 확인 — "starting provider" 이후 getUpdates 활동이 있어야 함
openclaw logs --tail 30 --filter telegram

Step 5: 테스트

# 텔레그램으로 테스트 메시지 전송
# 로그에 inbound message 표시되는지 확인
# 30초 내 응답이 와야 정상

v2026.3.24로 업데이트 (권장)

# 2026.3.23-2에서 이 버그가 보고됨 → 2026.3.24에서 수정 가능성 확인
openclaw update
# 업데이트 후 Step 1-5 반복

재발 방지

  1. 절대 curl로 getUpdates 직접 호출하지 않기 — 게이트웨이와 충돌
  2. 네트워크 문제 발생 시 단순 restart 대신 Step 1 전체 실행 (프로세스 kill + deleteWebhook + 대기)
  3. 409 에러 보이면 즉시 모든 openclaw 프로세스 kill 후 10초 대기 후 재시작

예상 토큰 절약

이 에러로 삽질 시: 약 50,000~100,000 토큰 소비 (gateway restart 반복, 설정 변경 시행착오) 이 해결법 참조 시: 약 1,000 토큰

참고