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,

Reply via email to