From 4a93deb0cf71e16d349af82a9cd0da7fe725aa57 Mon Sep 17 00:00:00 2001 From: Robert Landers Date: Sun, 11 Aug 2024 15:05:31 +0200 Subject: [PATCH] check that metrics exist --- metrics.go | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/metrics.go b/metrics.go index 28f68ab59..5dea92d01 100644 --- a/metrics.go +++ b/metrics.go @@ -2,7 +2,6 @@ package frankenphp import ( "github.com/prometheus/client_golang/prometheus" - "go.uber.org/zap" "path/filepath" "strings" "sync" @@ -65,14 +64,24 @@ type PrometheusMetrics struct { } func (m *PrometheusMetrics) StartWorker(name string) { - name = sanitizeWorkerName(name) m.busyThreads.Inc() + + // tests do not register workers before starting them + if _, ok := m.totalWorkers[name]; !ok { + return + } + name = sanitizeWorkerName(name) m.totalWorkers[name].Inc() } func (m *PrometheusMetrics) StopWorker(name string) { - name = sanitizeWorkerName(name) m.busyThreads.Dec() + + // tests do not register workers before starting them + if _, ok := m.totalWorkers[name]; !ok { + return + } + name = sanitizeWorkerName(name) m.totalWorkers[name].Dec() } @@ -124,8 +133,11 @@ func (m *PrometheusMetrics) StopRequest() { } func (m *PrometheusMetrics) StopWorkerRequest(name string, duration time.Duration) { - logger.Error("StopWorkerRequest", zap.String("name", name), zap.Duration("duration", duration)) name = sanitizeWorkerName(name) + if _, ok := m.workerRequestTime[name]; !ok { + return + } + m.workerRequestCount[name].Inc() m.busyWorkers[name].Dec() m.workerRequestTime[name].Add(duration.Seconds()) @@ -133,6 +145,9 @@ func (m *PrometheusMetrics) StopWorkerRequest(name string, duration time.Duratio func (m *PrometheusMetrics) StartWorkerRequest(name string) { name = sanitizeWorkerName(name) + if _, ok := m.busyWorkers[name]; !ok { + return + } m.busyWorkers[name].Inc() }