You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sqoop.apache.org by ch...@apache.org on 2012/09/26 23:19:58 UTC

git commit: SQOOP-616 HBase import/export is not working on non secure cluster where security is available

Updated Branches:
  refs/heads/trunk 5616152ac -> 465c2751f


SQOOP-616 HBase import/export is not working on non secure cluster where
security is available

(Jarek Jarcec Cecho via Cheolsoo Park)


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

Branch: refs/heads/trunk
Commit: 465c2751f7cc69b9808b55f8d1fbf93b666e25a5
Parents: 5616152
Author: Cheolsoo Park <ch...@apache.org>
Authored: Wed Sep 26 14:17:37 2012 -0700
Committer: Cheolsoo Park <ch...@apache.org>
Committed: Wed Sep 26 14:17:37 2012 -0700

----------------------------------------------------------------------
 .../org/apache/sqoop/mapreduce/HBaseImportJob.java |   25 +++++++++-----
 1 files changed, 16 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/sqoop/blob/465c2751/src/java/org/apache/sqoop/mapreduce/HBaseImportJob.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/sqoop/mapreduce/HBaseImportJob.java b/src/java/org/apache/sqoop/mapreduce/HBaseImportJob.java
index 467c5fd..a6e5546 100644
--- a/src/java/org/apache/sqoop/mapreduce/HBaseImportJob.java
+++ b/src/java/org/apache/sqoop/mapreduce/HBaseImportJob.java
@@ -145,32 +145,39 @@ public class HBaseImportJob extends DataDrivenImportJob {
     // Add authentication token to the job if we're running on secure cluster.
     //
     // We're currently supporting HBase version 0.90 that do not have security
-    // patches which means that it do not have required method
-    // "obtainAuthTokenForJob".
+    // patches which means that it do not have required methods
+    // "isSecurityEnabled" and "obtainAuthTokenForJob".
     //
-    // We're using reflection API to see if this method is available and call
-    // it only if it's present.
+    // We're using reflection API to see if those methods are available and call
+    // them only if they are present.
     //
     // After we will remove support for HBase 0.90 we can simplify the code to
     // following code fragment:
     /*
     try {
-      User user = User.getCurrent();
-      user.obtainAuthTokenForJob(conf, job);
+      if (User.isSecurityEnabled()) {
+        User user = User.getCurrent();
+        user.obtainAuthTokenForJob(conf, job);
+      }
     } catch(InterruptedException ex) {
       throw new ImportException("Can't get authentication token", ex);
     }
     */
     try {
-      // Get the method
+      // Get method isSecurityEnabled
+      Method isSecurityEnabled = User.class.getMethod("isSecurityEnabled");
+
+      // Get method obtainAuthTokenForJob
       Method obtainAuthTokenForJob = User.class.getMethod(
         "obtainAuthTokenForJob", Configuration.class, Job.class);
 
       // Get current user
       User user = User.getCurrent();
 
-      // Obtain security token if needed (it's no-op on non secure cluster)
-      obtainAuthTokenForJob.invoke(user, conf, job);
+      // Obtain security token if needed
+      if((Boolean)isSecurityEnabled.invoke(null)) {
+        obtainAuthTokenForJob.invoke(user, conf, job);
+      }
     } catch (NoSuchMethodException e) {
       LOG.info("It seems that we're running on HBase without security"
         + " additions. Security additions will not be used during this job.");