You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by nn...@apache.org on 2015/06/17 23:22:27 UTC

mesos git commit: Call hookmanager only if some hooks are installed.

Repository: mesos
Updated Branches:
  refs/heads/master 1fe548562 -> 78567c553


Call hookmanager only if some hooks are installed.

Call hook manager only if hooks were specified on the commandline.

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


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

Branch: refs/heads/master
Commit: 78567c5533b30b70dde9f55459237698b97acb4c
Parents: 1fe5485
Author: Kapil Arya <ka...@mesosphere.io>
Authored: Wed Jun 17 13:59:42 2015 -0700
Committer: Niklas Q. Nielsen <ni...@qni.dk>
Committed: Wed Jun 17 13:59:44 2015 -0700

----------------------------------------------------------------------
 src/hook/manager.cpp                      |  8 +++++++
 src/hook/manager.hpp                      |  1 +
 src/master/master.cpp                     | 14 ++++++-----
 src/slave/containerizer/containerizer.cpp | 32 ++++++++++++++------------
 src/slave/slave.cpp                       | 12 ++++++----
 5 files changed, 42 insertions(+), 25 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/78567c55/src/hook/manager.cpp
----------------------------------------------------------------------
diff --git a/src/hook/manager.cpp b/src/hook/manager.cpp
index b43b918..0108534 100644
--- a/src/hook/manager.cpp
+++ b/src/hook/manager.cpp
@@ -91,6 +91,14 @@ Try<Nothing> HookManager::unload(const std::string& hookName)
 }
 
 
+bool HookManager::hooksAvailable()
+{
+  synchronized (mutex) {
+    return !availableHooks.empty();
+  }
+}
+
+
 Labels HookManager::masterLaunchTaskLabelDecorator(
     const TaskInfo& taskInfo,
     const FrameworkInfo& frameworkInfo,

http://git-wip-us.apache.org/repos/asf/mesos/blob/78567c55/src/hook/manager.hpp
----------------------------------------------------------------------
diff --git a/src/hook/manager.hpp b/src/hook/manager.hpp
index 638e19f..47e8eb7 100644
--- a/src/hook/manager.hpp
+++ b/src/hook/manager.hpp
@@ -38,6 +38,7 @@ public:
   // hook and remove it from the list of available hooks.
   static Try<Nothing> unload(const std::string& hookName);
 
+  static bool hooksAvailable();
 
   static Labels masterLaunchTaskLabelDecorator(
       const TaskInfo& taskInfo,

http://git-wip-us.apache.org/repos/asf/mesos/blob/78567c55/src/master/master.cpp
----------------------------------------------------------------------
diff --git a/src/master/master.cpp b/src/master/master.cpp
index 0137c37..0135c15 100644
--- a/src/master/master.cpp
+++ b/src/master/master.cpp
@@ -2757,12 +2757,14 @@ void Master::_accept(
             message.set_pid(framework->pid);
             message.mutable_task()->MergeFrom(task_);
 
-            // Set labels retrieved from label-decorator hooks.
-            message.mutable_task()->mutable_labels()->CopyFrom(
-                HookManager::masterLaunchTaskLabelDecorator(
-                    task_,
-                    framework->info,
-                    slave->info));
+            if (HookManager::hooksAvailable()) {
+              // Set labels retrieved from label-decorator hooks.
+              message.mutable_task()->mutable_labels()->CopyFrom(
+                  HookManager::masterLaunchTaskLabelDecorator(
+                      task_,
+                      framework->info,
+                      slave->info));
+            }
 
             send(slave->pid, message);
           }

http://git-wip-us.apache.org/repos/asf/mesos/blob/78567c55/src/slave/containerizer/containerizer.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/containerizer.cpp b/src/slave/containerizer/containerizer.cpp
index e995ce6..c5ffc49 100644
--- a/src/slave/containerizer/containerizer.cpp
+++ b/src/slave/containerizer/containerizer.cpp
@@ -291,21 +291,23 @@ map<string, string> executorEnvironment(
     env["MESOS_RECOVERY_TIMEOUT"] = stringify(recoveryTimeout);
   }
 
-  // Include any environment variables from Hooks.
-  // TODO(karya): Call environment decorator hook _after_ putting all
-  // variables from executorInfo into 'env'. This would prevent the
-  // ones provided by hooks from being overwritten by the ones in
-  // executorInfo in case of a conflict. The overwriting takes places
-  // at the callsites of executorEnvironment (e.g., ___launch function
-  // in src/slave/containerizer/docker.cpp)
-  // TODO(karya): Provide a mechanism to pass the new environment
-  // variables created above (MESOS_*) on to the hook modules.
-  const Environment& hooksEnvironment =
-    HookManager::slaveExecutorEnvironmentDecorator(executorInfo);
-
-  foreach (const Environment::Variable& variable,
-           hooksEnvironment.variables()) {
-    env[variable.name()] = variable.value();
+  if (HookManager::hooksAvailable()) {
+    // Include any environment variables from Hooks.
+    // TODO(karya): Call environment decorator hook _after_ putting all
+    // variables from executorInfo into 'env'. This would prevent the
+    // ones provided by hooks from being overwritten by the ones in
+    // executorInfo in case of a conflict. The overwriting takes places
+    // at the callsites of executorEnvironment (e.g., ___launch function
+    // in src/slave/containerizer/docker.cpp)
+    // TODO(karya): Provide a mechanism to pass the new environment
+    // variables created above (MESOS_*) on to the hook modules.
+    const Environment& hooksEnvironment =
+        HookManager::slaveExecutorEnvironmentDecorator(executorInfo);
+
+    foreach (const Environment::Variable& variable,
+             hooksEnvironment.variables()) {
+      env[variable.name()] = variable.value();
+    }
   }
 
   return env;

http://git-wip-us.apache.org/repos/asf/mesos/blob/78567c55/src/slave/slave.cpp
----------------------------------------------------------------------
diff --git a/src/slave/slave.cpp b/src/slave/slave.cpp
index 098b58a..a5ad29f 100644
--- a/src/slave/slave.cpp
+++ b/src/slave/slave.cpp
@@ -1233,9 +1233,11 @@ void Slave::runTask(
     return;
   }
 
-  // Set task labels from run task label decorator.
-  task.mutable_labels()->CopyFrom(
-      HookManager::slaveRunTaskLabelDecorator(task, frameworkInfo, info));
+  if (HookManager::hooksAvailable()) {
+    // Set task labels from run task label decorator.
+    task.mutable_labels()->CopyFrom(
+        HookManager::slaveRunTaskLabelDecorator(task, frameworkInfo, info));
+  }
 
   Future<bool> unschedule = true;
 
@@ -3429,7 +3431,9 @@ void Slave::removeExecutor(Framework* framework, Executor* executor)
     }
   }
 
-  HookManager::slaveRemoveExecutorHook(framework->info, executor->info);
+  if (HookManager::hooksAvailable()) {
+    HookManager::slaveRemoveExecutorHook(framework->info, executor->info);
+  }
 
   framework->destroyExecutor(executor->id);
 }