mirror of
https://github.com/google-gemini/gemini-cli.git
synced 2026-03-10 22:21:22 -07:00
fix(core): treat 503 Service Unavailable as retryable quota error (#19642)
This commit is contained in:
@@ -20,7 +20,8 @@ async function run(cmd) {
|
||||
stdio: ['pipe', 'pipe', 'ignore'],
|
||||
});
|
||||
return stdout.trim();
|
||||
} catch (_e) { // eslint-disable-line @typescript-eslint/no-unused-vars
|
||||
} catch (_e) {
|
||||
// eslint-disable-line @typescript-eslint/no-unused-vars
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -65,7 +65,23 @@ describe('classifyGoogleError', () => {
|
||||
expect((result as RetryableQuotaError).message).toBe(rawError.message);
|
||||
});
|
||||
|
||||
it('should return original error if code is not 429', () => {
|
||||
it('should return RetryableQuotaError for 503 Service Unavailable', () => {
|
||||
const apiError: GoogleApiError = {
|
||||
code: 503,
|
||||
message: 'Service Unavailable',
|
||||
details: [],
|
||||
};
|
||||
vi.spyOn(errorParser, 'parseGoogleApiError').mockReturnValue(apiError);
|
||||
const originalError = new Error('Service Unavailable');
|
||||
const result = classifyGoogleError(originalError);
|
||||
expect(result).toBeInstanceOf(RetryableQuotaError);
|
||||
if (result instanceof RetryableQuotaError) {
|
||||
expect(result.cause).toBe(apiError);
|
||||
expect(result.message).toBe('Service Unavailable');
|
||||
}
|
||||
});
|
||||
|
||||
it('should return original error if code is not 429 or 503', () => {
|
||||
const apiError: GoogleApiError = {
|
||||
code: 500,
|
||||
message: 'Server error',
|
||||
|
||||
@@ -202,6 +202,21 @@ export function classifyGoogleError(error: unknown): unknown {
|
||||
}
|
||||
}
|
||||
|
||||
// Check for 503 Service Unavailable errors
|
||||
if (status === 503) {
|
||||
const errorMessage =
|
||||
googleApiError?.message ||
|
||||
(error instanceof Error ? error.message : String(error));
|
||||
return new RetryableQuotaError(
|
||||
errorMessage,
|
||||
googleApiError ?? {
|
||||
code: 503,
|
||||
message: errorMessage,
|
||||
details: [],
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
if (
|
||||
!googleApiError ||
|
||||
googleApiError.code !== 429 ||
|
||||
|
||||
Reference in New Issue
Block a user