> On July 31, 2014, 6:39 p.m., Jie Yu wrote: > > src/docker/docker.cpp, line 351 > > <https://reviews.apache.org/r/23771/diff/8/?file=646708#file646708line351> > > > > if (status.get() != 0) { > > return err(s).then(lambda::bind(&__check, cmd, status.get(), > > lambda::_1)); > > }
I actually can't do this since the return type doesn't make __check. What I ended up doing is another static method with a template. > On July 31, 2014, 6:39 p.m., Jie Yu wrote: > > src/docker/docker.cpp, line 80 > > <https://reviews.apache.org/r/23771/diff/8/?file=646708#file646708line80> > > > > This has been gone through a few iterations already. Sorry, this is my > > fault that I haven't thought about it in deep. But I hope we can resolve > > this before shipping this. > > > > A few issues: > > > > 1) This is a library, we usually don't have LOG() in the library > > (otherwise, very likely we'll have double logging). Instead, we usually put > > error messages in the return value (either Future or Try). > > > > 2) Returning 'bool' doesn't seem to be necessary? We always return > > false on error and return true on success, right? In that case, we can just > > use Future<Nothing>? > > > > So here is what I would suggest (s/success/check/ maybe): > > > > Future<Nothing> check(const string& cmd, const Subprocess& s) > > { > > return s.status().then(lambda::bind(&_success, cmd, s); > > } > > > > Future<Nothing> _check(const string& cmd, const Subprocess& s) > > { > > Option<int> status = s.status().get(); > > if (status.isNone()) { > > return Failure("No status found for '" + cmd + "'"); > > } > > > > if (status.get() != 0) { > > return err(s).then(lambda::bind(&__check, cmd, status, lambda::_1)); > > } > > > > return Nothing(); > > } > > > > Future<Nothing> __check(const string& cmd, int status, const string& > > err) > > { > > return Failure( > > "Failed to '" + cmd + "': exit status = " + > > WSTRINGIFY(status) + " stderr = " + err); > > } > > > > // Retrieve the standard error of 's'. > > Future<string> err(const Subprocess& s) > > { > > CHECK_SOME(s.err()); > > > > Try<Nothing> nonblock = os::nonblock(s.err().get()); > > if (nonblock.isError()) { > > return Failure("Cannot set nonblock for stderr"); > > } > > > > return io::read(s.err().get()); > > } I had an compile error where _check conflicts with the _check method from process/check.hpp. I renamed all to [_|__]checkStatus - Timothy ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/23771/#review49240 ----------------------------------------------------------- On July 31, 2014, 8:06 a.m., Timothy Chen wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviews.apache.org/r/23771/ > ----------------------------------------------------------- > > (Updated July 31, 2014, 8:06 a.m.) > > > Review request for mesos, Benjamin Hindman, Ian Downes, and Jie Yu. > > > Repository: mesos-git > > > Description > ------- > > Docker implementation. > This is all the docker code Ben, I and Yifan worked on excluding the > composing containerizer patches. > > > Diffs > ----- > > src/Makefile.am 45afcd1 > src/common/status_utils.hpp 1980551 > src/docker/docker.hpp PRE-CREATION > src/docker/docker.cpp PRE-CREATION > src/examples/docker_no_executor_framework.cpp PRE-CREATION > src/health-check/main.cpp 707810a > src/launcher/executor.cpp 9c80848 > src/linux/cgroups.hpp decad9d > src/linux/cgroups.cpp 6a73dd7 > src/master/master.cpp 251b699 > src/slave/containerizer/containerizer.cpp 1b71f33 > src/slave/containerizer/docker.hpp PRE-CREATION > src/slave/containerizer/docker.cpp PRE-CREATION > src/slave/containerizer/external_containerizer.cpp 3f28d85 > src/slave/containerizer/isolators/cgroups/cpushare.hpp 780037b > src/slave/containerizer/isolators/cgroups/cpushare.cpp 3265a80 > src/slave/containerizer/isolators/cgroups/mem.hpp 8c476c7 > src/slave/containerizer/isolators/cgroups/mem.cpp e8d1e35 > src/slave/containerizer/isolators/posix.hpp 17bbd10 > src/slave/flags.hpp 1fe7b7d > src/slave/slave.cpp f42ab60 > src/tests/cgroups_tests.cpp 01cf498 > src/tests/docker_containerizer_tests.cpp PRE-CREATION > src/tests/docker_tests.cpp PRE-CREATION > src/tests/environment.cpp 434b3f7 > src/tests/flags.hpp a003e7f > src/tests/script.cpp 15a6542 > src/usage/usage.hpp 5a76746 > src/usage/usage.cpp 29014d1 > > Diff: https://reviews.apache.org/r/23771/diff/ > > > Testing > ------- > > make check > > > Thanks, > > Timothy Chen > >
