You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by id...@apache.org on 2015/05/22 20:02:05 UTC

mesos git commit: Improve logging of clone flags for linux_launcher

Repository: mesos
Updated Branches:
  refs/heads/master b9982ba8d -> 5ff1b45d7


Improve logging of clone flags for linux_launcher

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


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

Branch: refs/heads/master
Commit: 5ff1b45d70dec79605a841e8498774a1b03e3103
Parents: b9982ba
Author: Ian Downes <id...@twitter.com>
Authored: Thu Apr 30 22:18:52 2015 -0700
Committer: Ian Downes <id...@twitter.com>
Committed: Fri May 22 11:00:51 2015 -0700

----------------------------------------------------------------------
 src/linux/ns.hpp                           | 28 ++++++++++++++++++++++++-
 src/slave/containerizer/linux_launcher.cpp |  3 ++-
 2 files changed, 29 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/5ff1b45d/src/linux/ns.hpp
----------------------------------------------------------------------
diff --git a/src/linux/ns.hpp b/src/linux/ns.hpp
index 87ff82c..b695f3a 100644
--- a/src/linux/ns.hpp
+++ b/src/linux/ns.hpp
@@ -27,6 +27,7 @@
 
 #include <set>
 #include <string>
+#include <vector>
 
 #include <stout/error.hpp>
 #include <stout/hashmap.hpp>
@@ -35,6 +36,7 @@
 #include <stout/path.hpp>
 #include <stout/proc.hpp>
 #include <stout/stringify.hpp>
+#include <stout/strings.hpp>
 #include <stout/try.hpp>
 
 #include <stout/os/exists.hpp>
@@ -292,13 +294,37 @@ inline process::Future<Nothing> destroy(ino_t inode)
   }
 
   // Wait for all the signalled processes to terminate. The pid
-  // namespace wil then be empty and will be released by the kernel
+  // namespace will then be empty and will be released by the kernel
   // (unless there are additional references).
   return process::collect(futures)
     .then(lambda::bind(&internal::_nothing));
 }
 
 } // namespace pid {
+
+
+// Returns the namespace flags in the string form of bitwise-ORing the
+// flags, e.g., CLONE_NEWNS | CLONE_NEWNET.
+inline std::string stringify(int flags)
+{
+  hashmap<unsigned int, std::string> names = {
+    {CLONE_NEWIPC, "CLONE_NEWIPC"},
+    {CLONE_NEWNET, "CLONE_NEWNET"},
+    {CLONE_NEWNS,  "CLONE_NEWNS"},
+    {CLONE_NEWPID, "CLONE_NEWPID"},
+    {CLONE_NEWUTS, "CLONE_NEWUTS"}
+  };
+
+  std::vector<std::string> namespaces;
+  foreachpair (unsigned int flag, const std::string& name, names) {
+    if (flags & flag) {
+      namespaces.push_back(name);
+    }
+  }
+
+  return strings::join(" | ", namespaces);
+}
+
 } // namespace ns {
 
 #endif // __LINUX_NS_HPP__

http://git-wip-us.apache.org/repos/asf/mesos/blob/5ff1b45d/src/slave/containerizer/linux_launcher.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/linux_launcher.cpp b/src/slave/containerizer/linux_launcher.cpp
index b9e22e3..8eae258 100644
--- a/src/slave/containerizer/linux_launcher.cpp
+++ b/src/slave/containerizer/linux_launcher.cpp
@@ -209,7 +209,8 @@ static pid_t clone(const lambda::function<int()>& func, int namespaces)
   // - 8 MiB appears to be the default for "ulimit -s" on OSX and Linux.
   static unsigned long long stack[(8*1024*1024)/sizeof(unsigned long long)];
 
-  LOG(INFO) << "Cloning child process with flags = " << namespaces;
+  LOG(INFO) << "Cloning child process with flags = "
+            << ns::stringify(namespaces);
 
   return ::clone(
       childMain,