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;
   }