github.com/muhammadn/cortex@v1.9.1-0.20220510110439-46bb7000d03d/pkg/cortex/tracing.go (about) 1 package cortex 2 3 import ( 4 "context" 5 6 "github.com/opentracing/opentracing-go" 7 "github.com/thanos-io/thanos/pkg/tracing" 8 "google.golang.org/grpc" 9 ) 10 11 // ThanosTracerUnaryInterceptor injects the opentracing global tracer into the context 12 // in order to get it picked up by Thanos components. 13 func ThanosTracerUnaryInterceptor(ctx context.Context, req interface{}, _ *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (interface{}, error) { 14 return handler(tracing.ContextWithTracer(ctx, opentracing.GlobalTracer()), req) 15 } 16 17 // ThanosTracerStreamInterceptor injects the opentracing global tracer into the context 18 // in order to get it picked up by Thanos components. 19 func ThanosTracerStreamInterceptor(srv interface{}, ss grpc.ServerStream, _ *grpc.StreamServerInfo, handler grpc.StreamHandler) error { 20 return handler(srv, wrappedServerStream{ 21 ctx: tracing.ContextWithTracer(ss.Context(), opentracing.GlobalTracer()), 22 ServerStream: ss, 23 }) 24 } 25 26 type wrappedServerStream struct { 27 ctx context.Context 28 grpc.ServerStream 29 } 30 31 func (ss wrappedServerStream) Context() context.Context { 32 return ss.ctx 33 }