Skip to content

Commit 9dccbe1

Browse files
authored
Merge pull request Wei-Shaw#1169 from touwaeriol/pr/credits-exhausted-fix
fix(antigravity): correctly mark credits exhausted on "Resource has been exhausted" 429
2 parents 9a88df7 + 21b6f2d commit 9dccbe1

2 files changed

Lines changed: 12 additions & 5 deletions

File tree

backend/internal/service/antigravity_credits_overages.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ var (
4545
"minimumcreditamountforusage",
4646
"minimum credit amount for usage",
4747
"minimum credit",
48+
"resource has been exhausted",
4849
}
4950
)
5051

@@ -147,9 +148,9 @@ func shouldMarkCreditsExhausted(resp *http.Response, respBody []byte, reqErr err
147148
if resp.StatusCode >= 500 || resp.StatusCode == http.StatusRequestTimeout {
148149
return false
149150
}
150-
if isURLLevelRateLimit(respBody) {
151-
return false
152-
}
151+
// 注意:不再检查 isURLLevelRateLimit。此函数仅在积分重试失败后调用,
152+
// 如果注入 enabledCreditTypes 后仍返回 "Resource has been exhausted",
153+
// 说明积分也已耗尽,应该标记。clearCreditsExhausted 会在后续成功时自动清除。
153154
if info := parseAntigravitySmartRetryInfo(respBody); info != nil {
154155
return false
155156
}

backend/internal/service/antigravity_credits_overages_test.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -406,10 +406,16 @@ func TestShouldMarkCreditsExhausted(t *testing.T) {
406406
require.False(t, shouldMarkCreditsExhausted(resp, []byte(`{"error":"Insufficient credits"}`), nil))
407407
})
408408

409-
t.Run("URL 级限流不标记", func(t *testing.T) {
409+
t.Run("Resource has been exhausted 应标记为积分耗尽", func(t *testing.T) {
410410
resp := &http.Response{StatusCode: http.StatusTooManyRequests}
411411
body := []byte(`{"error":{"message":"Resource has been exhausted"}}`)
412-
require.False(t, shouldMarkCreditsExhausted(resp, body, nil))
412+
require.True(t, shouldMarkCreditsExhausted(resp, body, nil))
413+
})
414+
415+
t.Run("Resource has been exhausted (check quota) 完整格式应标记", func(t *testing.T) {
416+
resp := &http.Response{StatusCode: http.StatusTooManyRequests}
417+
body := []byte(`{"error":{"code":429,"message":"Resource has been exhausted (e.g. check quota).","status":"RESOURCE_EXHAUSTED"}}`)
418+
require.True(t, shouldMarkCreditsExhausted(resp, body, nil))
413419
})
414420

415421
t.Run("结构化限流不标记", func(t *testing.T) {

0 commit comments

Comments
 (0)