Skip to content

Commit 4c80ffb

Browse files
committed
Add retry metrics
1 parent e9dadb7 commit 4c80ffb

File tree

3 files changed

+13
-2
lines changed

3 files changed

+13
-2
lines changed

pkg/controller/priorityqueue/metrics.go

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,14 @@ import (
1212
// This file is mostly a copy of unexported code from
1313
// https://github.com/kubernetes/kubernetes/blob/1d8828ce707ed9dd7a6a9756385419cce1d202ac/staging/src/k8s.io/client-go/util/workqueue/metrics.go
1414
//
15-
// The only difference is the addition of mapLock in defaultQueueMetrics, we want to avoid the need of synchronizing updateUnfinishedWork()
16-
// with the queue.
15+
// The only two differences are the addition of mapLock in defaultQueueMetrics and converging retryMetrics into queueMetrics.
1716

1817
type queueMetrics[T comparable] interface {
1918
add(item T)
2019
get(item T)
2120
done(item T)
2221
updateUnfinishedWork()
22+
retry()
2323
}
2424

2525
func newQueueMetrics[T comparable](mp workqueue.MetricsProvider, name string, clock clock.Clock) queueMetrics[T] {
@@ -37,6 +37,7 @@ func newQueueMetrics[T comparable](mp workqueue.MetricsProvider, name string, cl
3737
added: sets.Set[T]{},
3838
addTimes: map[T]time.Time{},
3939
processingStartTimes: map[T]time.Time{},
40+
retries: mp.NewRetriesMetric(name),
4041
}
4142
}
4243

@@ -61,6 +62,8 @@ type defaultQueueMetrics[T comparable] struct {
6162
// how long have current threads been working?
6263
unfinishedWorkSeconds workqueue.SettableGaugeMetric
6364
longestRunningProcessor workqueue.SettableGaugeMetric
65+
66+
retries workqueue.CounterMetric
6467
}
6568

6669
func (m *defaultQueueMetrics[T]) add(item T) {
@@ -135,9 +138,14 @@ func (m *defaultQueueMetrics[T]) sinceInSeconds(start time.Time) float64 {
135138
return m.clock.Since(start).Seconds()
136139
}
137140

141+
func (m *defaultQueueMetrics[T]) retry() {
142+
m.retries.Inc()
143+
}
144+
138145
type noMetrics[T any] struct{}
139146

140147
func (noMetrics[T]) add(item T) {}
141148
func (noMetrics[T]) get(item T) {}
142149
func (noMetrics[T]) done(item T) {}
143150
func (noMetrics[T]) updateUnfinishedWork() {}
151+
func (noMetrics[T]) retry() {}

pkg/controller/priorityqueue/priorityqueue.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@ func (w *priorityqueue[T]) AddWithOpts(o AddOpts, items ...T) {
131131
var readyAt *time.Time
132132
if o.After > 0 {
133133
readyAt = ptr.To(w.now().Add(o.After))
134+
w.metrics.retry()
134135
}
135136
if _, ok := w.items[key]; !ok {
136137
item := &item[T]{

pkg/controller/priorityqueue/priorityqueue_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ var _ = Describe("Controllerworkqueue", func() {
2323

2424
Expect(metrics.depth["test"]).To(Equal(0))
2525
Expect(metrics.adds["test"]).To(Equal(1))
26+
Expect(metrics.retries["test"]).To(Equal(0))
2627
})
2728

2829
It("returns items in order", func() {
@@ -190,6 +191,7 @@ var _ = Describe("Controllerworkqueue", func() {
190191

191192
Expect(metrics.depth["test"]).To(Equal(0))
192193
Expect(metrics.adds["test"]).To(Equal(1))
194+
Expect(metrics.retries["test"]).To(Equal(1))
193195
})
194196

195197
It("returns multiple items with after in correct order", func() {

0 commit comments

Comments
 (0)