From 75ccb9040705a7549e7e7c7a61f145ad2bb2ecf7 Mon Sep 17 00:00:00 2001 From: He Jie Xu Date: Mon, 10 Aug 2020 14:48:26 +0800 Subject: [PATCH] Fast return when no any matched anti-affinity terms When check the incoming pod's anti-affinity rules, there is change to return early when there is no any matched anti-affinity terms in the whole cluster. --- .../framework/plugins/interpodaffinity/filtering.go | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/pkg/scheduler/framework/plugins/interpodaffinity/filtering.go b/pkg/scheduler/framework/plugins/interpodaffinity/filtering.go index 596f1b95df3..b63575ca254 100644 --- a/pkg/scheduler/framework/plugins/interpodaffinity/filtering.go +++ b/pkg/scheduler/framework/plugins/interpodaffinity/filtering.go @@ -330,11 +330,13 @@ func satisfyExistingPodsAntiAffinity(state *preFilterState, nodeInfo *framework. // Checks if the node satisifies the incoming pod's anti-affinity rules. func satisfyPodAntiAffinity(state *preFilterState, nodeInfo *framework.NodeInfo) bool { - for _, term := range state.podInfo.RequiredAntiAffinityTerms { - if topologyValue, ok := nodeInfo.Node().Labels[term.TopologyKey]; ok { - tp := topologyPair{key: term.TopologyKey, value: topologyValue} - if state.topologyToMatchedAntiAffinityTerms[tp] > 0 { - return false + if len(state.topologyToMatchedAntiAffinityTerms) > 0 { + for _, term := range state.podInfo.RequiredAntiAffinityTerms { + if topologyValue, ok := nodeInfo.Node().Labels[term.TopologyKey]; ok { + tp := topologyPair{key: term.TopologyKey, value: topologyValue} + if state.topologyToMatchedAntiAffinityTerms[tp] > 0 { + return false + } } } }