fix(model): treat 'bad request' as retryable error for GitHub Copilot fallback (#3130)
GitHub Copilot performs rolling model updates which sometimes return '400 Bad Request' when a model is temporarily unavailable. This error was not in the retryable message patterns, causing model fallback to not trigger and users getting stuck. Changes: - Added 'bad request' to RETRYABLE_MESSAGE_PATTERNS in model-error-classifier.ts - Added test cases for 'bad request' pattern matching Fixes #3130
This commit is contained in:
@@ -149,6 +149,28 @@ describe("model-error-classifier", () => {
|
|||||||
//#then
|
//#then
|
||||||
expect(result).toBe(false)
|
expect(result).toBe(false)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
test("treats 'bad request' message as retryable (GitHub Copilot rolling update)", () => {
|
||||||
|
//#given
|
||||||
|
const error = { message: "400 Bad Request" }
|
||||||
|
|
||||||
|
//#when
|
||||||
|
const result = shouldRetryError(error)
|
||||||
|
|
||||||
|
//#then
|
||||||
|
expect(result).toBe(true)
|
||||||
|
})
|
||||||
|
|
||||||
|
test("treats 'bad request' lowercase as retryable", () => {
|
||||||
|
//#given
|
||||||
|
const error = { message: "bad request: model temporarily unavailable" }
|
||||||
|
|
||||||
|
//#when
|
||||||
|
const result = shouldRetryError(error)
|
||||||
|
|
||||||
|
//#then
|
||||||
|
expect(result).toBe(true)
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
export {}
|
export {}
|
||||||
|
|||||||
@@ -52,6 +52,7 @@ const RETRYABLE_MESSAGE_PATTERNS = [
|
|||||||
"over limit",
|
"over limit",
|
||||||
"overloaded",
|
"overloaded",
|
||||||
"bad gateway",
|
"bad gateway",
|
||||||
|
"bad request",
|
||||||
"unknown provider",
|
"unknown provider",
|
||||||
"provider not found",
|
"provider not found",
|
||||||
"model_not_supported",
|
"model_not_supported",
|
||||||
|
|||||||
Reference in New Issue
Block a user