mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-03 17:30:00 +00:00
Merge pull request #81577 from logicalhan/lazy-init
lock the mutation of the create boolean for safety
This commit is contained in:
commit
cb7c98e59f
@ -64,12 +64,15 @@ type lazyMetric struct {
|
|||||||
isDeprecated bool
|
isDeprecated bool
|
||||||
isHidden bool
|
isHidden bool
|
||||||
isCreated bool
|
isCreated bool
|
||||||
|
createLock sync.RWMutex
|
||||||
markDeprecationOnce sync.Once
|
markDeprecationOnce sync.Once
|
||||||
createOnce sync.Once
|
createOnce sync.Once
|
||||||
self kubeCollector
|
self kubeCollector
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *lazyMetric) IsCreated() bool {
|
func (r *lazyMetric) IsCreated() bool {
|
||||||
|
r.createLock.RLock()
|
||||||
|
defer r.createLock.RUnlock()
|
||||||
return r.isCreated
|
return r.isCreated
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -125,6 +128,8 @@ func (r *lazyMetric) Create(version *semver.Version) bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
r.createOnce.Do(func() {
|
r.createOnce.Do(func() {
|
||||||
|
r.createLock.Lock()
|
||||||
|
defer r.createLock.Unlock()
|
||||||
r.isCreated = true
|
r.isCreated = true
|
||||||
if r.IsDeprecated() {
|
if r.IsDeprecated() {
|
||||||
r.self.initializeDeprecatedMetric()
|
r.self.initializeDeprecatedMetric()
|
||||||
|
Loading…
Reference in New Issue
Block a user