[ https://issues.apache.org/jira/browse/MESOS-7828?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16112280#comment-16112280 ]
Qian Zhang commented on MESOS-7828: ----------------------------------- And I get the same result when setting {{JsonParseOptions.ignore_unknown_fields}} to true. And based on my test, {{JsonParseOptions.ignore_unknown_fields}} will take effect only if there is an unknown field (rather than a known field with unknown enum value) in the JSON. > Current approach to parse protobuf enum from JSON does not support upgrades > --------------------------------------------------------------------------- > > Key: MESOS-7828 > URL: https://issues.apache.org/jira/browse/MESOS-7828 > Project: Mesos > Issue Type: Bug > Reporter: Qian Zhang > Assignee: Qian Zhang > > To use protobuf enum in a backwards compatible way, [the suggestion on the > protobuf mailing > list|https://groups.google.com/forum/#!msg/protobuf/NhUjBfDyGmY/pf294zMi2bIJ] > is to use optional enum fields and include an UNKNOWN value as the first > entry in the enum list (and/or explicitly specifying it as the default). This > can handle the case of parsing protobuf message from a serialized string, but > it can not handle the case of parsing protobuf message from JSON. > E.g., when I access master endpoint with an inexistent enum {{xxx}}, I will > get an error: > {code} > $ curl -X POST -H "Content-Type: application/json" -d '{"type": "xxx"}' > 127.0.0.1:5050/api/v1 > Failed to convert JSON into Call protobuf: Failed to find enum for 'xxx'% > {code} > In the {{Call}} protobuf message, the enum {{Type}} already has a default > value {{UNKNOWN}} (see > [here|https://github.com/apache/mesos/blob/1.3.0/include/mesos/v1/master/master.proto#L45] > for details) and the field {{Call.type}} is optional, but the above curl > command will still fail. The root cause is, in the code > [here|https://github.com/apache/mesos/blob/1.3.0/3rdparty/stout/include/stout/protobuf.hpp#L449:L454] > when we try to get the enum value for the string "xxx", it will fail since > there is no any enum value corresponding to "xxx". -- This message was sent by Atlassian JIRA (v6.4.14#64029)