diff --git a/src/caduceus/caduceus.go b/src/caduceus/caduceus.go index 6764ca71..8bf10f98 100644 --- a/src/caduceus/caduceus.go +++ b/src/caduceus/caduceus.go @@ -181,7 +181,8 @@ func caduceus(arguments []string) int { senderWrapper: caduceusSenderWrapper, Logger: logger, }, - doJob: workerPool.Send, + emptyRequests: metricsRegistry.NewCounter(EmptyRequestBodyCounter), + doJob: workerPool.Send, } profileWrapper := &ProfileHandler{ @@ -202,7 +203,7 @@ func caduceus(arguments []string) int { Logger: logger, } - caduceusHandler := alice.New(authHandler.Decorate, TrackEmptyRequestBody(metricsRegistry)) + caduceusHandler := alice.New(authHandler.Decorate) router := mux.NewRouter() diff --git a/src/caduceus/http.go b/src/caduceus/http.go index 1094a05b..90f9ee42 100644 --- a/src/caduceus/http.go +++ b/src/caduceus/http.go @@ -18,11 +18,13 @@ package main import ( "encoding/json" - "github.com/Comcast/webpa-common/logging" - "github.com/go-kit/kit/log" "io/ioutil" "net/http" "time" + + "github.com/Comcast/webpa-common/logging" + "github.com/go-kit/kit/log" + "github.com/go-kit/kit/metrics" ) type Send func(inFunc func(workerID int)) error @@ -32,6 +34,7 @@ type ServerHandler struct { log.Logger caduceusHandler RequestHandler caduceusHealth HealthTracker + emptyRequests metrics.Counter doJob Send } @@ -54,6 +57,10 @@ func (sh *ServerHandler) ServeHTTP(response http.ResponseWriter, request *http.R return } + if len(payload) == 0 { + sh.emptyRequests.Add(1.0) + } + targetURL := request.URL.String() caduceusRequest := CaduceusRequest{ diff --git a/src/caduceus/metrics.go b/src/caduceus/metrics.go index bb839874..7a636f0a 100644 --- a/src/caduceus/metrics.go +++ b/src/caduceus/metrics.go @@ -1,12 +1,7 @@ package main import ( - "bytes" - "io/ioutil" - "net/http" - "github.com/Comcast/webpa-common/xmetrics" - "github.com/go-kit/kit/metrics/provider" ) const ( @@ -21,26 +16,3 @@ func Metrics() []xmetrics.Metric { }, } } - -// TrackEmptyRequestBody increments the EmptyRequestBodyCounter anytime an empty request is received -func TrackEmptyRequestBody(provider provider.Provider) func(http.Handler) http.Handler { - counter := provider.NewCounter(EmptyRequestBodyCounter) - - return func(next http.Handler) http.Handler { - return http.HandlerFunc(func(response http.ResponseWriter, request *http.Request) { - // don't trust the Content-Length header ... - body, err := ioutil.ReadAll(request.Body) - if err != nil { - response.WriteHeader(http.StatusBadRequest) - return - } - - if len(body) == 0 { - counter.Add(1.0) - } - - request.Body = ioutil.NopCloser(bytes.NewReader(body)) - next.ServeHTTP(response, request) - }) - } -}