From 3753bf7fc456651d1adf25a65fc8858e3c1c4f13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zolt=C3=A1n=20Papp?= Date: Wed, 11 Feb 2026 15:28:59 +0100 Subject: [PATCH] Remove no-op metrics implementation and simplify ClientMetrics constructor Eliminate unused `noopMetrics` and refactor `ClientMetrics` to always use the VictoriaMetrics implementation. Update associated logic to reflect these changes. --- client/internal/engine.go | 8 ++++---- client/internal/metrics/metrics.go | 21 +++++++++++---------- client/internal/metrics/noop.go | 27 --------------------------- 3 files changed, 15 insertions(+), 41 deletions(-) delete mode 100644 client/internal/metrics/noop.go diff --git a/client/internal/engine.go b/client/internal/engine.go index 968f635ec..ebe436348 100644 --- a/client/internal/engine.go +++ b/client/internal/engine.go @@ -279,12 +279,12 @@ func NewEngine( connSemaphore: semaphoregroup.NewSemaphoreGroup(connInitLimit), probeStunTurn: relay.NewStunTurnProbe(relay.DefaultCacheTTL), jobExecutor: jobexec.NewExecutor(), - clientMetrics: metrics.NewClientMetrics(metrics.AgentInfo{ - DeploymentType: deploymentType, - Version: version.NetbirdVersion(), - }, true), } + engine.clientMetrics = metrics.NewClientMetrics(metrics.AgentInfo{ + DeploymentType: deploymentType, + Version: version.NetbirdVersion()}) + log.Infof("I am: %s", config.WgPrivateKey.PublicKey().String()) return engine } diff --git a/client/internal/metrics/metrics.go b/client/internal/metrics/metrics.go index a8fd456a1..4e1602702 100644 --- a/client/internal/metrics/metrics.go +++ b/client/internal/metrics/metrics.go @@ -43,16 +43,8 @@ type ConnectionStageTimestamps struct { } // NewClientMetrics creates a new ClientMetrics instance -// If enabled is true, uses an OpenTelemetry implementation -// If enabled is false, uses a no-op implementation -func NewClientMetrics(agentInfo AgentInfo, enabled bool) *ClientMetrics { - var impl metricsImplementation - if !enabled { - impl = &noopMetrics{} - } else { - impl = newVictoriaMetrics(agentInfo) - } - return &ClientMetrics{impl: impl} +func NewClientMetrics(agentInfo AgentInfo) *ClientMetrics { + return &ClientMetrics{impl: newVictoriaMetrics(agentInfo)} } // RecordConnectionStages calculates stage durations from timestamps and records them @@ -62,15 +54,24 @@ func (c *ClientMetrics) RecordConnectionStages( isReconnection bool, timestamps ConnectionStageTimestamps, ) { + if c == nil { + return + } c.impl.RecordConnectionStages(ctx, connectionType, isReconnection, timestamps) } // RecordSyncDuration records the duration of sync message processing func (c *ClientMetrics) RecordSyncDuration(ctx context.Context, duration time.Duration) { + if c == nil { + return + } c.impl.RecordSyncDuration(ctx, duration) } // Export exports metrics to the writer func (c *ClientMetrics) Export(w io.Writer) error { + if c == nil { + return nil + } return c.impl.Export(w) } diff --git a/client/internal/metrics/noop.go b/client/internal/metrics/noop.go deleted file mode 100644 index fb1f6126e..000000000 --- a/client/internal/metrics/noop.go +++ /dev/null @@ -1,27 +0,0 @@ -package metrics - -import ( - "context" - "io" - "time" -) - -// noopMetrics is a no-op implementation of metricsImplementation -type noopMetrics struct{} - -func (s *noopMetrics) RecordConnectionStages( - _ context.Context, - _ ConnectionType, - _ bool, - _ ConnectionStageTimestamps, -) { - // No-op -} - -func (s *noopMetrics) RecordSyncDuration(_ context.Context, _ time.Duration) { - // No-op -} - -func (s *noopMetrics) Export(_ io.Writer) error { - return nil -}