refactoring tracing interceptors. (#1009)
* refactor tracing interceptors * add stream tracing interceptor
This commit is contained in:
@@ -27,3 +27,23 @@ func UnaryTracingInterceptor(serviceName string) grpc.UnaryServerInterceptor {
|
||||
return handler(ctx, req)
|
||||
}
|
||||
}
|
||||
|
||||
func StreamTracingInterceptor(serviceName string) grpc.StreamServerInterceptor {
|
||||
return func(srv interface{}, ss grpc.ServerStream, info *grpc.StreamServerInfo,
|
||||
handler grpc.StreamHandler) error {
|
||||
ctx := ss.Context()
|
||||
md, ok := metadata.FromIncomingContext(ctx)
|
||||
if !ok {
|
||||
return handler(srv, ss)
|
||||
}
|
||||
|
||||
carrier, err := trace.Extract(trace.GrpcFormat, md)
|
||||
if err != nil {
|
||||
return handler(srv, ss)
|
||||
}
|
||||
|
||||
ctx, span := trace.StartServerSpan(ctx, carrier, serviceName, info.FullMethod)
|
||||
defer span.Finish()
|
||||
return handler(srv, ss)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user