You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by be...@apache.org on 2014/08/16 03:31:35 UTC
[3/7] git commit: Cleaned up usage of io::read for new semantics.
Cleaned up usage of io::read for new semantics.
Review: https://reviews.apache.org/r/24757
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/0a57d25a
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/0a57d25a
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/0a57d25a
Branch: refs/heads/master
Commit: 0a57d25aafaeac5c1b4eb6f636fc2d68b24666ba
Parents: a8c37d4
Author: Benjamin Hindman <be...@gmail.com>
Authored: Fri Aug 15 15:10:51 2014 -0700
Committer: Benjamin Hindman <be...@gmail.com>
Committed: Fri Aug 15 18:22:01 2014 -0700
----------------------------------------------------------------------
src/docker/docker.cpp | 68 ++++++++++++++++------------------------------
1 file changed, 24 insertions(+), 44 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/0a57d25a/src/docker/docker.cpp
----------------------------------------------------------------------
diff --git a/src/docker/docker.cpp b/src/docker/docker.cpp
index 9ae229a..a4bad5b 100644
--- a/src/docker/docker.cpp
+++ b/src/docker/docker.cpp
@@ -63,23 +63,6 @@ static Future<T> failure(
}
-// Asynchronously read stderr from subprocess.
-static 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: " + nonblock.error());
- }
-
- // TODO(tnachen): Although unlikely, it's possible to not capture
- // the caller's failure message if io::read stderr fails. Can
- // chain a callback to at least log.
- return io::read(s.err().get());
-}
-
-
static Future<Nothing> _checkError(const string& cmd, const Subprocess& s)
{
Option<int> status = s.status().get();
@@ -89,8 +72,9 @@ static Future<Nothing> _checkError(const string& cmd, const Subprocess& s)
if (status.get() != 0) {
// TODO(tnachen): Consider returning stdout as well.
- return err(s).then(
- lambda::bind(failure<Nothing>, cmd, status.get(), lambda::_1));
+ CHECK_SOME(s.err());
+ return io::read(s.err().get())
+ .then(lambda::bind(failure<Nothing>, cmd, status.get(), lambda::_1));
}
return Nothing();
@@ -101,7 +85,8 @@ static Future<Nothing> _checkError(const string& cmd, const Subprocess& s)
// subprocess.
static Future<Nothing> checkError(const string& cmd, const Subprocess& s)
{
- return s.status().then(lambda::bind(_checkError, cmd, s));
+ return s.status()
+ .then(lambda::bind(_checkError, cmd, s));
}
@@ -417,6 +402,7 @@ Future<Nothing> Docker::rm(
Future<Docker::Container> Docker::inspect(const string& container) const
{
const string cmd = path + " inspect " + container;
+
VLOG(1) << "Running " << cmd;
Try<Subprocess> s = subprocess(
@@ -446,22 +432,19 @@ Future<Docker::Container> Docker::_inspect(
if (!status.isSome()) {
return Failure("No status found from '" + cmd + "'");
} else if (status.get() != 0) {
- return err(s).then(
- lambda::bind(
- failure<Docker::Container>,
- cmd,
- status.get(),
- lambda::_1));
+ CHECK_SOME(s.err());
+ return io::read(s.err().get())
+ .then(lambda::bind(
+ failure<Docker::Container>,
+ cmd,
+ status.get(),
+ lambda::_1));
}
// Read to EOF.
CHECK_SOME(s.out());
- Try<Nothing> nonblock = os::nonblock(s.out().get());
- if (nonblock.isError()) {
- return Failure("Failed to accept nonblock stdout:" + nonblock.error());
- }
- Future<string> output = io::read(s.out().get());
- return output.then(lambda::bind(&Docker::__inspect, lambda::_1));
+ return io::read(s.out().get())
+ .then(lambda::bind(&Docker::__inspect, lambda::_1));
}
@@ -576,22 +559,19 @@ Future<list<Docker::Container> > Docker::_ps(
if (!status.isSome()) {
return Failure("No status found from '" + cmd + "'");
} else if (status.get() != 0) {
- return err(s).then(
- lambda::bind(
- failure<list<Docker::Container> >,
- cmd,
- status.get(),
- lambda::_1));
+ CHECK_SOME(s.err());
+ return io::read(s.err().get())
+ .then(lambda::bind(
+ failure<list<Docker::Container> >,
+ cmd,
+ status.get(),
+ lambda::_1));
}
// Read to EOF.
CHECK_SOME(s.out());
- Try<Nothing> nonblock = os::nonblock(s.out().get());
- if (nonblock.isError()) {
- return Failure("Failed to accept nonblock stdout:" + nonblock.error());
- }
- Future<string> output = io::read(s.out().get());
- return output.then(lambda::bind(&Docker::__ps, docker, prefix, lambda::_1));
+ return io::read(s.out().get())
+ .then(lambda::bind(&Docker::__ps, docker, prefix, lambda::_1));
}