Repository: incubator-sentry Updated Branches: refs/heads/master 6adcf783c -> 30c2eaf5c
SENTRY-780: HDFS Plugin should not execute path callbacks for views (Ryan Pridgeon via Sravya Tirukkovalur) Project: http://git-wip-us.apache.org/repos/asf/incubator-sentry/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-sentry/commit/30c2eaf5 Tree: http://git-wip-us.apache.org/repos/asf/incubator-sentry/tree/30c2eaf5 Diff: http://git-wip-us.apache.org/repos/asf/incubator-sentry/diff/30c2eaf5 Branch: refs/heads/master Commit: 30c2eaf5c6d6fecf87ba52a78395d8031a745f63 Parents: 6adcf78 Author: Sravya Tirukkovalur <[email protected]> Authored: Sun Aug 9 12:10:21 2015 -0700 Committer: Sravya Tirukkovalur <[email protected]> Committed: Sun Aug 9 12:10:21 2015 -0700 ---------------------------------------------------------------------- .../org/apache/sentry/hdfs/PathsUpdate.java | 11 +++++- .../tests/e2e/hdfs/TestHDFSIntegration.java | 36 ++++++++++++++++++++ 2 files changed, 46 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-sentry/blob/30c2eaf5/sentry-hdfs/sentry-hdfs-common/src/main/java/org/apache/sentry/hdfs/PathsUpdate.java ---------------------------------------------------------------------- diff --git a/sentry-hdfs/sentry-hdfs-common/src/main/java/org/apache/sentry/hdfs/PathsUpdate.java b/sentry-hdfs/sentry-hdfs-common/src/main/java/org/apache/sentry/hdfs/PathsUpdate.java index 7cb20ef..79019f4 100644 --- a/sentry-hdfs/sentry-hdfs-common/src/main/java/org/apache/sentry/hdfs/PathsUpdate.java +++ b/sentry-hdfs/sentry-hdfs-common/src/main/java/org/apache/sentry/hdfs/PathsUpdate.java @@ -29,9 +29,12 @@ import org.apache.sentry.hdfs.service.thrift.TPathChanges; import org.apache.sentry.hdfs.service.thrift.TPathsUpdate; import org.apache.commons.httpclient.util.URIUtil; import org.apache.commons.httpclient.URIException; +import org.apache.commons.lang.StringUtils; import com.google.common.collect.Lists; + + /** * A wrapper class over the TPathsUpdate thrift generated class. Please see * {@link Updateable.Update} for more information @@ -92,8 +95,14 @@ public class PathsUpdate implements Updateable.Update { */ public static List<String> parsePath(String path) { try { - URI uri = new URI(URIUtil.encodePath(path)); + + URI uri = null; + if (StringUtils.isNotEmpty(path)) { + uri = new URI(URIUtil.encodePath(path)); + } + Preconditions.checkNotNull(uri.getScheme()); + if(uri.getScheme().equalsIgnoreCase("hdfs")) { return Lists.newArrayList(uri.getPath().split("^/")[1] .split("/")); http://git-wip-us.apache.org/repos/asf/incubator-sentry/blob/30c2eaf5/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/hdfs/TestHDFSIntegration.java ---------------------------------------------------------------------- diff --git a/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/hdfs/TestHDFSIntegration.java b/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/hdfs/TestHDFSIntegration.java index 6b584fd..e61dff0 100644 --- a/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/hdfs/TestHDFSIntegration.java +++ b/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/hdfs/TestHDFSIntegration.java @@ -1023,6 +1023,42 @@ public class TestHDFSIntegration { conn.close(); } + //SENTRY-780 + @Test + public void testViews() throws Throwable { + String dbName= "db1"; + + tmpHDFSDir = new Path("/tmp/external"); + dbNames = new String[]{dbName}; + roles = new String[]{"admin_role"}; + admin = StaticUserGroup.ADMIN1; + + Connection conn; + Statement stmt; + + conn = hiveServer2.createConnection("hive", "hive"); + stmt = conn.createStatement(); + + stmt.execute("create role admin_role"); + stmt.execute("grant all on server server1 to role admin_role"); + stmt.execute("grant role admin_role to group " + StaticUserGroup.ADMINGROUP); + + conn = hiveServer2.createConnection(StaticUserGroup.ADMIN1, StaticUserGroup.ADMIN1); + stmt = conn.createStatement(); + try { + stmt.execute("create database " + dbName); + stmt.execute("create table test(a string)"); + stmt.execute("create view testView as select * from test"); + stmt.execute("create or replace view testView as select * from test"); + stmt.execute("drop view testView"); + } catch(Exception s) { + throw s; + } + + stmt.close(); + conn.close(); + } + private void verifyQuery(Statement stmt, String table, int n) throws Throwable { verifyQuery(stmt, table, n, NUM_RETRIES);
