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