11package frankenphp
22
33import (
4- "github.com/dunglas/frankenphp/internal/fastabs "
4+ "errors "
55 "regexp"
66 "sync"
77 "time"
88
9+ "github.com/dunglas/frankenphp/internal/fastabs"
10+
911 "github.com/prometheus/client_golang/prometheus"
1012)
1113
@@ -153,7 +155,10 @@ func (m *PrometheusMetrics) TotalWorkers(name string, _ int) {
153155 Name : "total_workers" ,
154156 Help : "Total number of PHP workers for this worker" ,
155157 })
156- m .registry .MustRegister (m .totalWorkers [identity ])
158+ if err := m .registry .Register (m .totalWorkers [identity ]); err != nil &&
159+ ! errors .As (err , & prometheus.AlreadyRegisteredError {}) {
160+ panic (err )
161+ }
157162 }
158163
159164 if _ , ok := m .workerCrashes [identity ]; ! ok {
@@ -163,7 +168,10 @@ func (m *PrometheusMetrics) TotalWorkers(name string, _ int) {
163168 Name : "worker_crashes" ,
164169 Help : "Number of PHP worker crashes for this worker" ,
165170 })
166- m .registry .MustRegister (m .workerCrashes [identity ])
171+ if err := m .registry .Register (m .workerCrashes [identity ]); err != nil &&
172+ ! errors .As (err , & prometheus.AlreadyRegisteredError {}) {
173+ panic (err )
174+ }
167175 }
168176
169177 if _ , ok := m .workerRestarts [identity ]; ! ok {
@@ -173,7 +181,10 @@ func (m *PrometheusMetrics) TotalWorkers(name string, _ int) {
173181 Name : "worker_restarts" ,
174182 Help : "Number of PHP worker restarts for this worker" ,
175183 })
176- m .registry .MustRegister (m .workerRestarts [identity ])
184+ if err := m .registry .Register (m .workerRestarts [identity ]); err != nil &&
185+ ! errors .As (err , & prometheus.AlreadyRegisteredError {}) {
186+ panic (err )
187+ }
177188 }
178189
179190 if _ , ok := m .readyWorkers [identity ]; ! ok {
@@ -183,7 +194,10 @@ func (m *PrometheusMetrics) TotalWorkers(name string, _ int) {
183194 Name : "ready_workers" ,
184195 Help : "Running workers that have successfully called frankenphp_handle_request at least once" ,
185196 })
186- m .registry .MustRegister (m .readyWorkers [identity ])
197+ if err := m .registry .Register (m .readyWorkers [identity ]); err != nil &&
198+ ! errors .As (err , & prometheus.AlreadyRegisteredError {}) {
199+ panic (err )
200+ }
187201 }
188202
189203 if _ , ok := m .busyWorkers [identity ]; ! ok {
@@ -193,7 +207,10 @@ func (m *PrometheusMetrics) TotalWorkers(name string, _ int) {
193207 Name : "busy_workers" ,
194208 Help : "Number of busy PHP workers for this worker" ,
195209 })
196- m .registry .MustRegister (m .busyWorkers [identity ])
210+ if err := m .registry .Register (m .busyWorkers [identity ]); err != nil &&
211+ ! errors .As (err , & prometheus.AlreadyRegisteredError {}) {
212+ panic (err )
213+ }
197214 }
198215
199216 if _ , ok := m .workerRequestTime [identity ]; ! ok {
@@ -202,7 +219,10 @@ func (m *PrometheusMetrics) TotalWorkers(name string, _ int) {
202219 Subsystem : subsystem ,
203220 Name : "worker_request_time" ,
204221 })
205- m .registry .MustRegister (m .workerRequestTime [identity ])
222+ if err := m .registry .Register (m .workerRequestTime [identity ]); err != nil &&
223+ ! errors .As (err , & prometheus.AlreadyRegisteredError {}) {
224+ panic (err )
225+ }
206226 }
207227
208228 if _ , ok := m .workerRequestCount [identity ]; ! ok {
@@ -211,7 +231,10 @@ func (m *PrometheusMetrics) TotalWorkers(name string, _ int) {
211231 Subsystem : subsystem ,
212232 Name : "worker_request_count" ,
213233 })
214- m .registry .MustRegister (m .workerRequestCount [identity ])
234+ if err := m .registry .Register (m .workerRequestCount [identity ]); err != nil &&
235+ ! errors .As (err , & prometheus.AlreadyRegisteredError {}) {
236+ panic (err )
237+ }
215238 }
216239}
217240
@@ -292,8 +315,15 @@ func (m *PrometheusMetrics) Shutdown() {
292315 m .workerCrashes = map [string ]prometheus.Counter {}
293316 m .readyWorkers = map [string ]prometheus.Gauge {}
294317
295- m .registry .MustRegister (m .totalThreads )
296- m .registry .MustRegister (m .busyThreads )
318+ if err := m .registry .Register (m .totalThreads ); err != nil &&
319+ ! errors .As (err , & prometheus.AlreadyRegisteredError {}) {
320+ panic (err )
321+ }
322+
323+ if err := m .registry .Register (m .busyThreads ); err != nil &&
324+ ! errors .As (err , & prometheus.AlreadyRegisteredError {}) {
325+ panic (err )
326+ }
297327}
298328
299329func getWorkerNameForMetrics (name string ) string {
@@ -327,8 +357,15 @@ func NewPrometheusMetrics(registry prometheus.Registerer) *PrometheusMetrics {
327357 readyWorkers : map [string ]prometheus.Gauge {},
328358 }
329359
330- m .registry .MustRegister (m .totalThreads )
331- m .registry .MustRegister (m .busyThreads )
360+ if err := m .registry .Register (m .totalThreads ); err != nil &&
361+ ! errors .As (err , & prometheus.AlreadyRegisteredError {}) {
362+ panic (err )
363+ }
364+
365+ if err := m .registry .Register (m .busyThreads ); err != nil &&
366+ ! errors .As (err , & prometheus.AlreadyRegisteredError {}) {
367+ panic (err )
368+ }
332369
333370 return m
334371}
0 commit comments