@@ -11,6 +11,7 @@ import (
1111 grpc_recovery "github.com/grpc-ecosystem/go-grpc-middleware/v2/interceptors/recovery"
1212 "github.com/prometheus/client_golang/prometheus"
1313 "github.com/prometheus/client_golang/prometheus/promauto"
14+ "github.com/shortlink-org/go-sdk/flight_trace"
1415 "github.com/spf13/viper"
1516 "go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc"
1617 "go.opentelemetry.io/otel/trace"
@@ -22,6 +23,7 @@ import (
2223
2324 "github.com/shortlink-org/go-sdk/logger"
2425
26+ flight_trace_interceptor "github.com/shortlink-org/go-sdk/grpc/middleware/flight_trace"
2527 grpc_logger "github.com/shortlink-org/go-sdk/grpc/middleware/logger"
2628 pprof_interceptor "github.com/shortlink-org/go-sdk/grpc/middleware/pprof"
2729 session_interceptor "github.com/shortlink-org/go-sdk/grpc/middleware/session"
@@ -46,15 +48,21 @@ type server struct {
4648}
4749
4850// InitServer - initialize gRPC server
49- func InitServer (ctx context.Context , log logger.Logger , tracer trace.TracerProvider , prom * prometheus.Registry ) (* Server , error ) {
51+ func InitServer (
52+ ctx context.Context ,
53+ log logger.Logger ,
54+ tracer trace.TracerProvider ,
55+ prom * prometheus.Registry ,
56+ fr * flight_trace.Recorder ,
57+ ) (* Server , error ) {
5058 viper .SetDefault ("GRPC_SERVER_ENABLED" , true ) // gRPC grpServer enable
5159
5260 if ! viper .GetBool ("GRPC_SERVER_ENABLED" ) {
5361 //nolint:nilnil // it's correct logic
5462 return nil , nil
5563 }
5664
57- config , err := setServerConfig (log , tracer , prom ) //nolint:contextcheck // false positive
65+ config , err := setServerConfig (log , tracer , prom , fr ) //nolint:contextcheck // false positive
5866 if err != nil {
5967 return nil , err
6068 }
@@ -107,7 +115,12 @@ func InitServer(ctx context.Context, log logger.Logger, tracer trace.TracerProvi
107115}
108116
109117// setConfig - set configuration
110- func setServerConfig (log logger.Logger , tracer trace.TracerProvider , monitor * prometheus.Registry ) (* server , error ) {
118+ func setServerConfig (
119+ log logger.Logger ,
120+ tracer trace.TracerProvider ,
121+ monitor * prometheus.Registry ,
122+ fr * flight_trace.Recorder ,
123+ ) (* server , error ) {
111124 viper .SetDefault ("GRPC_SERVER_PORT" , "50051" ) // gRPC port
112125 grpc_port := viper .GetInt ("GRPC_SERVER_PORT" )
113126
@@ -125,6 +138,7 @@ func setServerConfig(log logger.Logger, tracer trace.TracerProvider, monitor *pr
125138 config .WithTracer (tracer )
126139 config .withSession ()
127140 config .withPprofLabels ()
141+ config .WithFlightTrace (fr , log )
128142
129143 if monitor != nil {
130144 config .WithMetrics (monitor )
@@ -245,3 +259,9 @@ func (s *server) withPprofLabels() {
245259 s .interceptorUnaryServerList = append (s .interceptorUnaryServerList , pprof_interceptor .UnaryServerInterceptor ())
246260 s .interceptorStreamServerList = append (s .interceptorStreamServerList , pprof_interceptor .StreamServerInterceptor ())
247261}
262+
263+ // WithFlightTrace - setup flight trace
264+ func (s * server ) WithFlightTrace (fr * flight_trace.Recorder , log logger.Logger ) {
265+ s .interceptorUnaryServerList = append (s .interceptorUnaryServerList , flight_trace_interceptor .UnaryServerInterceptor (fr , log ))
266+ s .interceptorStreamServerList = append (s .interceptorStreamServerList , flight_trace_interceptor .StreamServerInterceptor (fr , log ))
267+ }
0 commit comments