1
0
Fork 0

Add ResponseCode to CircuitBreaker

This commit is contained in:
Fahrzin Hemmati 2024-01-29 01:58:05 -08:00 committed by GitHub
parent 3174c69c66
commit d37ea3e882
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 25 additions and 2 deletions

View file

@ -30,12 +30,14 @@ func New(ctx context.Context, next http.Handler, confCircuitBreaker dynamic.Circ
logger.Debug().Msg("Creating middleware")
logger.Debug().Msgf("Setting up with expression: %s", expression)
responseCode := confCircuitBreaker.ResponseCode
cbOpts := []cbreaker.Option{
cbreaker.Fallback(http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request) {
tracing.SetStatusErrorf(req.Context(), "blocked by circuit-breaker (%q)", expression)
rw.WriteHeader(http.StatusServiceUnavailable)
rw.WriteHeader(responseCode)
if _, err := rw.Write([]byte(http.StatusText(http.StatusServiceUnavailable))); err != nil {
if _, err := rw.Write([]byte(http.StatusText(responseCode))); err != nil {
log.Ctx(req.Context()).Error().Err(err).Send()
}
})),