Compare commits
No commits in common. "v3" and "v3.11.20" have entirely different histories.
@ -68,7 +68,15 @@ func (md Metadata) Iterator() *Iterator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (md Metadata) MustGet(key string) string {
|
func (md Metadata) MustGet(key string) string {
|
||||||
val, ok := md.Get(key)
|
// fast path
|
||||||
|
val, ok := md[key]
|
||||||
|
if !ok {
|
||||||
|
// slow path
|
||||||
|
val, ok = md[textproto.CanonicalMIMEHeaderKey(key)]
|
||||||
|
if !ok {
|
||||||
|
val, ok = md[strings.ToLower(key)]
|
||||||
|
}
|
||||||
|
}
|
||||||
if !ok {
|
if !ok {
|
||||||
panic("missing metadata key")
|
panic("missing metadata key")
|
||||||
}
|
}
|
||||||
@ -111,18 +119,11 @@ func (md Metadata) Del(keys ...string) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Copy makes a copy of the metadata
|
|
||||||
func (md Metadata) CopyTo(dst Metadata) {
|
|
||||||
for k, v := range md {
|
|
||||||
dst[k] = v
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Copy makes a copy of the metadata
|
// Copy makes a copy of the metadata
|
||||||
func Copy(md Metadata, exclude ...string) Metadata {
|
func Copy(md Metadata, exclude ...string) Metadata {
|
||||||
nmd := New(len(md))
|
nmd := New(len(md))
|
||||||
for k, v := range md {
|
for key, val := range md {
|
||||||
nmd[k] = v
|
nmd.Set(key, val)
|
||||||
}
|
}
|
||||||
nmd.Del(exclude...)
|
nmd.Del(exclude...)
|
||||||
return nmd
|
return nmd
|
||||||
@ -146,7 +147,7 @@ func Merge(omd Metadata, mmd Metadata, overwrite bool) Metadata {
|
|||||||
case ok && !overwrite:
|
case ok && !overwrite:
|
||||||
continue
|
continue
|
||||||
case val != "":
|
case val != "":
|
||||||
nmd[key] = val
|
nmd.Set(key, val)
|
||||||
case ok && val == "":
|
case ok && val == "":
|
||||||
nmd.Del(key)
|
nmd.Del(key)
|
||||||
}
|
}
|
||||||
@ -160,8 +161,6 @@ func Pairs(kv ...string) (Metadata, bool) {
|
|||||||
return nil, false
|
return nil, false
|
||||||
}
|
}
|
||||||
md := New(len(kv) / 2)
|
md := New(len(kv) / 2)
|
||||||
for idx := 0; idx < len(kv); idx += 2 {
|
md.Set(kv...)
|
||||||
md[kv[idx]] = kv[idx+1]
|
|
||||||
}
|
|
||||||
return md, true
|
return md, true
|
||||||
}
|
}
|
||||||
|
@ -1,18 +0,0 @@
|
|||||||
package semconv
|
|
||||||
|
|
||||||
var (
|
|
||||||
// HeaderTopic is the header name that contains topic name
|
|
||||||
HeaderTopic = "Micro-Topic"
|
|
||||||
// HeaderContentType specifies content type of message
|
|
||||||
HeaderContentType = "Content-Type"
|
|
||||||
// HeaderEndpoint specifies endpoint in service
|
|
||||||
HeaderEndpoint = "Micro-Endpoint"
|
|
||||||
// HeaderService specifies service
|
|
||||||
HeaderService = "Micro-Service"
|
|
||||||
// HeaderTimeout specifies timeout of operation
|
|
||||||
HeaderTimeout = "Micro-Timeout"
|
|
||||||
// HeaderAuthorization specifies Authorization header
|
|
||||||
HeaderAuthorization = "Authorization"
|
|
||||||
// HeaderXRequestID specifies request id
|
|
||||||
HeaderXRequestID = "X-Request-Id"
|
|
||||||
)
|
|
@ -37,15 +37,6 @@ func NewContext(ctx context.Context, tracer Tracer) context.Context {
|
|||||||
|
|
||||||
type spanKey struct{}
|
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
|
// SpanFromContext returns a span from context
|
||||||
func SpanFromContext(ctx context.Context) (Span, bool) {
|
func SpanFromContext(ctx context.Context) (Span, bool) {
|
||||||
if ctx == nil {
|
if ctx == nil {
|
||||||
|
@ -25,7 +25,6 @@ func (t *Tracer) Start(ctx context.Context, name string, opts ...tracer.SpanOpti
|
|||||||
name: name,
|
name: name,
|
||||||
ctx: ctx,
|
ctx: ctx,
|
||||||
tracer: t,
|
tracer: t,
|
||||||
labels: options.Labels,
|
|
||||||
kind: options.Kind,
|
kind: options.Kind,
|
||||||
startTime: time.Now(),
|
startTime: time.Now(),
|
||||||
}
|
}
|
||||||
@ -38,14 +37,6 @@ func (t *Tracer) Start(ctx context.Context, name string, opts ...tracer.SpanOpti
|
|||||||
return tracer.NewSpanContext(ctx, span), span
|
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 {
|
func (t *Tracer) Flush(_ context.Context) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@ -61,6 +52,14 @@ func (t *Tracer) Name() string {
|
|||||||
return t.opts.Name
|
return t.opts.Name
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type noopStringer struct {
|
||||||
|
s string
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s noopStringer) String() string {
|
||||||
|
return s.s
|
||||||
|
}
|
||||||
|
|
||||||
type Span struct {
|
type Span struct {
|
||||||
ctx context.Context
|
ctx context.Context
|
||||||
tracer tracer.Tracer
|
tracer tracer.Tracer
|
||||||
@ -68,8 +67,8 @@ type Span struct {
|
|||||||
statusMsg string
|
statusMsg string
|
||||||
startTime time.Time
|
startTime time.Time
|
||||||
finishTime time.Time
|
finishTime time.Time
|
||||||
traceID memoryStringer
|
traceID noopStringer
|
||||||
spanID memoryStringer
|
spanID noopStringer
|
||||||
events []*Event
|
events []*Event
|
||||||
labels []interface{}
|
labels []interface{}
|
||||||
logs []interface{}
|
logs []interface{}
|
||||||
|
@ -2,7 +2,6 @@ package tracer
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"time"
|
|
||||||
|
|
||||||
"go.unistack.org/micro/v3/util/id"
|
"go.unistack.org/micro/v3/util/id"
|
||||||
)
|
)
|
||||||
@ -21,18 +20,18 @@ func (t *noopTracer) Spans() []Span {
|
|||||||
func (t *noopTracer) Start(ctx context.Context, name string, opts ...SpanOption) (context.Context, Span) {
|
func (t *noopTracer) Start(ctx context.Context, name string, opts ...SpanOption) (context.Context, Span) {
|
||||||
options := NewSpanOptions(opts...)
|
options := NewSpanOptions(opts...)
|
||||||
span := &noopSpan{
|
span := &noopSpan{
|
||||||
name: name,
|
name: name,
|
||||||
ctx: ctx,
|
ctx: ctx,
|
||||||
tracer: t,
|
tracer: t,
|
||||||
startTime: time.Now(),
|
labels: options.Labels,
|
||||||
labels: options.Labels,
|
kind: options.Kind,
|
||||||
kind: options.Kind,
|
|
||||||
}
|
}
|
||||||
span.spanID.s, _ = id.New()
|
span.spanID.s, _ = id.New()
|
||||||
span.traceID.s, _ = id.New()
|
span.traceID.s, _ = id.New()
|
||||||
if span.ctx == nil {
|
if span.ctx == nil {
|
||||||
span.ctx = context.Background()
|
span.ctx = context.Background()
|
||||||
}
|
}
|
||||||
|
t.spans = append(t.spans, span)
|
||||||
return NewSpanContext(ctx, span), span
|
return NewSpanContext(ctx, span), span
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -59,18 +58,23 @@ func (t *noopTracer) Name() string {
|
|||||||
return t.opts.Name
|
return t.opts.Name
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type noopEvent struct {
|
||||||
|
name string
|
||||||
|
labels []interface{}
|
||||||
|
}
|
||||||
|
|
||||||
type noopSpan struct {
|
type noopSpan struct {
|
||||||
ctx context.Context
|
ctx context.Context
|
||||||
tracer Tracer
|
tracer Tracer
|
||||||
name string
|
name string
|
||||||
statusMsg string
|
statusMsg string
|
||||||
startTime time.Time
|
traceID noopStringer
|
||||||
finishTime time.Time
|
spanID noopStringer
|
||||||
traceID noopStringer
|
events []*noopEvent
|
||||||
spanID noopStringer
|
labels []interface{}
|
||||||
labels []interface{}
|
logs []interface{}
|
||||||
kind SpanKind
|
kind SpanKind
|
||||||
status SpanStatus
|
status SpanStatus
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *noopSpan) TraceID() string {
|
func (s *noopSpan) TraceID() string {
|
||||||
@ -82,7 +86,6 @@ func (s *noopSpan) SpanID() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *noopSpan) Finish(_ ...SpanOption) {
|
func (s *noopSpan) Finish(_ ...SpanOption) {
|
||||||
s.finishTime = time.Now()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *noopSpan) Context() context.Context {
|
func (s *noopSpan) Context() context.Context {
|
||||||
@ -94,6 +97,8 @@ func (s *noopSpan) Tracer() Tracer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *noopSpan) AddEvent(name string, opts ...EventOption) {
|
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) {
|
func (s *noopSpan) SetName(name string) {
|
||||||
@ -101,6 +106,7 @@ func (s *noopSpan) SetName(name string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *noopSpan) AddLogs(kv ...interface{}) {
|
func (s *noopSpan) AddLogs(kv ...interface{}) {
|
||||||
|
s.logs = append(s.logs, kv...)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *noopSpan) AddLabels(kv ...interface{}) {
|
func (s *noopSpan) AddLabels(kv ...interface{}) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user