Avoid copying executor->scheduler message data in the master. This avoids a copy of the executor->scheduler message for the v0 message path in the master.
Review: https://reviews.apache.org/r/65973 Project: http://git-wip-us.apache.org/repos/asf/mesos/repo Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/9affb606 Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/9affb606 Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/9affb606 Branch: refs/heads/master Commit: 9affb606d174abcb3f4e4dddfe20567d9316532f Parents: af1ae2b Author: Benjamin Mahler <[email protected]> Authored: Wed Mar 7 20:21:41 2018 -0800 Committer: Benjamin Mahler <[email protected]> Committed: Fri Mar 9 12:36:14 2018 -0800 ---------------------------------------------------------------------- src/master/master.cpp | 27 ++++++++++++++------------- src/master/master.hpp | 5 +---- 2 files changed, 15 insertions(+), 17 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mesos/blob/9affb606/src/master/master.cpp ---------------------------------------------------------------------- diff --git a/src/master/master.cpp b/src/master/master.cpp index 898893a..f0f6e5b 100644 --- a/src/master/master.cpp +++ b/src/master/master.cpp @@ -853,11 +853,7 @@ void Master::initialize() // these do not have a pid, the slave must forward // messages through the master. install<ExecutorToFrameworkMessage>( - &Master::executorMessage, - &ExecutorToFrameworkMessage::slave_id, - &ExecutorToFrameworkMessage::framework_id, - &ExecutorToFrameworkMessage::executor_id, - &ExecutorToFrameworkMessage::data); + &Master::executorMessage); install<ReconcileTasksMessage>( &Master::reconcileTasks, @@ -5909,11 +5905,12 @@ void Master::schedulerMessage( void Master::executorMessage( const UPID& from, - const SlaveID& slaveId, - const FrameworkID& frameworkId, - const ExecutorID& executorId, - const string& data) + ExecutorToFrameworkMessage&& executorToFrameworkMessage) { + const SlaveID& slaveId = executorToFrameworkMessage.slave_id(); + const FrameworkID& frameworkId = executorToFrameworkMessage.framework_id(); + const ExecutorID& executorId = executorToFrameworkMessage.executor_id(); + metrics->messages_executor_to_framework++; if (slaves.removed.get(slaveId).isSome()) { @@ -5955,10 +5952,14 @@ void Master::executorMessage( } ExecutorToFrameworkMessage message; - message.mutable_slave_id()->MergeFrom(slaveId); - message.mutable_framework_id()->MergeFrom(frameworkId); - message.mutable_executor_id()->MergeFrom(executorId); - message.set_data(data); + *message.mutable_slave_id() = + std::move(*executorToFrameworkMessage.mutable_slave_id()); + *message.mutable_framework_id() = + std::move(*executorToFrameworkMessage.mutable_framework_id()); + *message.mutable_executor_id() = + std::move(*executorToFrameworkMessage.mutable_executor_id()); + *message.mutable_data() = + std::move(*executorToFrameworkMessage.mutable_data()); framework->send(message); http://git-wip-us.apache.org/repos/asf/mesos/blob/9affb606/src/master/master.hpp ---------------------------------------------------------------------- diff --git a/src/master/master.hpp b/src/master/master.hpp index 5738be9..8bf2c76 100644 --- a/src/master/master.hpp +++ b/src/master/master.hpp @@ -455,10 +455,7 @@ public: void executorMessage( const process::UPID& from, - const SlaveID& slaveId, - const FrameworkID& frameworkId, - const ExecutorID& executorId, - const std::string& data); + ExecutorToFrameworkMessage&& executorToFrameworkMessage); void registerSlave( const process::UPID& from,
