updates #207
| @@ -37,6 +37,15 @@ func NewContext(ctx context.Context, tracer Tracer) context.Context { | ||||
|  | ||||
| type spanKey struct{} | ||||
|  | ||||
| // SpanFromContext returns a span from context | ||||
| func SpanMustContext(ctx context.Context) Span { | ||||
| 	sp, ok := SpanFromContext(ctx) | ||||
| 	if !ok { | ||||
| 		panic("missing span") | ||||
| 	} | ||||
| 	return sp | ||||
| } | ||||
|  | ||||
| // SpanFromContext returns a span from context | ||||
| func SpanFromContext(ctx context.Context) (Span, bool) { | ||||
| 	if ctx == nil { | ||||
|   | ||||
| @@ -25,6 +25,7 @@ func (t *Tracer) Start(ctx context.Context, name string, opts ...tracer.SpanOpti | ||||
| 		name:      name, | ||||
| 		ctx:       ctx, | ||||
| 		tracer:    t, | ||||
| 		labels:    options.Labels, | ||||
| 		kind:      options.Kind, | ||||
| 		startTime: time.Now(), | ||||
| 	} | ||||
| @@ -37,6 +38,14 @@ func (t *Tracer) Start(ctx context.Context, name string, opts ...tracer.SpanOpti | ||||
| 	return tracer.NewSpanContext(ctx, span), span | ||||
| } | ||||
|  | ||||
| type memoryStringer struct { | ||||
| 	s string | ||||
| } | ||||
|  | ||||
| func (s memoryStringer) String() string { | ||||
| 	return s.s | ||||
| } | ||||
|  | ||||
| func (t *Tracer) Flush(_ context.Context) error { | ||||
| 	return nil | ||||
| } | ||||
| @@ -52,14 +61,6 @@ func (t *Tracer) Name() string { | ||||
| 	return t.opts.Name | ||||
| } | ||||
|  | ||||
| type noopStringer struct { | ||||
| 	s string | ||||
| } | ||||
|  | ||||
| func (s noopStringer) String() string { | ||||
| 	return s.s | ||||
| } | ||||
|  | ||||
| type Span struct { | ||||
| 	ctx        context.Context | ||||
| 	tracer     tracer.Tracer | ||||
| @@ -67,8 +68,8 @@ type Span struct { | ||||
| 	statusMsg  string | ||||
| 	startTime  time.Time | ||||
| 	finishTime time.Time | ||||
| 	traceID    noopStringer | ||||
| 	spanID     noopStringer | ||||
| 	traceID    memoryStringer | ||||
| 	spanID     memoryStringer | ||||
| 	events     []*Event | ||||
| 	labels     []interface{} | ||||
| 	logs       []interface{} | ||||
|   | ||||
| @@ -2,6 +2,7 @@ package tracer | ||||
|  | ||||
| import ( | ||||
| 	"context" | ||||
| 	"time" | ||||
|  | ||||
| 	"go.unistack.org/micro/v3/util/id" | ||||
| ) | ||||
| @@ -23,6 +24,7 @@ func (t *noopTracer) Start(ctx context.Context, name string, opts ...SpanOption) | ||||
| 		name:      name, | ||||
| 		ctx:       ctx, | ||||
| 		tracer:    t, | ||||
| 		startTime: time.Now(), | ||||
| 		labels:    options.Labels, | ||||
| 		kind:      options.Kind, | ||||
| 	} | ||||
| @@ -31,7 +33,6 @@ func (t *noopTracer) Start(ctx context.Context, name string, opts ...SpanOption) | ||||
| 	if span.ctx == nil { | ||||
| 		span.ctx = context.Background() | ||||
| 	} | ||||
| 	t.spans = append(t.spans, span) | ||||
| 	return NewSpanContext(ctx, span), span | ||||
| } | ||||
|  | ||||
| @@ -58,21 +59,16 @@ func (t *noopTracer) Name() string { | ||||
| 	return t.opts.Name | ||||
| } | ||||
|  | ||||
| type noopEvent struct { | ||||
| 	name   string | ||||
| 	labels []interface{} | ||||
| } | ||||
|  | ||||
| type noopSpan struct { | ||||
| 	ctx        context.Context | ||||
| 	tracer     Tracer | ||||
| 	name       string | ||||
| 	statusMsg  string | ||||
| 	startTime  time.Time | ||||
| 	finishTime time.Time | ||||
| 	traceID    noopStringer | ||||
| 	spanID     noopStringer | ||||
| 	events    []*noopEvent | ||||
| 	labels     []interface{} | ||||
| 	logs      []interface{} | ||||
| 	kind       SpanKind | ||||
| 	status     SpanStatus | ||||
| } | ||||
| @@ -86,6 +82,7 @@ func (s *noopSpan) SpanID() string { | ||||
| } | ||||
|  | ||||
| func (s *noopSpan) Finish(_ ...SpanOption) { | ||||
| 	s.finishTime = time.Now() | ||||
| } | ||||
|  | ||||
| func (s *noopSpan) Context() context.Context { | ||||
| @@ -97,8 +94,6 @@ func (s *noopSpan) Tracer() Tracer { | ||||
| } | ||||
|  | ||||
| func (s *noopSpan) AddEvent(name string, opts ...EventOption) { | ||||
| 	options := NewEventOptions(opts...) | ||||
| 	s.events = append(s.events, &noopEvent{name: name, labels: options.Labels}) | ||||
| } | ||||
|  | ||||
| func (s *noopSpan) SetName(name string) { | ||||
| @@ -106,7 +101,6 @@ func (s *noopSpan) SetName(name string) { | ||||
| } | ||||
|  | ||||
| func (s *noopSpan) AddLogs(kv ...interface{}) { | ||||
| 	s.logs = append(s.logs, kv...) | ||||
| } | ||||
|  | ||||
| func (s *noopSpan) AddLabels(kv ...interface{}) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user