----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/17306/ -----------------------------------------------------------
Review request for mesos, Benjamin Hindman, Ian Downes, and Jie Yu. Bugs: MESOS-943 https://issues.apache.org/jira/browse/MESOS-943 Repository: mesos-git Description ------- This adds an asynchronous mechanism for subprocess execution, per MESOS-943. What started simple was made a little more complex due to the following issues: 1. Who is responsible for closing the input / output descriptors? Placing this burden onto the caller of subprocess() seems likely to yield leaked open file descriptors. This introduced the notion of a shared_ptr / destructor / copy constructor / assignment constructor to ensure that the file descriptors are closed when the handle to the file descriptors are lost. However, even with my implementation, one may copy these file descriptors, at which point they may be deleted from underneath them. 2. What does discarding the status entail? Does it kill the process? The current implementation kills the process, which requires the use of an explicit Promise to deal with the discard from the caller not affecting the reaper's future. If discard() is a no-op, we must still use an explicit Promise to preserve the notification from the Reaper (so that we can know when to delete the Reaper). That's about it, I've added tests that demonstrate the ability to communicate with the subprocess through stdin / stout / stderr. Please let me know if you find any simplifications that can be made! (Other than C++11 lambdas, of course :)) Diffs ----- 3rdparty/libprocess/Makefile.am 40f01a7b3803696ccca440c8326e1d6d7c377459 3rdparty/libprocess/include/process/subprocess.hpp PRE-CREATION 3rdparty/libprocess/src/tests/subprocess_tests.cpp PRE-CREATION Diff: https://reviews.apache.org/r/17306/diff/ Testing ------- Tests were added and ran in repetition. Thanks, Ben Mahler