Description
To start: I am not exactly sure if this issue belongs here, at https://github.com/gorilla/mux or at https://github.com/gorilla/handlers. I figured to start here as it possible other people are also approaching it from this angle.
The problem:
With v1.19 I could access the /metrics
endpoint in my browser and it would work. Now with v1.20(.1) I get to see gzipped content.
I have traced it back to the usage of using the mux CompressHandler. So why am I reporting it here then? Because it occurs after a new release here so perhaps the bug is somewhere else but someone here has a clue.
Minimal exxample:
main.go
package main
import (
"github.com/gorilla/handlers"
"github.com/gorilla/mux"
"github.com/prometheus/client_golang/prometheus/promhttp"
"net/http"
)
func main() {
router := mux.NewRouter()
router.Handle("/metrics", promhttp.Handler())
http.ListenAndServe(":8080", handlers.CompressHandler(router)) // Breaks
//http.ListenAndServe(":8080", router) // Works
select {}
}
In your go.mod
:
require github.com/prometheus/client_golang v1.20.1
require github.com/gorilla/handlers v1.5.2
require github.com/gorilla/mux v1.8.1
(Tested with go 1.21 and 1.23)
If you open the /metrics
in your browser you will get gzipped output. If you then roll back to v1.19 it works as intended.
I did found this (old) issue on the mux repo: gorilla/handlers#153 so it has been fixed in the past. Does anyone have a clue if the changes made could affect this somehow?