@@ -338,13 +338,20 @@ func GetPredicateMetadata(pod *v1.Pod, sharedLister schedulerlisters.SharedListe
338
338
}
339
339
340
340
var allNodes []* schedulernodeinfo.NodeInfo
341
+ var havePodsWithAffinityNodes []* schedulernodeinfo.NodeInfo
341
342
if sharedLister != nil {
342
- n , err := sharedLister .NodeInfos ().List ()
343
+ var err error
344
+ allNodes , err = sharedLister .NodeInfos ().List ()
343
345
if err != nil {
344
346
klog .Errorf ("failed to list NodeInfos: %v" , err )
345
347
return nil
346
348
}
347
- allNodes = n
349
+ havePodsWithAffinityNodes , err = sharedLister .NodeInfos ().HavePodsWithAffinityList ()
350
+ if err != nil {
351
+ klog .Errorf ("failed to list NodeInfos: %v" , err )
352
+ return nil
353
+ }
354
+
348
355
}
349
356
350
357
// evenPodsSpreadMetadata represents how existing pods match "pod"
@@ -355,7 +362,7 @@ func GetPredicateMetadata(pod *v1.Pod, sharedLister schedulerlisters.SharedListe
355
362
return nil
356
363
}
357
364
358
- podAffinityMetadata , err := getPodAffinityMetadata (pod , allNodes )
365
+ podAffinityMetadata , err := getPodAffinityMetadata (pod , allNodes , havePodsWithAffinityNodes )
359
366
if err != nil {
360
367
klog .Errorf ("Error calculating podAffinityMetadata: %v" , err )
361
368
return nil
@@ -387,9 +394,9 @@ func getPodFitsResourcesMetedata(pod *v1.Pod) *podFitsResourcesMetadata {
387
394
}
388
395
}
389
396
390
- func getPodAffinityMetadata (pod * v1.Pod , allNodes []* schedulernodeinfo.NodeInfo ) (* podAffinityMetadata , error ) {
397
+ func getPodAffinityMetadata (pod * v1.Pod , allNodes []* schedulernodeinfo.NodeInfo , havePodsWithAffinityNodes [] * schedulernodeinfo. NodeInfo ) (* podAffinityMetadata , error ) {
391
398
// existingPodAntiAffinityMap will be used later for efficient check on existing pods' anti-affinity
392
- existingPodAntiAffinityMap , err := getTPMapMatchingExistingAntiAffinity (pod , allNodes )
399
+ existingPodAntiAffinityMap , err := getTPMapMatchingExistingAntiAffinity (pod , havePodsWithAffinityNodes )
393
400
if err != nil {
394
401
return nil , err
395
402
}
@@ -759,7 +766,9 @@ func getTPMapMatchingExistingAntiAffinity(pod *v1.Pod, allNodes []*schedulernode
759
766
errCh .SendErrorWithCancel (err , cancel )
760
767
return
761
768
}
762
- appendTopologyPairsMaps (existingPodTopologyMaps )
769
+ if existingPodTopologyMaps != nil {
770
+ appendTopologyPairsMaps (existingPodTopologyMaps )
771
+ }
763
772
}
764
773
}
765
774
workqueue .ParallelizeUntil (ctx , 16 , len (allNodes ), processNode )
0 commit comments