You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by ji...@apache.org on 2014/09/05 01:58:31 UTC
git commit: Improved the error message when destroying a container.
Repository: mesos
Updated Branches:
refs/heads/master 803031d94 -> 59e257f46
Improved the error message when destroying a container.
Review: https://reviews.apache.org/r/25344
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/59e257f4
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/59e257f4
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/59e257f4
Branch: refs/heads/master
Commit: 59e257f4652c3de096a0665de2e566dcb6d57064
Parents: 803031d
Author: Jie Yu <yu...@gmail.com>
Authored: Thu Sep 4 10:01:05 2014 -0700
Committer: Jie Yu <yu...@gmail.com>
Committed: Thu Sep 4 16:56:54 2014 -0700
----------------------------------------------------------------------
src/linux/cgroups.cpp | 28 ++++++++++++++++----
.../isolators/cgroups/perf_event.cpp | 3 +--
src/slave/containerizer/linux_launcher.cpp | 18 +++----------
src/slave/containerizer/mesos/containerizer.cpp | 1 -
4 files changed, 27 insertions(+), 23 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/59e257f4/src/linux/cgroups.cpp
----------------------------------------------------------------------
diff --git a/src/linux/cgroups.cpp b/src/linux/cgroups.cpp
index 989e307..c6464ab 100644
--- a/src/linux/cgroups.cpp
+++ b/src/linux/cgroups.cpp
@@ -1705,16 +1705,34 @@ Future<Nothing> destroy(const string& hierarchy, const string& cgroup)
}
-namespace {
+static void __destroy(
+ const Future<Nothing>& future,
+ const Owned<Promise<Nothing> >& promise,
+ const Duration& timeout)
+{
+ if (future.isReady()) {
+ promise->set(future.get());
+ } else if (future.isFailed()) {
+ promise->fail(future.failure());
+ } else {
+ promise->fail("Timed out after " + stringify(timeout));
+ }
+}
-Future<Nothing> discard(Future<Nothing> future)
+
+static Future<Nothing> _destroy(
+ Future<Nothing> future,
+ const Duration& timeout)
{
+ Owned<Promise<Nothing> > promise(new Promise<Nothing>());
+ Future<Nothing> _future = promise->future();
+
future.discard();
+ future.onAny(lambda::bind(&__destroy, lambda::_1, promise, timeout));
- return future;
+ return _future;
}
-} // namespace {
Future<Nothing> destroy(
const string& hierarchy,
@@ -1722,7 +1740,7 @@ Future<Nothing> destroy(
const Duration& timeout)
{
return destroy(hierarchy, cgroup)
- .after(timeout, lambda::bind(&discard, lambda::_1));
+ .after(timeout, lambda::bind(&_destroy, lambda::_1, timeout));
}
http://git-wip-us.apache.org/repos/asf/mesos/blob/59e257f4/src/slave/containerizer/isolators/cgroups/perf_event.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/isolators/cgroups/perf_event.cpp b/src/slave/containerizer/isolators/cgroups/perf_event.cpp
index 6f65b72..ff047d3 100644
--- a/src/slave/containerizer/isolators/cgroups/perf_event.cpp
+++ b/src/slave/containerizer/isolators/cgroups/perf_event.cpp
@@ -329,8 +329,7 @@ Future<Nothing> CgroupsPerfEventIsolatorProcess::cleanup(
Future<Nothing> CgroupsPerfEventIsolatorProcess::_cleanup(
const ContainerID& containerId)
{
- if (!infos.contains(containerId))
- {
+ if (!infos.contains(containerId)) {
return Nothing();
}
http://git-wip-us.apache.org/repos/asf/mesos/blob/59e257f4/src/slave/containerizer/linux_launcher.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/linux_launcher.cpp b/src/slave/containerizer/linux_launcher.cpp
index f3cc813..ea6ddba 100644
--- a/src/slave/containerizer/linux_launcher.cpp
+++ b/src/slave/containerizer/linux_launcher.cpp
@@ -333,26 +333,14 @@ Try<pid_t> LinuxLauncher::fork(
}
-Future<Nothing> _destroy(
- const ContainerID& containerId,
- const process::Future<Nothing>& destroyed)
-{
- if (!destroyed.isReady()) {
- return Failure("Failed to destroy launcher: " +
- (destroyed.isFailed() ? destroyed.failure() : "discarded"));
- }
-
- return Nothing();
-}
-
-
Future<Nothing> LinuxLauncher::destroy(const ContainerID& containerId)
{
pids.erase(containerId);
return cgroups::destroy(
- hierarchy, cgroup(containerId), cgroups::DESTROY_TIMEOUT)
- .onAny(lambda::bind(&_destroy, containerId, lambda::_1));
+ hierarchy,
+ cgroup(containerId),
+ cgroups::DESTROY_TIMEOUT);
}
http://git-wip-us.apache.org/repos/asf/mesos/blob/59e257f4/src/slave/containerizer/mesos/containerizer.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/containerizer.cpp b/src/slave/containerizer/mesos/containerizer.cpp
index 5116b14..9d08329 100644
--- a/src/slave/containerizer/mesos/containerizer.cpp
+++ b/src/slave/containerizer/mesos/containerizer.cpp
@@ -909,7 +909,6 @@ void MesosContainerizerProcess::_destroy(
(future.isFailed() ? future.failure() : "discarded future"));
destroying.erase(containerId);
-
return;
}