• Hana Kim's avatar
    runtime/trace: user annotation API · 32d1cd33
    Hana Kim authored
    This CL presents the proposed user annotation API skeleton.
    This CL bumps up the trace version to 1.11.
    
    Design doc https://goo.gl/iqJfJ3
    
    Implementation CLs are followed.
    
    The API introduces three basic building blocks. Log, Span, and Task.
    
    Log is for basic logging. When called, the message will be recorded
    to the trace along with timestamp, goroutine id, and stack info.
    
       trace.Log(ctx, messageType message)
    
    Span can be thought as an extension of log to record interesting
    time interval during a goroutine's execution. A span is local to a
    goroutine by definition.
    
       trace.WithSpan(ctx, "doVeryExpensiveOp", func(ctx context) {
          /* do something very expensive */
       })
    
    Task is higher-level concept that aids tracing of complex operations
    that encompass multiple goroutines or are asynchronous.
    For example, an RPC request, a HTTP request, a file write, or a
    batch job can be traced with a Task.
    
    Note we chose to design the API around context.Context so it allows
    easier integration with other tracing tools, often designed around
    context.Context as well. Log and WithSpan APIs recognize the task
    information embedded in the context and record it in the trace as
    well. That allows the Go execution tracer to associate and group
    the spans and log messages based on the task information.
    
    In order to create a Task,
    
       ctx, end := trace.NewContext(ctx, "myTask")
       defer end()
    
    The Go execution tracer measures the time between the task created
    and the task ended for the task latency.
    
    More discussion history in golang.org/cl/59572.
    
    Update #16619
    
    R=go1.11
    
    Change-Id: I59a937048294dafd23a75cf1723c6db461b193cd
    Reviewed-on: https://go-review.googlesource.com/63274Reviewed-by: 's avatarAustin Clements <austin@google.com>
    32d1cd33
Name
Last commit
Last update
..
addr2line Loading commit data...
api Loading commit data...
asm Loading commit data...
buildid Loading commit data...
cgo Loading commit data...
compile Loading commit data...
cover Loading commit data...
dist Loading commit data...
doc Loading commit data...
fix Loading commit data...
go Loading commit data...
gofmt Loading commit data...
internal Loading commit data...
link Loading commit data...
nm Loading commit data...
objdump Loading commit data...
pack Loading commit data...
pprof Loading commit data...
test2json Loading commit data...
trace Loading commit data...
vendor Loading commit data...
vet Loading commit data...