Updated Branches:
  refs/heads/master 82fa5bff4 -> 58c400745

Added a re-registration time for slaves.

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


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

Branch: refs/heads/master
Commit: 58c4007450eb3541de0619e929dca386f81c60c3
Parents: 450e3aa
Author: Benjamin Mahler <bmah...@twitter.com>
Authored: Thu Aug 22 10:52:50 2013 -0700
Committer: Benjamin Mahler <bmah...@twitter.com>
Committed: Fri Aug 23 14:40:30 2013 -0700

----------------------------------------------------------------------
 src/master/http.cpp                 |  5 +++++
 src/master/master.cpp               |  3 +++
 src/master/master.hpp               |  7 +++++++
 src/webui/master/static/slaves.html | 16 ++++++++++++++++
 4 files changed, 31 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/58c40074/src/master/http.cpp
----------------------------------------------------------------------
diff --git a/src/master/http.cpp b/src/master/http.cpp
index 1ac84a9..f2a535a 100644
--- a/src/master/http.cpp
+++ b/src/master/http.cpp
@@ -208,6 +208,11 @@ JSON::Object model(const Slave& slave)
   object.values["pid"] = string(slave.pid);
   object.values["hostname"] = slave.info.hostname();
   object.values["registered_time"] = slave.registeredTime.secs();
+
+  if (slave.reregisteredTime.isSome()) {
+    object.values["reregistered_time"] = slave.reregisteredTime.get().secs();
+  }
+
   object.values["resources"] = model(slave.info.resources());
   object.values["attributes"] = model(slave.info.attributes());
   return object;

http://git-wip-us.apache.org/repos/asf/mesos/blob/58c40074/src/master/master.cpp
----------------------------------------------------------------------
diff --git a/src/master/master.cpp b/src/master/master.cpp
index d53b8bb..69479e4 100644
--- a/src/master/master.cpp
+++ b/src/master/master.cpp
@@ -1075,6 +1075,8 @@ void Master::reregisterSlave(const SlaveID& slaveId,
   } else {
     Slave* slave = getSlave(slaveId);
     if (slave != NULL) {
+      slave->reregisteredTime = Clock::now();
+
       // NOTE: This handles the case where a slave tries to
       // re-register with an existing master (e.g. because of a
       // spurious Zookeeper session expiration or after the slave
@@ -1119,6 +1121,7 @@ void Master::reregisterSlave(const SlaveID& slaveId,
       // NOTE: This handles the case when the slave tries to
       // re-register with a failed over master.
       slave = new Slave(slaveInfo, slaveId, from, Clock::now());
+      slave->reregisteredTime = Clock::now();
 
       LOG(INFO) << "Attempting to re-register slave " << slave->id << " at "
                 << slave->pid << " (" << slave->info.hostname() << ")";

http://git-wip-us.apache.org/repos/asf/mesos/blob/58c40074/src/master/master.hpp
----------------------------------------------------------------------
diff --git a/src/master/master.hpp b/src/master/master.hpp
index 30752d2..6bd8998 100644
--- a/src/master/master.hpp
+++ b/src/master/master.hpp
@@ -247,6 +247,12 @@ private:
   hashmap<FrameworkID, Framework*> frameworks;
 
   hashmap<SlaveID, Slave*> slaves;
+
+  // Ideally we could use SlaveIDs to track deactivated slaves.
+  // However, we would not know when to remove the SlaveID from this
+  // set. After deactivation, the same slave machine can register with
+  // the same. Using PIDs allows us to remove the deactivated
+  // slave PID once any slave registers with the same PID!
   hashset<UPID> deactivatedSlaves;
 
   hashmap<OfferID, Offer*> offers;
@@ -383,6 +389,7 @@ struct Slave
   UPID pid;
 
   Time registeredTime;
+  Option<Time> reregisteredTime;
   Time lastHeartbeat;
 
   // We mark a slave 'disconnected' when it has checkpointing

http://git-wip-us.apache.org/repos/asf/mesos/blob/58c40074/src/webui/master/static/slaves.html
----------------------------------------------------------------------
diff --git a/src/webui/master/static/slaves.html 
b/src/webui/master/static/slaves.html
index 15877b7..99b1c35 100644
--- a/src/webui/master/static/slaves.html
+++ b/src/webui/master/static/slaves.html
@@ -36,6 +36,10 @@
           ng-click="selectColumn('slaves', 'registered_time')">
         Registered
       </th>
+      <th ng-class="columnClass('slaves', 'reregistered_time')"
+          ng-click="selectColumn('slaves', 'reregistered_time')">
+        Re-Registered
+      </th>
     </tr>
   </thead>
   <tr ng-repeat="slave in _.values(slaves) | 
orderBy:tables['slaves'].selected_column:tables['slaves'].reverse">
@@ -66,5 +70,17 @@
         <i class="icon-file"></i>
       </button>
     </td>
+    <td>
+      <abbr title="{{slave.reregistered_time * 1000 | isoDate}}">
+        {{slave.reregistered_time * 1000 | relativeDate}}</abbr>
+      <button class="btn btn-mini btn-toggle"
+          clipboard
+          data-clipboard-text="{{slave.reregistered_time * 1000 | isoDate}}"
+          tooltip="Copy timestamp"
+          tooltip-placement="right"
+          tooltip-trigger="clipboardhover">
+        <i class="icon-file"></i>
+      </button>
+    </td>
   </tr>
 </table>

Reply via email to