Avoid copying scheduler->executor message data in the master. This avoids a copy of the scheduler->executor message for the v0 message path in the master.
Review: https://reviews.apache.org/r/65972 Project: http://git-wip-us.apache.org/repos/asf/mesos/repo Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/af1ae2b6 Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/af1ae2b6 Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/af1ae2b6 Branch: refs/heads/master Commit: af1ae2b6dac9e2da92b50613b1ad0119255ca4d9 Parents: 53f253f Author: Benjamin Mahler <[email protected]> Authored: Wed Mar 7 20:14:39 2018 -0800 Committer: Benjamin Mahler <[email protected]> Committed: Fri Mar 9 12:36:14 2018 -0800 ---------------------------------------------------------------------- src/master/master.cpp | 23 +++++++++++------------ src/master/master.hpp | 5 +---- 2 files changed, 12 insertions(+), 16 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mesos/blob/af1ae2b6/src/master/master.cpp ---------------------------------------------------------------------- diff --git a/src/master/master.cpp b/src/master/master.cpp index fd64c88..898893a 100644 --- a/src/master/master.cpp +++ b/src/master/master.cpp @@ -834,11 +834,7 @@ void Master::initialize() &Master::statusUpdateAcknowledgement); install<FrameworkToExecutorMessage>( - &Master::schedulerMessage, - &FrameworkToExecutorMessage::slave_id, - &FrameworkToExecutorMessage::framework_id, - &FrameworkToExecutorMessage::executor_id, - &FrameworkToExecutorMessage::data); + &Master::schedulerMessage); install<RegisterSlaveMessage>( &Master::registerSlave); @@ -5874,11 +5870,11 @@ void Master::acknowledgeOperationStatus( void Master::schedulerMessage( const UPID& from, - const SlaveID& slaveId, - const FrameworkID& frameworkId, - const ExecutorID& executorId, - const string& data) + FrameworkToExecutorMessage&& frameworkToExecutorMessage) { + const FrameworkID& frameworkId = frameworkToExecutorMessage.framework_id(); + const ExecutorID& executorId = frameworkToExecutorMessage.executor_id(); + Framework* framework = getFramework(frameworkId); if (framework == nullptr) { @@ -5900,9 +5896,12 @@ void Master::schedulerMessage( } scheduler::Call::Message message_; - message_.mutable_slave_id()->CopyFrom(slaveId); - message_.mutable_executor_id()->CopyFrom(executorId); - message_.set_data(data); + *message_.mutable_slave_id() = + std::move(*frameworkToExecutorMessage.mutable_slave_id()); + *message_.mutable_executor_id() = + std::move(*frameworkToExecutorMessage.mutable_executor_id()); + *message_.mutable_data() = + std::move(*frameworkToExecutorMessage.mutable_data()); message(framework, std::move(message_)); } http://git-wip-us.apache.org/repos/asf/mesos/blob/af1ae2b6/src/master/master.hpp ---------------------------------------------------------------------- diff --git a/src/master/master.hpp b/src/master/master.hpp index 65a1404..5738be9 100644 --- a/src/master/master.hpp +++ b/src/master/master.hpp @@ -451,10 +451,7 @@ public: void schedulerMessage( const process::UPID& from, - const SlaveID& slaveId, - const FrameworkID& frameworkId, - const ExecutorID& executorId, - const std::string& data); + FrameworkToExecutorMessage&& frameworkToExecutorMessage); void executorMessage( const process::UPID& from,
