> On Oct. 9, 2015, 4:14 p.m., Adam B wrote:
> > src/common/resources.cpp, lines 368-384
> > <https://reviews.apache.org/r/39018/diff/4/?file=1092358#file1092358line368>
> >
> > This smells like a hack to workaround a bug in picojson. Can you link to something
that indicates this as best practice or a recommended workaround? Is there a picojson issue
we can track to know if this ever gets fixed?
>
> Greg Mann wrote:
> I'll have to do some research on this one; there are no existing picojson issues
addressing this (only 27 issues have ever been raised in the project :-), but I can certainly
file one. I'll get back to you on this.
TLDR: Our bug, not a PicoJson bug. (Good catch though!)
We should have a check after parsing: https://github.com/apache/mesos/blob/master/3rdparty/libprocess/3rdparty/stout/include/stout/json.hpp#L740
`picojson::parse` will return the current position of stream iterator. We should be saving
this value and checking to see if it matches the end (minus whitespace).
See: https://github.com/kazuho/picojson/blob/25fc213cca61ea22b3c2e4db8def9927562ba5f7/picojson.h#L925
Note that the reason PicoJson does not barf on that input is because PicoJson supports "streaming"
JSON objects. i.e. You can give it a "stream" like `{} {} {}`, and expect three objects if
you parse three times (passing the iterator along).
- Joseph
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/39018/#review102110
-----------------------------------------------------------
On Oct. 9, 2015, 5:43 p.m., Greg Mann wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/39018/
> -----------------------------------------------------------
>
> (Updated Oct. 9, 2015, 5:43 p.m.)
>
>
> Review request for mesos, Adam B, Alexander Rukletsov, Jie Yu, and Michael Park.
>
>
> Bugs: MESOS-2467
> https://issues.apache.org/jira/browse/MESOS-2467
>
>
> Repository: mesos
>
>
> Description
> -------
>
> This includes code changes necessary for JSON parsing of Resources. Documentation changes
will be posted soon in another review.
>
>
> Diffs
> -----
>
> include/mesos/resources.hpp 6c3a065945eb56dc88df9c977e5ca11d4cbcbf61
> include/mesos/v1/resources.hpp fe8925ac851b74d1b37919f00afc7ed816f47ea5
> src/common/resources.cpp 601388c35a1bff37c58e753d1870d53b8d0af2d1
> src/tests/resources_tests.cpp 6584fc6c39e6ffe9f8085576677dcc669f127697
> src/v1/resources.cpp dc868903472f8f3a1ddc56092e3f8f81d953ce39
>
> Diff: https://reviews.apache.org/r/39018/diff/
>
>
> Testing
> -------
>
> New code was added to `ResourcesTest.ParsingFromJSON`, and two new tests were added:
`ResourcesTest.ParsingFromJSONWithRoles` and `ResourcesTest.ParsingFromJSONError`. These attempt
to test common error scenarios that might show up in user-supplied JSON.
>
> `make check` was used to confirm that all tests pass.
>
>
> Thanks,
>
> Greg Mann
>
>
|