You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by bm...@apache.org on 2018/03/09 20:41:14 UTC

[08/10] mesos git commit: Avoid a copy of the scheduler->executor message in the master.

Avoid a copy of the scheduler->executor message in the master.

This avoids a copy in both the v1 http and v0 message code paths.

Review: https://reviews.apache.org/r/65971


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/53f253f9
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/53f253f9
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/53f253f9

Branch: refs/heads/master
Commit: 53f253f96b7fd6e59f3cfaf5964d95c155718bab
Parents: ff85aeb
Author: Benjamin Mahler <bm...@apache.org>
Authored: Wed Mar 7 20:08:57 2018 -0800
Committer: Benjamin Mahler <bm...@apache.org>
Committed: Fri Mar 9 12:36:14 2018 -0800

----------------------------------------------------------------------
 src/master/http.cpp   |  2 +-
 src/master/master.cpp | 15 ++++++++-------
 src/master/master.hpp |  2 +-
 3 files changed, 10 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/53f253f9/src/master/http.cpp
----------------------------------------------------------------------
diff --git a/src/master/http.cpp b/src/master/http.cpp
index 0bca8bd..cf03d8b 100644
--- a/src/master/http.cpp
+++ b/src/master/http.cpp
@@ -1144,7 +1144,7 @@ Future<Response> Master::Http::scheduler(
       return Forbidden("Operation reconciliation is not yet implemented");
 
     case scheduler::Call::MESSAGE:
-      master->message(framework, call.message());
+      master->message(framework, std::move(*call.mutable_message()));
       return Accepted();
 
     case scheduler::Call::REQUEST:

http://git-wip-us.apache.org/repos/asf/mesos/blob/53f253f9/src/master/master.cpp
----------------------------------------------------------------------
diff --git a/src/master/master.cpp b/src/master/master.cpp
index 221c215..fd64c88 100644
--- a/src/master/master.cpp
+++ b/src/master/master.cpp
@@ -2425,7 +2425,7 @@ void Master::receive(
       break;
 
     case scheduler::Call::MESSAGE:
-      message(framework, call.message());
+      message(framework, std::move(*call.mutable_message()));
       break;
 
     case scheduler::Call::REQUEST:
@@ -5904,7 +5904,7 @@ void Master::schedulerMessage(
   message_.mutable_executor_id()->CopyFrom(executorId);
   message_.set_data(data);
 
-  message(framework, message_);
+  message(framework, std::move(message_));
 }
 
 
@@ -5969,7 +5969,7 @@ void Master::executorMessage(
 
 void Master::message(
     Framework* framework,
-    const scheduler::Call::Message& message)
+    scheduler::Call::Message&& message)
 {
   CHECK_NOTNULL(framework);
 
@@ -5997,10 +5997,11 @@ void Master::message(
             << *framework << " to agent " << *slave;
 
   FrameworkToExecutorMessage message_;
-  message_.mutable_slave_id()->MergeFrom(message.slave_id());
-  message_.mutable_framework_id()->MergeFrom(framework->id());
-  message_.mutable_executor_id()->MergeFrom(message.executor_id());
-  message_.set_data(message.data());
+  *message_.mutable_slave_id() = std::move(*message.mutable_slave_id());
+  *message_.mutable_framework_id() = framework->id();
+  *message_.mutable_executor_id() = std::move(*message.mutable_executor_id());
+  *message_.mutable_data() = std::move(*message.mutable_data());
+
   send(slave->pid, message_);
 
   metrics->valid_framework_to_executor_messages++;

http://git-wip-us.apache.org/repos/asf/mesos/blob/53f253f9/src/master/master.hpp
----------------------------------------------------------------------
diff --git a/src/master/master.hpp b/src/master/master.hpp
index ba06266..65a1404 100644
--- a/src/master/master.hpp
+++ b/src/master/master.hpp
@@ -1061,7 +1061,7 @@ private:
 
   void message(
       Framework* framework,
-      const scheduler::Call::Message& message);
+      scheduler::Call::Message&& message);
 
   void request(
       Framework* framework,