From 22eb374e9c62789d2c9d753975e4537799467dfe Mon Sep 17 00:00:00 2001 From: Todd Neal Date: Wed, 19 Feb 2025 15:22:26 -0600 Subject: [PATCH] perf: check validity before constructing a new set of requirements (#2011) --- pkg/controllers/provisioning/scheduling/existingnode.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pkg/controllers/provisioning/scheduling/existingnode.go b/pkg/controllers/provisioning/scheduling/existingnode.go index 8bf44ff51d..804ca1cc61 100644 --- a/pkg/controllers/provisioning/scheduling/existingnode.go +++ b/pkg/controllers/provisioning/scheduling/existingnode.go @@ -92,11 +92,13 @@ func (n *ExistingNode) Add(ctx context.Context, kubeClient client.Client, pod *v return fmt.Errorf("exceeds node resources") } - nodeRequirements := scheduling.NewRequirements(n.requirements.Values()...) // Check NodeClaim Affinity Requirements - if err = nodeRequirements.Compatible(podData.Requirements); err != nil { + if err = n.requirements.Compatible(podData.Requirements); err != nil { return err } + // avoid creating our temp set of requirements until after we've ensured that at least + // the pod is compatible + nodeRequirements := scheduling.NewRequirements(n.requirements.Values()...) nodeRequirements.Add(podData.Requirements.Values()...) // Check Topology Requirements