You are viewing a plain text version of this content. The canonical link for it is here.
Posted to reviews@mesos.apache.org by Qian Zhang <zh...@gmail.com> on 2020/02/25 01:26:56 UTC

Review Request 72162: Accommodated the "Infinity" value in the JSON <-> Protobuf conversion.

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

Review request for mesos, Andrei Budnik and Greg Mann.


Bugs: MESOS-10064
    https://issues.apache.org/jira/browse/MESOS-10064


Repository: mesos


Description
-------

Accommodated the "Infinity" value in the JSON <-> Protobuf conversion.


Diffs
-----

  3rdparty/stout/include/stout/jsonify.hpp 7a239d846de5679e9c2b80aa4e617a72fdeac92c 
  3rdparty/stout/include/stout/protobuf.hpp fcd91d5ea822612e4b32d157fcbc5f0dedeba823 
  3rdparty/stout/tests/protobuf_tests.cpp 55889dc432a9459965d3dd75052d672828cdea90 
  3rdparty/stout/tests/protobuf_tests.proto 5e20215fcc69e400358847d0ce943d8c18f2a9e0 


Diff: https://reviews.apache.org/r/72162/diff/1/


Testing
-------


Thanks,

Qian Zhang


Re: Review Request 72162: Accommodated the "Infinity" value in the JSON <-> Protobuf conversion.

Posted by Qian Zhang <zh...@gmail.com>.

> On Feb. 27, 2020, 11:34 p.m., Greg Mann wrote:
> > 3rdparty/stout/include/stout/jsonify.hpp
> > Line 91 (original), 91-96 (patched)
> > <https://reviews.apache.org/r/72162/diff/1/?file=2212014#file2212014line91>
> >
> >     One other option here and elsewhere is to redefine `RAPIDJSON_WRITE_DEFAULT_FLAGS`; not sure if one or the other is more desirable, WDYT?

Yeah, I agree redefining `RAPIDJSON_WRITE_DEFAULT_FLAGS` is better.


> On Feb. 27, 2020, 11:34 p.m., Greg Mann wrote:
> > 3rdparty/stout/tests/protobuf_tests.cpp
> > Lines 885 (patched)
> > <https://reviews.apache.org/r/72162/diff/1/?file=2212016#file2212016line885>
> >
> >     Does this ordering matter? Can we remove this comment?

Yeah, it matters, otherwise this test will fail because the keys in the output of `stringify(object)` are in alphabetical order.


- Qian


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


On March 2, 2020, 2:31 p.m., Qian Zhang wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/72162/
> -----------------------------------------------------------
> 
> (Updated March 2, 2020, 2:31 p.m.)
> 
> 
> Review request for mesos, Andrei Budnik, Andrei Sekretenko, Benjamin Mahler, and Greg Mann.
> 
> 
> Bugs: MESOS-10064
>     https://issues.apache.org/jira/browse/MESOS-10064
> 
> 
> Repository: mesos
> 
> 
> Description
> -------
> 
> Accommodated the "Infinity" value in the JSON <-> Protobuf conversion.
> 
> 
> Diffs
> -----
> 
>   3rdparty/stout/include/stout/jsonify.hpp 7a239d846de5679e9c2b80aa4e617a72fdeac92c 
>   3rdparty/stout/include/stout/protobuf.hpp fcd91d5ea822612e4b32d157fcbc5f0dedeba823 
>   3rdparty/stout/tests/protobuf_tests.cpp 55889dc432a9459965d3dd75052d672828cdea90 
>   3rdparty/stout/tests/protobuf_tests.proto 5e20215fcc69e400358847d0ce943d8c18f2a9e0 
> 
> 
> Diff: https://reviews.apache.org/r/72162/diff/2/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Qian Zhang
> 
>


Re: Review Request 72162: Accommodated the "Infinity" value in the JSON <-> Protobuf conversion.

Posted by Greg Mann <gr...@mesosphere.io>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/72162/#review219673
-----------------------------------------------------------




3rdparty/stout/include/stout/jsonify.hpp
Line 91 (original), 91-96 (patched)
<https://reviews.apache.org/r/72162/#comment307883>

    One other option here and elsewhere is to redefine `RAPIDJSON_WRITE_DEFAULT_FLAGS`; not sure if one or the other is more desirable, WDYT?



3rdparty/stout/tests/protobuf_tests.cpp
Lines 885 (patched)
<https://reviews.apache.org/r/72162/#comment307884>

    Does this ordering matter? Can we remove this comment?



3rdparty/stout/tests/protobuf_tests.cpp
Lines 910-913 (patched)
<https://reviews.apache.org/r/72162/#comment307885>

    Could you verify the contents of the result here as well?


- Greg Mann


On Feb. 25, 2020, 1:26 a.m., Qian Zhang wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/72162/
> -----------------------------------------------------------
> 
> (Updated Feb. 25, 2020, 1:26 a.m.)
> 
> 
> Review request for mesos, Andrei Budnik and Greg Mann.
> 
> 
> Bugs: MESOS-10064
>     https://issues.apache.org/jira/browse/MESOS-10064
> 
> 
> Repository: mesos
> 
> 
> Description
> -------
> 
> Accommodated the "Infinity" value in the JSON <-> Protobuf conversion.
> 
> 
> Diffs
> -----
> 
>   3rdparty/stout/include/stout/jsonify.hpp 7a239d846de5679e9c2b80aa4e617a72fdeac92c 
>   3rdparty/stout/include/stout/protobuf.hpp fcd91d5ea822612e4b32d157fcbc5f0dedeba823 
>   3rdparty/stout/tests/protobuf_tests.cpp 55889dc432a9459965d3dd75052d672828cdea90 
>   3rdparty/stout/tests/protobuf_tests.proto 5e20215fcc69e400358847d0ce943d8c18f2a9e0 
> 
> 
> Diff: https://reviews.apache.org/r/72162/diff/1/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Qian Zhang
> 
>


Re: Review Request 72162: Accommodated the "Infinity" value in the JSON <-> Protobuf conversion.

Posted by Qian Zhang <zh...@gmail.com>.

> On Feb. 26, 2020, 1:23 a.m., Andrei Budnik wrote:
> > 3rdparty/stout/include/stout/protobuf.hpp
> > Lines 549 (patched)
> > <https://reviews.apache.org/r/72162/diff/1/?file=2212015#file2212015line549>
> >
> >     Is `double` infinity a better option here given that `JSON::Number` stores a value in `double`?

Yeah, I agree!


- Qian


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


On Feb. 28, 2020, 1:46 a.m., Qian Zhang wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/72162/
> -----------------------------------------------------------
> 
> (Updated Feb. 28, 2020, 1:46 a.m.)
> 
> 
> Review request for mesos, Andrei Budnik, Andrei Sekretenko, Benjamin Mahler, and Greg Mann.
> 
> 
> Bugs: MESOS-10064
>     https://issues.apache.org/jira/browse/MESOS-10064
> 
> 
> Repository: mesos
> 
> 
> Description
> -------
> 
> Accommodated the "Infinity" value in the JSON <-> Protobuf conversion.
> 
> 
> Diffs
> -----
> 
>   3rdparty/stout/include/stout/jsonify.hpp 7a239d846de5679e9c2b80aa4e617a72fdeac92c 
>   3rdparty/stout/include/stout/protobuf.hpp fcd91d5ea822612e4b32d157fcbc5f0dedeba823 
>   3rdparty/stout/tests/protobuf_tests.cpp 55889dc432a9459965d3dd75052d672828cdea90 
>   3rdparty/stout/tests/protobuf_tests.proto 5e20215fcc69e400358847d0ce943d8c18f2a9e0 
> 
> 
> Diff: https://reviews.apache.org/r/72162/diff/1/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Qian Zhang
> 
>


Re: Review Request 72162: Accommodated the "Infinity" value in the JSON <-> Protobuf conversion.

Posted by Qian Zhang <zh...@gmail.com>.

> On Feb. 26, 2020, 1:23 a.m., Andrei Budnik wrote:
> > 3rdparty/stout/include/stout/protobuf.hpp
> > Lines 551 (patched)
> > <https://reviews.apache.org/r/72162/diff/1/?file=2212015#file2212015line551>
> >
> >     It looks like `JSON::parse()` alone can't parse infinite values from a json string that has been serialized by `jsonify()`. If so, can it cause any issues? Do we want a test for such a case?
> >     
> >     What prevents us from parsing infinite values in `JSON::parse()`?
> 
> Greg Mann wrote:
>     Sorry could you clarify - does your first question imply that `jsonify()` serializes infinity values into a format different than the string in the unit test in this patch?
>     
>     Regarding your second question, I think that the updates to the rapid json writers enable JSON::parse() to handle infinite values, don't they? The new test case parses "Infinity" etc. using `JSON::parse()`.

Andrei, I do not follow your questions too, could you please elaborate?


- Qian


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


On Feb. 28, 2020, 1:46 a.m., Qian Zhang wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/72162/
> -----------------------------------------------------------
> 
> (Updated Feb. 28, 2020, 1:46 a.m.)
> 
> 
> Review request for mesos, Andrei Budnik, Andrei Sekretenko, Benjamin Mahler, and Greg Mann.
> 
> 
> Bugs: MESOS-10064
>     https://issues.apache.org/jira/browse/MESOS-10064
> 
> 
> Repository: mesos
> 
> 
> Description
> -------
> 
> Accommodated the "Infinity" value in the JSON <-> Protobuf conversion.
> 
> 
> Diffs
> -----
> 
>   3rdparty/stout/include/stout/jsonify.hpp 7a239d846de5679e9c2b80aa4e617a72fdeac92c 
>   3rdparty/stout/include/stout/protobuf.hpp fcd91d5ea822612e4b32d157fcbc5f0dedeba823 
>   3rdparty/stout/tests/protobuf_tests.cpp 55889dc432a9459965d3dd75052d672828cdea90 
>   3rdparty/stout/tests/protobuf_tests.proto 5e20215fcc69e400358847d0ce943d8c18f2a9e0 
> 
> 
> Diff: https://reviews.apache.org/r/72162/diff/1/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Qian Zhang
> 
>


Re: Review Request 72162: Accommodated the "Infinity" value in the JSON <-> Protobuf conversion.

Posted by Andrei Budnik <ab...@mesosphere.com>.

> On Фев. 25, 2020, 5:23 п.п., Andrei Budnik wrote:
> > 3rdparty/stout/include/stout/protobuf.hpp
> > Lines 551 (patched)
> > <https://reviews.apache.org/r/72162/diff/1/?file=2212015#file2212015line551>
> >
> >     It looks like `JSON::parse()` alone can't parse infinite values from a json string that has been serialized by `jsonify()`. If so, can it cause any issues? Do we want a test for such a case?
> >     
> >     What prevents us from parsing infinite values in `JSON::parse()`?
> 
> Greg Mann wrote:
>     Sorry could you clarify - does your first question imply that `jsonify()` serializes infinity values into a format different than the string in the unit test in this patch?
>     
>     Regarding your second question, I think that the updates to the rapid json writers enable JSON::parse() to handle infinite values, don't they? The new test case parses "Infinity" etc. using `JSON::parse()`.
> 
> Qian Zhang wrote:
>     Andrei, I do not follow your questions too, could you please elaborate?

If a `JSON::parse<JSON::Number>()` could parse `Infinity` values, we wouldn't need to modify this `operator()`. A `JSON::parse` function specialization for `JSON::Number` type could return `std::numeric_limits<double>::infinity()` if the argument equals to `"Infinity"`.

However, some call sites of the `parse` function may find the new behavior unacceptable as we're trying to extend JSON by adding non-standard special values for infinities. Thus, I'm dropping this comment.


- Andrei


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


On Март 2, 2020, 6:31 д.п., Qian Zhang wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/72162/
> -----------------------------------------------------------
> 
> (Updated Март 2, 2020, 6:31 д.п.)
> 
> 
> Review request for mesos, Andrei Budnik, Andrei Sekretenko, Benjamin Mahler, and Greg Mann.
> 
> 
> Bugs: MESOS-10064
>     https://issues.apache.org/jira/browse/MESOS-10064
> 
> 
> Repository: mesos
> 
> 
> Description
> -------
> 
> Accommodated the "Infinity" value in the JSON <-> Protobuf conversion.
> 
> 
> Diffs
> -----
> 
>   3rdparty/stout/include/stout/jsonify.hpp 7a239d846de5679e9c2b80aa4e617a72fdeac92c 
>   3rdparty/stout/include/stout/protobuf.hpp fcd91d5ea822612e4b32d157fcbc5f0dedeba823 
>   3rdparty/stout/tests/protobuf_tests.cpp 55889dc432a9459965d3dd75052d672828cdea90 
>   3rdparty/stout/tests/protobuf_tests.proto 5e20215fcc69e400358847d0ce943d8c18f2a9e0 
> 
> 
> Diff: https://reviews.apache.org/r/72162/diff/2/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Qian Zhang
> 
>


Re: Review Request 72162: Accommodated the "Infinity" value in the JSON <-> Protobuf conversion.

Posted by Greg Mann <gr...@mesosphere.io>.

> On Feb. 25, 2020, 5:23 p.m., Andrei Budnik wrote:
> > 3rdparty/stout/include/stout/protobuf.hpp
> > Lines 551 (patched)
> > <https://reviews.apache.org/r/72162/diff/1/?file=2212015#file2212015line551>
> >
> >     It looks like `JSON::parse()` alone can't parse infinite values from a json string that has been serialized by `jsonify()`. If so, can it cause any issues? Do we want a test for such a case?
> >     
> >     What prevents us from parsing infinite values in `JSON::parse()`?

Sorry could you clarify - does your first question imply that `jsonify()` serializes infinity values into a format different than the string in the unit test in this patch?

Regarding your second question, I think that the updates to the rapid json writers enable JSON::parse() to handle infinite values, don't they? The new test case parses "Infinity" etc. using `JSON::parse()`.


- Greg


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


On Feb. 25, 2020, 1:26 a.m., Qian Zhang wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/72162/
> -----------------------------------------------------------
> 
> (Updated Feb. 25, 2020, 1:26 a.m.)
> 
> 
> Review request for mesos, Andrei Budnik and Greg Mann.
> 
> 
> Bugs: MESOS-10064
>     https://issues.apache.org/jira/browse/MESOS-10064
> 
> 
> Repository: mesos
> 
> 
> Description
> -------
> 
> Accommodated the "Infinity" value in the JSON <-> Protobuf conversion.
> 
> 
> Diffs
> -----
> 
>   3rdparty/stout/include/stout/jsonify.hpp 7a239d846de5679e9c2b80aa4e617a72fdeac92c 
>   3rdparty/stout/include/stout/protobuf.hpp fcd91d5ea822612e4b32d157fcbc5f0dedeba823 
>   3rdparty/stout/tests/protobuf_tests.cpp 55889dc432a9459965d3dd75052d672828cdea90 
>   3rdparty/stout/tests/protobuf_tests.proto 5e20215fcc69e400358847d0ce943d8c18f2a9e0 
> 
> 
> Diff: https://reviews.apache.org/r/72162/diff/1/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Qian Zhang
> 
>


Re: Review Request 72162: Accommodated the "Infinity" value in the JSON <-> Protobuf conversion.

Posted by Andrei Budnik <ab...@mesosphere.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/72162/#review219657
-----------------------------------------------------------




3rdparty/stout/include/stout/protobuf.hpp
Lines 549 (patched)
<https://reviews.apache.org/r/72162/#comment307866>

    Is `double` infinity a better option here given that `JSON::Number` stores a value in `double`?



3rdparty/stout/include/stout/protobuf.hpp
Lines 551 (patched)
<https://reviews.apache.org/r/72162/#comment307867>

    It looks like `JSON::parse()` alone can't parse infinite values from a json string that has been serialized by `jsonify()`. If so, can it cause any issues? Do we want a test for such a case?
    
    What prevents us from parsing infinite values in `JSON::parse()`?


- Andrei Budnik


On Фев. 25, 2020, 1:26 д.п., Qian Zhang wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/72162/
> -----------------------------------------------------------
> 
> (Updated Фев. 25, 2020, 1:26 д.п.)
> 
> 
> Review request for mesos, Andrei Budnik and Greg Mann.
> 
> 
> Bugs: MESOS-10064
>     https://issues.apache.org/jira/browse/MESOS-10064
> 
> 
> Repository: mesos
> 
> 
> Description
> -------
> 
> Accommodated the "Infinity" value in the JSON <-> Protobuf conversion.
> 
> 
> Diffs
> -----
> 
>   3rdparty/stout/include/stout/jsonify.hpp 7a239d846de5679e9c2b80aa4e617a72fdeac92c 
>   3rdparty/stout/include/stout/protobuf.hpp fcd91d5ea822612e4b32d157fcbc5f0dedeba823 
>   3rdparty/stout/tests/protobuf_tests.cpp 55889dc432a9459965d3dd75052d672828cdea90 
>   3rdparty/stout/tests/protobuf_tests.proto 5e20215fcc69e400358847d0ce943d8c18f2a9e0 
> 
> 
> Diff: https://reviews.apache.org/r/72162/diff/1/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Qian Zhang
> 
>