mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
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/11243 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
parent
e72f5f67a1
commit
1b269463a5
2 changed files with 5 additions and 1 deletions
|
|
@ -124,7 +124,7 @@ var templMain = []byte(`
|
||||||
<body>
|
<body>
|
||||||
<a href="/trace">View trace</a><br>
|
<a href="/trace">View trace</a><br>
|
||||||
<a href="/goroutines">Goroutine analysis</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="/block">Synchronization blocking profile</a><br>
|
||||||
<a href="/syscall">Syscall blocking profile</a><br>
|
<a href="/syscall">Syscall blocking profile</a><br>
|
||||||
<a href="/sched">Scheduler latency 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.
|
// 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) {
|
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")
|
blockf, err := ioutil.TempFile("", "block")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
http.Error(w, fmt.Sprintf("failed to create temp file: %v", err), http.StatusInternalServerError)
|
http.Error(w, fmt.Sprintf("failed to create temp file: %v", err), http.StatusInternalServerError)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue