You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by jo...@apache.org on 2016/10/12 21:42:33 UTC
[3/3] mesos git commit: Supported `ContainerLogger` with nested
containers.
Supported `ContainerLogger` with nested containers.
For nested containers, the sandbox directory still exists. However,
ExecutorInfo's no longer map directly one-to-one to containers.
That means a nested container does not have an associated ExecutorInfo.
The `ExecutorInfo` parameter provides metadata for the `ContainerLogger`
including the FrameworkID, ExecutorID, environment variables, and
arbitrary Labels. For nested containers, the top-level parent's
`ExecutorInfo` should be sufficient to provide the same metadata.
Review: https://reviews.apache.org/r/52412/
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/1e514ca0
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/1e514ca0
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/1e514ca0
Branch: refs/heads/master
Commit: 1e514ca023526f949e0ed5b91d43636a1b2fd172
Parents: 9588a60
Author: Gilbert Song <so...@gmail.com>
Authored: Wed Oct 12 14:38:43 2016 -0700
Committer: Joseph Wu <jo...@apache.org>
Committed: Wed Oct 12 14:41:30 2016 -0700
----------------------------------------------------------------------
src/slave/containerizer/mesos/containerizer.cpp | 21 +++++++++++++++++++-
1 file changed, 20 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/1e514ca0/src/slave/containerizer/mesos/containerizer.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/containerizer.cpp b/src/slave/containerizer/mesos/containerizer.cpp
index 7ec6f78..f5a4858 100644
--- a/src/slave/containerizer/mesos/containerizer.cpp
+++ b/src/slave/containerizer/mesos/containerizer.cpp
@@ -1333,8 +1333,27 @@ Future<bool> MesosContainerizerProcess::_launch(
environment.values[name] = value;
}
+ // Determine the 'ExecutorInfo' for the logger. If launching a
+ // top level executor container, use the 'ExecutorInfo' from
+ // 'ContainerConfig'. If launching a nested container, use the
+ // 'ExecutorInfo' from its top level parent container.
+ ExecutorInfo executorInfo;
+ if (container->config.has_executor_info()) {
+ // The top level executor container case. The 'ExecutorInfo'
+ // will always be set in 'ContainerConfig'.
+ executorInfo = container->config.executor_info();
+ } else {
+ // The nested container case. Use the 'ExecutorInfo' from its root
+ // parent container.
+ CHECK(containerId.has_parent());
+ const ContainerID& rootContainerId = getRootContainerId(containerId);
+ CHECK(containers_.contains(rootContainerId));
+ CHECK(containers_[rootContainerId]->config.has_executor_info());
+ executorInfo = containers_[rootContainerId]->config.executor_info();
+ }
+
return logger->prepare(
- container->config.executor_info(),
+ executorInfo,
container->config.directory())
.then(defer(
self(),