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 31208c1..52b35c1 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 @@ -754,6 +754,12 @@ public final class Canary implements Tool { System.err.println("-readTableTimeouts can only be configured in region mode."); printUsageAndExit(); } + if (this.sink == null) { + Class sinkClass = + conf.getClass("hbase.canary.sink.class", this.writeSniffing ? RegionStdOutSink.class : + RegionServerStdOutSink.class, Sink.class); + this.sink = ReflectionUtils.newInstance(sinkClass); + } return index; } @@ -1575,11 +1581,7 @@ public final class Canary implements Tool { ExecutorService executor = new ScheduledThreadPoolExecutor(numThreads); - Class sinkClass = - conf.getClass("hbase.canary.sink.class", RegionServerStdOutSink.class, Sink.class); - Sink sink = ReflectionUtils.newInstance(sinkClass); - - int exitCode = ToolRunner.run(conf, new Canary(executor, sink), args); + int exitCode = ToolRunner.run(conf, new Canary(executor, null), args); executor.shutdown(); System.exit(exitCode); }