Repository: mesos
Updated Branches:
  refs/heads/master 2f019d801 -> ae513df1e


Fixed a bug related to logger in MesosContainerizer.

It's possible that 'destroy' is called while logger 'prepare' is being
called. If that happens, when logger 'prepare' finishes, it'll trigger
an assertion failure.

Review: https://reviews.apache.org/r/51391


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/ae513df1
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/ae513df1
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/ae513df1

Branch: refs/heads/master
Commit: ae513df1e64ecea1eb7bbaa0ca80abebde09dafa
Parents: a58adcf
Author: Jie Yu <yujie....@gmail.com>
Authored: Wed Aug 24 14:03:33 2016 -0700
Committer: Jie Yu <yujie....@gmail.com>
Committed: Wed Aug 24 22:23:38 2016 -0700

----------------------------------------------------------------------
 src/slave/containerizer/mesos/containerizer.cpp | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/ae513df1/src/slave/containerizer/mesos/containerizer.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/containerizer.cpp 
b/src/slave/containerizer/mesos/containerizer.cpp
index 7a967dd..e87292f 100644
--- a/src/slave/containerizer/mesos/containerizer.cpp
+++ b/src/slave/containerizer/mesos/containerizer.cpp
@@ -1163,7 +1163,14 @@ Future<bool> MesosContainerizerProcess::_launch(
         self(),
         [=](const ContainerLogger::SubprocessInfo& subprocessInfo)
           -> Future<bool> {
-    CHECK(containers_.contains(containerId));
+    if (!containers_.contains(containerId)) {
+      return Failure("Container destroyed during preparing");
+    }
+
+    if (containers_[containerId]->state == DESTROYING) {
+      return Failure("Container is being destroyed during preparing");
+    }
+
     const Owned<Container>& container = containers_[containerId];
 
     // Use a pipe to block the child until it's been isolated.

Reply via email to