You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by an...@apache.org on 2018/03/06 23:24:31 UTC

[6/8] mesos git commit: Fixed Mesos since `os::system()` now returns an `Option`.

Fixed Mesos since `os::system()` now returns an `Option<int>`.

The `os::system()` function now returns `None()` for a launch failure
instead of `-1`, and a `Some(exit_code)` for success.

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


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

Branch: refs/heads/master
Commit: 765c8343813e5c64775bca6757b4cd42356636ad
Parents: 330ddcb
Author: Akash Gupta <ak...@hotmail.com>
Authored: Tue Mar 6 13:11:23 2018 -0800
Committer: Andrew Schwartzmeyer <an...@schwartzmeyer.com>
Committed: Tue Mar 6 13:52:35 2018 -0800

----------------------------------------------------------------------
 src/slave/containerizer/mesos/launch.cpp           | 14 +++++++++-----
 src/tests/containerizer/cgroups_isolator_tests.cpp |  6 +++---
 src/tests/containerizer/memory_pressure_tests.cpp  |  2 +-
 src/tests/environment.cpp                          |  2 +-
 4 files changed, 14 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/765c8343/src/slave/containerizer/mesos/launch.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/launch.cpp b/src/slave/containerizer/mesos/launch.cpp
index 75b7eaf..8c739cc 100644
--- a/src/slave/containerizer/mesos/launch.cpp
+++ b/src/slave/containerizer/mesos/launch.cpp
@@ -33,6 +33,7 @@
 
 #include <stout/adaptor.hpp>
 #include <stout/foreach.hpp>
+#include <stout/option.hpp>
 #include <stout/os.hpp>
 #include <stout/protobuf.hpp>
 #include <stout/path.hpp>
@@ -641,7 +642,7 @@ int MesosContainerizerLaunch::execute()
     cout << "Executing pre-exec command '"
          << JSON::protobuf(command) << "'" << endl;
 
-    int status = 0;
+    Option<int> status;
 
     if (command.shell()) {
       // Execute the command using the system shell.
@@ -657,11 +658,14 @@ int MesosContainerizerLaunch::execute()
       status = os::spawn(command.value(), args);
     }
 
-    if (!WSUCCEEDED(status)) {
+    if (status.isNone() || !WSUCCEEDED(status.get())) {
       cerr << "Failed to execute pre-exec command '"
-           << JSON::protobuf(command) << "': "
-           << WSTRINGIFY(status)
-           << endl;
+           << JSON::protobuf(command) << "': ";
+      if (status.isNone()) {
+        cerr << "exited with unknown status" << endl;
+      } else {
+        cerr << WSTRINGIFY(status.get()) << endl;
+      }
       exitWithStatus(EXIT_FAILURE);
     }
   }

http://git-wip-us.apache.org/repos/asf/mesos/blob/765c8343/src/tests/containerizer/cgroups_isolator_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/containerizer/cgroups_isolator_tests.cpp b/src/tests/containerizer/cgroups_isolator_tests.cpp
index 59b23be..40c18a1 100644
--- a/src/tests/containerizer/cgroups_isolator_tests.cpp
+++ b/src/tests/containerizer/cgroups_isolator_tests.cpp
@@ -217,7 +217,7 @@ TEST_F(CgroupsIsolatorTest, ROOT_CGROUPS_PERF_NET_CLS_UserCgroup)
 
     // Verify that the user cannot manipulate the container's cgroup
     // control files as their owner is root.
-    EXPECT_NE(0, os::system(strings::format(
+    EXPECT_SOME_NE(0, os::system(strings::format(
         "su - nobody -s /bin/sh -c 'echo $$ > %s'",
         path::join(hierarchy.get(), cgroup, "cgroup.procs")).get()));
 
@@ -225,13 +225,13 @@ TEST_F(CgroupsIsolatorTest, ROOT_CGROUPS_PERF_NET_CLS_UserCgroup)
     // cgroup as the isolator changes the owner of the cgroup.
     string userCgroup = path::join(cgroup, "user");
 
-    EXPECT_EQ(0, os::system(strings::format(
+    EXPECT_SOME_EQ(0, os::system(strings::format(
         "su - nobody -s /bin/sh -c 'mkdir %s'",
         path::join(hierarchy.get(), userCgroup)).get()));
 
     // Verify that the user can manipulate control files in the
     // created cgroup as it's owned by the user.
-    EXPECT_EQ(0, os::system(strings::format(
+    EXPECT_SOME_EQ(0, os::system(strings::format(
         "su - nobody -s /bin/sh -c 'echo $$ > %s'",
         path::join(hierarchy.get(), userCgroup, "cgroup.procs")).get()));
 

http://git-wip-us.apache.org/repos/asf/mesos/blob/765c8343/src/tests/containerizer/memory_pressure_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/containerizer/memory_pressure_tests.cpp b/src/tests/containerizer/memory_pressure_tests.cpp
index 0c3e738..488051d 100644
--- a/src/tests/containerizer/memory_pressure_tests.cpp
+++ b/src/tests/containerizer/memory_pressure_tests.cpp
@@ -68,7 +68,7 @@ public:
 
     // Verify that the dd command and its flags used in a bit are valid
     // on this system.
-    ASSERT_EQ(0, os::system("dd count=1 bs=1M if=/dev/zero of=/dev/null"))
+    ASSERT_SOME_EQ(0, os::system("dd count=1 bs=1M if=/dev/zero of=/dev/null"))
       << "Cannot find a compatible 'dd' command";
   }
 };

http://git-wip-us.apache.org/repos/asf/mesos/blob/765c8343/src/tests/environment.cpp
----------------------------------------------------------------------
diff --git a/src/tests/environment.cpp b/src/tests/environment.cpp
index 1cba274..a30592a 100644
--- a/src/tests/environment.cpp
+++ b/src/tests/environment.cpp
@@ -394,7 +394,7 @@ private:
   {
     // Use `os::system` here because `docker->inspect()` only works on
     // containers even though `docker inspect` cli command works on images.
-    const int res = os::system(
+    const Option<int> res = os::system(
         docker->getPath() + " -H " + docker->getSocket() + " inspect " +
         string(mesos::internal::checks::DOCKER_HEALTH_CHECK_IMAGE) + " > NUL");