You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by al...@apache.org on 2017/03/15 21:21:08 UTC
[07/13] mesos git commit: Added a helper for building a task status
from scratch.
Added a helper for building a task status from scratch.
Review: https://reviews.apache.org/r/57594
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/bf196f02
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/bf196f02
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/bf196f02
Branch: refs/heads/master
Commit: bf196f02d65199e69407af834c1a1d0fb0f35266
Parents: 85fbf8f
Author: Alexander Rukletsov <al...@apache.org>
Authored: Tue Mar 14 12:06:07 2017 +0100
Committer: Alexander Rukletsov <al...@apache.org>
Committed: Wed Mar 15 22:20:20 2017 +0100
----------------------------------------------------------------------
src/common/protobuf_utils.cpp | 19 +++++++++++++++++++
src/common/protobuf_utils.hpp | 9 +++++++++
src/docker/executor.cpp | 12 ++++++++++++
src/launcher/default_executor.cpp | 13 +++++++------
4 files changed, 47 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/bf196f02/src/common/protobuf_utils.cpp
----------------------------------------------------------------------
diff --git a/src/common/protobuf_utils.cpp b/src/common/protobuf_utils.cpp
index d568d41..138e288 100644
--- a/src/common/protobuf_utils.cpp
+++ b/src/common/protobuf_utils.cpp
@@ -122,6 +122,8 @@ StatusUpdate createStatusUpdate(
update.mutable_executor_id()->MergeFrom(executorId.get());
}
+ // TODO(alexr): Use `createTaskStatus()` instead
+ // once `UUID` is required in this function.
TaskStatus* status = update.mutable_status();
status->mutable_task_id()->MergeFrom(taskId);
@@ -207,6 +209,23 @@ StatusUpdate createStatusUpdate(
TaskStatus createTaskStatus(
+ const TaskID& taskId,
+ const TaskState& state,
+ const UUID& uuid,
+ double timestamp)
+{
+ TaskStatus status;
+
+ status.set_uuid(uuid.toBytes());
+ status.set_timestamp(timestamp);
+ status.mutable_task_id()->CopyFrom(taskId);
+ status.set_state(state);
+
+ return status;
+}
+
+
+TaskStatus createTaskStatus(
TaskStatus status,
const UUID& uuid,
double timestamp,
http://git-wip-us.apache.org/repos/asf/mesos/blob/bf196f02/src/common/protobuf_utils.hpp
----------------------------------------------------------------------
diff --git a/src/common/protobuf_utils.hpp b/src/common/protobuf_utils.hpp
index 3b157a0..ddfac24 100644
--- a/src/common/protobuf_utils.hpp
+++ b/src/common/protobuf_utils.hpp
@@ -93,6 +93,15 @@ StatusUpdate createStatusUpdate(
const Option<SlaveID>& slaveId);
+// Helper function that creates a new task status from scratch with
+// obligatory fields set.
+TaskStatus createTaskStatus(
+ const TaskID& taskId,
+ const TaskState& state,
+ const UUID& uuid,
+ double timestamp);
+
+
// Helper function that creates a new task status from the given task
// status. Specific fields in `status` can be overridden in the new
// status by specifying the appropriate argument. Fields `task_id`,
http://git-wip-us.apache.org/repos/asf/mesos/blob/bf196f02/src/docker/executor.cpp
----------------------------------------------------------------------
diff --git a/src/docker/executor.cpp b/src/docker/executor.cpp
index 6c11320..b652a99 100644
--- a/src/docker/executor.cpp
+++ b/src/docker/executor.cpp
@@ -131,6 +131,8 @@ public:
void launchTask(ExecutorDriver* driver, const TaskInfo& task)
{
if (run.isSome()) {
+ // TODO(alexr): Use `protobuf::createTaskStatus()`
+ // instead of manually setting fields.
TaskStatus status;
status.mutable_task_id()->CopyFrom(task.task_id());
status.set_state(TASK_FAILED);
@@ -169,6 +171,8 @@ public:
);
if (runOptions.isError()) {
+ // TODO(alexr): Use `protobuf::createTaskStatus()`
+ // instead of manually setting fields.
TaskStatus status;
status.mutable_task_id()->CopyFrom(task.task_id());
status.set_state(TASK_FAILED);
@@ -204,6 +208,8 @@ public:
if (!killed) {
containerPid = container.pid;
+ // TODO(alexr): Use `protobuf::createTaskStatus()`
+ // instead of manually setting fields.
TaskStatus status;
status.mutable_task_id()->CopyFrom(taskId.get());
status.set_state(TASK_RUNNING);
@@ -313,6 +319,8 @@ protected:
cout << "Received task health update, healthy: "
<< stringify(healthStatus.healthy()) << endl;
+ // TODO(alexr): Use `protobuf::createTaskStatus()`
+ // instead of manually setting fields.
TaskStatus status;
status.mutable_task_id()->CopyFrom(healthStatus.task_id());
status.set_healthy(healthStatus.healthy());
@@ -379,6 +387,8 @@ private:
if (protobuf::frameworkHasCapability(
frameworkInfo.get(),
FrameworkInfo::Capability::TASK_KILLING_STATE)) {
+ // TODO(alexr): Use `protobuf::createTaskStatus()`
+ // instead of manually setting fields.
TaskStatus status;
status.mutable_task_id()->CopyFrom(taskId.get());
status.set_state(TASK_KILLING);
@@ -463,6 +473,8 @@ private:
CHECK_SOME(taskId);
+ // TODO(alexr): Use `protobuf::createTaskStatus()`
+ // instead of manually setting fields.
TaskStatus taskStatus;
taskStatus.mutable_task_id()->CopyFrom(taskId.get());
taskStatus.set_state(state);
http://git-wip-us.apache.org/repos/asf/mesos/blob/bf196f02/src/launcher/default_executor.cpp
----------------------------------------------------------------------
diff --git a/src/launcher/default_executor.cpp b/src/launcher/default_executor.cpp
index 0ed436f..cbd4f7e 100644
--- a/src/launcher/default_executor.cpp
+++ b/src/launcher/default_executor.cpp
@@ -46,6 +46,7 @@
#include "checks/health_checker.hpp"
#include "common/http.hpp"
+#include "common/protobuf_utils.hpp"
#include "common/status_utils.hpp"
#include "internal/devolve.hpp"
@@ -890,14 +891,14 @@ private:
{
UUID uuid = UUID::random();
- TaskStatus status;
- status.mutable_task_id()->CopyFrom(taskId);
- status.mutable_executor_id()->CopyFrom(executorId);
+ TaskStatus status = protobuf::createTaskStatus(
+ taskId,
+ state,
+ uuid,
+ Clock::now().secs());
- status.set_state(state);
+ status.mutable_executor_id()->CopyFrom(executorId);
status.set_source(TaskStatus::SOURCE_EXECUTOR);
- status.set_uuid(uuid.toBytes());
- status.set_timestamp(Clock::now().secs());
if (message.isSome()) {
status.set_message(message.get());