diff --git a/collectors/schedstatMetric.go b/collectors/schedstatMetric.go index 1f5ee5a..cb7eaff 100644 --- a/collectors/schedstatMetric.go +++ b/collectors/schedstatMetric.go @@ -59,26 +59,26 @@ func (m *SchedstatCollector) Init(config json.RawMessage) error { m.parallel = true // Define meta information sent with each metric // (Can also be dynamic or this is the basic set with extension through AddMeta()) - m.meta = map[string]string{"source": m.name, "group": "SCHEDSTAT"} + m.meta = map[string]string{ + "source": m.name, + "group": "SCHEDSTAT", + } // Read in the JSON configuration if len(config) > 0 { err = json.Unmarshal(config, &m.config) if err != nil { - cclog.ComponentError(m.name, "Error reading config:", err.Error()) - return err + return fmt.Errorf("%s Init(): Error reading config: %w", m.name, err) } } // Check input file - file, err := os.Open(string(SCHEDSTATFILE)) + file, err := os.Open(SCHEDSTATFILE) if err != nil { - cclog.ComponentError(m.name, err.Error()) + return fmt.Errorf("%s Init(): Failed opening scheduler statistics file \"%s\": %w", m.name, SCHEDSTATFILE, err) } - defer file.Close() // Pre-generate tags for all CPUs - num_cpus := 0 m.cputags = make(map[string]map[string]string) m.olddata = make(map[string]map[string]int64) scanner := bufio.NewScanner(file) @@ -90,11 +90,19 @@ func (m *SchedstatCollector) Init(config json.RawMessage) error { cpu, _ := strconv.Atoi(cpustr) running, _ := strconv.ParseInt(linefields[7], 10, 64) waiting, _ := strconv.ParseInt(linefields[8], 10, 64) - m.cputags[linefields[0]] = map[string]string{"type": "hwthread", "type-id": fmt.Sprintf("%d", cpu)} - m.olddata[linefields[0]] = map[string]int64{"running": running, "waiting": waiting} - num_cpus++ + m.cputags[linefields[0]] = map[string]string{ + "type": "hwthread", + "type-id": fmt.Sprintf("%d", cpu), + } + m.olddata[linefields[0]] = map[string]int64{ + "running": running, + "waiting": waiting, + } } } + if err := file.Close(); err != nil { + return fmt.Errorf("%s Init(): Failed closing scheduler statistics file \"%s\": %w", m.name, SCHEDSTATFILE, err) + } // Save current timestamp m.lastTimestamp = time.Now() @@ -135,17 +143,17 @@ func (m *SchedstatCollector) Read(interval time.Duration, output chan lp.CCMessa now := time.Now() tsdelta := now.Sub(m.lastTimestamp) - file, err := os.Open(string(SCHEDSTATFILE)) + file, err := os.Open(SCHEDSTATFILE) if err != nil { cclog.ComponentError( m.name, - fmt.Sprintf("Read(): Failed to open file '%s': %v", string(SCHEDSTATFILE), err)) + fmt.Sprintf("Read(): Failed to open file '%s': %v", SCHEDSTATFILE, err)) } defer func() { if err := file.Close(); err != nil { cclog.ComponentError( m.name, - fmt.Sprintf("Read(): Failed to close file '%s': %v", string(SCHEDSTATFILE), err)) + fmt.Sprintf("Read(): Failed to close file '%s': %v", SCHEDSTATFILE, err)) } }()