diff --git a/collectors/collectorManager.go b/collectors/collectorManager.go index 192ef31..4aae041 100644 --- a/collectors/collectorManager.go +++ b/collectors/collectorManager.go @@ -104,29 +104,33 @@ func (cm *collectorManager) Start() { cm.wg.Add(1) tick := make(chan time.Time) cm.ticker.AddChannel(tick) + go func() { + // Collector manager is done + done := func() { + // close all metric collectors + for _, c := range cm.collectors { + c.Close() + } + cm.wg.Done() + cclog.ComponentDebug("CollectorManager", "DONE") + } + + // Wait for done signal or timer event for { - CollectorManagerLoop: select { case <-cm.done: - for _, c := range cm.collectors { - c.Close() - } - cm.wg.Done() - cclog.ComponentDebug("CollectorManager", "DONE") - break CollectorManagerLoop + done() + return case t := <-tick: for _, c := range cm.collectors { - CollectorManagerInputLoop: + // Wait for done signal or execute the collector select { case <-cm.done: - for _, c := range cm.collectors { - c.Close() - } - cm.wg.Done() - cclog.ComponentDebug("CollectorManager", "DONE") - break CollectorManagerInputLoop + done() + return default: + // Read metrics from collector c cclog.ComponentDebug("CollectorManager", c.Name(), t) c.Read(cm.duration, cm.output) } @@ -134,6 +138,8 @@ func (cm *collectorManager) Start() { } } }() + + // Collector manager is started cclog.ComponentDebug("CollectorManager", "STARTED") } diff --git a/collectors/memstatMetric.go b/collectors/memstatMetric.go index c83402c..b6ef855 100644 --- a/collectors/memstatMetric.go +++ b/collectors/memstatMetric.go @@ -9,6 +9,7 @@ import ( "strconv" "strings" "time" + lp "github.com/ClusterCockpit/cc-metric-collector/internal/ccMetric" ) @@ -93,7 +94,7 @@ func (m *MemstatCollector) Read(interval time.Duration, output chan lp.CCMetric) for match, name := range m.matches { if _, exists := m.stats[match]; !exists { - err = errors.New(fmt.Sprintf("Parse error for %s : %s", match, name)) + err = fmt.Errorf("Parse error for %s : %s", match, name) log.Print(err) continue }