lock the mutation of the create boolean for safety

This commit is contained in:
Han Kang 2019-08-18 17:46:43 -07:00
parent 8f0d626228
commit dca8c07247

View File

@ -64,12 +64,15 @@ type lazyMetric struct {
isDeprecated bool
isHidden bool
isCreated bool
createLock sync.RWMutex
markDeprecationOnce sync.Once
createOnce sync.Once
self kubeCollector
}
func (r *lazyMetric) IsCreated() bool {
r.createLock.RLock()
defer r.createLock.RUnlock()
return r.isCreated
}
@ -125,6 +128,8 @@ func (r *lazyMetric) Create(version *semver.Version) bool {
return false
}
r.createOnce.Do(func() {
r.createLock.Lock()
defer r.createLock.Unlock()
r.isCreated = true
if r.IsDeprecated() {
r.self.initializeDeprecatedMetric()