Repository: sentry Updated Branches: refs/heads/master c6c9fabb4 -> a53b20ad4
SENTRY-1357: SentryMetastorePostEventListenerBase.onAlterTable should check for null dereference (Ke Jia via Dapeng Sun) Project: http://git-wip-us.apache.org/repos/asf/sentry/repo Commit: http://git-wip-us.apache.org/repos/asf/sentry/commit/29e5fd02 Tree: http://git-wip-us.apache.org/repos/asf/sentry/tree/29e5fd02 Diff: http://git-wip-us.apache.org/repos/asf/sentry/diff/29e5fd02 Branch: refs/heads/master Commit: 29e5fd0253e9b2f63dbcc21a65f7ebbcde118007 Parents: c6c9fab Author: Sun Dapeng <[email protected]> Authored: Thu Jul 14 10:12:48 2016 +0800 Committer: Sun Dapeng <[email protected]> Committed: Thu Jul 14 10:12:48 2016 +0800 ---------------------------------------------------------------------- .../SentryMetastorePostEventListenerBase.java | 23 ++++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/sentry/blob/29e5fd02/sentry-binding/sentry-binding-hive-common/src/main/java/org/apache/sentry/binding/metastore/SentryMetastorePostEventListenerBase.java ---------------------------------------------------------------------- diff --git a/sentry-binding/sentry-binding-hive-common/src/main/java/org/apache/sentry/binding/metastore/SentryMetastorePostEventListenerBase.java b/sentry-binding/sentry-binding-hive-common/src/main/java/org/apache/sentry/binding/metastore/SentryMetastorePostEventListenerBase.java index 46363a5..262db11 100644 --- a/sentry-binding/sentry-binding-hive-common/src/main/java/org/apache/sentry/binding/metastore/SentryMetastorePostEventListenerBase.java +++ b/sentry-binding/sentry-binding-hive-common/src/main/java/org/apache/sentry/binding/metastore/SentryMetastorePostEventListenerBase.java @@ -217,13 +217,22 @@ public class SentryMetastorePostEventListenerBase extends MetaStoreEventListener " since the operation failed. \n"); return; } - - renameSentryTablePrivilege(tableEvent.getOldTable().getDbName(), - tableEvent.getOldTable().getTableName(), - tableEvent.getOldTable().getSd().getLocation(), - tableEvent.getNewTable().getDbName(), - tableEvent.getNewTable().getTableName(), - tableEvent.getNewTable().getSd().getLocation()); + String oldLoc = null, newLoc = null; + org.apache.hadoop.hive.metastore.api.Table oldTal = tableEvent.getOldTable(); + org.apache.hadoop.hive.metastore.api.Table newTal = tableEvent.getNewTable(); + if (oldTal != null && oldTal.getSd() != null) { + oldLoc = oldTal.getSd().getLocation(); + } + if (newTal != null && newTal.getSd() != null) { + newLoc = newTal.getSd().getLocation(); + } + if (oldLoc != null && newLoc != null && !oldLoc.equals(newLoc)) { + String oldDbName = tableEvent.getOldTable().getDbName(); + String oldTbName = tableEvent.getOldTable().getTableName(); + String newTbName = tableEvent.getNewTable().getTableName(); + String newDbName = tableEvent.getNewTable().getDbName(); + renameSentryTablePrivilege(oldDbName, oldTbName, oldLoc, newDbName, newTbName, newLoc); + } } @Override
