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,

Reply via email to