api: discard unknown config proto fields #353
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
The
pomerium-cli api
command will persist its state as a protobuf serialized to JSON. If a newer version of pomerium-cli introduces new fields in this protobuf message, an older version of pomerium-cli may not be able to start — currently it will exit if there is any error when unmarshaling this state.(Ordinarily, adding a field to a proto message is a backwards-compatible change: any software built with the older definition of the proto will generally not notice the new field. However, it looks like the protojson library
Unmarshal()
method will return an error for any unknown fields present in the JSON data.)Let's change this behavior, by setting the
DiscardUnknown
option. This way, an older pomerium-cli binary won't quit on startup if it encounters an unknown option. Instead it will accept all the configuration options it knows about, and ignore the rest. This seems preferably to resetting the configuration entirely.Related issues
pomerium/desktop-client#319
Checklist
improvement
/bug
/ etc)