From ba7f4fbcd91a09898c592f8443defea3d3259a01 Mon Sep 17 00:00:00 2001 From: Mahmood Ali Date: Mon, 28 Oct 2019 10:49:08 -0400 Subject: [PATCH] Fix admissionValidators `admissionValidators` doesn't aggregate errors correctly, as it aggregates errors in `errs` reference yet it always returns the nil `err`. Here, we avoid shadowing `err`, and move variable declarations to where they are used. --- nomad/job_endpoint_hooks.go | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/nomad/job_endpoint_hooks.go b/nomad/job_endpoint_hooks.go index 5153e1b27..2168c977f 100644 --- a/nomad/job_endpoint_hooks.go +++ b/nomad/job_endpoint_hooks.go @@ -53,21 +53,23 @@ func (j *Job) admissionMutators(job *structs.Job) (_ *structs.Job, warnings []er // admissionValidators returns a slice of validation warnings and a multierror // of validation failures. -func (j *Job) admissionValidators(origJob *structs.Job) (warnings []error, err error) { +func (j *Job) admissionValidators(origJob *structs.Job) ([]error, error) { // ensure job is not mutated job := origJob.Copy() - var w []error - errs := new(multierror.Error) + var warnings []error + var errs error + for _, validator := range j.validators { - w, err = validator.Validate(job) + w, err := validator.Validate(job) j.logger.Trace("job validate results", "validator", validator.Name(), "warnings", w, "error", err) if err != nil { - multierror.Append(errs, err) + errs = multierror.Append(errs, err) } warnings = append(warnings, w...) } - return warnings, err + + return warnings, errs }