Skip to content

Commit b92b0eb

Browse files
committed
Change Mutex to RWMutex for pod backoff
1 parent f873d2a commit b92b0eb

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

pkg/scheduler/internal/queue/pod_backoff.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ import (
2626
// PodBackoffMap is a structure that stores backoff related information for pods
2727
type PodBackoffMap struct {
2828
// lock for performing actions on this PodBackoffMap
29-
lock sync.Mutex
29+
lock sync.RWMutex
3030
// initial backoff duration
3131
initialDuration time.Duration
3232
// maximal backoff duration
@@ -49,8 +49,8 @@ func NewPodBackoffMap(initialDuration, maxDuration time.Duration) *PodBackoffMap
4949

5050
// GetBackoffTime returns the time that nsPod completes backoff
5151
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()
5454
if _, found := pbm.podAttempts[nsPod]; found == false {
5555
return time.Time{}, false
5656
}
@@ -63,8 +63,8 @@ func (pbm *PodBackoffMap) GetBackoffTime(nsPod ktypes.NamespacedName) (time.Time
6363
// TryBackoffAndWait tries to perform backoff for a non-preempting pod.
6464
// it is invoked from factory.go if util.PodPriorityEnabled() returns false.
6565
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()
6868
backoffDuration := pbm.calculateBackoffDuration(nsPod)
6969
select {
7070
case <-time.After(backoffDuration):

0 commit comments

Comments
 (0)