diff --git a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/DumpClusterStatusAction.java b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/DumpClusterStatusAction.java index e738505af96..f6a1c4251b5 100644 --- a/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/DumpClusterStatusAction.java +++ b/hbase-it/src/test/java/org/apache/hadoop/hbase/chaos/actions/DumpClusterStatusAction.java @@ -19,6 +19,14 @@ package org.apache.hadoop.hbase.chaos.actions; import java.io.IOException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import org.apache.hadoop.hbase.ClusterStatus; +import org.apache.hadoop.hbase.ServerName; +import org.apache.hadoop.hbase.net.Address; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -28,18 +36,71 @@ import org.slf4j.LoggerFactory; public class DumpClusterStatusAction extends Action { private static final Logger LOG = LoggerFactory.getLogger(DumpClusterStatusAction.class); - @Override protected Logger getLogger() { + private Set
initialRegionServers; + + @Override + protected Logger getLogger() { return LOG; } @Override public void init(ActionContext context) throws IOException { super.init(context); + initialRegionServers = collectKnownRegionServers(initialStatus); } @Override public void perform() throws Exception { getLogger().debug("Performing action: Dump cluster status"); - getLogger().info("Cluster status\n" + cluster.getClusterStatus()); + final ClusterStatus currentMetrics = cluster.getClusterStatus(); + getLogger().info("Cluster status\n{}", currentMetrics); + reportMissingRegionServers(currentMetrics); + reportNewRegionServers(currentMetrics); + } + + /** + * Build a set of all the host:port pairs of region servers known to this cluster. + */ + private static Set collectKnownRegionServers(final ClusterStatus clusterStatus) { + final Set regionServers = new HashSet<>(); + final Set