@@ -666,7 +666,58 @@ <h3 id="minor_library_changes">Minor changes to the library</h3>
666
666
< dl id ="runtime/trace "> < dt > < a href ="/pkg/runtime/trace/ "> runtime/trace</ a > </ dt >
667
667
< dd >
668
668
< p > <!-- CL 63274 -->
669
- TODO: < a href ="https://golang.org/cl/63274 "> https://golang.org/cl/63274</ a > : user annotation API
669
+ This release adds a new user annotation API.
670
+ It introduces three basic building blocks: Log, Span, and Task.
671
+ </ p >
672
+
673
+ < p >
674
+ Log is for basic logging. When called, the message will be recorded
675
+ to the trace along with timestamp, goroutine id, and stack info.
676
+ </ p >
677
+
678
+ < pre > trace.Log(ctx, messageType message)</ pre >
679
+
680
+ < p >
681
+ Span can be thought as an extension of log to record interesting
682
+ time interval during a goroutine's execution. A span is local to a
683
+ goroutine by definition.
684
+ </ p >
685
+
686
+ < pre >
687
+ trace.WithSpan(ctx, "doVeryExpensiveOp", func(ctx context) {
688
+ /* do something very expensive */
689
+ })</ pre >
690
+
691
+ < p >
692
+ Task is higher-level concept that aids tracing of complex operations
693
+ that encompass multiple goroutines or are asynchronous.
694
+ For example, an RPC request, a HTTP request, a file write, or a
695
+ batch job can be traced with a Task.
696
+ </ p >
697
+
698
+ < p >
699
+ Note we chose to design the API around context.Context so it allows
700
+ easier integration with other tracing tools, often designed around
701
+ context.Context as well. Log and WithSpan APIs recognize the task
702
+ information embedded in the context and record it in the trace as
703
+ well. That allows the Go execution tracer to associate and group
704
+ the spans and log messages based on the task information.
705
+ </ p >
706
+
707
+ < p >
708
+ In order to create a Task,
709
+ </ p >
710
+
711
+ < pre > ctx, end := trace.NewContext(ctx, "myTask")
712
+ defer end()</ pre >
713
+
714
+ < p >
715
+ The Go execution tracer measures the time between the task created
716
+ and the task ended for the task latency.
717
+ </ p >
718
+
719
+ < p >
720
+ More discussion history is in < a href ="https://golang.org/cl/59572 "> golang.org/cl/59572</ a > .
670
721
</ p >
671
722
672
723
</ dl > <!-- runtime/trace -->
0 commit comments