Add error handling to Read()

This commit is contained in:
Holger Obermaier 2022-02-07 10:02:38 +01:00
parent 79b25ddbee
commit 3c10c6b340

View File

@ -4,6 +4,7 @@ import (
"fmt" "fmt"
"os" "os"
cclog "github.com/ClusterCockpit/cc-metric-collector/internal/ccLogger"
lp "github.com/ClusterCockpit/cc-metric-collector/internal/ccMetric" lp "github.com/ClusterCockpit/cc-metric-collector/internal/ccMetric"
"golang.org/x/sys/unix" "golang.org/x/sys/unix"
@ -141,14 +142,25 @@ func (m *InfinibandCollector) Read(interval time.Duration, output chan lp.CCMetr
// device info // device info
info := &m.info[i] info := &m.info[i]
for counterName, counterFile := range info.portCounterFiles { for counterName, counterFile := range info.portCounterFiles {
if data, ok := readOneLine(counterFile); ok { data, ok := readOneLine(counterFile)
if v, err := strconv.ParseInt(data, 10, 64); err == nil { if !ok {
if y, err := lp.New(counterName, info.tagSet, m.meta, map[string]interface{}{"value": v}, now); err == nil { cclog.ComponentError(
output <- y m.name,
} fmt.Sprintf("Read(): Failed to read one line from file '%s'", counterFile))
} continue
}
v, err := strconv.ParseInt(data, 10, 64)
if err != nil {
cclog.ComponentError(
m.name,
fmt.Sprintf("Read(): Failed to convert Infininiband metrice %s='%s' to int64: %v", counterName, data, err))
continue
}
if y, err := lp.New(counterName, info.tagSet, m.meta, map[string]interface{}{"value": v}, now); err == nil {
output <- y
} }
} }
} }
} }