> On Sept. 9, 2017, 7:59 a.m., James Peach wrote:
> > This looks pretty reasonable to me. It's unfortunate that this will convert 
> > all invalid enum names into the default value, but AFAICT that is 
> > unavoidable.
> 
> Benjamin Mahler wrote:
>     Since we're talking about optional enums, it's not obvious to me whether 
> it's better to leave it unset or to set it to the default. With a required 
> enum, we can't leave it unset so it seems like the default value makes the 
> most sense. However, shouldn't the caller specify the behavior they want? 
> Much like `JsonParseOptions.ignore_unknown_fields` is an explicit option? 
> This would be something like `use_default_for_unknown_enum_values`?

@Ben, the problem is when `Content-Type` is `application/x-protobuf`, our 
current implementation is an inexistent enum value will be parsed to the 
default enum value (i.e., `UNKNOWN`), that is what we have done in MESOS-4997, 
but when `Content-Type` is `application/json`, the current behavior is 
different: when parsing an inexistent enum value, we will get an error like 
`Failed to find enum for 'xxx'` rather than parsing it to the default enum 
value. So in this patch, I just want to make the two protocols 
(`application/x-protobuf` and `application/json`) have consistent behavior.


- Qian


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/61109/#review185038
-----------------------------------------------------------


On July 25, 2017, 11:17 p.m., Qian Zhang wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/61109/
> -----------------------------------------------------------
> 
> (Updated July 25, 2017, 11:17 p.m.)
> 
> 
> Review request for mesos, Benjamin Mahler and James Peach.
> 
> 
> Bugs: MESOS-7828
>     https://issues.apache.org/jira/browse/MESOS-7828
> 
> 
> Repository: mesos
> 
> 
> Description
> -------
> 
> Used the default value when parsing an optional enum field.
> 
> 
> Diffs
> -----
> 
>   3rdparty/stout/include/stout/protobuf.hpp 
> 15690b66cc4ae0c1bf2c2176d73c385ca75d3c20 
> 
> 
> Diff: https://reviews.apache.org/r/61109/diff/1/
> 
> 
> Testing
> -------
> 
> With this patch, when accessing master endpoint with an inexistent enum `xxx` 
> in a JSON:
> ```
> curl -X POST -H "Content-Type: application/json" -d '{"type": "xxx"}' 
> 127.0.0.1:5050/api/v1
> ```
> The master log will be:
> ```
> I0725 23:09:53.097790   665 http.cpp:1133] HTTP POST for /master/api/v1 from 
> 127.0.0.1:49566 with User-Agent='curl/7.47.0'
> I0725 23:09:53.098006   665 http.cpp:669] Processing call UNKNOWN
> ```
> This proves when parsing an inexistent enum the default enum value (i.e., 
> `UNKNOWN`) will be used.
> 
> 
> Thanks,
> 
> Qian Zhang
> 
>

Reply via email to