@@ -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
8686func 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
154154func (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.
196196func (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
267267func (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
273273func (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
324324func (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
330330func (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
336336func (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
342342func (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
348348func (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
354354func (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
360360func (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
366366func (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
372372func (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
378378func (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
384384func (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
390390func (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
434434func (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
446446func (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
470470func (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
477477func (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
525525func (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
536536func (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
550550func (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