@@ -29,25 +29,31 @@ type resolverSignature[T constraints] func(context context.Context, reqID, flagK
2929type OldFlagEvaluationService struct {
3030 logger * logger.Logger
3131 eval evaluator.IEvaluator
32- metrics * telemetry.MetricsRecorder
32+ metrics telemetry.IMetricsRecorder
3333 eventingConfiguration IEvents
3434 flagEvalTracer trace.Tracer
3535}
3636
3737// NewOldFlagEvaluationService creates a OldFlagEvaluationService with provided parameters
3838func NewOldFlagEvaluationService (log * logger.Logger ,
39- eval evaluator.IEvaluator , eventingCfg IEvents , metricsRecorder * telemetry.MetricsRecorder ,
39+ eval evaluator.IEvaluator , eventingCfg IEvents , metricsRecorder telemetry.IMetricsRecorder ,
4040) * OldFlagEvaluationService {
41- return & OldFlagEvaluationService {
41+ svc := & OldFlagEvaluationService {
4242 logger : log ,
4343 eval : eval ,
44- metrics : metricsRecorder ,
44+ metrics : & telemetry. NoopMetricsRecorder {} ,
4545 eventingConfiguration : eventingCfg ,
4646 flagEvalTracer : otel .Tracer ("flagEvaluationService" ),
4747 }
48+
49+ if metricsRecorder != nil {
50+ svc .metrics = metricsRecorder
51+ }
52+
53+ return svc
4854}
4955
50- // nolint:dupl
56+ // nolint:dupl,funlen
5157func (s * OldFlagEvaluationService ) ResolveAll (
5258 ctx context.Context ,
5359 req * connect.Request [schemaV1.ResolveAllRequest ],
@@ -68,6 +74,7 @@ func (s *OldFlagEvaluationService) ResolveAll(
6874 for _ , value := range values {
6975 // register the impression and reason for each flag evaluated
7076 s .metrics .RecordEvaluation (sCtx , value .Error , value .Reason , value .Variant , value .FlagKey )
77+
7178 switch v := value .Value .(type ) {
7279 case bool :
7380 res .Flags [value .FlagKey ] = & schemaV1.AnyFlag {
@@ -111,6 +118,7 @@ func (s *OldFlagEvaluationService) ResolveAll(
111118 return connect .NewResponse (res ), nil
112119}
113120
121+ // nolint:dupl
114122func (s * OldFlagEvaluationService ) EventStream (
115123 ctx context.Context ,
116124 req * connect.Request [schemaV1.EventStreamRequest ],
@@ -276,7 +284,7 @@ func (s *OldFlagEvaluationService) ResolveObject(
276284
277285// resolve is a generic flag resolver
278286func resolve [T constraints ](ctx context.Context , logger * logger.Logger , resolver resolverSignature [T ], flagKey string ,
279- evaluationContext * structpb.Struct , resp response [T ], metrics * telemetry.MetricsRecorder ,
287+ evaluationContext * structpb.Struct , resp response [T ], metrics telemetry.IMetricsRecorder ,
280288) error {
281289 reqID := xid .New ().String ()
282290 defer logger .ClearFields (reqID )
@@ -295,7 +303,9 @@ func resolve[T constraints](ctx context.Context, logger *logger.Logger, resolver
295303 evalErrFormatted = errFormat (evalErr )
296304 }
297305
298- metrics .RecordEvaluation (ctx , evalErr , reason , variant , flagKey )
306+ if metrics != nil {
307+ metrics .RecordEvaluation (ctx , evalErr , reason , variant , flagKey )
308+ }
299309
300310 spanFromContext := trace .SpanFromContext (ctx )
301311 spanFromContext .SetAttributes (telemetry .SemConvFeatureFlagAttributes (flagKey , variant )... )
0 commit comments