Skip to content

Commit 4d028a7

Browse files
committed
Extend Registerable interface with FQName() and track collector by name.
1 parent b9ef1ce commit 4d028a7

File tree

2 files changed

+13
-4
lines changed

2 files changed

+13
-4
lines changed

staging/src/k8s.io/component-base/metrics/metric.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,11 @@ func (r *lazyMetric) ClearState() {
158158
r.createOnce = *(new(sync.Once))
159159
}
160160

161+
// FQName returns the fully-qualified metric name of the collector.
162+
func (r *lazyMetric) FQName() string {
163+
return r.fqName
164+
}
165+
161166
/*
162167
This code is directly lifted from the prometheus codebase. It's a convenience struct which
163168
allows you satisfy the Collector interface automatically if you already satisfy the Metric interface.

staging/src/k8s.io/component-base/metrics/registry.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,9 @@ type Registerable interface {
104104

105105
// ClearState will clear all the states marked by Create.
106106
ClearState()
107+
108+
// FQName returns the fully-qualified metric name of the collector.
109+
FQName() string
107110
}
108111

109112
// KubeRegistry is an interface which implements a subset of prometheus.Registerer and
@@ -127,7 +130,7 @@ type KubeRegistry interface {
127130
type kubeRegistry struct {
128131
PromRegistry
129132
version semver.Version
130-
hiddenCollectors []Registerable // stores all collectors that has been hidden
133+
hiddenCollectors map[string]Registerable // stores all collectors that has been hidden
131134
hiddenCollectorsLock sync.RWMutex
132135
}
133136

@@ -228,7 +231,7 @@ func (kr *kubeRegistry) trackHiddenCollector(c Registerable) {
228231
kr.hiddenCollectorsLock.Lock()
229232
defer kr.hiddenCollectorsLock.Unlock()
230233

231-
kr.hiddenCollectors = append(kr.hiddenCollectors, c)
234+
kr.hiddenCollectors[c.FQName()] = c
232235
}
233236

234237
// enableHiddenCollectors will re-register all of the hidden collectors.
@@ -245,8 +248,9 @@ func (kr *kubeRegistry) enableHiddenCollectors() {
245248

246249
func newKubeRegistry(v apimachineryversion.Info) *kubeRegistry {
247250
r := &kubeRegistry{
248-
PromRegistry: prometheus.NewRegistry(),
249-
version: parseVersion(v),
251+
PromRegistry: prometheus.NewRegistry(),
252+
version: parseVersion(v),
253+
hiddenCollectors: make(map[string]Registerable),
250254
}
251255

252256
registriesLock.Lock()

0 commit comments

Comments
 (0)