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 2014/05/19 21:16:13 UTC

git commit: Added elected time to master's web ui.

Repository: mesos
Updated Branches:
  refs/heads/master dc7e42657 -> be8b90792


Added elected time to master's web ui.

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


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

Branch: refs/heads/master
Commit: be8b90792b268080794004533ba8b8a35eaab615
Parents: dc7e426
Author: Vinod Kone <vi...@twitter.com>
Authored: Thu May 15 15:40:05 2014 -0700
Committer: Vinod Kone <vi...@twitter.com>
Committed: Mon May 19 12:16:02 2014 -0700

----------------------------------------------------------------------
 src/master/http.cpp               |  5 +++++
 src/master/master.cpp             | 23 ++++++++++++++++-------
 src/master/master.hpp             |  2 ++
 src/webui/master/static/home.html |  4 ++++
 4 files changed, 27 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/be8b9079/src/master/http.cpp
----------------------------------------------------------------------
diff --git a/src/master/http.cpp b/src/master/http.cpp
index f54c841..a341866 100644
--- a/src/master/http.cpp
+++ b/src/master/http.cpp
@@ -470,6 +470,11 @@ Future<Response> Master::Http::state(const Request& request)
   object.values["build_time"] = build::TIME;
   object.values["build_user"] = build::USER;
   object.values["start_time"] = master.startTime.secs();
+
+  if (master.electedTime.isSome()) {
+    object.values["elected_time"] = master.electedTime.get().secs();
+  }
+
   object.values["id"] = master.info().id();
   object.values["pid"] = string(master.self());
   object.values["hostname"] = master.info().hostname();

http://git-wip-us.apache.org/repos/asf/mesos/blob/be8b9079/src/master/master.cpp
----------------------------------------------------------------------
diff --git a/src/master/master.cpp b/src/master/master.cpp
index 63b6cdc..075755c 100644
--- a/src/master/master.cpp
+++ b/src/master/master.cpp
@@ -224,7 +224,8 @@ Master::Master(
     files(_files),
     contender(_contender),
     detector(_detector),
-    metrics(*this)
+    metrics(*this),
+    electedTime(None())
 {
   // NOTE: We populate 'info_' here instead of inside 'initialize()'
   // because 'StandaloneMasterDetector' needs access to the info.
@@ -929,13 +930,21 @@ void Master::detected(const Future<Option<MasterInfo> >& _leader)
     EXIT(1) << "Lost leadership... committing suicide!";
   }
 
-  if (!wasElected && elected()) {
-    LOG(INFO) << "Elected as the leading master!";
+  if (elected()) {
+    electedTime = Clock::now();
+
+    if (!wasElected) {
+      LOG(INFO) << "Elected as the leading master!";
 
-    // Begin the recovery process, bail if it fails or is discarded.
-    recover()
-      .onFailed(lambda::bind(fail, "Recovery failed", lambda::_1))
-      .onDiscarded(lambda::bind(fail, "Recovery failed", "discarded"));
+      // Begin the recovery process, bail if it fails or is discarded.
+      recover()
+        .onFailed(lambda::bind(fail, "Recovery failed", lambda::_1))
+        .onDiscarded(lambda::bind(fail, "Recovery failed", "discarded"));
+    } else {
+      // This happens if there is a ZK blip that causes a re-election
+      // but the same leading master is elected as leader.
+      LOG(INFO) << "Re-elected as the leading master";
+    }
   }
 
   // Keep detecting.

http://git-wip-us.apache.org/repos/asf/mesos/blob/be8b9079/src/master/master.hpp
----------------------------------------------------------------------
diff --git a/src/master/master.hpp b/src/master/master.hpp
index 25d9e83..5e0d712 100644
--- a/src/master/master.hpp
+++ b/src/master/master.hpp
@@ -598,6 +598,8 @@ private:
   double _resources_percent(const std::string& name);
 
   process::Time startTime; // Start time used to calculate uptime.
+
+  Option<process::Time> electedTime; // Time when this master is elected.
 };
 
 

http://git-wip-us.apache.org/repos/asf/mesos/blob/be8b9079/src/webui/master/static/home.html
----------------------------------------------------------------------
diff --git a/src/webui/master/static/home.html b/src/webui/master/static/home.html
index ea9444a..ce8ca19 100644
--- a/src/webui/master/static/home.html
+++ b/src/webui/master/static/home.html
@@ -33,6 +33,10 @@
         <dd>
           <m-timestamp value="{{state.start_time * 1000}}"></m-timestamp>
         </dd>
+        <dt>Elected:</dt>
+        <dd>
+          <m-timestamp value="{{state.elected_time * 1000}}"></m-timestamp>
+        </dd>
       </dl>
 
       <p><a href="" ng-click="log($event)">LOG</a></p>