You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by vi...@apache.org on 2016/04/12 21:23:38 UTC

[5/5] mesos git commit: Move metrics code into the scheduler body.

Move metrics code into the scheduler body.

Since the HTTP scheduler is a libprocess process, the sub-class
`Metrics` does not need to be a process anymore.  This moves the
process-specific code into the appropriate place in the scheduler.

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


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

Branch: refs/heads/master
Commit: b36596b9dcdc9609147f401c0011f712c55608f8
Parents: f3aae0f
Author: Joseph Wu <jo...@mesosphere.io>
Authored: Tue Apr 12 12:23:24 2016 -0700
Committer: Vinod Kone <vi...@gmail.com>
Committed: Tue Apr 12 12:23:24 2016 -0700

----------------------------------------------------------------------
 src/examples/long_lived_framework.cpp | 93 +++++++++---------------------
 1 file changed, 26 insertions(+), 67 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/b36596b9/src/examples/long_lived_framework.cpp
----------------------------------------------------------------------
diff --git a/src/examples/long_lived_framework.cpp b/src/examples/long_lived_framework.cpp
index f5700bd..853e676 100644
--- a/src/examples/long_lived_framework.cpp
+++ b/src/examples/long_lived_framework.cpp
@@ -110,14 +110,10 @@ public:
       tasksLaunched(0),
       metrics(*this)
   {
-    process::spawn(metrics);
+    start_time = Clock::now();
   }
 
-  virtual ~LongLivedScheduler()
-  {
-    process::terminate(metrics);
-    process::wait(metrics);
-  }
+  virtual ~LongLivedScheduler() {}
 
 protected:
   virtual void initialize()
@@ -144,8 +140,6 @@ protected:
     LOG(INFO) << "Disconnected!";
 
     state = DISCONNECTED;
-
-    metrics.isRegistered = false;
   }
 
   void doReliableRegistration()
@@ -185,8 +179,6 @@ protected:
             CopyFrom(event.subscribed().framework_id());
 
           state = SUBSCRIBED;
-
-          metrics.isRegistered = true;
           break;
         }
 
@@ -360,6 +352,7 @@ private:
   void launch(const Offer& offer)
   {
     int taskId = tasksLaunched++;
+    ++metrics.tasks_launched;
 
     TaskInfo task;
     task.set_name("Task " + stringify(taskId));
@@ -406,85 +399,51 @@ private:
 
   Owned<Mesos> mesos;
 
-  struct Metrics : process::Process<Metrics>
+  process::Time start_time;
+  double _uptime_secs()
+  {
+    return (Clock::now() - start_time).secs();
+  }
+
+  double _subscribed()
+  {
+    return state == SUBSCRIBED ? 1 : 0;
+  }
+
+  struct Metrics
   {
-    Metrics(const LongLivedScheduler& _scheduler)
-      : ProcessBase("framework"),
-        scheduler(_scheduler),
-        isRegistered(false),
-        uptime_secs(
+    Metrics(const LongLivedScheduler& scheduler)
+      : uptime_secs(
             "long_lived_framework/uptime_secs",
-            defer(this, &Self::_uptime_secs)),
-        registered(
-            "long_lived_framework/registered",
-            defer(this, &Self::_registered)),
+            defer(scheduler, &LongLivedScheduler::_uptime_secs)),
+        subscribed(
+            "long_lived_framework/subscribed",
+            defer(scheduler, &LongLivedScheduler::_subscribed)),
         offers_received("long_lived_framework/offers_received"),
-        tasks_launched(
-            "long_lived_framework/tasks_launched",
-            defer(this, &Self::_tasksLaunched)),
+        tasks_launched("long_lived_framework/tasks_launched"),
         abnormal_terminations("long_lived_framework/abnormal_terminations")
     {
-      start_time = Clock::now();
-
       process::metrics::add(uptime_secs);
-      process::metrics::add(registered);
+      process::metrics::add(subscribed);
       process::metrics::add(offers_received);
       process::metrics::add(tasks_launched);
       process::metrics::add(abnormal_terminations);
     }
 
-    virtual void initialize()
-    {
-      // Special route for metric metadata.
-      route(
-          "/counters",
-          HELP(
-              TLDR("List of counter-type metrics."),
-              DESCRIPTION("Returns 200 OK iff the request is accepted."),
-              AUTHENTICATION(false)),
-          [this](const process::http::Request& request) {
-            JSON::Array array;
-            array.values.push_back("long_lived_framework/offers_received");
-            array.values.push_back(
-                "long_lived_framework/abnormal_terminations");
-
-            return OK(array, request.url.query.get("jsonp"));
-          });
-    }
-
     ~Metrics()
     {
       process::metrics::remove(uptime_secs);
-      process::metrics::remove(registered);
+      process::metrics::remove(subscribed);
       process::metrics::remove(offers_received);
       process::metrics::remove(tasks_launched);
       process::metrics::remove(abnormal_terminations);
     }
 
-    const LongLivedScheduler& scheduler;
-
-    process::Time start_time;
-    double _uptime_secs()
-    {
-      return (Clock::now() - start_time).secs();
-    }
-
-    bool isRegistered;
-    double _registered()
-    {
-      return isRegistered ? 1 : 0;
-    }
-
-    double _tasksLaunched()
-    {
-      return scheduler.tasksLaunched;
-    }
-
     process::metrics::Gauge uptime_secs;
-    process::metrics::Gauge registered;
+    process::metrics::Gauge subscribed;
 
     process::metrics::Counter offers_received;
-    process::metrics::Gauge tasks_launched;
+    process::metrics::Counter tasks_launched;
 
     // The only expected terminal state is TASK_FINISHED.
     // Other terminal states are considered incorrect.