You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by ti...@apache.org on 2015/03/25 12:01:13 UTC

mesos git commit: Added validations performed in the MesosExecutorDriver to the Slave.

Repository: mesos
Updated Branches:
  refs/heads/master 212b88c4d -> 63a7a7928


Added validations performed in the MesosExecutorDriver to the Slave.

Copies validations made to the messages exchanged between the slave
and the `MesosExecutorDriver` and performed in the executor driver to
the slave. This is requiered since the new HTTP API will deprecate the
executor driver.

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


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

Branch: refs/heads/master
Commit: 63a7a792866b2ae09aa71fa8ad63b2540a9a52dc
Parents: 212b88c
Author: Alexander Rojas <al...@mesosphere.io>
Authored: Wed Mar 25 11:39:13 2015 +0100
Committer: Till Toenshoff <to...@me.com>
Committed: Wed Mar 25 11:39:14 2015 +0100

----------------------------------------------------------------------
 src/exec/exec.cpp   | 18 ------------------
 src/slave/slave.cpp | 16 ++++++++++++++++
 2 files changed, 16 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/63a7a792/src/exec/exec.cpp
----------------------------------------------------------------------
diff --git a/src/exec/exec.cpp b/src/exec/exec.cpp
index d678f06..a22e8bb 100644
--- a/src/exec/exec.cpp
+++ b/src/exec/exec.cpp
@@ -489,24 +489,6 @@ protected:
 
   void sendStatusUpdate(const TaskStatus& status)
   {
-    if (status.state() == TASK_STAGING) {
-      LOG(ERROR) << "Executor is not allowed to send "
-                 << "TASK_STAGING status update. Aborting!";
-
-      driver->abort();
-
-      Stopwatch stopwatch;
-      if (FLAGS_v >= 1) {
-        stopwatch.start();
-      }
-
-      executor->error(driver, "Attempted to send TASK_STAGING status update");
-
-      VLOG(1) << "Executor::error took " << stopwatch.elapsed();
-
-      return;
-    }
-
     StatusUpdateMessage message;
     StatusUpdate* update = message.mutable_update();
     update->mutable_framework_id()->MergeFrom(frameworkId);

http://git-wip-us.apache.org/repos/asf/mesos/blob/63a7a792/src/slave/slave.cpp
----------------------------------------------------------------------
diff --git a/src/slave/slave.cpp b/src/slave/slave.cpp
index c7e65a6..31ca724 100644
--- a/src/slave/slave.cpp
+++ b/src/slave/slave.cpp
@@ -2542,6 +2542,22 @@ void Slave::statusUpdate(StatusUpdate update, const UPID& pid)
         executor->state == Executor::TERMINATED)
     << executor->state;
 
+  // Failing this validation on the executor driver used to cause the
+  // driver to abort. Now that the validation is done by the slave, it
+  // should shutdown the executor to be consistent.
+  // TODO(arojas): Once the HTTP API is the default, return a
+  // 400 Bad Request response, indicating the reason in the body.
+  if (status.source() == TaskStatus::SOURCE_EXECUTOR &&
+      status.state() == TASK_STAGING) {
+    LOG(ERROR) << "Received TASK_STAGING from executor " << executor->pid
+               << " of framework " << update.framework_id()
+               << " which is not allowed. Shutting down the executor";
+
+    shutdownExecutor(framework, executor);
+
+    return;
+  }
+
   // TODO(vinod): Revisit these semantics when we disallow executors
   // from sending updates for tasks that belong to other executors.
   if (pid != UPID() && executor->pid != pid) {