You are viewing a plain text version of this content. The canonical link for it is here.
Posted to reviews@mesos.apache.org by Benjamin Bannier <be...@mesosphere.io> on 2016/04/29 11:37:44 UTC

Review Request 46821: Avoided slicing of flags in subprocess.

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

Review request for mesos, Alexander Rukletsov and Vinod Kone.


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


Repository: mesos


Description
-------

While `FlagsBase` internally stores just maps of names and
flags, the functions stored in a `Flag` rely on the original type of
the `Flags` containing them (e.g., we perform dynamic casts to detect
their types).

Since `Option<T>` stores `T` as a value (i.e., it cannot contain
reference types) any interface taking an `Option<T>` cannot rely on
polymorphic behavior of `T`. To make use of polymorphism we should
instead store e.g., a pointer type to avoid slicing.

Here we change `Flags` arguments of `subprocess` to allow preserving
the original type so `Flag` function can work reliably.


Diffs
-----

  3rdparty/libprocess/include/process/subprocess.hpp 6ce1a827e36e0c65985e3928c89f51561fdd70cd 
  3rdparty/libprocess/src/subprocess.cpp bb0fcbcd0dfa455c8700247c5b4ca0473fd163c3 
  3rdparty/libprocess/src/tests/subprocess_tests.cpp 727e940f12643974de4ff2734fba431b285b5de3 

Diff: https://reviews.apache.org/r/46821/diff/


Testing
-------

Tested on various platforms in internal CI.


Thanks,

Benjamin Bannier