Commit 1b269463 authored by Dmitry Vyukov's avatar Dmitry Vyukov

cmd/trace: gracefully handle empty profiles

Return a meaningful message when a profile is empty.
Also rename "IO blocking" to "Network blocking",
currently only network blocking is captured.

Fixes #11098

Change-Id: Ib6f1292b8ade4805756fcb6696ba1fca8f9f39a9
Reviewed-on: https://go-review.googlesource.com/11243Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
parent e72f5f67
......@@ -124,7 +124,7 @@ var templMain = []byte(`
<body>
<a href="/trace">View trace</a><br>
<a href="/goroutines">Goroutine analysis</a><br>
<a href="/io">IO blocking profile</a><br>
<a href="/io">Network blocking profile</a><br>
<a href="/block">Synchronization blocking profile</a><br>
<a href="/syscall">Syscall blocking profile</a><br>
<a href="/sched">Scheduler latency profile</a><br>
......
......@@ -124,6 +124,10 @@ func httpSched(w http.ResponseWriter, r *http.Request) {
// generateSVGProfile generates pprof-like profile stored in prof and writes in to w.
func serveSVGProfile(w http.ResponseWriter, r *http.Request, prof map[uint64]Record) {
if len(prof) == 0 {
http.Error(w, "The profile is empty", http.StatusNotFound)
return
}
blockf, err := ioutil.TempFile("", "block")
if err != nil {
http.Error(w, fmt.Sprintf("failed to create temp file: %v", err), http.StatusInternalServerError)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment