From 3d7b16d61d324d976f0897b0710514ceaef41b7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan-Otto=20Kr=C3=B6pke?= Date: Sat, 21 Jun 2025 11:28:30 +0200 Subject: [PATCH] [0.30] fix: added count checks (#2083) (#2089) --- internal/collector/ad/ad.go | 2 ++ internal/collector/adfs/adfs.go | 2 ++ internal/collector/cache/cache.go | 2 ++ internal/collector/dhcp/dhcp.go | 2 ++ internal/collector/dns/dns.go | 2 ++ internal/collector/system/system.go | 2 ++ internal/collector/time/time.go | 4 +++- 7 files changed, 15 insertions(+), 1 deletion(-) diff --git a/internal/collector/ad/ad.go b/internal/collector/ad/ad.go index ad728e81..d31136f7 100644 --- a/internal/collector/ad/ad.go +++ b/internal/collector/ad/ad.go @@ -520,6 +520,8 @@ func (c *Collector) Collect(ch chan<- prometheus.Metric) error { err := c.perfDataCollector.Collect(&c.perfDataObject) if err != nil { return fmt.Errorf("failed to collect DirectoryServices (AD) metrics: %w", err) + } else if len(c.perfDataObject) == 0 { + return fmt.Errorf("failed to collect DirectoryServices (AD) metrics: %w", types.ErrNoDataUnexpected) } ch <- prometheus.MustNewConstMetric( diff --git a/internal/collector/adfs/adfs.go b/internal/collector/adfs/adfs.go index 3e17fdcc..fbe3a2a7 100644 --- a/internal/collector/adfs/adfs.go +++ b/internal/collector/adfs/adfs.go @@ -385,6 +385,8 @@ func (c *Collector) Collect(ch chan<- prometheus.Metric) error { err := c.perfDataCollector.Collect(&c.perfDataObject) if err != nil { return fmt.Errorf("failed to collect ADFS metrics: %w", err) + } else if len(c.perfDataObject) == 0 { + return fmt.Errorf("failed to collect ADFS metrics: %w", types.ErrNoDataUnexpected) } ch <- prometheus.MustNewConstMetric( diff --git a/internal/collector/cache/cache.go b/internal/collector/cache/cache.go index 6af92de5..b076322b 100644 --- a/internal/collector/cache/cache.go +++ b/internal/collector/cache/cache.go @@ -288,6 +288,8 @@ func (c *Collector) Collect(ch chan<- prometheus.Metric) error { err := c.perfDataCollector.Collect(&c.perfDataObject) if err != nil { return fmt.Errorf("failed to collect Cache metrics: %w", err) + } else if len(c.perfDataObject) == 0 { + return fmt.Errorf("failed to collect Cache metrics: %w", types.ErrNoDataUnexpected) } ch <- prometheus.MustNewConstMetric( diff --git a/internal/collector/dhcp/dhcp.go b/internal/collector/dhcp/dhcp.go index 122547f6..0df59999 100644 --- a/internal/collector/dhcp/dhcp.go +++ b/internal/collector/dhcp/dhcp.go @@ -403,6 +403,8 @@ func (c *Collector) collectServerMetrics(ch chan<- prometheus.Metric) error { err := c.perfDataCollector.Collect(&c.perfDataObject) if err != nil { return fmt.Errorf("failed to collect DHCP Server metrics: %w", err) + } else if len(c.perfDataObject) == 0 { + return fmt.Errorf("failed to collect DHCP Server metrics: %w", types.ErrNoDataUnexpected) } ch <- prometheus.MustNewConstMetric( diff --git a/internal/collector/dns/dns.go b/internal/collector/dns/dns.go index 957bb9f9..9933e958 100644 --- a/internal/collector/dns/dns.go +++ b/internal/collector/dns/dns.go @@ -345,6 +345,8 @@ func (c *Collector) collectMetrics(ch chan<- prometheus.Metric) error { err := c.perfDataCollector.Collect(&c.perfDataObject) if err != nil { return fmt.Errorf("failed to collect DNS metrics: %w", err) + } else if len(c.perfDataObject) == 0 { + return fmt.Errorf("failed to collect DNS metrics: %w", types.ErrNoDataUnexpected) } ch <- prometheus.MustNewConstMetric( diff --git a/internal/collector/system/system.go b/internal/collector/system/system.go index b574fcc0..5dd4c53b 100644 --- a/internal/collector/system/system.go +++ b/internal/collector/system/system.go @@ -157,6 +157,8 @@ func (c *Collector) Collect(ch chan<- prometheus.Metric) error { err := c.perfDataCollector.Collect(&c.perfDataObject) if err != nil { return fmt.Errorf("failed to collect System metrics: %w", err) + } else if len(c.perfDataObject) == 0 { + return fmt.Errorf("failed to collect System metrics: %w", types.ErrNoDataUnexpected) } ch <- prometheus.MustNewConstMetric( diff --git a/internal/collector/time/time.go b/internal/collector/time/time.go index 80f31a26..f4e0e3ea 100644 --- a/internal/collector/time/time.go +++ b/internal/collector/time/time.go @@ -245,7 +245,9 @@ func (c *Collector) collectTime(ch chan<- prometheus.Metric) error { func (c *Collector) collectNTP(ch chan<- prometheus.Metric) error { err := c.perfDataCollector.Collect(&c.perfDataObject) if err != nil { - return fmt.Errorf("failed to collect time metrics: %w", err) + return fmt.Errorf("failed to collect Windows Time Service metrics: %w", err) + } else if len(c.perfDataObject) == 0 { + return fmt.Errorf("failed to collect Windows Time Service metrics: %w", types.ErrNoDataUnexpected) } ch <- prometheus.MustNewConstMetric(