From a1b06933aff80763ec62a288d5178a4321be1baa Mon Sep 17 00:00:00 2001 From: Brian Goff Date: Thu, 16 Mar 2017 11:05:20 -0400 Subject: [PATCH] Use generic handler for pprof profile lookups This more (in spirit) mimics the handler usage in net/http/pprof. It also makes sure that any new profiles that are added are automatically supported (e.g. `mutex` profiles in go1.8). Signed-off-by: Brian Goff --- api/server/profiler.go | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/api/server/profiler.go b/api/server/profiler.go index 658184b1e6..d49be338c8 100644 --- a/api/server/profiler.go +++ b/api/server/profiler.go @@ -19,10 +19,15 @@ func profilerSetup(mainRouter *mux.Router) { r.HandleFunc("/pprof/profile", pprof.Profile) r.HandleFunc("/pprof/symbol", pprof.Symbol) r.HandleFunc("/pprof/trace", pprof.Trace) - r.HandleFunc("/pprof/block", pprof.Handler("block").ServeHTTP) - r.HandleFunc("/pprof/heap", pprof.Handler("heap").ServeHTTP) - r.HandleFunc("/pprof/goroutine", pprof.Handler("goroutine").ServeHTTP) - r.HandleFunc("/pprof/threadcreate", pprof.Handler("threadcreate").ServeHTTP) + r.HandleFunc("/pprof/{name}", handlePprof) +} + +func handlePprof(w http.ResponseWriter, r *http.Request) { + var name string + if vars := mux.Vars(r); vars != nil { + name = vars["name"] + } + pprof.Handler(name).ServeHTTP(w, r) } // Replicated from expvar.go as not public.