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),