Updated IOSwitchboard to block IO until connected for DEBUG containers. Review: https://reviews.apache.org/r/54241/
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/18845afb Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/18845afb Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/18845afb Branch: refs/heads/master Commit: 18845afb7f02b0ec92d106e445827f92d3b02329 Parents: 326e23a Author: Kevin Klues <klue...@gmail.com> Authored: Thu Dec 1 11:21:47 2016 -0800 Committer: Jie Yu <yujie....@gmail.com> Committed: Thu Dec 1 12:09:36 2016 -0800 ---------------------------------------------------------------------- src/slave/containerizer/mesos/io/switchboard.cpp | 12 +++++++++++- src/slave/containerizer/mesos/io/switchboard.hpp | 1 + 2 files changed, 12 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mesos/blob/18845afb/src/slave/containerizer/mesos/io/switchboard.cpp ---------------------------------------------------------------------- diff --git a/src/slave/containerizer/mesos/io/switchboard.cpp b/src/slave/containerizer/mesos/io/switchboard.cpp index c4c9fc7..3e1c8bb 100644 --- a/src/slave/containerizer/mesos/io/switchboard.cpp +++ b/src/slave/containerizer/mesos/io/switchboard.cpp @@ -43,6 +43,7 @@ #include <mesos/agent/agent.hpp> +#include <mesos/slave/containerizer.hpp> #include <mesos/slave/container_logger.hpp> #include "common/http.hpp" @@ -76,6 +77,7 @@ using std::string; using std::vector; using mesos::slave::ContainerConfig; +using mesos::slave::ContainerClass; using mesos::slave::ContainerIO; using mesos::slave::ContainerLaunchInfo; using mesos::slave::ContainerLogger; @@ -145,12 +147,14 @@ Future<Option<ContainerLaunchInfo>> IOSwitchboard::prepare( PID<IOSwitchboard>(this), &IOSwitchboard::_prepare, containerId, + containerConfig, lambda::_1)); } Future<Option<ContainerLaunchInfo>> IOSwitchboard::_prepare( const ContainerID& containerId, + const ContainerConfig& containerConfig, const ContainerLogger::SubprocessInfo& loggerInfo) { // On windows, we do not yet support running an io switchboard @@ -281,7 +285,13 @@ Future<Option<ContainerLaunchInfo>> IOSwitchboard::_prepare( switchboardFlags.stdout_to_fd = STDOUT_FILENO; switchboardFlags.stderr_from_fd = errfds[0]; switchboardFlags.stderr_to_fd = STDERR_FILENO; - switchboardFlags.wait_for_connection = false; + + if (containerConfig.container_class() == ContainerClass::DEBUG) { + switchboardFlags.wait_for_connection = true; + } else { + switchboardFlags.wait_for_connection = false; + } + switchboardFlags.socket_path = path::join( stringify(os::PATH_SEPARATOR), "tmp", http://git-wip-us.apache.org/repos/asf/mesos/blob/18845afb/src/slave/containerizer/mesos/io/switchboard.hpp ---------------------------------------------------------------------- diff --git a/src/slave/containerizer/mesos/io/switchboard.hpp b/src/slave/containerizer/mesos/io/switchboard.hpp index c0db39b..23c66bb 100644 --- a/src/slave/containerizer/mesos/io/switchboard.hpp +++ b/src/slave/containerizer/mesos/io/switchboard.hpp @@ -88,6 +88,7 @@ private: process::Future<Option<mesos::slave::ContainerLaunchInfo>> _prepare( const ContainerID& containerId, + const mesos::slave::ContainerConfig& containerConfig, const mesos::slave::ContainerLogger::SubprocessInfo& loggerInfo); Flags flags;