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 <[email protected]> Authored: Tue Sep 23 11:03:12 2014 -0700 Committer: Prasad Mujumdar <[email protected]> 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:
