Skip to content

Commit 74d8bc7

Browse files
committed
collector: call PdhGetRawCounterArrayW twice to get the correct amount of bytes needed.
Signed-off-by: Jan-Otto Kröpke <[email protected]>
1 parent 44e2257 commit 74d8bc7

File tree

2 files changed

+18
-2
lines changed

2 files changed

+18
-2
lines changed

.idea/dictionaries/project.xml

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/pdh/collector.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -348,8 +348,15 @@ func (c *Collector) collectWorkerRaw() {
348348
ret := GetRawCounterArray(instance, &bytesNeeded, &itemCount, nil)
349349
if ret != MoreData {
350350
if err := NewPdhError(ret); isKnownCounterDataError(err) {
351+
c.logger.Debug("no data for counter instance",
352+
slog.String("counter", counter.Name),
353+
slog.String("object", c.object),
354+
slog.Any("err", err),
355+
)
356+
351357
break
352358
}
359+
353360
return fmt.Errorf("GetRawCounterArray size query: %w", NewPdhError(ret))
354361
}
355362

@@ -370,8 +377,15 @@ func (c *Collector) collectWorkerRaw() {
370377
ret = GetRawCounterArray(instance, &actualBytesNeeded, &itemCount, &buf[0])
371378
if ret != ErrorSuccess {
372379
if err := NewPdhError(ret); isKnownCounterDataError(err) {
380+
c.logger.Debug("no data for counter instance",
381+
slog.String("counter", counter.Name),
382+
slog.String("object", c.object),
383+
slog.Any("err", err),
384+
)
385+
373386
break
374387
}
388+
375389
return fmt.Errorf("GetRawCounterArray data retrieval: %w", NewPdhError(ret))
376390
}
377391

@@ -525,6 +539,7 @@ func (c *Collector) collectWorkerFormatted() {
525539
if err := NewPdhError(ret); isKnownCounterDataError(err) {
526540
break
527541
}
542+
528543
return fmt.Errorf("GetFormattedCounterArrayDouble size query: %w", NewPdhError(ret))
529544
}
530545

@@ -547,6 +562,7 @@ func (c *Collector) collectWorkerFormatted() {
547562
if err := NewPdhError(ret); isKnownCounterDataError(err) {
548563
break
549564
}
565+
550566
return fmt.Errorf("GetFormattedCounterArrayDouble data retrieval: %w", NewPdhError(ret))
551567
}
552568

0 commit comments

Comments
 (0)