Merge pull request #76252 from goodluckbot/pod-backoff-rwmutex

Change Mutex to RWMutex for pod backoff
This commit is contained in:
Kubernetes Prow Robot 2019-04-08 22:31:04 -07:00 committed by GitHub
commit db1ab237bf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -26,7 +26,7 @@ import (
// PodBackoffMap is a structure that stores backoff related information for pods
type PodBackoffMap struct {
// lock for performing actions on this PodBackoffMap
lock sync.Mutex
lock sync.RWMutex
// initial backoff duration
initialDuration time.Duration
// maximal backoff duration
@ -49,8 +49,8 @@ func NewPodBackoffMap(initialDuration, maxDuration time.Duration) *PodBackoffMap
// GetBackoffTime returns the time that nsPod completes backoff
func (pbm *PodBackoffMap) GetBackoffTime(nsPod ktypes.NamespacedName) (time.Time, bool) {
pbm.lock.Lock()
defer pbm.lock.Unlock()
pbm.lock.RLock()
defer pbm.lock.RUnlock()
if _, found := pbm.podAttempts[nsPod]; found == false {
return time.Time{}, false
}
@ -63,8 +63,8 @@ func (pbm *PodBackoffMap) GetBackoffTime(nsPod ktypes.NamespacedName) (time.Time
// TryBackoffAndWait tries to perform backoff for a non-preempting pod.
// it is invoked from factory.go if util.PodPriorityEnabled() returns false.
func (pbm *PodBackoffMap) TryBackoffAndWait(nsPod ktypes.NamespacedName, stop <-chan struct{}) bool {
pbm.lock.Lock()
defer pbm.lock.Unlock()
pbm.lock.RLock()
defer pbm.lock.RUnlock()
backoffDuration := pbm.calculateBackoffDuration(nsPod)
select {
case <-time.After(backoffDuration):