diff --git a/net/portmapper/portmapper.go b/net/portmapper/portmapper.go index e42dd62bf..3bee9e5f9 100644 --- a/net/portmapper/portmapper.go +++ b/net/portmapper/portmapper.go @@ -1028,19 +1028,21 @@ var ( // UPnP error metric that's keyed by code; lazily registered on first read var ( - metricUPnPErrorsByCode syncs.Map[string, *clientmetric.Metric] + metricUPnPErrorsByCode syncs.Map[int, *clientmetric.Metric] ) func getUPnPErrorsMetric(code int) *clientmetric.Metric { - // Metric names cannot contain a hyphen, so we handle negative numbers - // by prefixing the name with a "minus_". - var codeStr string - if code < 0 { - codeStr = fmt.Sprintf("portmap_upnp_errors_with_code_minus_%d", -code) - } else { - codeStr = fmt.Sprintf("portmap_upnp_errors_with_code_%d", code) - } + mm, _ := metricUPnPErrorsByCode.LoadOrInit(code, func() *clientmetric.Metric { + // Metric names cannot contain a hyphen, so we handle negative + // numbers by prefixing the name with a "minus_". + var codeStr string + if code < 0 { + codeStr = fmt.Sprintf("portmap_upnp_errors_with_code_minus_%d", -code) + } else { + codeStr = fmt.Sprintf("portmap_upnp_errors_with_code_%d", code) + } - mm, _ := metricUPnPErrorsByCode.LoadOrInit(codeStr, func() *clientmetric.Metric { return clientmetric.NewCounter(codeStr) }) + return clientmetric.NewCounter(codeStr) + }) return mm }