• 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
..
archive Loading commit data...
bufio Loading commit data...
builtin Loading commit data...
bytes Loading commit data...
cmd Loading commit data...
compress Loading commit data...
container Loading commit data...
context Loading commit data...
crypto Loading commit data...
database/sql Loading commit data...
debug Loading commit data...
encoding Loading commit data...
errors Loading commit data...
expvar Loading commit data...
flag Loading commit data...
fmt Loading commit data...
go Loading commit data...
hash Loading commit data...
html Loading commit data...
image Loading commit data...
index/suffixarray Loading commit data...
internal Loading commit data...
io Loading commit data...
log Loading commit data...
math Loading commit data...
mime Loading commit data...
net Loading commit data...
os Loading commit data...
path Loading commit data...
plugin Loading commit data...
reflect Loading commit data...
regexp Loading commit data...
runtime Loading commit data...
sort Loading commit data...
strconv Loading commit data...
strings Loading commit data...
sync Loading commit data...
syscall Loading commit data...
testing Loading commit data...
text Loading commit data...
time Loading commit data...
unicode Loading commit data...
unsafe Loading commit data...
vendor/golang_org/x Loading commit data...
Make.dist Loading commit data...
all.bash Loading commit data...
all.bat Loading commit data...
all.rc Loading commit data...
androidtest.bash Loading commit data...
bootstrap.bash Loading commit data...
buildall.bash Loading commit data...
clean.bash Loading commit data...
clean.bat Loading commit data...
clean.rc Loading commit data...
cmp.bash Loading commit data...
iostest.bash Loading commit data...
make.bash Loading commit data...
make.bat Loading commit data...
make.rc Loading commit data...
naclmake.bash Loading commit data...
nacltest.bash Loading commit data...
race.bash Loading commit data...
race.bat Loading commit data...
run.bash Loading commit data...
run.bat Loading commit data...
run.rc Loading commit data...