Mirrowel commited on
Commit
b9d9895
Β·
1 Parent(s): 467f294

fix(antigravity): πŸ› add fallback retry logic for RESOURCE_EXHAUSTED errors without timing details

Browse files

Previously, 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