metrics: Fix hidden panic while observing with bad exemplars (#3733)

* metrics: Fixing panic while observing with bad exemplars

Signed-off-by: Dave Henderson <dhenderson@gmail.com>

* Minor cleanup

The server is already added to the context. So, we can simply use that
to get the server name, which is a field on the server.

* Add integration test for auto HTTP->HTTPS redirects

A test like this would have caught the problem in the first place

Co-authored-by: Matthew Holt <mholt@users.noreply.github.com>
This commit is contained in:
Dave Henderson
2020-09-17 23:46:24 -04:00
committed by GitHub
parent c82c231ba7
commit d16ede358a
6 changed files with 62 additions and 41 deletions

View File

@ -243,12 +243,9 @@ func wrapRoute(route Route) Middleware {
// pointer into its own stack frame to preserve it so it
// won't be overwritten in future loop iterations.
func wrapMiddleware(ctx caddy.Context, mh MiddlewareHandler) Middleware {
// first, wrap the middleware with metrics instrumentation
metricsHandler := newMetricsInstrumentedHandler(
serverNameFromContext(ctx.Context),
caddy.GetModuleName(mh),
mh,
)
// wrap the middleware with metrics instrumentation
metricsHandler := newMetricsInstrumentedHandler(caddy.GetModuleName(mh), mh)
return func(next Handler) Handler {
// copy the next handler (it's an interface, so it's
// just a very lightweight copy of a pointer); this