Repository: mesos
Updated Branches:
  refs/heads/master 5c4e46091 -> 0ca126fa8


Aggregated as member Http in Master.

Before this change the Http object was copied in to each HTTP routing
lambda. If state were to be introduced, this could create hard to
debug issues. Aggregating a single instance as a member of Master
prevents these issues and simplifies access to communal code paths
such as `authenticate`.

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


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

Branch: refs/heads/master
Commit: 41badcc63967533c9cdd1d843106ccb16d1c93e9
Parents: 5c4e460
Author: Joris Van Remoortere <[email protected]>
Authored: Thu Dec 10 09:17:57 2015 -0800
Committer: Joris Van Remoortere <[email protected]>
Committed: Thu Dec 10 11:46:43 2015 -0800

----------------------------------------------------------------------
 src/master/master.cpp | 51 +++++++++++++++++++++++-----------------------
 src/master/master.hpp |  2 ++
 2 files changed, 27 insertions(+), 26 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/41badcc6/src/master/master.cpp
----------------------------------------------------------------------
diff --git a/src/master/master.cpp b/src/master/master.cpp
index 7acdc0a..0d14822 100644
--- a/src/master/master.cpp
+++ b/src/master/master.cpp
@@ -278,6 +278,7 @@ Master::Master(
     const Flags& _flags)
   : ProcessBase("master"),
     flags(_flags),
+    http(this),
     allocator(_allocator),
     registrar(_registrar),
     repairer(_repairer),
@@ -743,57 +744,55 @@ void Master::initialize()
       &AuthenticateMessage::pid);
 
   // Setup HTTP routes.
-  Http http = Http(this);
-
   route("/api/v1/scheduler",
         Http::SCHEDULER_HELP(),
-        [http](const process::http::Request& request) {
+        [this](const process::http::Request& request) {
           Http::log(request);
           return http.scheduler(request);
         });
   route("/create-volumes",
         Http::CREATE_VOLUMES_HELP(),
-        [http](const process::http::Request& request) {
+        [this](const process::http::Request& request) {
           Http::log(request);
           return http.createVolumes(request);
         });
   route("/destroy-volumes",
         Http::DESTROY_VOLUMES_HELP(),
-        [http](const process::http::Request& request) {
+        [this](const process::http::Request& request) {
           Http::log(request);
           return http.destroyVolumes(request);
         });
   route("/frameworks",
         Http::FRAMEWORKS(),
-        [http](const process::http::Request& request) {
+        [this](const process::http::Request& request) {
           Http::log(request);
           return http.frameworks(request);
         });
   route("/flags",
         Http::FLAGS_HELP(),
-        [http](const process::http::Request& request) {
+        [this](const process::http::Request& request) {
           Http::log(request);
           return http.flags(request);
         });
   route("/health",
         Http::HEALTH_HELP(),
-        [http](const process::http::Request& request) {
+        [this](const process::http::Request& request) {
           return http.health(request);
         });
   route("/observe",
         Http::OBSERVE_HELP(),
-        [http](const process::http::Request& request) {
+        [this](const process::http::Request& request) {
           Http::log(request);
           return http.observe(request);
         });
   route("/redirect",
         Http::REDIRECT_HELP(),
-        [http](const process::http::Request& request) {
+        [this](const process::http::Request& request) {
           return http.redirect(request);
         });
   route("/reserve",
         Http::RESERVE_HELP(),
-        [http](const process::http::Request& request) {
+        [this](const process::http::Request& request) {
           Http::log(request);
           return http.reserve(request);
         });
@@ -801,25 +800,25 @@ void Master::initialize()
   // deprecation cycle on 0.26.
   route("/roles.json",
         Http::ROLES_HELP(),
-        [http](const process::http::Request& request) {
+        [this](const process::http::Request& request) {
           Http::log(request);
           return http.roles(request);
         });
   route("/roles",
         Http::ROLES_HELP(),
-        [http](const process::http::Request& request) {
+        [this](const process::http::Request& request) {
           Http::log(request);
           return http.roles(request);
         });
   route("/teardown",
         Http::TEARDOWN_HELP(),
-        [http](const process::http::Request& request) {
+        [this](const process::http::Request& request) {
           Http::log(request);
           return http.teardown(request);
         });
   route("/slaves",
         Http::SLAVES_HELP(),
-        [http](const process::http::Request& request) {
+        [this](const process::http::Request& request) {
           Http::log(request);
           return http.slaves(request);
         });
@@ -827,19 +826,19 @@ void Master::initialize()
   // deprecation cycle on 0.26.
   route("/state.json",
         Http::STATE_HELP(),
-        [http](const process::http::Request& request) {
+        [this](const process::http::Request& request) {
           Http::log(request);
           return http.state(request);
         });
   route("/state",
         Http::STATE_HELP(),
-        [http](const process::http::Request& request) {
+        [this](const process::http::Request& request) {
           Http::log(request);
           return http.state(request);
         });
   route("/state-summary",
         Http::STATESUMMARY_HELP(),
-        [http](const process::http::Request& request) {
+        [this](const process::http::Request& request) {
           Http::log(request);
           return http.stateSummary(request);
         });
@@ -847,49 +846,49 @@ void Master::initialize()
   // deprecation cycle.
   route("/tasks.json",
         Http::TASKS_HELP(),
-        [http](const process::http::Request& request) {
+        [this](const process::http::Request& request) {
           Http::log(request);
           return http.tasks(request);
         });
   route("/tasks",
         Http::TASKS_HELP(),
-        [http](const process::http::Request& request) {
+        [this](const process::http::Request& request) {
           Http::log(request);
           return http.tasks(request);
         });
   route("/maintenance/schedule",
         Http::MAINTENANCE_SCHEDULE_HELP(),
-        [http](const process::http::Request& request) {
+        [this](const process::http::Request& request) {
           Http::log(request);
           return http.maintenanceSchedule(request);
         });
   route("/maintenance/status",
         Http::MAINTENANCE_STATUS_HELP(),
-        [http](const process::http::Request& request) {
+        [this](const process::http::Request& request) {
           Http::log(request);
           return http.maintenanceStatus(request);
         });
   route("/machine/down",
         Http::MACHINE_DOWN_HELP(),
-        [http](const process::http::Request& request) {
+        [this](const process::http::Request& request) {
           Http::log(request);
           return http.machineDown(request);
         });
   route("/machine/up",
         Http::MACHINE_UP_HELP(),
-        [http](const process::http::Request& request) {
+        [this](const process::http::Request& request) {
           Http::log(request);
           return http.machineUp(request);
         });
   route("/unreserve",
         Http::UNRESERVE_HELP(),
-        [http](const process::http::Request& request) {
+        [this](const process::http::Request& request) {
           Http::log(request);
           return http.unreserve(request);
         });
   route("/quota",
         Http::QUOTA_HELP(),
-        [http](const process::http::Request& request) {
+        [this](const process::http::Request& request) {
           Http::log(request);
           return http.quota(request);
         });

http://git-wip-us.apache.org/repos/asf/mesos/blob/41badcc6/src/master/master.hpp
----------------------------------------------------------------------
diff --git a/src/master/master.hpp b/src/master/master.hpp
index 4683fa5..d8f9801 100644
--- a/src/master/master.hpp
+++ b/src/master/master.hpp
@@ -1131,6 +1131,8 @@ private:
 
   const Flags flags;
 
+  Http http;
+
   Option<MasterInfo> leader; // Current leading master.
 
   mesos::master::allocator::Allocator* allocator;

Reply via email to