• 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: default avatarAustin Clements <austin@google.com>
    32d1cd33
trace.go 5.03 KB