You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by vi...@apache.org on 2016/07/01 21:01:36 UTC
mesos git commit: Added new utility function,
`frameworkHasCapability()`.
Repository: mesos
Updated Branches:
refs/heads/master 53de5578c -> 2a49ae261
Added new utility function, `frameworkHasCapability()`.
Replace various hand-coded loops checking for capabilities with calls to
this new function instead.
Review: https://reviews.apache.org/r/49469/
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/2a49ae26
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/2a49ae26
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/2a49ae26
Branch: refs/heads/master
Commit: 2a49ae2618c13036356f3fdca3b727d3779a1c47
Parents: 53de557
Author: Neil Conway <ne...@gmail.com>
Authored: Fri Jul 1 14:01:21 2016 -0700
Committer: Vinod Kone <vi...@gmail.com>
Committed: Fri Jul 1 14:01:21 2016 -0700
----------------------------------------------------------------------
src/common/protobuf_utils.cpp | 15 ++++++++++
src/common/protobuf_utils.hpp | 5 ++++
src/docker/executor.cpp | 17 ++++++------
src/launcher/executor.cpp | 17 ++++++++----
src/master/allocator/mesos/hierarchical.cpp | 35 ++++++++----------------
5 files changed, 51 insertions(+), 38 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/2a49ae26/src/common/protobuf_utils.cpp
----------------------------------------------------------------------
diff --git a/src/common/protobuf_utils.cpp b/src/common/protobuf_utils.cpp
index 040bdf8..a2885d0 100644
--- a/src/common/protobuf_utils.cpp
+++ b/src/common/protobuf_utils.cpp
@@ -44,6 +44,21 @@ namespace mesos {
namespace internal {
namespace protobuf {
+bool frameworkHasCapability(
+ const FrameworkInfo& framework,
+ FrameworkInfo::Capability::Type capability)
+{
+ foreach (const FrameworkInfo::Capability& c,
+ framework.capabilities()) {
+ if (c.type() == capability) {
+ return true;
+ }
+ }
+
+ return false;
+}
+
+
bool isTerminalState(const TaskState& state)
{
return (state == TASK_FINISHED ||
http://git-wip-us.apache.org/repos/asf/mesos/blob/2a49ae26/src/common/protobuf_utils.hpp
----------------------------------------------------------------------
diff --git a/src/common/protobuf_utils.hpp b/src/common/protobuf_utils.hpp
index 3dd03da..cb02022 100644
--- a/src/common/protobuf_utils.hpp
+++ b/src/common/protobuf_utils.hpp
@@ -47,6 +47,11 @@ namespace mesos {
namespace internal {
namespace protobuf {
+bool frameworkHasCapability(
+ const FrameworkInfo& framework,
+ FrameworkInfo::Capability::Type capability);
+
+
bool isTerminalState(const TaskState& state);
http://git-wip-us.apache.org/repos/asf/mesos/blob/2a49ae26/src/docker/executor.cpp
----------------------------------------------------------------------
diff --git a/src/docker/executor.cpp b/src/docker/executor.cpp
index 88b7fc4..2089b54 100644
--- a/src/docker/executor.cpp
+++ b/src/docker/executor.cpp
@@ -38,6 +38,7 @@
#include <stout/os/killtree.hpp>
#include "common/status_utils.hpp"
+#include "common/protobuf_utils.hpp"
#include "docker/docker.hpp"
#include "docker/executor.hpp"
@@ -348,15 +349,13 @@ private:
killed = true;
// Send TASK_KILLING if the framework can handle it.
- foreach (const FrameworkInfo::Capability& c,
- frameworkInfo->capabilities()) {
- if (c.type() == FrameworkInfo::Capability::TASK_KILLING_STATE) {
- TaskStatus status;
- status.mutable_task_id()->CopyFrom(taskId.get());
- status.set_state(TASK_KILLING);
- driver.get()->sendStatusUpdate(status);
- break;
- }
+ if (protobuf::frameworkHasCapability(
+ frameworkInfo.get(),
+ FrameworkInfo::Capability::TASK_KILLING_STATE)) {
+ TaskStatus status;
+ status.mutable_task_id()->CopyFrom(taskId.get());
+ status.set_state(TASK_KILLING);
+ driver.get()->sendStatusUpdate(status);
}
// TODO(bmahler): Replace this with 'docker kill' so
http://git-wip-us.apache.org/repos/asf/mesos/blob/2a49ae26/src/launcher/executor.cpp
----------------------------------------------------------------------
diff --git a/src/launcher/executor.cpp b/src/launcher/executor.cpp
index bb88a45..cb23501 100644
--- a/src/launcher/executor.cpp
+++ b/src/launcher/executor.cpp
@@ -26,6 +26,8 @@
#include <string>
#include <vector>
+#include <mesos/mesos.hpp>
+
#include <mesos/v1/executor.hpp>
#include <mesos/v1/mesos.hpp>
@@ -65,8 +67,10 @@
#include <stout/os/killtree.hpp>
#include "common/http.hpp"
+#include "common/protobuf_utils.hpp"
#include "common/status_utils.hpp"
+#include "internal/devolve.hpp"
#include "internal/evolve.hpp"
#ifdef __linux__
@@ -103,9 +107,12 @@ using process::Subprocess;
using process::Time;
using process::Timer;
+using mesos::internal::devolve;
using mesos::internal::evolve;
using mesos::internal::TaskHealthStatus;
+using mesos::internal::protobuf::frameworkHasCapability;
+
using mesos::v1::ExecutorID;
using mesos::v1::FrameworkID;
@@ -539,12 +546,10 @@ private:
CHECK_SOME(taskId);
CHECK(taskId.get() == _taskId);
- foreach (const FrameworkInfo::Capability& c,
- frameworkInfo->capabilities()) {
- if (c.type() == FrameworkInfo::Capability::TASK_KILLING_STATE) {
- update(taskId.get(), TASK_KILLING);
- break;
- }
+ if (frameworkHasCapability(
+ devolve(frameworkInfo.get()),
+ mesos::FrameworkInfo::Capability::TASK_KILLING_STATE)) {
+ update(taskId.get(), TASK_KILLING);
}
// Now perform signal escalation to begin killing the task.
http://git-wip-us.apache.org/repos/asf/mesos/blob/2a49ae26/src/master/allocator/mesos/hierarchical.cpp
----------------------------------------------------------------------
diff --git a/src/master/allocator/mesos/hierarchical.cpp b/src/master/allocator/mesos/hierarchical.cpp
index 3838123..eca949e 100644
--- a/src/master/allocator/mesos/hierarchical.cpp
+++ b/src/master/allocator/mesos/hierarchical.cpp
@@ -34,6 +34,8 @@
#include <stout/stopwatch.hpp>
#include <stout/stringify.hpp>
+#include "common/protobuf_utils.hpp"
+
using std::set;
using std::string;
using std::vector;
@@ -257,21 +259,14 @@ void HierarchicalAllocatorProcess::addFramework(
frameworks[frameworkId] = Framework();
frameworks[frameworkId].role = frameworkInfo.role();
+ frameworks[frameworkId].suppressed = false;
// Set the framework capabilities that this allocator cares about.
- frameworks[frameworkId].revocable = false;
- frameworks[frameworkId].gpuAware = false;
-
- foreach (const FrameworkInfo::Capability& capability,
- frameworkInfo.capabilities()) {
- if (capability.type() == FrameworkInfo::Capability::REVOCABLE_RESOURCES) {
- frameworks[frameworkId].revocable = true;
- } else if (capability.type() == FrameworkInfo::Capability::GPU_RESOURCES) {
- frameworks[frameworkId].gpuAware = true;
- }
- }
+ frameworks[frameworkId].revocable = protobuf::frameworkHasCapability(
+ frameworkInfo, FrameworkInfo::Capability::REVOCABLE_RESOURCES);
- frameworks[frameworkId].suppressed = false;
+ frameworks[frameworkId].gpuAware = protobuf::frameworkHasCapability(
+ frameworkInfo, FrameworkInfo::Capability::GPU_RESOURCES);
LOG(INFO) << "Added framework " << frameworkId;
@@ -401,17 +396,11 @@ void HierarchicalAllocatorProcess::updateFramework(
CHECK_EQ(frameworks[frameworkId].role, frameworkInfo.role());
// Update the framework capabilities that this allocator cares about.
- frameworks[frameworkId].revocable = false;
- frameworks[frameworkId].gpuAware = false;
-
- foreach (const FrameworkInfo::Capability& capability,
- frameworkInfo.capabilities()) {
- if (capability.type() == FrameworkInfo::Capability::REVOCABLE_RESOURCES) {
- frameworks[frameworkId].revocable = true;
- } else if (capability.type() == FrameworkInfo::Capability::GPU_RESOURCES) {
- frameworks[frameworkId].gpuAware = true;
- }
- }
+ frameworks[frameworkId].revocable = protobuf::frameworkHasCapability(
+ frameworkInfo, FrameworkInfo::Capability::REVOCABLE_RESOURCES);
+
+ frameworks[frameworkId].gpuAware = protobuf::frameworkHasCapability(
+ frameworkInfo, FrameworkInfo::Capability::GPU_RESOURCES);
}