Skip to content

Commit

Permalink
use IMetricsRecorder consistently and fall back to Noop
Browse files Browse the repository at this point in the history
Signed-off-by: Florian Bacher <florian.bacher@dynatrace.com>
  • Loading branch information
bacherfl committed May 24, 2024
1 parent d720081 commit 2745606
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 21 deletions.
2 changes: 1 addition & 1 deletion core/pkg/telemetry/builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ func RegisterErrorHandling(log *logger.Logger) {
// BuildMetricsRecorder is a helper to build telemetry.MetricsRecorder based on configurations
func BuildMetricsRecorder(
ctx context.Context, svcName string, svcVersion string, config Config,
) (*MetricsRecorder, error) {
) (IMetricsRecorder, error) {
// Build metric reader based on configurations
mReader, err := buildMetricReader(ctx, config)
if err != nil {
Expand Down
30 changes: 16 additions & 14 deletions flagd/pkg/service/flag-evaluation/connect_service.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ func (b bufSwitchHandler) ServeHTTP(writer http.ResponseWriter, request *http.Re
type ConnectService struct {
logger *logger.Logger
eval evaluator.IEvaluator
metrics *telemetry.MetricsRecorder
metrics telemetry.IMetricsRecorder
eventingConfiguration IEvents

server *http.Server
Expand All @@ -71,17 +71,21 @@ type ConnectService struct {

// NewConnectService creates a ConnectService with provided parameters
func NewConnectService(
logger *logger.Logger, evaluator evaluator.IEvaluator, mRecorder *telemetry.MetricsRecorder,
logger *logger.Logger, evaluator evaluator.IEvaluator, mRecorder telemetry.IMetricsRecorder,
) *ConnectService {
return &ConnectService{
cs := &ConnectService{
logger: logger,
eval: evaluator,
metrics: mRecorder,
metrics: &telemetry.NoopMetricsRecorder{},
eventingConfiguration: &eventingConfiguration{
subs: make(map[interface{}]chan service.Notification),
mu: &sync.RWMutex{},
},
}
if mRecorder != nil {
cs.metrics = mRecorder
}
return cs
}

// Serve serves services with provided configuration options
Expand Down Expand Up @@ -183,16 +187,14 @@ func (s *ConnectService) setupServer(svcConf service.Configuration) (net.Listene
s.serverMtx.Unlock()

// Add middlewares
if s.metrics != nil {
metricsMiddleware := metricsmw.NewHTTPMetric(metricsmw.Config{
Service: svcConf.ServiceName,
MetricRecorder: s.metrics,
Logger: s.logger,
HandlerID: "",
})

s.AddMiddleware(metricsMiddleware)
}
metricsMiddleware := metricsmw.NewHTTPMetric(metricsmw.Config{
Service: svcConf.ServiceName,
MetricRecorder: s.metrics,
Logger: s.logger,
HandlerID: "",
})

s.AddMiddleware(metricsMiddleware)

corsMiddleware := corsmw.New(svcConf.CORS)
s.AddMiddleware(corsMiddleware)
Expand Down
7 changes: 3 additions & 4 deletions flagd/pkg/service/flag-evaluation/flag_evaluator.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ type OldFlagEvaluationService struct {

// NewOldFlagEvaluationService creates a OldFlagEvaluationService with provided parameters
func NewOldFlagEvaluationService(log *logger.Logger,
eval evaluator.IEvaluator, eventingCfg IEvents, metricsRecorder *telemetry.MetricsRecorder,
eval evaluator.IEvaluator, eventingCfg IEvents, metricsRecorder telemetry.IMetricsRecorder,
) *OldFlagEvaluationService {
svc := &OldFlagEvaluationService{
logger: log,
Expand Down Expand Up @@ -73,9 +73,8 @@ func (s *OldFlagEvaluationService) ResolveAll(
span.SetAttributes(attribute.Int("feature_flag.count", len(values)))
for _, value := range values {
// register the impression and reason for each flag evaluated
if s.metrics != nil {
s.metrics.RecordEvaluation(sCtx, value.Error, value.Reason, value.Variant, value.FlagKey)
}
s.metrics.RecordEvaluation(sCtx, value.Error, value.Reason, value.Variant, value.FlagKey)

switch v := value.Value.(type) {
case bool:
res.Flags[value.FlagKey] = &schemaV1.AnyFlag{
Expand Down
4 changes: 2 additions & 2 deletions flagd/pkg/service/middleware/metrics/http_metrics.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import (
)

type Config struct {
MetricRecorder *telemetry.MetricsRecorder
MetricRecorder telemetry.IMetricsRecorder
Logger *logger.Logger
Service string
GroupedStatus bool
Expand All @@ -41,7 +41,7 @@ func (cfg *Config) defaults() {
log.Fatal("missing logger")
}
if cfg.MetricRecorder == nil {
cfg.Logger.Fatal("missing OpenTelemetry metric recorder")
cfg.MetricRecorder = &telemetry.NoopMetricsRecorder{}

Check warning on line 44 in flagd/pkg/service/middleware/metrics/http_metrics.go

View check run for this annotation

Codecov / codecov/patch

flagd/pkg/service/middleware/metrics/http_metrics.go#L44

Added line #L44 was not covered by tests
}
}

Expand Down

0 comments on commit 2745606

Please sign in to comment.