From 56879063ed67f1410df6b160af68bc957ecf0c87 Mon Sep 17 00:00:00 2001 From: Todd Neal Date: Wed, 19 Feb 2025 15:26:26 -0600 Subject: [PATCH] perf: trade off less verbose errors for faster execution (#2013) --- pkg/scheduling/requirements.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pkg/scheduling/requirements.go b/pkg/scheduling/requirements.go index a082f693a1..bf8f6e1d63 100644 --- a/pkg/scheduling/requirements.go +++ b/pkg/scheduling/requirements.go @@ -172,7 +172,7 @@ func (r Requirements) IsCompatible(requirements Requirements, options ...option. } // Compatible ensures the provided requirements can loosely be met. -func (r Requirements) Compatible(requirements Requirements, options ...option.Function[CompatibilityOptions]) (errs error) { +func (r Requirements) Compatible(requirements Requirements, options ...option.Function[CompatibilityOptions]) error { opts := option.Resolve(options...) // Custom Labels must intersect, but if not defined are denied. @@ -183,10 +183,11 @@ func (r Requirements) Compatible(requirements Requirements, options ...option.Fu if operator := requirements.Get(key).Operator(); r.Has(key) || operator == corev1.NodeSelectorOpNotIn || operator == corev1.NodeSelectorOpDoesNotExist { continue } - errs = multierr.Append(errs, fmt.Errorf("label %q does not have known values%s", key, labelHint(r, key, opts.AllowUndefined))) + // break early so we only report the first error + return fmt.Errorf("label %q does not have known values%s", key, labelHint(r, key, opts.AllowUndefined)) } // Well Known Labels must intersect, but if not defined, are allowed. - return multierr.Append(errs, r.Intersects(requirements)) + return r.Intersects(requirements) } func getSuffix(key string) string {