> 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 > >