Say when a config error is caused by an env var

Without this, the log message for the user indicates a problem with the
yaml file, so identifying the actual error is hard. This change fixes
the output so that the incorrect environment variable is easy to spot.

Fixes #3653

Signed-off-by: James Hewitt <james.hewitt@uk.ibm.com>
This commit is contained in:
James Hewitt 2022-07-05 17:57:12 +01:00
parent 8857a19487
commit d5b2f94c7c
No known key found for this signature in database
GPG key ID: EA6C3C654B6193E4

View file

@ -138,7 +138,7 @@ func (p *Parser) Parse(in []byte, v interface{}) error {
err = p.overwriteFields(parseAs, pathStr, path[1:], envVar.value) err = p.overwriteFields(parseAs, pathStr, path[1:], envVar.value)
if err != nil { if err != nil {
return err return fmt.Errorf("parsing environment variable %s: %v", pathStr, err)
} }
} }
} }
@ -206,7 +206,6 @@ func (p *Parser) overwriteStruct(v reflect.Value, fullpath string, path []string
fieldVal := reflect.New(sf.Type) fieldVal := reflect.New(sf.Type)
err := yaml.Unmarshal([]byte(payload), fieldVal.Interface()) err := yaml.Unmarshal([]byte(payload), fieldVal.Interface())
if err != nil { if err != nil {
logrus.Warnf("Error parsing environment variable %s: %s", fullpath, err)
return err return err
} }
field.Set(reflect.Indirect(fieldVal)) field.Set(reflect.Indirect(fieldVal))