mirror of https://github.com/grafana/grafana.git
				
				
				
			grpcserver: Extract existing span context from grpc request metadata prior to span creation (#77833)
Extract existing span context from grpc metadata
This commit is contained in:
		
							parent
							
								
									5bc4f56c79
								
							
						
					
					
						commit
						36dba7584d
					
				|  | @ -3,7 +3,10 @@ package interceptors | |||
| import ( | ||||
| 	"context" | ||||
| 
 | ||||
| 	"go.opentelemetry.io/otel" | ||||
| 	"go.opentelemetry.io/otel/propagation" | ||||
| 	"google.golang.org/grpc" | ||||
| 	"google.golang.org/grpc/metadata" | ||||
| 
 | ||||
| 	"github.com/grafana/grafana/pkg/infra/tracing" | ||||
| ) | ||||
|  | @ -17,6 +20,10 @@ func TracingUnaryInterceptor(tracer tracing.Tracer) grpc.UnaryServerInterceptor | |||
| 		info *grpc.UnaryServerInfo, | ||||
| 		handler grpc.UnaryHandler, | ||||
| 	) (resp any, err error) { | ||||
| 		if md, ok := metadata.FromIncomingContext(ctx); ok { | ||||
| 			ctx = otel.GetTextMapPropagator().Extract(ctx, propagation.HeaderCarrier(md)) | ||||
| 		} | ||||
| 
 | ||||
| 		ctx, span := tracer.Start(ctx, tracingPrefix+info.FullMethod) | ||||
| 		defer span.End() | ||||
| 		resp, err = handler(ctx, req) | ||||
|  | @ -26,7 +33,11 @@ func TracingUnaryInterceptor(tracer tracing.Tracer) grpc.UnaryServerInterceptor | |||
| 
 | ||||
| func TracingStreamInterceptor(tracer tracing.Tracer) grpc.StreamServerInterceptor { | ||||
| 	return func(srv any, stream grpc.ServerStream, info *grpc.StreamServerInfo, handler grpc.StreamHandler) error { | ||||
| 		ctx, span := tracer.Start(stream.Context(), tracingPrefix+info.FullMethod) | ||||
| 		ctx := stream.Context() | ||||
| 		if md, ok := metadata.FromIncomingContext(ctx); ok { | ||||
| 			ctx = otel.GetTextMapPropagator().Extract(ctx, propagation.HeaderCarrier(md)) | ||||
| 		} | ||||
| 		ctx, span := tracer.Start(ctx, tracingPrefix+info.FullMethod) | ||||
| 		defer span.End() | ||||
| 		tracingStream := &tracingServerStream{ | ||||
| 			ServerStream: stream, | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue