HBASE-13282 Fix the minor issues of running Canary on kerberized environment 
(Srikanth Srungarapu)


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/09151911
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/09151911
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/09151911

Branch: refs/heads/hbase-12439
Commit: 09151911679a608db31cca63c25cfd52818a311c
Parents: f4eb719
Author: Matteo Bertozzi <matteo.berto...@cloudera.com>
Authored: Fri Mar 20 21:26:53 2015 +0000
Committer: Matteo Bertozzi <matteo.berto...@cloudera.com>
Committed: Fri Mar 20 21:26:53 2015 +0000

----------------------------------------------------------------------
 .../java/org/apache/hadoop/hbase/AuthUtil.java   |  6 +++---
 .../org/apache/hadoop/hbase/tool/Canary.java     | 19 +++++++++++++------
 2 files changed, 16 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/09151911/hbase-common/src/main/java/org/apache/hadoop/hbase/AuthUtil.java
----------------------------------------------------------------------
diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/AuthUtil.java 
b/hbase-common/src/main/java/org/apache/hadoop/hbase/AuthUtil.java
index f597935..4754ea4 100644
--- a/hbase-common/src/main/java/org/apache/hadoop/hbase/AuthUtil.java
+++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/AuthUtil.java
@@ -59,10 +59,10 @@ public class AuthUtil {
           conf.get("hbase.client.dns.nameserver", "default")));
       userProvider.login("hbase.client.keytab.file", 
"hbase.client.kerberos.principal", host);
     } catch (UnknownHostException e) {
-      LOG.error("Error resolving host name");
+      LOG.error("Error resolving host name: " + e.getMessage(), e);
       throw e;
     } catch (IOException e) {
-      LOG.error("Error while trying to perform the initial login");
+      LOG.error("Error while trying to perform the initial login: " + 
e.getMessage(), e);
       throw e;
     }
 
@@ -93,7 +93,7 @@ public class AuthUtil {
         try {
           ugi.checkTGTAndReloginFromKeytab();
         } catch (IOException e) {
-          LOG.info("Got exception while trying to refresh credentials ");
+          LOG.error("Got exception while trying to refresh credentials: " + 
e.getMessage(), e);
         }
       }
     };

http://git-wip-us.apache.org/repos/asf/hbase/blob/09151911/hbase-server/src/main/java/org/apache/hadoop/hbase/tool/Canary.java
----------------------------------------------------------------------
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 c8f0a72..e5ad106 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
@@ -338,6 +338,7 @@ public final class Canary implements Tool {
   @Override
   public int run(String[] args) throws Exception {
     int index = -1;
+    ChoreService choreService = null;
 
     // Process command line args
     for (int i = 0; i < args.length; i++) {
@@ -411,6 +412,15 @@ public final class Canary implements Tool {
       }
     }
 
+    // Launches chore for refreshing kerberos credentials if security is 
enabled.
+    // Please see 
http://hbase.apache.org/book.html#_running_canary_in_a_kerberos_enabled_cluster
+    // for more details.
+    final ScheduledChore authChore = AuthUtil.getAuthChore(conf);
+    if (authChore != null) {
+      choreService = new ChoreService("CANARY_TOOL");
+      choreService.scheduleChore(authChore);
+    }
+
     // Start to prepare the stuffs
     Monitor monitor = null;
     Thread monitorThread = null;
@@ -465,6 +475,9 @@ public final class Canary implements Tool {
       } while (interval > 0);
     } // try-with-resources close
 
+    if (choreService != null) {
+      choreService.shutdown();
+    }
     return(monitor.errorCode);
   }
 
@@ -875,11 +888,6 @@ public final class Canary implements Tool {
 
   public static void main(String[] args) throws Exception {
     final Configuration conf = HBaseConfiguration.create();
-    final ChoreService choreService = new ChoreService("CANARY_TOOL");
-    final ScheduledChore authChore = AuthUtil.getAuthChore(conf);
-    if (authChore != null) {
-      choreService.scheduleChore(authChore);
-    }
     int numThreads = conf.getInt("hbase.canary.threads.num", MAX_THREADS_NUM);
     ExecutorService executor = new ScheduledThreadPoolExecutor(numThreads);
 
@@ -888,7 +896,6 @@ public final class Canary implements Tool {
     Sink sink = ReflectionUtils.newInstance(sinkClass);
 
     int exitCode = ToolRunner.run(conf, new Canary(executor, sink), args);
-    choreService.shutdown();
     executor.shutdown();
     System.exit(exitCode);
   }

Reply via email to