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 2016/11/24 23:52:10 UTC
mesos git commit: Redirected mesos containerizer 'local' flag through
IOSwitchboard.
Repository: mesos
Updated Branches:
refs/heads/master 9d73fe7e4 -> 448a88d33
Redirected mesos containerizer 'local' flag through IOSwitchboard.
Review: https://reviews.apache.org/r/54067/
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/448a88d3
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/448a88d3
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/448a88d3
Branch: refs/heads/master
Commit: 448a88d337fe01ac1c42c170147c33c249d48be6
Parents: 9d73fe7
Author: Jie Yu <yu...@gmail.com>
Authored: Thu Nov 24 14:48:08 2016 -0800
Committer: Jie Yu <yu...@gmail.com>
Committed: Thu Nov 24 15:44:58 2016 -0800
----------------------------------------------------------------------
src/slave/containerizer/mesos/containerizer.cpp | 15 ++++--------
src/slave/containerizer/mesos/containerizer.hpp | 4 ----
.../containerizer/mesos/io/switchboard.cpp | 22 ++++++++++++++---
.../containerizer/mesos/io/switchboard.hpp | 5 +++-
.../docker_volume_isolator_tests.cpp | 5 ++--
.../containerizer/mesos_containerizer_tests.cpp | 25 +++++++-------------
6 files changed, 40 insertions(+), 36 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/448a88d3/src/slave/containerizer/mesos/containerizer.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/containerizer.cpp b/src/slave/containerizer/mesos/containerizer.cpp
index dff95a5..9b33495 100644
--- a/src/slave/containerizer/mesos/containerizer.cpp
+++ b/src/slave/containerizer/mesos/containerizer.cpp
@@ -207,7 +207,8 @@ Try<MesosContainerizer*> MesosContainerizer::create(
LOG(INFO) << "Using isolation: " << flags_.isolation;
// Create the container io switchboard for the MesosContainerizer.
- Try<Owned<IOSwitchboard>> ioSwitchboard = IOSwitchboard::create(flags_);
+ Try<Owned<IOSwitchboard>> ioSwitchboard =
+ IOSwitchboard::create(flags_, local);
if (ioSwitchboard.isError()) {
return Error("Failed to create container io switchboard:"
@@ -391,7 +392,6 @@ Try<MesosContainerizer*> MesosContainerizer::create(
return new MesosContainerizer(
flags_,
- local,
fetcher,
ioSwitchboard.get(),
Owned<Launcher>(launcher.get()),
@@ -402,7 +402,6 @@ Try<MesosContainerizer*> MesosContainerizer::create(
MesosContainerizer::MesosContainerizer(
const Flags& flags,
- bool local,
Fetcher* fetcher,
const Owned<IOSwitchboard>& ioSwitchboard,
const Owned<Launcher>& launcher,
@@ -410,7 +409,6 @@ MesosContainerizer::MesosContainerizer(
const vector<Owned<Isolator>>& isolators)
: process(new MesosContainerizerProcess(
flags,
- local,
fetcher,
ioSwitchboard,
launcher,
@@ -1566,12 +1564,9 @@ Future<bool> MesosContainerizerProcess::_launch(
containerId,
path::join(flags.launcher_dir, MESOS_CONTAINERIZER),
argv,
- (local ? Subprocess::FD(STDIN_FILENO)
- : Subprocess::IO(subprocessInfo.in)),
- (local ? Subprocess::FD(STDOUT_FILENO)
- : Subprocess::IO(subprocessInfo.out)),
- (local ? Subprocess::FD(STDERR_FILENO)
- : Subprocess::IO(subprocessInfo.err)),
+ Subprocess::IO(subprocessInfo.in),
+ Subprocess::IO(subprocessInfo.out),
+ Subprocess::IO(subprocessInfo.err),
&launchFlags,
launchEnvironment,
// 'enterNamespaces' will be ignored by PosixLauncher.
http://git-wip-us.apache.org/repos/asf/mesos/blob/448a88d3/src/slave/containerizer/mesos/containerizer.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/containerizer.hpp b/src/slave/containerizer/mesos/containerizer.hpp
index cfa1e07..45986c5 100644
--- a/src/slave/containerizer/mesos/containerizer.hpp
+++ b/src/slave/containerizer/mesos/containerizer.hpp
@@ -63,7 +63,6 @@ public:
MesosContainerizer(
const Flags& flags,
- bool local,
Fetcher* fetcher,
const process::Owned<IOSwitchboard>& ioSwitchboard,
const process::Owned<Launcher>& launcher,
@@ -128,7 +127,6 @@ class MesosContainerizerProcess
public:
MesosContainerizerProcess(
const Flags& _flags,
- bool _local,
Fetcher* _fetcher,
const process::Owned<IOSwitchboard>& _ioSwitchboard,
const process::Owned<Launcher>& _launcher,
@@ -136,7 +134,6 @@ public:
const std::vector<process::Owned<mesos::slave::Isolator>>& _isolators)
: ProcessBase(process::ID::generate("mesos-containerizer")),
flags(_flags),
- local(_local),
fetcher(_fetcher),
ioSwitchboard(_ioSwitchboard),
launcher(_launcher),
@@ -295,7 +292,6 @@ private:
const ContainerID& containerId);
const Flags flags;
- const bool local;
Fetcher* fetcher;
const process::Owned<IOSwitchboard> ioSwitchboard;
const process::Owned<Launcher> launcher;
http://git-wip-us.apache.org/repos/asf/mesos/blob/448a88d3/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 12265fb..25cbf24 100644
--- a/src/slave/containerizer/mesos/io/switchboard.cpp
+++ b/src/slave/containerizer/mesos/io/switchboard.cpp
@@ -48,6 +48,7 @@ class IOSwitchboardProcess: public Process<IOSwitchboardProcess>
public:
IOSwitchboardProcess(
const Flags& flags,
+ bool local,
const Owned<ContainerLogger>& logger);
Future<IOSwitchboard::SubprocessInfo> prepare(
@@ -57,6 +58,7 @@ public:
private:
const Flags flags;
+ bool local;
Owned<mesos::slave::ContainerLogger> logger;
};
@@ -67,7 +69,9 @@ IOSwitchboard::SubprocessInfo::SubprocessInfo()
err(Subprocess::FD(STDERR_FILENO, Subprocess::IO::OWNED)) {}
-Try<Owned<IOSwitchboard>> IOSwitchboard::create(const Flags& flags)
+Try<Owned<IOSwitchboard>> IOSwitchboard::create(
+ const Flags& flags,
+ bool local)
{
Try<ContainerLogger*> logger =
ContainerLogger::create(flags.container_logger);
@@ -76,14 +80,15 @@ Try<Owned<IOSwitchboard>> IOSwitchboard::create(const Flags& flags)
return Error("Cannot create container logger: " + logger.error());
}
- return new IOSwitchboard(flags, Owned<ContainerLogger>(logger.get()));
+ return new IOSwitchboard(flags, local, Owned<ContainerLogger>(logger.get()));
}
IOSwitchboard::IOSwitchboard(
const Flags& flags,
+ bool local,
const Owned<ContainerLogger>& logger)
- : process(new IOSwitchboardProcess(flags, logger))
+ : process(new IOSwitchboardProcess(flags, local, logger))
{
spawn(process.get());
}
@@ -112,8 +117,10 @@ Future<IOSwitchboard::SubprocessInfo> IOSwitchboard::prepare(
IOSwitchboardProcess::IOSwitchboardProcess(
const Flags& _flags,
+ bool _local,
const Owned<ContainerLogger>& _logger)
: flags(_flags),
+ local(_local),
logger(_logger) {}
@@ -122,6 +129,15 @@ Future<IOSwitchboard::SubprocessInfo> IOSwitchboardProcess::prepare(
const std::string& sandboxDirectory,
const Option<std::string>& user)
{
+ if (local) {
+ IOSwitchboard::SubprocessInfo ioSwitchboardInfo;
+ ioSwitchboardInfo.in = Subprocess::FD(STDIN_FILENO);
+ ioSwitchboardInfo.out = Subprocess::FD(STDOUT_FILENO);
+ ioSwitchboardInfo.err = Subprocess::FD(STDERR_FILENO);
+
+ return ioSwitchboardInfo;
+ }
+
return logger->prepare(executorInfo, sandboxDirectory, user)
.then(defer(self(), [](const ContainerLogger::SubprocessInfo& loggerInfo)
-> Future<IOSwitchboard::SubprocessInfo> {
http://git-wip-us.apache.org/repos/asf/mesos/blob/448a88d3/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 6f87896..aaa3a35 100644
--- a/src/slave/containerizer/mesos/io/switchboard.hpp
+++ b/src/slave/containerizer/mesos/io/switchboard.hpp
@@ -54,7 +54,9 @@ public:
process::Subprocess::IO err;
};
- static Try<process::Owned<IOSwitchboard>> create(const Flags& flags);
+ static Try<process::Owned<IOSwitchboard>> create(
+ const Flags& flags,
+ bool local);
~IOSwitchboard();
@@ -66,6 +68,7 @@ public:
private:
explicit IOSwitchboard(
const Flags& flags,
+ bool local,
const process::Owned<mesos::slave::ContainerLogger>& logger);
process::Owned<IOSwitchboardProcess> process;
http://git-wip-us.apache.org/repos/asf/mesos/blob/448a88d3/src/tests/containerizer/docker_volume_isolator_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/containerizer/docker_volume_isolator_tests.cpp b/src/tests/containerizer/docker_volume_isolator_tests.cpp
index 251e700..7c0349e 100644
--- a/src/tests/containerizer/docker_volume_isolator_tests.cpp
+++ b/src/tests/containerizer/docker_volume_isolator_tests.cpp
@@ -195,7 +195,9 @@ protected:
Owned<Launcher> launcher(launcher_.get());
- Try<Owned<IOSwitchboard>> ioSwitchboard = IOSwitchboard::create(flags);
+ Try<Owned<IOSwitchboard>> ioSwitchboard =
+ IOSwitchboard::create(flags, false);
+
if (ioSwitchboard.isError()) {
return Error("Failed to create container io switchboard:"
" " + ioSwitchboard.error());
@@ -209,7 +211,6 @@ protected:
return Owned<MesosContainerizer>(
new MesosContainerizer(
flags,
- false,
&fetcher,
std::move(ioSwitchboard.get()),
std::move(launcher),
http://git-wip-us.apache.org/repos/asf/mesos/blob/448a88d3/src/tests/containerizer/mesos_containerizer_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/containerizer/mesos_containerizer_tests.cpp b/src/tests/containerizer/mesos_containerizer_tests.cpp
index b4033b2..712bf75 100644
--- a/src/tests/containerizer/mesos_containerizer_tests.cpp
+++ b/src/tests/containerizer/mesos_containerizer_tests.cpp
@@ -289,7 +289,9 @@ public:
Owned<Launcher> launcher(launcher_.get());
// Create and initialize a new container io switchboard.
- Try<Owned<IOSwitchboard>> ioSwitchboard = IOSwitchboard::create(flags);
+ Try<Owned<IOSwitchboard>> ioSwitchboard =
+ IOSwitchboard::create(flags, false);
+
if (ioSwitchboard.isError()) {
return Error("Failed to create container io switchboard:"
" " + ioSwitchboard.error());
@@ -302,7 +304,6 @@ public:
return new MesosContainerizer(
flags,
- false,
fetcher,
std::move(ioSwitchboard.get()),
std::move(launcher),
@@ -720,7 +721,6 @@ class MockMesosContainerizerProcess : public MesosContainerizerProcess
public:
MockMesosContainerizerProcess(
const slave::Flags& flags,
- bool local,
Fetcher* fetcher,
const Owned<IOSwitchboard>& ioSwitchboard,
const Owned<Launcher>& launcher,
@@ -728,7 +728,6 @@ public:
const vector<Owned<Isolator>>& isolators)
: MesosContainerizerProcess(
flags,
- local,
fetcher,
ioSwitchboard,
launcher,
@@ -773,7 +772,7 @@ TEST_F(MesosContainerizerDestroyTest, DestroyWhileFetching)
Fetcher fetcher;
- Try<Owned<IOSwitchboard>> ioSwitchboard = IOSwitchboard::create(flags);
+ Try<Owned<IOSwitchboard>> ioSwitchboard = IOSwitchboard::create(flags, true);
ASSERT_SOME(ioSwitchboard);
Try<Owned<Provisioner>> provisioner = Provisioner::create(flags);
@@ -781,7 +780,6 @@ TEST_F(MesosContainerizerDestroyTest, DestroyWhileFetching)
MockMesosContainerizerProcess* process = new MockMesosContainerizerProcess(
flags,
- true,
&fetcher,
std::move(ioSwitchboard.get()),
std::move(launcher),
@@ -852,7 +850,7 @@ TEST_F(MesosContainerizerDestroyTest, DestroyWhilePreparing)
Fetcher fetcher;
- Try<Owned<IOSwitchboard>> ioSwitchboard = IOSwitchboard::create(flags);
+ Try<Owned<IOSwitchboard>> ioSwitchboard = IOSwitchboard::create(flags, true);
ASSERT_SOME(ioSwitchboard);
Try<Owned<Provisioner>> provisioner = Provisioner::create(flags);
@@ -860,7 +858,6 @@ TEST_F(MesosContainerizerDestroyTest, DestroyWhilePreparing)
MockMesosContainerizerProcess* process = new MockMesosContainerizerProcess(
flags,
- true,
&fetcher,
std::move(ioSwitchboard.get()),
std::move(launcher),
@@ -980,12 +977,11 @@ TEST_F(MesosContainerizerProvisionerTest, ProvisionFailed)
Fetcher fetcher;
- Try<Owned<IOSwitchboard>> ioSwitchboard = IOSwitchboard::create(flags);
+ Try<Owned<IOSwitchboard>> ioSwitchboard = IOSwitchboard::create(flags, true);
ASSERT_SOME(ioSwitchboard);
MesosContainerizerProcess* process = new MesosContainerizerProcess(
flags,
- true,
&fetcher,
std::move(ioSwitchboard.get()),
std::move(launcher),
@@ -1073,12 +1069,11 @@ TEST_F(MesosContainerizerProvisionerTest, DestroyWhileProvisioning)
Fetcher fetcher;
- Try<Owned<IOSwitchboard>> ioSwitchboard = IOSwitchboard::create(flags);
+ Try<Owned<IOSwitchboard>> ioSwitchboard = IOSwitchboard::create(flags, true);
ASSERT_SOME(ioSwitchboard);
MesosContainerizerProcess* process = new MesosContainerizerProcess(
flags,
- true,
&fetcher,
std::move(ioSwitchboard.get()),
std::move(launcher),
@@ -1173,12 +1168,11 @@ TEST_F(MesosContainerizerProvisionerTest, IsolatorCleanupBeforePrepare)
Fetcher fetcher;
- Try<Owned<IOSwitchboard>> ioSwitchboard = IOSwitchboard::create(flags);
+ Try<Owned<IOSwitchboard>> ioSwitchboard = IOSwitchboard::create(flags, true);
ASSERT_SOME(ioSwitchboard);
MesosContainerizerProcess* process = new MesosContainerizerProcess(
flags,
- true,
&fetcher,
std::move(ioSwitchboard.get()),
std::move(launcher),
@@ -1268,7 +1262,7 @@ TEST_F(MesosContainerizerDestroyTest, LauncherDestroyFailure)
Fetcher fetcher;
- Try<Owned<IOSwitchboard>> ioSwitchboard = IOSwitchboard::create(flags);
+ Try<Owned<IOSwitchboard>> ioSwitchboard = IOSwitchboard::create(flags, true);
ASSERT_SOME(ioSwitchboard);
Try<Owned<Provisioner>> provisioner = Provisioner::create(flags);
@@ -1276,7 +1270,6 @@ TEST_F(MesosContainerizerDestroyTest, LauncherDestroyFailure)
MesosContainerizerProcess* process = new MesosContainerizerProcess(
flags,
- true,
&fetcher,
std::move(ioSwitchboard.get()),
std::move(launcher),