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