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());