@@ -104,6 +104,9 @@ type Registerable interface {
104
104
105
105
// ClearState will clear all the states marked by Create.
106
106
ClearState ()
107
+
108
+ // FQName returns the fully-qualified metric name of the collector.
109
+ FQName () string
107
110
}
108
111
109
112
// KubeRegistry is an interface which implements a subset of prometheus.Registerer and
@@ -127,7 +130,7 @@ type KubeRegistry interface {
127
130
type kubeRegistry struct {
128
131
PromRegistry
129
132
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
131
134
hiddenCollectorsLock sync.RWMutex
132
135
}
133
136
@@ -228,7 +231,7 @@ func (kr *kubeRegistry) trackHiddenCollector(c Registerable) {
228
231
kr .hiddenCollectorsLock .Lock ()
229
232
defer kr .hiddenCollectorsLock .Unlock ()
230
233
231
- kr .hiddenCollectors = append ( kr . hiddenCollectors , c )
234
+ kr .hiddenCollectors [ c . FQName ()] = c
232
235
}
233
236
234
237
// enableHiddenCollectors will re-register all of the hidden collectors.
@@ -245,8 +248,9 @@ func (kr *kubeRegistry) enableHiddenCollectors() {
245
248
246
249
func newKubeRegistry (v apimachineryversion.Info ) * kubeRegistry {
247
250
r := & kubeRegistry {
248
- PromRegistry : prometheus .NewRegistry (),
249
- version : parseVersion (v ),
251
+ PromRegistry : prometheus .NewRegistry (),
252
+ version : parseVersion (v ),
253
+ hiddenCollectors : make (map [string ]Registerable ),
250
254
}
251
255
252
256
registriesLock .Lock ()
0 commit comments