Spaces:
Paused
Paused
Mirrowel commited on
Commit Β·
b9d9895
1
Parent(s): 467f294
fix(antigravity): π add fallback retry logic for RESOURCE_EXHAUSTED errors without timing details
Browse filesPreviously, the error parsing logic would return None if the API response didn't include explicit retry timing details, even when the error clearly indicated resource exhaustion (HTTP 429 or RESOURCE_EXHAUSTED status). This caused the retry mechanism to fail silently.
- Removed the early return when details array is empty, allowing further error processing
- Added detection for bare RESOURCE_EXHAUSTED errors (status code or HTTP 429)
- Set a sensible 60-second default retry_after when timing details are missing
- Ensures retry mechanism engages even with minimal error response data
This improves resilience when the Antigravity API returns resource exhaustion errors without structured retry timing information.
src/rotator_library/providers/antigravity_provider.py
CHANGED
|
@@ -673,9 +673,6 @@ class AntigravityProvider(AntigravityAuthBase, ProviderInterface):
|
|
| 673 |
error_obj = data.get("error", data)
|
| 674 |
details = error_obj.get("details", [])
|
| 675 |
|
| 676 |
-
if not details:
|
| 677 |
-
return None
|
| 678 |
-
|
| 679 |
result = {
|
| 680 |
"retry_after": None,
|
| 681 |
"reason": None,
|
|
@@ -726,6 +723,15 @@ class AntigravityProvider(AntigravityAuthBase, ProviderInterface):
|
|
| 726 |
|
| 727 |
# Return None if we couldn't extract retry_after
|
| 728 |
if not result["retry_after"]:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 729 |
return None
|
| 730 |
|
| 731 |
return result
|
|
|
|
| 673 |
error_obj = data.get("error", data)
|
| 674 |
details = error_obj.get("details", [])
|
| 675 |
|
|
|
|
|
|
|
|
|
|
| 676 |
result = {
|
| 677 |
"retry_after": None,
|
| 678 |
"reason": None,
|
|
|
|
| 723 |
|
| 724 |
# Return None if we couldn't extract retry_after
|
| 725 |
if not result["retry_after"]:
|
| 726 |
+
# Handle bare RESOURCE_EXHAUSTED without timing details
|
| 727 |
+
error_status = error_obj.get("status", "")
|
| 728 |
+
error_code = error_obj.get("code")
|
| 729 |
+
|
| 730 |
+
if error_status == "RESOURCE_EXHAUSTED" or error_code == 429:
|
| 731 |
+
result["retry_after"] = 60 # Default fallback
|
| 732 |
+
result["reason"] = result.get("reason") or "RESOURCE_EXHAUSTED"
|
| 733 |
+
return result
|
| 734 |
+
|
| 735 |
return None
|
| 736 |
|
| 737 |
return result
|