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  }