You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by ti...@apache.org on 2014/05/23 03:56:22 UTC
git commit: Fixed concurrent destroy invocations on the
ExternalContainerizer.
Repository: mesos
Updated Branches:
refs/heads/master 1e8e63f33 -> 0aa8ddd0c
Fixed concurrent destroy invocations on the ExternalContainerizer.
Review: https://reviews.apache.org/r/21680
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/0aa8ddd0
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/0aa8ddd0
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/0aa8ddd0
Branch: refs/heads/master
Commit: 0aa8ddd0c8acb893d29073109c2ca4c61a8a1d23
Parents: 1e8e63f
Author: Till Toenshoff <to...@me.com>
Authored: Fri May 23 03:54:55 2014 +0200
Committer: Till Toenshoff <to...@me.com>
Committed: Fri May 23 03:54:55 2014 +0200
----------------------------------------------------------------------
src/slave/containerizer/external_containerizer.cpp | 7 +++++++
src/slave/containerizer/external_containerizer.hpp | 6 +++++-
2 files changed, 12 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/0aa8ddd0/src/slave/containerizer/external_containerizer.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/external_containerizer.cpp b/src/slave/containerizer/external_containerizer.cpp
index d684fac..a56653d 100644
--- a/src/slave/containerizer/external_containerizer.cpp
+++ b/src/slave/containerizer/external_containerizer.cpp
@@ -786,6 +786,13 @@ void ExternalContainerizerProcess::_destroy(const ContainerID& containerId)
return;
}
+ if (actives[containerId]->destroying) {
+ LOG(WARNING) << "Container '" << containerId
+ << "' is already being destroyed";
+ return;
+ }
+ actives[containerId]->destroying = true;
+
containerizer::Destroy destroy;
destroy.mutable_container_id()->CopyFrom(containerId);
http://git-wip-us.apache.org/repos/asf/mesos/blob/0aa8ddd0/src/slave/containerizer/external_containerizer.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/external_containerizer.hpp b/src/slave/containerizer/external_containerizer.hpp
index afffff1..7e5474c 100644
--- a/src/slave/containerizer/external_containerizer.hpp
+++ b/src/slave/containerizer/external_containerizer.hpp
@@ -176,7 +176,8 @@ private:
// Information describing a running container.
struct Container
{
- Container(const Sandbox& sandbox) : sandbox(sandbox), pid(None()) {}
+ Container(const Sandbox& sandbox)
+ : sandbox(sandbox), pid(None()), destroying(false) {}
// Keep sandbox information available for subsequent containerizer
// invocations.
@@ -189,6 +190,9 @@ private:
process::Promise<containerizer::Termination> termination;
+ // Is set when container is being destroyed.
+ bool destroying;
+
// As described in MESOS-1251, we need to make sure that events
// that are triggered before launch has completed, are in fact
// queued until then to reduce complexity within external