diff --git a/pkg/scheduler/framework/parallelize/parallelism.go b/pkg/scheduler/framework/parallelize/parallelism.go index 6b137d31e9a..94441b97d9c 100644 --- a/pkg/scheduler/framework/parallelize/parallelism.go +++ b/pkg/scheduler/framework/parallelize/parallelism.go @@ -54,10 +54,11 @@ func chunkSizeFor(n, parallelism int) int { // Until is a wrapper around workqueue.ParallelizeUntil to use in scheduling algorithms. // A given operation will be a label that is recorded in the goroutine metric. func (p Parallelizer) Until(ctx context.Context, pieces int, doWorkPiece workqueue.DoWorkPieceFunc, operation string) { + goroutinesMetric := metrics.Goroutines.WithLabelValues(operation) withMetrics := func(piece int) { - metrics.Goroutines.WithLabelValues(operation).Inc() - defer metrics.Goroutines.WithLabelValues(operation).Dec() + goroutinesMetric.Inc() doWorkPiece(piece) + goroutinesMetric.Dec() } workqueue.ParallelizeUntil(ctx, p.parallelism, pieces, withMetrics, workqueue.WithChunkSize(chunkSizeFor(pieces, p.parallelism)))