diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/tool/Canary.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/tool/Canary.java index eb536a3..32e391a 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/tool/Canary.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/tool/Canary.java @@ -34,7 +34,9 @@ import org.apache.commons.lang.time.StopWatch; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.conf.Configured; import org.apache.hadoop.hbase.DoNotRetryIOException; +import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.HColumnDescriptor; import org.apache.hadoop.hbase.HRegionInfo; import org.apache.hadoop.hbase.HTableDescriptor; @@ -61,7 +63,7 @@ import org.apache.hadoop.util.ToolRunner; * 2. regionserver mode - Foreach regionserver tries to get one row from one table * selected randomly and outputs some information about failure or latency. */ -public final class Canary implements Tool { +public final class Canary extends Configured implements Tool { // Sink interface used by the canary to outputs information public interface Sink { public void publishReadFailure(HRegionInfo region, Exception e); @@ -121,7 +123,6 @@ public final class Canary implements Tool { private static final Log LOG = LogFactory.getLog(Canary.class); - private Configuration conf = null; private long interval = 0; private Sink sink = null; @@ -130,25 +131,16 @@ public final class Canary implements Tool { private boolean failOnError = true; private boolean regionServerMode = false; - public Canary() { - this(new RegionServerStdOutSink()); + public Canary(Configuration conf) { + this(conf, new RegionServerStdOutSink()); } - public Canary(Sink sink) { + public Canary(Configuration conf, Sink sink) { + super(conf); this.sink = sink; } @Override - public Configuration getConf() { - return conf; - } - - @Override - public void setConf(Configuration conf) { - this.conf = conf; - } - - @Override public int run(String[] args) throws Exception { int index = -1; @@ -302,12 +294,12 @@ public final class Canary implements Tool { if(this.regionServerMode) { monitor = new RegionServerMonitor( - this.conf, + this.getConf(), monitorTargets, this.useRegExp, (ExtendedSink)this.sink); } else { - monitor = new RegionMonitor(this.conf, monitorTargets, this.useRegExp, this.sink); + monitor = new RegionMonitor(this.getConf(), monitorTargets, this.useRegExp, this.sink); } return monitor; } @@ -737,7 +729,8 @@ public final class Canary implements Tool { } public static void main(String[] args) throws Exception { - int exitCode = ToolRunner.run(new Canary(), args); + Configuration conf = HBaseConfiguration.create(); + int exitCode = ToolRunner.run(new Canary(conf), args); System.exit(exitCode); } }