Commit aaeaad68 authored by Hana Kim's avatar Hana Kim Committed by Hyang-Ah Hana Kim

cmd/trace: assign a unique span id for slice representation

Spans are represented using Async Event types of chrome trace viewer.
According to the doc, the 'id' should be unique within category, scope.

https://docs.google.com/document/d/1CvAClvFfyA5R-PhYUmn5OOQtYMH4h6I0nSsKchNAySU/preview#heading=h.jh64i9l3vwa1

Use the index in the task's span slice as the slice id, so it
can be unique within the task. The scope is the task id which
is unique.

This fixes a visualization bug that caused incorrect or missing
presentation of nested spans.

Change-Id: If1537ee00247f71fa967abfe45569a9e7dbcdce7
Reviewed-on: https://go-review.googlesource.com/102697Reviewed-by: default avatarHeschi Kreinick <heschi@google.com>
parent 331c187b
......@@ -737,8 +737,8 @@ func generateTrace(params *traceParams, consumer traceConsumer) error {
ctx.emit(tEnd)
// Spans
for _, s := range task.spans {
ctx.emitSpan(s)
for i, s := range task.spans {
ctx.emitSpan(s, i)
}
}
}
......@@ -824,7 +824,7 @@ func (ctx *traceContext) emitSlice(ev *trace.Event, name string) *ViewerEvent {
return sl
}
func (ctx *traceContext) emitSpan(s spanDesc) {
func (ctx *traceContext) emitSpan(s spanDesc, spanID int) {
if s.Name == "" {
return
}
......@@ -837,7 +837,7 @@ func (ctx *traceContext) emitSpan(s spanDesc) {
Phase: "b",
Time: float64(s.firstTimestamp()) / 1e3,
Tid: s.G,
ID: s.G,
ID: uint64(spanID),
Scope: scopeID,
Cname: colorDeepMagenta,
}
......@@ -852,7 +852,7 @@ func (ctx *traceContext) emitSpan(s spanDesc) {
Phase: "e",
Time: float64(s.lastTimestamp()) / 1e3,
Tid: s.G,
ID: s.G,
ID: uint64(spanID),
Scope: scopeID,
Cname: colorDeepMagenta,
}
......
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