diff --git a/pkg/observer/observer_stats.go b/pkg/observer/observer_stats.go index 1363a18ed8d..8f86cd547af 100644 --- a/pkg/observer/observer_stats.go +++ b/pkg/observer/observer_stats.go @@ -47,38 +47,43 @@ func (s *statValue) DeepCopyMapValue() bpf.MapValue { return v } -func (k *Observer) startUpdateMapMetrics() { - update := func() { - for _, m := range sensors.AllMaps { - pin := filepath.Join(option.Config.MapDir, m.Name) - pinStats := pin + "_stats" +func updateMapMetric(name string) { + pin := filepath.Join(option.Config.MapDir, name) + pinStats := pin + "_stats" - mapLinkStats, err := bpf.OpenMap(pinStats) - if err != nil { - continue - } - mapLink, err := bpf.OpenMap(pin) - if err != nil { - continue - } + mapLinkStats, err := bpf.OpenMap(pinStats) + if err != nil { + return + } + defer mapLinkStats.Close() + mapLink, err := bpf.OpenMap(pin) + if err != nil { + return + } + defer mapLink.Close() - zeroKey := &statKey{} - value, err := mapLinkStats.Lookup(zeroKey) - if err != nil { - continue - } + zeroKey := &statKey{} + value, err := mapLinkStats.Lookup(zeroKey) + if err != nil { + return + } - v, ok := value.DeepCopyMapValue().(*statValue) - if !ok { - continue - } - sum := int64(0) - for cpu := int(0); cpu < runtime.NumCPU(); cpu++ { - sum += v.Value[cpu] - } - mapmetrics.MapSizeSet(m.Name, int(mapLink.MapInfo.MaxEntries), float64(sum)) - mapLink.Close() - mapLinkStats.Close() + v, ok := value.DeepCopyMapValue().(*statValue) + if !ok { + return + } + + sum := int64(0) + for cpu := int(0); cpu < runtime.NumCPU(); cpu++ { + sum += v.Value[cpu] + } + mapmetrics.MapSizeSet(name, int(mapLink.MapInfo.MaxEntries), float64(sum)) +} + +func (k *Observer) startUpdateMapMetrics() { + update := func() { + for _, m := range sensors.AllMaps { + updateMapMetric(m.Name) } }