You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by ji...@apache.org on 2015/12/30 21:50:43 UTC

mesos git commit: Added CHECK's for various executor states in Command Executor to verify if messages are delivered in order.

Repository: mesos
Updated Branches:
  refs/heads/master 8cfd5f6f8 -> d35513930


Added CHECK's for various executor states in Command Executor to verify
if messages are delivered in order.

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


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

Branch: refs/heads/master
Commit: d3551393019d0ddbc2cf8ed1c73ded088b61871f
Parents: 8cfd5f6
Author: Anand Mazumdar <ma...@gmail.com>
Authored: Wed Dec 30 12:50:28 2015 -0800
Committer: Jie Yu <yu...@gmail.com>
Committed: Wed Dec 30 12:50:28 2015 -0800

----------------------------------------------------------------------
 src/launcher/executor.cpp | 31 +++++++++++++++++++++++--------
 1 file changed, 23 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/d3551393/src/launcher/executor.cpp
----------------------------------------------------------------------
diff --git a/src/launcher/executor.cpp b/src/launcher/executor.cpp
index 09e7de6..356d311 100644
--- a/src/launcher/executor.cpp
+++ b/src/launcher/executor.cpp
@@ -82,7 +82,8 @@ public:
       const string& _healthCheckDir,
       const Option<string>& _sandboxDirectory,
       const Option<string>& _user)
-    : launched(false),
+    : state(REGISTERING),
+      launched(false),
       killed(false),
       killedByHealthCheck(false),
       pid(-1),
@@ -102,21 +103,29 @@ public:
       const FrameworkInfo& frameworkInfo,
       const SlaveInfo& slaveInfo)
   {
+    CHECK_EQ(REGISTERING, state);
+
     cout << "Registered executor on " << slaveInfo.hostname() << endl;
     driver = _driver;
+    state = REGISTERED;
   }
 
   void reregistered(
       ExecutorDriver* driver,
       const SlaveInfo& slaveInfo)
   {
+    CHECK(state == REGISTERED || state == REGISTERING) << state;
+
     cout << "Re-registered executor on " << slaveInfo.hostname() << endl;
+    state = REGISTERED;
   }
 
   void disconnected(ExecutorDriver* driver) {}
 
   void launchTask(ExecutorDriver* driver, const TaskInfo& task)
   {
+    CHECK_EQ(REGISTERED, state);
+
     if (launched) {
       TaskStatus status;
       status.mutable_task_id()->MergeFrom(task.task_id());
@@ -482,31 +491,31 @@ private:
       pid_t pid,
       const Future<Option<int> >& status_)
   {
-    TaskState state;
+    TaskState taskState;
     string message;
 
     Clock::cancel(escalationTimer);
 
     if (!status_.isReady()) {
-      state = TASK_FAILED;
+      taskState = TASK_FAILED;
       message =
         "Failed to get exit status for Command: " +
         (status_.isFailed() ? status_.failure() : "future discarded");
     } else if (status_.get().isNone()) {
-      state = TASK_FAILED;
+      taskState = TASK_FAILED;
       message = "Failed to get exit status for Command";
     } else {
       int status = status_.get().get();
       CHECK(WIFEXITED(status) || WIFSIGNALED(status)) << status;
 
       if (WIFEXITED(status) && WEXITSTATUS(status) == 0) {
-        state = TASK_FINISHED;
+        taskState = TASK_FINISHED;
       } else if (killed) {
         // Send TASK_KILLED if the task was killed as a result of
         // killTask() or shutdown().
-        state = TASK_KILLED;
+        taskState = TASK_KILLED;
       } else {
-        state = TASK_FAILED;
+        taskState = TASK_FAILED;
       }
 
       message = "Command " + WSTRINGIFY(status);
@@ -516,7 +525,7 @@ private:
 
     TaskStatus taskStatus;
     taskStatus.mutable_task_id()->MergeFrom(taskId);
-    taskStatus.set_state(state);
+    taskStatus.set_state(taskState);
     taskStatus.set_message(message);
     if (killed && killedByHealthCheck) {
       taskStatus.set_healthy(false);
@@ -597,6 +606,12 @@ private:
     }
   }
 
+  enum State
+  {
+    REGISTERING, // Executor is launched but not (re-)registered yet.
+    REGISTERED,  // Executor has (re-)registered.
+  } state;
+
   bool launched;
   bool killed;
   bool killedByHealthCheck;