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 2017/12/21 01:43:51 UTC

mesos git commit: Eliminated some unnecessary copying in the HTTP operator API.

Repository: mesos
Updated Branches:
  refs/heads/master 327726d3c -> 3035c8828


Eliminated some unnecessary copying in the HTTP operator API.

This is only a minor portion of the performance improvements
needed to bring the v1 operator API close to the v0 API
performance.

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


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

Branch: refs/heads/master
Commit: 3035c8828345e7b0f33a4755d50139c8b693d567
Parents: 327726d
Author: Benjamin Mahler <bm...@apache.org>
Authored: Tue Dec 19 17:43:14 2017 -0800
Committer: Benjamin Mahler <bm...@apache.org>
Committed: Wed Dec 20 17:34:18 2017 -0800

----------------------------------------------------------------------
 src/master/http.cpp | 54 +++++++++++++++++++++++-------------------------
 1 file changed, 26 insertions(+), 28 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/3035c882/src/master/http.cpp
----------------------------------------------------------------------
diff --git a/src/master/http.cpp b/src/master/http.cpp
index ec170a2..5ef7d35 100644
--- a/src/master/http.cpp
+++ b/src/master/http.cpp
@@ -883,12 +883,12 @@ Future<Response> Master::Http::subscribe(
 
           mesos::master::Event event;
           event.set_type(mesos::master::Event::SUBSCRIBED);
-          event.mutable_subscribed()->mutable_get_state()->CopyFrom(
+          *event.mutable_subscribed()->mutable_get_state() =
               _getState(
                   frameworksApprover,
                   tasksApprover,
                   executorsApprover,
-                  rolesAcceptor));
+                  rolesAcceptor);
 
           event.mutable_subscribed()->set_heartbeat_interval_seconds(
               DEFAULT_HEARTBEAT_INTERVAL.secs());
@@ -1745,8 +1745,7 @@ Future<Response> Master::Http::getFrameworks(
           -> Future<Response> {
       mesos::master::Response response;
       response.set_type(mesos::master::Response::GET_FRAMEWORKS);
-      response.mutable_get_frameworks()->CopyFrom(
-          _getFrameworks(frameworksApprover));
+      *response.mutable_get_frameworks() = _getFrameworks(frameworksApprover);
 
       return OK(serialize(contentType, evolve(response)),
                 stringify(contentType));
@@ -1765,7 +1764,7 @@ mesos::master::Response::GetFrameworks Master::Http::_getFrameworks(
       continue;
     }
 
-    getFrameworks.add_frameworks()->CopyFrom(model(*framework));
+    *getFrameworks.add_frameworks() = model(*framework);
   }
 
   foreachvalue (const Owned<Framework>& framework,
@@ -1775,7 +1774,7 @@ mesos::master::Response::GetFrameworks Master::Http::_getFrameworks(
       continue;
     }
 
-    getFrameworks.add_completed_frameworks()->CopyFrom(model(*framework));
+    *getFrameworks.add_completed_frameworks() = model(*framework);
   }
 
   return getFrameworks;
@@ -1818,8 +1817,8 @@ Future<Response> Master::Http::getExecutors(
       mesos::master::Response response;
       response.set_type(mesos::master::Response::GET_EXECUTORS);
 
-      response.mutable_get_executors()->CopyFrom(
-          _getExecutors(frameworksApprover, executorsApprover));
+      *response.mutable_get_executors() =
+          _getExecutors(frameworksApprover, executorsApprover);
 
       return OK(serialize(contentType, evolve(response)),
                 stringify(contentType));
@@ -1933,12 +1932,13 @@ Future<Response> Master::Http::getState(
 
           mesos::master::Response response;
           response.set_type(mesos::master::Response::GET_STATE);
-          response.mutable_get_state()->CopyFrom(
+
+          *response.mutable_get_state() =
               _getState(
                   frameworksApprover,
                   tasksApprover,
                   executorsApprover,
-                  rolesAcceptor));
+                  rolesAcceptor);
 
           return OK(
               serialize(contentType, evolve(response)), stringify(contentType));
@@ -1959,16 +1959,17 @@ mesos::master::Response::GetState Master::Http::_getState(
 
   mesos::master::Response::GetState getState;
 
-  getState.mutable_get_tasks()->CopyFrom(
-      _getTasks(frameworksApprover, tasksApprover));
+  *getState.mutable_get_tasks() =
+      _getTasks(frameworksApprover, tasksApprover);
 
-  getState.mutable_get_executors()->CopyFrom(
-      _getExecutors(frameworksApprover, executorsApprover));
+  *getState.mutable_get_executors() =
+      _getExecutors(frameworksApprover, executorsApprover);
 
-  getState.mutable_get_frameworks()->CopyFrom(
-      _getFrameworks(frameworksApprover));
+  *getState.mutable_get_frameworks() =
+      _getFrameworks(frameworksApprover);
 
-  getState.mutable_get_agents()->CopyFrom(_getAgents(rolesAcceptor));
+  *getState.mutable_get_agents() =
+      _getAgents(rolesAcceptor);
 
   return getState;
 }
@@ -2592,7 +2593,7 @@ Future<process::http::Response> Master::Http::getAgents(
             -> Future<process::http::Response> {
           mesos::master::Response response;
           response.set_type(mesos::master::Response::GET_AGENTS);
-          response.mutable_get_agents()->CopyFrom(_getAgents(rolesAcceptor));
+          *response.mutable_get_agents() = _getAgents(rolesAcceptor);
 
           return OK(serialize(contentType, evolve(response)),
                     stringify(contentType));
@@ -2606,8 +2607,8 @@ mesos::master::Response::GetAgents Master::Http::_getAgents(
   mesos::master::Response::GetAgents getAgents;
   foreachvalue (const Slave* slave, master->slaves.registered) {
     mesos::master::Response::GetAgents::Agent* agent = getAgents.add_agents();
-    agent->CopyFrom(
-        protobuf::master::event::createAgentResponse(*slave, rolesAcceptor));
+    *agent = protobuf::master::event::createAgentResponse(
+        *slave, rolesAcceptor);
 
     foreachvalue (
         const ResourceProviderInfo& resourceProviderInfo,
@@ -4183,9 +4184,8 @@ Future<Response> Master::Http::getTasks(
       mesos::master::Response response;
       response.set_type(mesos::master::Response::GET_TASKS);
 
-      response.mutable_get_tasks()->CopyFrom(
-          _getTasks(frameworksApprover,
-                    tasksApprover));
+      *response.mutable_get_tasks() =
+        _getTasks(frameworksApprover, tasksApprover);
 
       return OK(serialize(contentType, evolve(response)),
                 stringify(contentType));
@@ -4229,10 +4229,8 @@ mesos::master::Response::GetTasks Master::Http::_getTasks(
         continue;
       }
 
-      const Task& task =
+      *getTasks.add_pending_tasks() =
         protobuf::createTask(taskInfo, TASK_STAGING, framework->id());
-
-      getTasks.add_pending_tasks()->CopyFrom(task);
     }
 
     // Active tasks.
@@ -4568,8 +4566,8 @@ Future<Response> Master::Http::getMaintenanceSchedule(
 
         response.set_type(mesos::master::Response::GET_MAINTENANCE_SCHEDULE);
 
-        response.mutable_get_maintenance_schedule()->mutable_schedule()
-          ->CopyFrom(_getMaintenanceSchedule(approver));
+        *response.mutable_get_maintenance_schedule()->mutable_schedule() =
+          _getMaintenanceSchedule(approver);
 
         return OK(serialize(contentType, evolve(response)),
                   stringify(contentType));