> On Nov. 7, 2015, 1:06 a.m., Michael Park wrote:
> > 3rdparty/libprocess/include/process/subprocess.hpp, line 91
> > <https://reviews.apache.org/r/37336/diff/10/?file=1117802#file1117802line91>
> >
> >     How come `Invocation` is within `Subprocess::Result`? Wouldn't it make 
> > more sense for it to be at the `Subprocess` level to be 
> > `Subprocess::Invocation`?

I probably misunderstood your earlier comment.
Moved one level up, into `Subprocess`.


> On Nov. 7, 2015, 1:06 a.m., Michael Park wrote:
> > 3rdparty/libprocess/include/process/subprocess.hpp, line 278
> > <https://reviews.apache.org/r/37336/diff/10/?file=1117802#file1117802line278>
> >
> >     We tend to not use `getX()` style naming for accessors. How about 
> > `outData()`?

great point (wasn't sure, as it's not spelled out in our style guide - and it's 
not truly a "getter" in the Google sytle sense: `foo_` -> `foo()`)
also renamed `stderr_` to `errData` and `getStderr()` to `errData()` - please 
let me know if that was "overreach"!


> On Nov. 7, 2015, 1:06 a.m., Michael Park wrote:
> > 3rdparty/libprocess/include/process/subprocess.hpp, line 340
> > <https://reviews.apache.org/r/37336/diff/10/?file=1117802#file1117802line340>
> >
> >     I think this violates our use of `auto` rule. Could you please spell 
> > out the type?

I would disagree here... the type is `Try<std::list<os::ProcessTree>>` and 
adding that, I don't think makes the code any more readable (on the contrary).
In fact, we don't really make use of any of that - all we care is that no error 
is returned: it could very well be a `Try<Pizza>` for all we care :)

This seems to me a poster child of the use-case for `auto`... anyways, no 
biggie, I've added the type.


> On Nov. 7, 2015, 1:06 a.m., Michael Park wrote:
> > 3rdparty/libprocess/src/subprocess.cpp, lines 202-203
> > <https://reviews.apache.org/r/37336/diff/10/?file=1117803#file1117803line202>
> >
> >     Why do we need the `promise` stuff here?
> >     
> >     Does something like the following not work?
> >     
> >     ```cpp
> >     Future<tuple<Future<Option<int>>, Future<string>, Future<string>>> 
> > result =
> >       await(status(), getStdout(), getStderr());
> >     
> >     return result.then([=](...) { ... })
> >                  .onFailed([=](...) { ... })
> >                  .onDiscard([this]() { cleanup(); });
> >     ```

I don't quite remember what it was that I came across originally when I tried 
the above (sans Promise) then Joris suggested the pattern that you see here 
now, and this works. IIRC I could never get the `onFailed` to get invoked for 
failed commands, so the pending process never got cleaned up.

If you feel strongly this should not be here (and/or are confident the pattern 
above works) I'm happy to have another go at it.


- Marco


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


On Nov. 6, 2015, 6:24 a.m., Marco Massenzio wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/37336/
> -----------------------------------------------------------
> 
> (Updated Nov. 6, 2015, 6:24 a.m.)
> 
> 
> Review request for mesos, Joris Van Remoortere and Michael Park.
> 
> 
> Bugs: MESOS-3035
>     https://issues.apache.org/jira/browse/MESOS-3035
> 
> 
> Repository: mesos
> 
> 
> Description
> -------
> 
> The original API for `process::Subprocess` still left a lot of legwork
> to do for the caller; we have now added an `execute()` method
> that returns a `Future<Subprocess::Result>`.
>  
> `Subprocess::Result`, also introduced with this patch, contains useful 
> information
> about the command invocation (an `Invocation` struct); the exit code; 
> `stdout`;
> and, optionally, `stderr` too.
>  
> Once the Future completes, if successful, the caller will be able to retrieve
> stdout/stderr; whether the command was successful; and whether it received a 
> signal
> 
> 
> Diffs
> -----
> 
>   3rdparty/libprocess/include/process/subprocess.hpp 
> f17816e813d5efce1d3bb1ff1e1111850eeda3ba 
>   3rdparty/libprocess/src/subprocess.cpp 
> efe0018d0414c4137fd833c153eb262232e712bc 
>   3rdparty/libprocess/src/tests/subprocess_tests.cpp 
> ac600a551fb1a7782ff33cce204b7819497ef54a 
> 
> Diff: https://reviews.apache.org/r/37336/diff/
> 
> 
> Testing
> -------
> 
> make check
> 
> (also tested functionality with an anonymous module that exposes an 
> `/execute` endpoint and runs arbitrary commands, asynchronously,
> on an Agent)
> 
> 
> Thanks,
> 
> Marco Massenzio
> 
>

Reply via email to