From dca8c07247b069242c5ea5ab5dbb731f992054de Mon Sep 17 00:00:00 2001 From: Han Kang Date: Sun, 18 Aug 2019 17:46:43 -0700 Subject: [PATCH] lock the mutation of the create boolean for safety --- staging/src/k8s.io/component-base/metrics/metric.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/staging/src/k8s.io/component-base/metrics/metric.go b/staging/src/k8s.io/component-base/metrics/metric.go index 2c213db879c..0337829e911 100644 --- a/staging/src/k8s.io/component-base/metrics/metric.go +++ b/staging/src/k8s.io/component-base/metrics/metric.go @@ -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()