Skip to content

Commit b513d42

Browse files
authored
Merge pull request #148 from basvanbeek/master
add TextMapReader and TextMapWriter compatibility
2 parents 98eca45 + fd52d53 commit b513d42

File tree

3 files changed

+31
-3
lines changed

3 files changed

+31
-3
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ require (
66
github.com/gorilla/mux v1.7.3 // indirect
77
github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492
88
github.com/opentracing/opentracing-go v1.1.0
9-
github.com/openzipkin/zipkin-go v0.2.0
9+
github.com/openzipkin/zipkin-go v0.2.1
1010
github.com/stretchr/testify v1.3.0
1111
google.golang.org/grpc v1.22.1 // indirect
1212
)

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492 h1
3333
github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis=
3434
github.com/opentracing/opentracing-go v1.1.0 h1:pWlfV3Bxv7k65HYwkikxat0+s3pV4bsqf19k25Ur8rU=
3535
github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
36-
github.com/openzipkin/zipkin-go v0.2.0 h1:33/f6xXB6YlOQ9tgTsXVOkdLCJsHTcZJnMy4DnSd6FU=
37-
github.com/openzipkin/zipkin-go v0.2.0/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4=
36+
github.com/openzipkin/zipkin-go v0.2.1 h1:noL5/5Uf1HpVl3wNsfkZhIKbSWCVi5jgqkONNx8PXcA=
37+
github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4=
3838
github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc=
3939
github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA=
4040
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=

propagation.go

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,21 @@ func (p *textMapPropagator) Inject(
5959
return b3.InjectHTTP(req)(model.SpanContext(sc))
6060
}
6161
}
62+
// fallback to support native opentracing textmap writer
63+
if carrier, ok := opaqueCarrier.(opentracing.TextMapWriter); ok {
64+
m := make(b3.Map)
65+
switch p.tracer.opts.b3InjectOpt {
66+
case B3InjectSingle:
67+
m.Inject(b3.WithSingleHeaderOnly())(model.SpanContext(sc))
68+
case B3InjectBoth:
69+
m.Inject(b3.WithSingleAndMultiHeader())(model.SpanContext(sc))
70+
default:
71+
m.Inject()(model.SpanContext(sc))
72+
}
73+
for k, v := range m {
74+
carrier.Set(k, v)
75+
}
76+
}
6277

6378
return opentracing.ErrInvalidCarrier
6479
}
@@ -81,6 +96,19 @@ func (p *textMapPropagator) Extract(
8196
}
8297
return SpanContext{}, err
8398
}
99+
if carrier, ok := opaqueCarrier.(opentracing.TextMapReader); ok {
100+
m := make(b3.Map)
101+
carrier.ForeachKey(func(key string, val string) error {
102+
m[key] = val
103+
return nil
104+
})
105+
sc, err := m.Extract()
106+
if sc != nil {
107+
return SpanContext(*sc), err
108+
}
109+
return SpanContext{}, err
110+
}
111+
84112
return nil, opentracing.ErrUnsupportedFormat
85113
}
86114

0 commit comments

Comments
 (0)