Skip to content

Commit 8362b19

Browse files
committed
fix(oauth): pre-cron-auth-check _is_real_auth_failure fast-path 버그 수정
수정: - is_error:true + duration_api_ms:0 → sys.exit(0) (인증 실패 판정) → FORCE_REFRESH 트리거 → rate_limit 루프 - sys.exit(1)로 변경 → transient 처리 → rate_limit/서비스 지연이 인증 실패로 오판되지 않음 - zombie 버그(--exclude-dynamic-system-prompt-sections) 수정 후 duration_api_ms:0은 OAuth 만료가 아닌 일시적 실패임. 실제 만료는 "Not logged in" grep이 담당. 07aaaea 커밋(--force backoff 우회 제거)과 함께 OAuth 재발 방지 완성.
1 parent 07aaaea commit 8362b19

1 file changed

Lines changed: 7 additions & 3 deletions

File tree

infra/scripts/pre-cron-auth-check.sh

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,15 +83,19 @@ ACCOUNT_INFO=$(get_account_info)
8383

8484
# ── 인증 실패 분류 ─────────────────────────────────────────────────────────
8585
_is_real_auth_failure() {
86-
# is_error:true + duration_api_ms:0 → API 호출조차 못한 실제 인증 실패
87-
# "Not logged in" 문자열도 동일 처리
86+
# "Not logged in" 명시 문자열 → 확실한 인증 만료
8887
echo "$AUTH_RESULT" | grep -q "Not logged in" && return 0
88+
# 2026-05-15: is_error:true + duration_api_ms:0 → transient 처리 (수정)
89+
# 이전: sys.exit(0) → return 0 → 인증 실패 판정 → FORCE_REFRESH 트리거 → rate_limit 루프
90+
# 수정: sys.exit(1) → return 1 → 일시적 오류로 처리 (rate_limit/서비스 지연 포함)
91+
# 근거: zombie 버그(--exclude-dynamic-system-prompt-sections) 수정 후 이 패턴은
92+
# OAuth 만료가 아닌 일시적 실패로 봐도 안전. "Not logged in"이 실제 만료 감지 담당.
8993
echo "$AUTH_RESULT" | python3 -c "
9094
import sys, json
9195
try:
9296
d = json.loads(sys.stdin.read())
9397
if d.get('is_error') and d.get('duration_api_ms', 1) == 0:
94-
sys.exit(0)
98+
sys.exit(1) # transient — 인증 실패 아님
9599
except: pass
96100
sys.exit(1)" 2>/dev/null && return 0
97101
return 1

0 commit comments

Comments
 (0)