Repository: mesos
Updated Branches:
  refs/heads/master e52f43fe7 -> bc26a44a5


Ensured executor_id set when receiving StatusUpdates from Executor.

Always set executor_id when sending StatusUpdate.

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


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

Branch: refs/heads/master
Commit: bc26a44a5629c77fc5dacf0431bdf36464f3c293
Parents: e52f43f
Author: Kapil Arya <[email protected]>
Authored: Wed Aug 5 12:34:47 2015 -0700
Committer: Niklas Q. Nielsen <[email protected]>
Committed: Wed Aug 5 12:34:49 2015 -0700

----------------------------------------------------------------------
 include/mesos/type_utils.hpp  |  6 ++++++
 src/slave/slave.cpp           | 14 ++++++++++++++
 src/tests/master_tests.cpp    |  2 ++
 src/tests/scheduler_tests.cpp |  2 ++
 4 files changed, 24 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/bc26a44a/include/mesos/type_utils.hpp
----------------------------------------------------------------------
diff --git a/include/mesos/type_utils.hpp b/include/mesos/type_utils.hpp
index 86b37ca..f1cb5e2 100644
--- a/include/mesos/type_utils.hpp
+++ b/include/mesos/type_utils.hpp
@@ -149,6 +149,12 @@ inline bool operator != (const ContainerID& left, const 
ContainerID& right)
 }
 
 
+inline bool operator != (const ExecutorID& left, const ExecutorID& right)
+{
+  return left.value() != right.value();
+}
+
+
 inline bool operator != (const FrameworkID& left, const FrameworkID& right)
 {
   return left.value() != right.value();

http://git-wip-us.apache.org/repos/asf/mesos/blob/bc26a44a/src/slave/slave.cpp
----------------------------------------------------------------------
diff --git a/src/slave/slave.cpp b/src/slave/slave.cpp
index 6b21db9..f181b1b 100644
--- a/src/slave/slave.cpp
+++ b/src/slave/slave.cpp
@@ -2715,6 +2715,20 @@ void Slave::statusUpdate(StatusUpdate update, const 
UPID& pid)
   update.mutable_status()->set_source(
       pid == UPID() ? TaskStatus::SOURCE_SLAVE : TaskStatus::SOURCE_EXECUTOR);
 
+  // Set TaskStatus.executor_id if not already set; overwrite existing
+  // value if already set.
+  if (update.has_executor_id()) {
+    if (update.status().has_executor_id() &&
+        update.status().executor_id() != update.executor_id()) {
+      LOG(WARNING) << "Executor ID mismatch in status update from " << pid
+                   << "; overwriting received '"
+                   << update.status().executor_id() << "' with expected'"
+                   << update.executor_id() << "'";
+    }
+    update.mutable_status()->mutable_executor_id()->CopyFrom(
+        update.executor_id());
+  }
+
   Framework* framework = getFramework(update.framework_id());
   if (framework == NULL) {
     LOG(WARNING) << "Ignoring status update " << update

http://git-wip-us.apache.org/repos/asf/mesos/blob/bc26a44a/src/tests/master_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/master_tests.cpp b/src/tests/master_tests.cpp
index 2aea430..0c8e8be 100644
--- a/src/tests/master_tests.cpp
+++ b/src/tests/master_tests.cpp
@@ -172,6 +172,8 @@ TEST_F(MasterTest, TaskRunning)
 
   AWAIT_READY(status);
   EXPECT_EQ(TASK_RUNNING, status.get().state());
+  EXPECT_TRUE(status.get().has_executor_id());
+  EXPECT_EQ(exec.id, status.get().executor_id());
 
   AWAIT_READY(update);
 

http://git-wip-us.apache.org/repos/asf/mesos/blob/bc26a44a/src/tests/scheduler_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/scheduler_tests.cpp b/src/tests/scheduler_tests.cpp
index 98fc70b..9d29d1a 100644
--- a/src/tests/scheduler_tests.cpp
+++ b/src/tests/scheduler_tests.cpp
@@ -276,6 +276,8 @@ TEST_F(SchedulerTest, TaskRunning)
   AWAIT_READY(event);
   EXPECT_EQ(Event::UPDATE, event.get().type());
   EXPECT_EQ(TASK_RUNNING, event.get().update().status().state());
+  EXPECT_TRUE(event.get().update().status().has_executor_id());
+  EXPECT_EQ(exec.id, event.get().update().status().executor_id());
 
   AWAIT_READY(update);
 

Reply via email to