mi: make timeout configurable for build functions (#2377)

This commit is contained in:
Jan-Otto Kröpke
2026-03-30 18:32:58 +02:00
committed by GitHub
parent 792ef67c4e
commit 43f83573ef
75 changed files with 322 additions and 143 deletions

View File

@@ -136,7 +136,7 @@ func (c *Collection) collectCollector(ch chan<- prometheus.Metric, logger *slog.
close(bufCh)
}()
errCh <- collector.Collect(bufCh)
errCh <- collector.Collect(bufCh, maxScrapeDuration)
}()
wg := sync.WaitGroup{}

View File

@@ -244,6 +244,7 @@ func (c *Collection) Build(ctx context.Context, logger *slog.Logger) error {
errors.Is(err, registry.ErrNotExist) ||
errors.Is(err, pdh.NewPdhError(pdh.CstatusNoObject)) ||
errors.Is(err, pdh.NewPdhError(pdh.CstatusNoCounter)) ||
errors.Is(err, mi.MI_RESULT_INVALID_OPERATION_TIMEOUT) ||
errors.Is(err, mi.MI_RESULT_INVALID_NAMESPACE) {
logger.LogAttrs(ctx, slog.LevelWarn, "couldn't initialize collector", slog.Any("err", err))

View File

@@ -52,7 +52,7 @@ type Collector interface {
// Build build the collector
Build(logger *slog.Logger, miSession *mi.Session) error
// Collect Get new metrics and expose them via prometheus registry.
Collect(ch chan<- prometheus.Metric) (err error)
Collect(ch chan<- prometheus.Metric, maxScrapeDuration time.Duration) (err error)
// Close closes the collector
Close() error
}