Skip to content

Commit a005f67

Browse files
author
shaloulcy
committed
scheduler: change quota info to rw lock
Signed-off-by: shaloulcy <lcy041546@gmail.com>
1 parent caf0dfd commit a005f67

File tree

1 file changed

+49
-49
lines changed

1 file changed

+49
-49
lines changed

pkg/scheduler/plugins/elasticquota/core/quota_info.go

Lines changed: 49 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ type QuotaInfo struct {
8080
AllowLentResource bool
8181
CalculateInfo QuotaCalculateInfo
8282
PodCache map[string]*PodInfo
83-
lock sync.Mutex
83+
lock sync.RWMutex
8484
}
8585

8686
func NewQuotaInfo(isParent, allowLentResource bool, name, parentName string) *QuotaInfo {
@@ -116,8 +116,8 @@ func (qi *QuotaInfo) DeepCopy() *QuotaInfo {
116116
if qi == nil {
117117
return nil
118118
}
119-
qi.lock.Lock()
120-
defer qi.lock.Unlock()
119+
qi.lock.RLock()
120+
defer qi.lock.RUnlock()
121121

122122
quotaInfo := &QuotaInfo{
123123
Name: qi.Name,
@@ -152,8 +152,8 @@ func (qi *QuotaInfo) DeepCopy() *QuotaInfo {
152152
}
153153

154154
func (qi *QuotaInfo) GetQuotaSummary(treeID string, includePods bool) *QuotaInfoSummary {
155-
qi.lock.Lock()
156-
defer qi.lock.Unlock()
155+
qi.lock.RLock()
156+
defer qi.lock.RUnlock()
157157

158158
quotaInfoSummary := NewQuotaInfoSummary()
159159
quotaInfoSummary.Name = qi.Name
@@ -194,8 +194,8 @@ func (qi *QuotaInfo) GetQuotaSummary(treeID string, includePods bool) *QuotaInfo
194194
// updateQuotaInfoFromRemote the CRD(max/oriMin/sharedWeight/allowLentResource/isParent/ParentName) of the quota maybe changed,
195195
// so need update localQuotaInfo's information from inputQuotaInfo.
196196
func (qi *QuotaInfo) updateQuotaInfoFromRemote(quotaInfo *QuotaInfo) {
197-
qi.lock.Lock()
198-
defer qi.lock.Unlock()
197+
qi.lock.RLock()
198+
defer qi.lock.RUnlock()
199199

200200
qi.setMaxQuotaNoLock(quotaInfo.CalculateInfo.Max)
201201
qi.setMinQuotaNoLock(quotaInfo.CalculateInfo.Min)
@@ -265,14 +265,14 @@ func (qi *QuotaInfo) addChildRequestNonNegativeNoLock(delta v1.ResourceList) {
265265
}
266266

267267
func (qi *QuotaInfo) GetGuaranteed() v1.ResourceList {
268-
qi.lock.Lock()
269-
defer qi.lock.Unlock()
268+
qi.lock.RLock()
269+
defer qi.lock.RUnlock()
270270
return qi.CalculateInfo.Guaranteed.DeepCopy()
271271
}
272272

273273
func (qi *QuotaInfo) GetAllocated() v1.ResourceList {
274-
qi.lock.Lock()
275-
defer qi.lock.Unlock()
274+
qi.lock.RLock()
275+
defer qi.lock.RUnlock()
276276
return qi.CalculateInfo.Allocated.DeepCopy()
277277
}
278278

@@ -322,74 +322,74 @@ func (qi *QuotaInfo) setSharedWeightNoLock(res v1.ResourceList) {
322322
}
323323

324324
func (qi *QuotaInfo) GetRequest() v1.ResourceList {
325-
qi.lock.Lock()
326-
defer qi.lock.Unlock()
325+
qi.lock.RLock()
326+
defer qi.lock.RUnlock()
327327
return qi.CalculateInfo.Request.DeepCopy()
328328
}
329329

330330
func (qi *QuotaInfo) GetChildRequest() v1.ResourceList {
331-
qi.lock.Lock()
332-
defer qi.lock.Unlock()
331+
qi.lock.RLock()
332+
defer qi.lock.RUnlock()
333333
return qi.CalculateInfo.ChildRequest.DeepCopy()
334334
}
335335

336336
func (qi *QuotaInfo) GetUsed() v1.ResourceList {
337-
qi.lock.Lock()
338-
defer qi.lock.Unlock()
337+
qi.lock.RLock()
338+
defer qi.lock.RUnlock()
339339
return qi.CalculateInfo.Used.DeepCopy()
340340
}
341341

342342
func (qi *QuotaInfo) GetNonPreemptibleUsed() v1.ResourceList {
343-
qi.lock.Lock()
344-
defer qi.lock.Unlock()
343+
qi.lock.RLock()
344+
defer qi.lock.RUnlock()
345345
return qi.CalculateInfo.NonPreemptibleUsed.DeepCopy()
346346
}
347347

348348
func (qi *QuotaInfo) GetNonPreemptibleRequest() v1.ResourceList {
349-
qi.lock.Lock()
350-
defer qi.lock.Unlock()
349+
qi.lock.RLock()
350+
defer qi.lock.RUnlock()
351351
return qi.CalculateInfo.NonPreemptibleRequest.DeepCopy()
352352
}
353353

354354
func (qi *QuotaInfo) GetSelfRequest() v1.ResourceList {
355-
qi.lock.Lock()
356-
defer qi.lock.Unlock()
355+
qi.lock.RLock()
356+
defer qi.lock.RUnlock()
357357
return qi.CalculateInfo.SelfRequest.DeepCopy()
358358
}
359359

360360
func (qi *QuotaInfo) GetSelfUsed() v1.ResourceList {
361-
qi.lock.Lock()
362-
defer qi.lock.Unlock()
361+
qi.lock.RLock()
362+
defer qi.lock.RUnlock()
363363
return qi.CalculateInfo.SelfUsed.DeepCopy()
364364
}
365365

366366
func (qi *QuotaInfo) GetSelfNonPreemptibleUsed() v1.ResourceList {
367-
qi.lock.Lock()
368-
defer qi.lock.Unlock()
367+
qi.lock.RLock()
368+
defer qi.lock.RUnlock()
369369
return qi.CalculateInfo.SelfNonPreemptibleUsed.DeepCopy()
370370
}
371371

372372
func (qi *QuotaInfo) GetSelfNonPreemptibleRequest() v1.ResourceList {
373-
qi.lock.Lock()
374-
defer qi.lock.Unlock()
373+
qi.lock.RLock()
374+
defer qi.lock.RUnlock()
375375
return qi.CalculateInfo.SelfNonPreemptibleRequest.DeepCopy()
376376
}
377377

378378
func (qi *QuotaInfo) GetRuntime() v1.ResourceList {
379-
qi.lock.Lock()
380-
defer qi.lock.Unlock()
379+
qi.lock.RLock()
380+
defer qi.lock.RUnlock()
381381
return qi.CalculateInfo.Runtime.DeepCopy()
382382
}
383383

384384
func (qi *QuotaInfo) GetMax() v1.ResourceList {
385-
qi.lock.Lock()
386-
defer qi.lock.Unlock()
385+
qi.lock.RLock()
386+
defer qi.lock.RUnlock()
387387
return qi.CalculateInfo.Max.DeepCopy()
388388
}
389389

390390
func (qi *QuotaInfo) GetMin() v1.ResourceList {
391-
qi.lock.Lock()
392-
defer qi.lock.Unlock()
391+
qi.lock.RLock()
392+
defer qi.lock.RUnlock()
393393
return qi.CalculateInfo.Min.DeepCopy()
394394
}
395395

@@ -432,8 +432,8 @@ func (qi *QuotaInfo) clearForResetNoLock() {
432432
}
433433

434434
func (qi *QuotaInfo) isQuotaMetaChange(quotaInfo *QuotaInfo) bool {
435-
qi.lock.Lock()
436-
defer qi.lock.Unlock()
435+
qi.lock.RLock()
436+
defer qi.lock.RUnlock()
437437

438438
if qi.AllowLentResource != quotaInfo.AllowLentResource ||
439439
qi.IsParent != quotaInfo.IsParent ||
@@ -444,8 +444,8 @@ func (qi *QuotaInfo) isQuotaMetaChange(quotaInfo *QuotaInfo) bool {
444444
}
445445

446446
func (qi *QuotaInfo) isQuotaChange(quotaInfo *QuotaInfo) bool {
447-
qi.lock.Lock()
448-
defer qi.lock.Unlock()
447+
qi.lock.RLock()
448+
defer qi.lock.RUnlock()
449449

450450
if qi.AllowLentResource != quotaInfo.AllowLentResource ||
451451
qi.IsParent != quotaInfo.IsParent ||
@@ -468,15 +468,15 @@ func (qi *QuotaInfo) isQuotaChange(quotaInfo *QuotaInfo) bool {
468468
}
469469

470470
func (qi *QuotaInfo) isQuotaParentChange(quotaInfo *QuotaInfo) bool {
471-
qi.lock.Lock()
472-
defer qi.lock.Unlock()
471+
qi.lock.RLock()
472+
defer qi.lock.RUnlock()
473473

474474
return qi.ParentName != quotaInfo.ParentName
475475
}
476476

477477
func (qi *QuotaInfo) IsPodExist(pod *v1.Pod) bool {
478-
qi.lock.Lock()
479-
defer qi.lock.Unlock()
478+
qi.lock.RLock()
479+
defer qi.lock.RUnlock()
480480
_, exist := qi.PodCache[generatePodCacheKey(pod)]
481481
return exist
482482
}
@@ -523,8 +523,8 @@ func (qi *QuotaInfo) UpdatePodIsAssigned(pod *v1.Pod, isAssigned bool) error {
523523
}
524524

525525
func (qi *QuotaInfo) GetPodCache() map[string]*v1.Pod {
526-
qi.lock.Lock()
527-
defer qi.lock.Unlock()
526+
qi.lock.RLock()
527+
defer qi.lock.RUnlock()
528528

529529
pods := make(map[string]*v1.Pod)
530530
for name, podInfo := range qi.PodCache {
@@ -534,8 +534,8 @@ func (qi *QuotaInfo) GetPodCache() map[string]*v1.Pod {
534534
}
535535

536536
func (qi *QuotaInfo) CheckPodIsAssigned(pod *v1.Pod) bool {
537-
qi.lock.Lock()
538-
defer qi.lock.Unlock()
537+
qi.lock.RLock()
538+
defer qi.lock.RUnlock()
539539

540540
if pod == nil {
541541
return false
@@ -548,8 +548,8 @@ func (qi *QuotaInfo) CheckPodIsAssigned(pod *v1.Pod) bool {
548548
}
549549

550550
func (qi *QuotaInfo) GetPodThatIsAssigned() []*v1.Pod {
551-
qi.lock.Lock()
552-
defer qi.lock.Unlock()
551+
qi.lock.RLock()
552+
defer qi.lock.RUnlock()
553553

554554
pods := make([]*v1.Pod, 0)
555555
for _, podInfo := range qi.PodCache {

0 commit comments

Comments
 (0)