You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sentry.apache.org by pr...@apache.org on 2014/09/23 20:03:12 UTC

git commit: SENTRY-409: Do not print stack traces for SentryUserExceptions in Hive (Sravya Tirukkovalur via Prasad Mujumdar)

Repository: incubator-sentry
Updated Branches:
  refs/heads/master b18457d26 -> 48b883f4c


SENTRY-409: Do not print stack traces for SentryUserExceptions in Hive (Sravya Tirukkovalur via Prasad Mujumdar)


Project: http://git-wip-us.apache.org/repos/asf/incubator-sentry/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-sentry/commit/48b883f4
Tree: http://git-wip-us.apache.org/repos/asf/incubator-sentry/tree/48b883f4
Diff: http://git-wip-us.apache.org/repos/asf/incubator-sentry/diff/48b883f4

Branch: refs/heads/master
Commit: 48b883f4c05217e65dc0eef57a0391a58e8b6c74
Parents: b18457d
Author: Prasad Mujumdar <pr...@cloudera.com>
Authored: Tue Sep 23 11:03:12 2014 -0700
Committer: Prasad Mujumdar <pr...@cloudera.com>
Committed: Tue Sep 23 11:03:12 2014 -0700

----------------------------------------------------------------------
 .../apache/hadoop/hive/ql/exec/SentryGrantRevokeTask.java   | 8 ++++----
 .../apache/sentry/binding/hive/authz/HiveAuthzBinding.java  | 4 +++-
 .../main/java/org/apache/sentry/SentryUserException.java    | 9 +++++++++
 .../sentry/provider/db/SentryAccessDeniedException.java     | 3 +++
 .../sentry/provider/db/SentryAlreadyExistsException.java    | 3 +++
 .../sentry/provider/db/SentryInvalidInputException.java     | 3 +++
 .../sentry/provider/db/SentryNoSuchObjectException.java     | 3 +++
 .../main/java/org/apache/sentry/service/thrift/Status.java  | 8 ++++----
 8 files changed, 32 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-sentry/blob/48b883f4/sentry-binding/sentry-binding-hive/src/main/java/org/apache/hadoop/hive/ql/exec/SentryGrantRevokeTask.java
----------------------------------------------------------------------
diff --git a/sentry-binding/sentry-binding-hive/src/main/java/org/apache/hadoop/hive/ql/exec/SentryGrantRevokeTask.java b/sentry-binding/sentry-binding-hive/src/main/java/org/apache/hadoop/hive/ql/exec/SentryGrantRevokeTask.java
index 4126341..fb5ff14 100644
--- a/sentry-binding/sentry-binding-hive/src/main/java/org/apache/hadoop/hive/ql/exec/SentryGrantRevokeTask.java
+++ b/sentry-binding/sentry-binding-hive/src/main/java/org/apache/hadoop/hive/ql/exec/SentryGrantRevokeTask.java
@@ -170,10 +170,10 @@ public class SentryGrantRevokeTask extends Task<DDLWork> implements Serializable
         HiveAuthzBindingHook.runFailureHook(hookContext, csHooks);
         throw e; // rethrow the exception for logging
       }
-    } catch(Throwable throwable) {
-      setException(throwable);
-      String msg = "Error processing Sentry command: " + throwable.getMessage();
-      LOG.error(msg, throwable);
+    } catch(SentryUserException e) {
+      setException(new Exception(e.getClass().getSimpleName() + ": " + e.getReason(), e));
+      String msg = "Error processing Sentry command: " + e.getMessage();
+      LOG.error(msg, e);
       console.printError(msg);
       return RETURN_CODE_FAILURE;
     } finally {

http://git-wip-us.apache.org/repos/asf/incubator-sentry/blob/48b883f4/sentry-binding/sentry-binding-hive/src/main/java/org/apache/sentry/binding/hive/authz/HiveAuthzBinding.java
----------------------------------------------------------------------
diff --git a/sentry-binding/sentry-binding-hive/src/main/java/org/apache/sentry/binding/hive/authz/HiveAuthzBinding.java b/sentry-binding/sentry-binding-hive/src/main/java/org/apache/sentry/binding/hive/authz/HiveAuthzBinding.java
index 6c101ad..68b93aa 100644
--- a/sentry-binding/sentry-binding-hive/src/main/java/org/apache/sentry/binding/hive/authz/HiveAuthzBinding.java
+++ b/sentry-binding/sentry-binding-hive/src/main/java/org/apache/sentry/binding/hive/authz/HiveAuthzBinding.java
@@ -120,7 +120,9 @@ public class HiveAuthzBinding {
           }
         }
         if (!foundRole) {
-          throw new SentryUserException("Not authorized to set role " + name);
+          //Set the reason for hive binding to pick up
+          throw new SentryUserException("Not authorized to set role " + name, "Not authorized to set role " + name);
+
         }
       }
       return new ActiveRoleSet(Sets.newHashSet(ROLE_SET_SPLITTER.split(name)));

http://git-wip-us.apache.org/repos/asf/incubator-sentry/blob/48b883f4/sentry-core/sentry-core-common/src/main/java/org/apache/sentry/SentryUserException.java
----------------------------------------------------------------------
diff --git a/sentry-core/sentry-core-common/src/main/java/org/apache/sentry/SentryUserException.java b/sentry-core/sentry-core-common/src/main/java/org/apache/sentry/SentryUserException.java
index 2b24703..9e49a74 100644
--- a/sentry-core/sentry-core-common/src/main/java/org/apache/sentry/SentryUserException.java
+++ b/sentry-core/sentry-core-common/src/main/java/org/apache/sentry/SentryUserException.java
@@ -19,10 +19,19 @@ package org.apache.sentry;
 
 public class SentryUserException extends Exception{
   private static final long serialVersionUID = 2329620558380655835L;
+  protected String reason;
   public SentryUserException(String msg) {
     super(msg);
   }
+  public SentryUserException(String msg, String reason) {
+    super(msg);
+    this.reason = reason;
+  }
   public SentryUserException(String msg, Throwable t) {
     super(msg, t);
   }
+  public String getReason() {
+    return reason;
+  }
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-sentry/blob/48b883f4/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/SentryAccessDeniedException.java
----------------------------------------------------------------------
diff --git a/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/SentryAccessDeniedException.java b/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/SentryAccessDeniedException.java
index 8f1fa2b..824ab2f 100644
--- a/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/SentryAccessDeniedException.java
+++ b/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/SentryAccessDeniedException.java
@@ -24,4 +24,7 @@ public class SentryAccessDeniedException extends SentryUserException {
   public SentryAccessDeniedException(String msg) {
     super(msg);
   }
+  public SentryAccessDeniedException(String msg, String reason) {
+    super(msg, reason);
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-sentry/blob/48b883f4/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/SentryAlreadyExistsException.java
----------------------------------------------------------------------
diff --git a/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/SentryAlreadyExistsException.java b/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/SentryAlreadyExistsException.java
index d878cc6..e9df988 100644
--- a/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/SentryAlreadyExistsException.java
+++ b/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/SentryAlreadyExistsException.java
@@ -24,4 +24,7 @@ public class SentryAlreadyExistsException extends SentryUserException {
   public SentryAlreadyExistsException(String msg) {
     super(msg);
   }
+  public SentryAlreadyExistsException(String msg, String reason) {
+    super(msg, reason);
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-sentry/blob/48b883f4/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/SentryInvalidInputException.java
----------------------------------------------------------------------
diff --git a/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/SentryInvalidInputException.java b/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/SentryInvalidInputException.java
index a05970e..32d0b5e 100644
--- a/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/SentryInvalidInputException.java
+++ b/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/SentryInvalidInputException.java
@@ -24,4 +24,7 @@ public class SentryInvalidInputException extends SentryUserException {
   public SentryInvalidInputException(String msg) {
     super(msg);
   }
+  public SentryInvalidInputException(String msg, String reason) {
+    super(msg, reason);
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-sentry/blob/48b883f4/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/SentryNoSuchObjectException.java
----------------------------------------------------------------------
diff --git a/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/SentryNoSuchObjectException.java b/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/SentryNoSuchObjectException.java
index fa9ee22..3b507cb 100644
--- a/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/SentryNoSuchObjectException.java
+++ b/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/SentryNoSuchObjectException.java
@@ -24,4 +24,7 @@ public class SentryNoSuchObjectException extends SentryUserException {
   public SentryNoSuchObjectException(String msg) {
     super(msg);
   }
+  public SentryNoSuchObjectException(String msg, String reason) {
+    super(msg, reason);
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-sentry/blob/48b883f4/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/service/thrift/Status.java
----------------------------------------------------------------------
diff --git a/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/service/thrift/Status.java b/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/service/thrift/Status.java
index c167837..c93dad5 100644
--- a/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/service/thrift/Status.java
+++ b/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/service/thrift/Status.java
@@ -97,15 +97,15 @@ public enum Status {
     case OK:
       break;
     case ALREADY_EXISTS:
-      throw new SentryAlreadyExistsException(serverErrorToString(thriftStatus));
+      throw new SentryAlreadyExistsException(serverErrorToString(thriftStatus), thriftStatus.getMessage());
     case NO_SUCH_OBJECT:
-      throw new SentryNoSuchObjectException(serverErrorToString(thriftStatus));
+      throw new SentryNoSuchObjectException(serverErrorToString(thriftStatus), thriftStatus.getMessage());
     case RUNTIME_ERROR:
       throw new RuntimeException(serverErrorToString(thriftStatus));
     case INVALID_INPUT:
-      throw new SentryInvalidInputException(serverErrorToString(thriftStatus));
+      throw new SentryInvalidInputException(serverErrorToString(thriftStatus), thriftStatus.getMessage());
     case ACCESS_DENIED:
-      throw new SentryAccessDeniedException(serverErrorToString(thriftStatus));
+      throw new SentryAccessDeniedException(serverErrorToString(thriftStatus), thriftStatus.getMessage());
     case UNKNOWN:
       throw new AssertionError(serverErrorToString(thriftStatus));
     default: