Add LeadershipChangeCount to ShardStats 81/17981/2
authorTom Pantelis <tpanteli@brocade.com>
Wed, 8 Apr 2015 18:09:46 +0000 (14:09 -0400)
committerTom Pantelis <tpanteli@brocade.com>
Fri, 10 Apr 2015 20:02:34 +0000 (16:02 -0400)
It's useful to see how many shard leadership changes have occurred so I
added a LeadershipChangeCount stat to the ShardStats mbean. This helps
to determine if spurious leadership changes are occurring. I also added
LastLeadershipChangeTime.

Change-Id: I33ddbcd96d6fa93fbfa9887393a2f5a40027d9f3
Signed-off-by: Tom Pantelis <tpanteli@brocade.com>
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/Shard.java
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/jmx/mbeans/shard/ShardStats.java
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/jmx/mbeans/shard/ShardStatsMXBean.java

index 81449c574780705196e28d3dbd738151c2d948cd..7110adc625ac52aa6b54717052a8f511beef89a7 100644 (file)
@@ -701,6 +701,11 @@ public class Shard extends RaftActor {
         }
     }
 
+    @Override
+    protected void onLeaderChanged(String oldLeader, String newLeader) {
+        shardMBean.incrementLeadershipChangeCount();
+    }
+
     @Override
     public String persistenceId() {
         return this.name;
index fb59b7643f09f77ca19013a4cda3051bf4320bd8..e3c8ced878232f2a831d541f6bbb3b14b233327d 100644 (file)
@@ -77,6 +77,10 @@ public class ShardStats extends AbstractMXBean implements ShardStatsMXBean {
 
     private String statRetrievalTime;
 
+    private long leadershipChangeCount;
+
+    private long lastLeadershipChangeTime;
+
     public ShardStats(final String shardName, final String mxBeanType) {
         super(shardName, mxBeanType, JMX_CATEGORY_SHARD);
     }
@@ -366,4 +370,19 @@ public class ShardStats extends AbstractMXBean implements ShardStatsMXBean {
         getOnDemandRaftState();
         return statRetrievalError;
     }
+
+    @Override
+    public long getLeadershipChangeCount() {
+        return leadershipChangeCount;
+    }
+
+    public void incrementLeadershipChangeCount() {
+        leadershipChangeCount++;
+        lastLeadershipChangeTime = System.currentTimeMillis();
+    }
+
+    @Override
+    public String getLastLeadershipChangeTime() {
+        return DATE_FORMAT.format(new Date(lastLeadershipChangeTime));
+    }
 }