fix(pkg/providers):do regex precompile insteadd on the fly
This commit is contained in:
parent
71bdeb41c9
commit
7e55680c6b
1 changed files with 7 additions and 8 deletions
|
|
@ -6,6 +6,12 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Common patterns in Go HTTP error messages
|
||||||
|
var httpStatusPatterns = []*regexp.Regexp{
|
||||||
|
regexp.MustCompile(`status[:\s]+(\d{3})`),
|
||||||
|
regexp.MustCompile(`HTTP[/\s]+\d*\.?\d*\s+(\d{3})`),
|
||||||
|
}
|
||||||
|
|
||||||
// errorPattern defines a single pattern (string or regex) for error classification.
|
// errorPattern defines a single pattern (string or regex) for error classification.
|
||||||
type errorPattern struct {
|
type errorPattern struct {
|
||||||
substring string
|
substring string
|
||||||
|
|
@ -200,18 +206,11 @@ func classifyByMessage(msg string) FailoverReason {
|
||||||
// extractHTTPStatus extracts an HTTP status code from an error message.
|
// extractHTTPStatus extracts an HTTP status code from an error message.
|
||||||
// Looks for patterns like "status: 429", "status 429", "HTTP 429", or standalone "429".
|
// Looks for patterns like "status: 429", "status 429", "HTTP 429", or standalone "429".
|
||||||
func extractHTTPStatus(msg string) int {
|
func extractHTTPStatus(msg string) int {
|
||||||
// Common patterns in Go HTTP error messages
|
for _, p := range httpStatusPatterns {
|
||||||
patterns := []*regexp.Regexp{
|
|
||||||
regexp.MustCompile(`status[:\s]+(\d{3})`),
|
|
||||||
regexp.MustCompile(`HTTP[/\s]+\d*\.?\d*\s+(\d{3})`),
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, p := range patterns {
|
|
||||||
if m := p.FindStringSubmatch(msg); len(m) > 1 {
|
if m := p.FindStringSubmatch(msg); len(m) > 1 {
|
||||||
return parseDigits(m[1])
|
return parseDigits(m[1])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue