[VOL-4290] Voltha go library updates for gRPC migration
Change-Id: I1aa2774beb6b7ed7419bc45aeb53fcae8a8ecda0
diff --git a/vendor/github.com/grpc-ecosystem/go-grpc-middleware/tracing/opentracing/id_extract.go b/vendor/github.com/grpc-ecosystem/go-grpc-middleware/tracing/opentracing/id_extract.go
index d19f3c8..bc7302e 100644
--- a/vendor/github.com/grpc-ecosystem/go-grpc-middleware/tracing/opentracing/id_extract.go
+++ b/vendor/github.com/grpc-ecosystem/go-grpc-middleware/tracing/opentracing/id_extract.go
@@ -23,8 +23,11 @@
// https://github.com/opentracing/basictracer-go/blob/1b32af207119a14b1b231d451df3ed04a72efebf/propagation_ot.go#L26
// Jaeger from Uber use one-key schema with next format '{trace-id}:{span-id}:{parent-span-id}:{flags}'
// https://www.jaegertracing.io/docs/client-libraries/#trace-span-identity
-func injectOpentracingIdsToTags(span opentracing.Span, tags grpc_ctxtags.Tags) {
- if err := span.Tracer().Inject(span.Context(), opentracing.HTTPHeaders, &tagsCarrier{tags}); err != nil {
+// Datadog uses keys ending with 'trace-id' and 'parent-id' (for span) by default:
+// https://github.com/DataDog/dd-trace-go/blob/v1/ddtrace/tracer/textmap.go#L77
+func injectOpentracingIdsToTags(traceHeaderName string, span opentracing.Span, tags grpc_ctxtags.Tags) {
+ if err := span.Tracer().Inject(span.Context(), opentracing.HTTPHeaders,
+ &tagsCarrier{Tags: tags, traceHeaderName: traceHeaderName}); err != nil {
grpclog.Infof("grpc_opentracing: failed extracting trace info into ctx %v", err)
}
}
@@ -32,10 +35,28 @@
// tagsCarrier is a really hacky way of
type tagsCarrier struct {
grpc_ctxtags.Tags
+ traceHeaderName string
}
func (t *tagsCarrier) Set(key, val string) {
key = strings.ToLower(key)
+
+ if key == t.traceHeaderName {
+ parts := strings.Split(val, ":")
+ if len(parts) == 4 {
+ t.Tags.Set(TagTraceId, parts[0])
+ t.Tags.Set(TagSpanId, parts[1])
+
+ if parts[3] != jaegerNotSampledFlag {
+ t.Tags.Set(TagSampled, "true")
+ } else {
+ t.Tags.Set(TagSampled, "false")
+ }
+
+ return
+ }
+ }
+
if strings.Contains(key, "traceid") {
t.Tags.Set(TagTraceId, val) // this will most likely be base-16 (hex) encoded
}
@@ -51,17 +72,11 @@
}
}
- if key == "uber-trace-id" {
- parts := strings.Split(val, ":")
- if len(parts) == 4 {
- t.Tags.Set(TagTraceId, parts[0])
- t.Tags.Set(TagSpanId, parts[1])
+ if strings.HasSuffix(key, "trace-id") {
+ t.Tags.Set(TagTraceId, val)
+ }
- if parts[3] != jaegerNotSampledFlag {
- t.Tags.Set(TagSampled, "true")
- } else {
- t.Tags.Set(TagSampled, "false")
- }
- }
+ if strings.HasSuffix(key, "parent-id") {
+ t.Tags.Set(TagSpanId, val)
}
}