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:12 UTC

[06/10] mesos git commit: Avoid copying of launch task messages in the master.

Avoid copying of launch task messages in the master.

Prior to this patch, the launch task message was copied into an
Accept or Decline call. This updates the handler to perform moves
instead.

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


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

Branch: refs/heads/master
Commit: b281f56e80a772a0832dbc423f19a5c41c9bc84e
Parents: 0bbeac0
Author: Benjamin Mahler <bm...@apache.org>
Authored: Wed Mar 7 19:32:08 2018 -0800
Committer: Benjamin Mahler <bm...@apache.org>
Committed: Fri Mar 9 12:36:13 2018 -0800

----------------------------------------------------------------------
 src/master/master.cpp | 48 +++++++++++++++++++++-------------------------
 src/master/master.hpp |  5 +----
 2 files changed, 23 insertions(+), 30 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/b281f56e/src/master/master.cpp
----------------------------------------------------------------------
diff --git a/src/master/master.cpp b/src/master/master.cpp
index c89179c..12e314e 100644
--- a/src/master/master.cpp
+++ b/src/master/master.cpp
@@ -818,11 +818,7 @@ void Master::initialize()
       &ResourceRequestMessage::requests);
 
   install<LaunchTasksMessage>(
-      &Master::launchTasks,
-      &LaunchTasksMessage::framework_id,
-      &LaunchTasksMessage::tasks,
-      &LaunchTasksMessage::filters,
-      &LaunchTasksMessage::offer_ids);
+      &Master::launchTasks);
 
   install<ReviveOffersMessage>(
       &Master::reviveOffers,
@@ -3420,17 +3416,15 @@ bool Master::isWhitelistedRole(const string& name) const
 
 void Master::launchTasks(
     const UPID& from,
-    const FrameworkID& frameworkId,
-    const vector<TaskInfo>& tasks,
-    const Filters& filters,
-    const vector<OfferID>& offerIds)
+    LaunchTasksMessage&& launchTasksMessage)
 {
-  Framework* framework = getFramework(frameworkId);
+  Framework* framework = getFramework(launchTasksMessage.framework_id());
 
   if (framework == nullptr) {
     LOG(WARNING)
-      << "Ignoring launch tasks message for offers " << stringify(offerIds)
-      << " of framework " << frameworkId
+      << "Ignoring launch tasks message for offers "
+      << stringify(launchTasksMessage.offer_ids())
+      << " of framework " << launchTasksMessage.framework_id()
       << " because the framework cannot be found";
 
     return;
@@ -3438,7 +3432,8 @@ void Master::launchTasks(
 
   if (framework->pid != from) {
     LOG(WARNING)
-      << "Ignoring launch tasks message for offers " << stringify(offerIds)
+      << "Ignoring launch tasks message for offers "
+      << stringify(launchTasksMessage.offer_ids())
       << " from '" << from << "' because it is not from the"
       << " registered framework " << *framework;
 
@@ -3447,29 +3442,30 @@ void Master::launchTasks(
 
   // Currently when no tasks are specified in the launchTasks message
   // it is implicitly considered a decline of the offers.
-  if (!tasks.empty()) {
+  if (!launchTasksMessage.tasks().empty()) {
     scheduler::Call::Accept message;
-    message.mutable_filters()->CopyFrom(filters);
+
+    *message.mutable_filters() =
+      std::move(*launchTasksMessage.mutable_filters());
+
+    *message.mutable_offer_ids() =
+      std::move(*launchTasksMessage.mutable_offer_ids());
 
     Offer::Operation* operation = message.add_operations();
     operation->set_type(Offer::Operation::LAUNCH);
 
-    foreach (const TaskInfo& task, tasks) {
-      operation->mutable_launch()->add_task_infos()->CopyFrom(task);
-    }
-
-    foreach (const OfferID& offerId, offerIds) {
-      message.add_offer_ids()->CopyFrom(offerId);
-    }
+    *operation->mutable_launch()->mutable_task_infos() =
+      std::move(*launchTasksMessage.mutable_tasks());
 
     accept(framework, message);
   } else {
     scheduler::Call::Decline message;
-    message.mutable_filters()->CopyFrom(filters);
 
-    foreach (const OfferID& offerId, offerIds) {
-      message.add_offer_ids()->CopyFrom(offerId);
-    }
+    *message.mutable_filters() =
+      std::move(*launchTasksMessage.mutable_filters());
+
+    *message.mutable_offer_ids() =
+      std::move(*launchTasksMessage.mutable_offer_ids());
 
     decline(framework, message);
   }

http://git-wip-us.apache.org/repos/asf/mesos/blob/b281f56e/src/master/master.hpp
----------------------------------------------------------------------
diff --git a/src/master/master.hpp b/src/master/master.hpp
index df021ea..0667daf 100644
--- a/src/master/master.hpp
+++ b/src/master/master.hpp
@@ -433,10 +433,7 @@ public:
 
   void launchTasks(
       const process::UPID& from,
-      const FrameworkID& frameworkId,
-      const std::vector<TaskInfo>& tasks,
-      const Filters& filters,
-      const std::vector<OfferID>& offerIds);
+      LaunchTasksMessage&& launchTasksMessage);
 
   void reviveOffers(
       const process::UPID& from,