From 96839a525bfa03256eafbdad5fd2a516a79add06 Mon Sep 17 00:00:00 2001 From: Elliott Neil Clark Date: Mon, 13 Jan 2014 11:01:27 -0800 Subject: [PATCH] HBASE-10315 Canary shouldn't exit with 3 if there is no master running. --- .../main/java/org/apache/hadoop/hbase/tool/Canary.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) 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 2a3b229..72a8876 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 @@ -243,14 +243,22 @@ public final class Canary implements Tool { // exit if any error occurs if (this.failOnError && monitor.hasError()) { monitorThread.interrupt(); - System.exit(monitor.errorCode); + if (monitor.initialized) { + System.exit(monitor.errorCode); + } else { + System.exit(INIT_ERROR_EXIT_CODE); + } } currentTimeLength = System.currentTimeMillis() - startTime; if (currentTimeLength > this.timeout) { LOG.error("The monitor is running too long (" + currentTimeLength + ") after timeout limit:" + this.timeout + " will be killed itself !!"); - monitor.errorCode = TIMEOUT_ERROR_EXIT_CODE; + if (monitor.initialized) { + System.exit(TIMEOUT_ERROR_EXIT_CODE); + } else { + System.exit(INIT_ERROR_EXIT_CODE); + } break; } } @@ -320,6 +328,7 @@ public final class Canary implements Tool { protected HBaseAdmin admin; protected String[] targets; protected boolean useRegExp; + protected boolean initialized = false; protected boolean done = false; protected int errorCode = 0; @@ -376,6 +385,7 @@ public final class Canary implements Tool { try { if (this.targets != null && this.targets.length > 0) { String[] tables = generateMonitorTables(this.targets); + this.initialized = true; for (String table : tables) { Canary.sniff(admin, sink, table); } @@ -556,6 +566,7 @@ public final class Canary implements Tool { public void run() { if (this.initAdmin() && this.checkNoTableNames()) { Map> rsAndRMap = this.filterRegionServerByName(); + this.initialized = true; this.monitorRegionServers(rsAndRMap); } this.done = true; -- 1.8.4.3