From 66933d6f5760a93cf4e26c33e33dbb17c041e289 Mon Sep 17 00:00:00 2001 From: Tom Pantelis Date: Wed, 8 Apr 2015 14:09:46 -0400 Subject: [PATCH] Add LeadershipChangeCount to ShardStats 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 --- .../controller/cluster/datastore/Shard.java | 5 +++++ .../jmx/mbeans/shard/ShardStats.java | 19 +++++++++++++++++++ .../jmx/mbeans/shard/ShardStatsMXBean.java | 4 ++++ 3 files changed, 28 insertions(+) diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/Shard.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/Shard.java index 81449c5747..7110adc625 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/Shard.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/Shard.java @@ -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; diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/jmx/mbeans/shard/ShardStats.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/jmx/mbeans/shard/ShardStats.java index fb59b7643f..e3c8ced878 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/jmx/mbeans/shard/ShardStats.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/jmx/mbeans/shard/ShardStats.java @@ -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)); + } } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/jmx/mbeans/shard/ShardStatsMXBean.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/jmx/mbeans/shard/ShardStatsMXBean.java index 1c0c83b699..12cea50e44 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/jmx/mbeans/shard/ShardStatsMXBean.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/jmx/mbeans/shard/ShardStatsMXBean.java @@ -79,4 +79,8 @@ public interface ShardStatsMXBean { List getFollowerInfo(); String getPeerAddresses(); + + long getLeadershipChangeCount(); + + String getLastLeadershipChangeTime(); } -- 2.36.6