Use normal Mutex instead of RWMutex

There is no benefit of having RWMutex as we have one reader and multiple
writers. In such cases RWMutex has worse performance than Mutex.

Kubernetes-commit: 544ea424826ef60d703c5f4fb91b2c6a95f303aa
This commit is contained in:
Marek Siarkowicz 2024-05-24 10:16:48 +02:00 committed by Kubernetes Publisher
parent 9af63b1bc9
commit 6fb09e7027
1 changed files with 6 additions and 6 deletions

View File

@ -42,7 +42,7 @@ func newConditionalProgressRequester(requestWatchProgress WatchProgressRequester
requestWatchProgress: requestWatchProgress,
contextMetadata: contextMetadata,
}
pr.cond = sync.NewCond(pr.mux.RLocker())
pr.cond = sync.NewCond(&pr.mux)
return pr
}
@ -59,7 +59,7 @@ type conditionalProgressRequester struct {
requestWatchProgress WatchProgressRequester
contextMetadata metadata.MD
mux sync.RWMutex
mux sync.Mutex
cond *sync.Cond
waiting int
stopped bool
@ -82,8 +82,8 @@ func (pr *conditionalProgressRequester) Run(stopCh <-chan struct{}) {
defer timer.Stop()
for {
stopped := func() bool {
pr.mux.RLock()
defer pr.mux.RUnlock()
pr.mux.Lock()
defer pr.mux.Unlock()
for pr.waiting == 0 && !pr.stopped {
pr.cond.Wait()
}
@ -97,8 +97,8 @@ func (pr *conditionalProgressRequester) Run(stopCh <-chan struct{}) {
case <-timer.C():
timer.Reset(progressRequestPeriod)
shouldRequest := func() bool {
pr.mux.RLock()
defer pr.mux.RUnlock()
pr.mux.Lock()
defer pr.mux.Unlock()
return pr.waiting > 0 && !pr.stopped
}()
if !shouldRequest {