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 2017/11/15 08:13:37 UTC

[13/15] mesos git commit: Updated Docker path for Containerizer::launch interface change.

Updated Docker path for Containerizer::launch interface change.

The change in the return type for Containerizer::launch has less of an
impact on the Docker containerizer, as it (currently) will not return
the "new" enum 'ALREADY_LAUNCHED'.

Note that in changing Containerizer::launch, a private helper of the
Docker containerizer `reapExecutor`s return value was changed.
The return value was originally `Future<bool>` because `reapExecutor`
is the final continuation in the launch path so it needed to match
the return value of Containerizer::launch.  However, `reapExecutor`
never returns `false` (only `true` or a Failure).

Review: https://reviews.apache.org/r/63781


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/6f3a5761
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/6f3a5761
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/6f3a5761

Branch: refs/heads/master
Commit: 6f3a57612391e7c81a6decd1258a10dc7ec08d11
Parents: feefdba
Author: Joseph Wu <jo...@apache.org>
Authored: Mon Nov 13 15:18:23 2017 -0800
Committer: Joseph Wu <jo...@apache.org>
Committed: Tue Nov 14 17:16:22 2017 -0800

----------------------------------------------------------------------
 src/slave/containerizer/docker.cpp | 24 +++++++++++++++---------
 src/slave/containerizer/docker.hpp | 10 +++++-----
 2 files changed, 20 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/6f3a5761/src/slave/containerizer/docker.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/docker.cpp b/src/slave/containerizer/docker.cpp
index 292eecb..63432a9 100644
--- a/src/slave/containerizer/docker.cpp
+++ b/src/slave/containerizer/docker.cpp
@@ -802,7 +802,7 @@ Future<Nothing> DockerContainerizer::recover(
 }
 
 
-Future<bool> DockerContainerizer::launch(
+Future<Containerizer::LaunchResult> DockerContainerizer::launch(
     const ContainerID& containerId,
     const ContainerConfig& containerConfig,
     const map<string, string>& environment,
@@ -1096,7 +1096,7 @@ Future<Nothing> DockerContainerizerProcess::__recover(
 }
 
 
-Future<bool> DockerContainerizerProcess::launch(
+Future<Containerizer::LaunchResult> DockerContainerizerProcess::launch(
     const ContainerID& containerId,
     const ContainerConfig& containerConfig,
     const map<string, string>& environment,
@@ -1112,12 +1112,12 @@ Future<bool> DockerContainerizerProcess::launch(
 
   if (!containerConfig.has_container_info()) {
     LOG(INFO) << "No container info found, skipping launch";
-    return false;
+    return Containerizer::LaunchResult::NOT_SUPPORTED;
   }
 
   if (containerConfig.container_info().type() != ContainerInfo::DOCKER) {
     LOG(INFO) << "Skipping non-docker container";
-    return false;
+    return Containerizer::LaunchResult::NOT_SUPPORTED;
   }
 
   Try<Container*> container = Container::create(
@@ -1223,7 +1223,7 @@ Future<bool> DockerContainerizerProcess::launch(
 }
 
 
-Future<bool> DockerContainerizerProcess::_launch(
+Future<Containerizer::LaunchResult> DockerContainerizerProcess::_launch(
     const ContainerID& containerId,
     const ContainerConfig& containerConfig)
 {
@@ -1257,7 +1257,10 @@ Future<bool> DockerContainerizerProcess::_launch(
       }))
       .then(defer(self(), [=](pid_t pid) {
         return reapExecutor(containerId, pid);
-      }));
+      }))
+      .then([]() {
+        return Containerizer::LaunchResult::SUCCESS;
+      });
   }
 
   string containerName = container->containerName;
@@ -1305,7 +1308,10 @@ Future<bool> DockerContainerizerProcess::_launch(
     }))
     .then(defer(self(), [=](pid_t pid) {
       return reapExecutor(containerId, pid);
-    }));
+    }))
+    .then([]() {
+      return Containerizer::LaunchResult::SUCCESS;
+    });
 }
 
 
@@ -1583,7 +1589,7 @@ Future<pid_t> DockerContainerizerProcess::checkpointExecutor(
 }
 
 
-Future<bool> DockerContainerizerProcess::reapExecutor(
+Future<Nothing> DockerContainerizerProcess::reapExecutor(
     const ContainerID& containerId,
     pid_t pid)
 {
@@ -1599,7 +1605,7 @@ Future<bool> DockerContainerizerProcess::reapExecutor(
   container->status.future().get()
     .onAny(defer(self(), &Self::reaped, containerId));
 
-  return true;
+  return Nothing();
 }
 
 

http://git-wip-us.apache.org/repos/asf/mesos/blob/6f3a5761/src/slave/containerizer/docker.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/docker.hpp b/src/slave/containerizer/docker.hpp
index b602a56..105c068 100644
--- a/src/slave/containerizer/docker.hpp
+++ b/src/slave/containerizer/docker.hpp
@@ -86,7 +86,7 @@ public:
   virtual process::Future<Nothing> recover(
       const Option<state::SlaveState>& state);
 
-  virtual process::Future<bool> launch(
+  virtual process::Future<Containerizer::LaunchResult> launch(
       const ContainerID& containerId,
       const mesos::slave::ContainerConfig& containerConfig,
       const std::map<std::string, std::string>& environment,
@@ -134,7 +134,7 @@ public:
   virtual process::Future<Nothing> recover(
       const Option<state::SlaveState>& state);
 
-  virtual process::Future<bool> launch(
+  virtual process::Future<Containerizer::LaunchResult> launch(
       const ContainerID& containerId,
       const mesos::slave::ContainerConfig& containerConfig,
       const std::map<std::string, std::string>& environment,
@@ -176,7 +176,7 @@ private:
       const ContainerID& containerId,
       pid_t pid);
 
-  process::Future<bool> _launch(
+  process::Future<Containerizer::LaunchResult> _launch(
       const ContainerID& containerId,
       const mesos::slave::ContainerConfig& containerConfig);
 
@@ -201,7 +201,7 @@ private:
       const Docker::Container& dockerContainer);
 
   // Reaps on the executor pid.
-  process::Future<bool> reapExecutor(
+  process::Future<Nothing> reapExecutor(
       const ContainerID& containerId,
       pid_t pid);
 
@@ -471,7 +471,7 @@ private:
 
     // Future that tells us the return value of last launch stage (fetch, pull,
     // run, etc).
-    process::Future<bool> launch;
+    process::Future<Containerizer::LaunchResult> launch;
 
     // We keep track of the resources for each container so we can set
     // the ResourceStatistics limits in usage(). Note that this is