You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The error codes `60003` and `290013` appear twice. While many YAML
parsers can cope with duplicate mapping keys, many parser will error
out.
External tools, like for example
[go-cfclient's gen_error.go](https://github.com/cloudfoundry/go-cfclient/blob/main/tools/gen_error.go),
cannot update to more recent major versions of their YAML parser
library:
```shell
yaml: unmarshal errors:
line 221: mapping key "60003" already defined at line 216
line 1036: mapping key "290013" already defined at line 1026
panic: yaml: unmarshal errors:
line 221: mapping key "60003" already defined at line 216
line 1036: mapping key "290013" already defined at line 1026
```
Cloud Controller uses `psych` to parse the errors/*.yml files. Psych
uses the latest occurence of a key. Therefore, the most recent duplicate
key can be picked to stay in the errors files.
```
irb(main):001> require 'psych'
=> true
irb(main):002> filepath = "errors/v2.yml"
=> "errors/v2.yml"
irb(main):003* content = File.open(filepath) do |f|
irb(main):004* Psych.safe_load(f, strict_integer: true)
irb(main):005> end; nil
=> nil
irb(main):006> content[60003]
=> {"name"=>"ServiceInstanceInvalid", "http_code"=>400, "message"=>"The service instance is invalid: %s"}
irb(main):007> content[290013]
=> {"name"=>"SpaceRolesDeletionTimeout", "http_code"=>524, "message"=>"Deletion of roles for space %s timed out before all roles could be deleted"}
```
0 commit comments