Repository: sentry Updated Branches: refs/heads/master ed39dc855 -> 383cfd3ca
SENTRY-1153: Ensure AccessURI work with S3 (Hao Hao, Reviewed by: Sravya Tirukkovalur) Change-Id: I8d0ee3e13ce602c3e0938b9c7ad5e9c717e756ac Project: http://git-wip-us.apache.org/repos/asf/sentry/repo Commit: http://git-wip-us.apache.org/repos/asf/sentry/commit/383cfd3c Tree: http://git-wip-us.apache.org/repos/asf/sentry/tree/383cfd3c Diff: http://git-wip-us.apache.org/repos/asf/sentry/diff/383cfd3c Branch: refs/heads/master Commit: 383cfd3ca9f71068a328974a6c280a560999ea61 Parents: ed39dc8 Author: hahao <[email protected]> Authored: Fri Apr 22 21:44:34 2016 -0700 Committer: hahao <[email protected]> Committed: Fri Apr 22 21:44:34 2016 -0700 ---------------------------------------------------------------------- .../sentry/binding/hive/HiveAuthzBindingHookBase.java | 8 ++++++-- .../java/org/apache/sentry/binding/hive/TestURI.java | 8 ++++++++ .../test/java/org/apache/sentry/core/db/TestURI.java | 13 +++++++++++++ 3 files changed, 27 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/sentry/blob/383cfd3c/sentry-binding/sentry-binding-hive-common/src/main/java/org/apache/sentry/binding/hive/HiveAuthzBindingHookBase.java ---------------------------------------------------------------------- diff --git a/sentry-binding/sentry-binding-hive-common/src/main/java/org/apache/sentry/binding/hive/HiveAuthzBindingHookBase.java b/sentry-binding/sentry-binding-hive-common/src/main/java/org/apache/sentry/binding/hive/HiveAuthzBindingHookBase.java index a00f2d5..df68dd3 100644 --- a/sentry-binding/sentry-binding-hive-common/src/main/java/org/apache/sentry/binding/hive/HiveAuthzBindingHookBase.java +++ b/sentry-binding/sentry-binding-hive-common/src/main/java/org/apache/sentry/binding/hive/HiveAuthzBindingHookBase.java @@ -212,9 +212,13 @@ public abstract class HiveAuthzBindingHookBase extends AbstractSemanticAnalyzerH HiveConf conf = SessionState.get().getConf(); String warehouseDir = conf.getVar(ConfVars.METASTOREWAREHOUSE); Path warehousePath = new Path(warehouseDir); + + // If warehousePath is an absolute path and a scheme is null and authority is null as well, + // qualified it with default file system scheme and authority. if (warehousePath.isAbsoluteAndSchemeAuthorityNull()) { - FileSystem fs = FileSystem.get(conf); - warehouseDir = fs.makeQualified(warehousePath).toUri().toString(); + URI defaultUri = FileSystem.getDefaultUri(conf); + warehousePath = warehousePath.makeQualified(defaultUri, warehousePath); + warehouseDir = warehousePath.toUri().toString(); } return new AccessURI(PathUtils.parseURI(warehouseDir, uri, isLocal)); } catch (Exception e) { http://git-wip-us.apache.org/repos/asf/sentry/blob/383cfd3c/sentry-binding/sentry-binding-hive/src/test/java/org/apache/sentry/binding/hive/TestURI.java ---------------------------------------------------------------------- diff --git a/sentry-binding/sentry-binding-hive/src/test/java/org/apache/sentry/binding/hive/TestURI.java b/sentry-binding/sentry-binding-hive/src/test/java/org/apache/sentry/binding/hive/TestURI.java index c7ac070..b920d49 100644 --- a/sentry-binding/sentry-binding-hive/src/test/java/org/apache/sentry/binding/hive/TestURI.java +++ b/sentry-binding/sentry-binding-hive/src/test/java/org/apache/sentry/binding/hive/TestURI.java @@ -81,6 +81,14 @@ public class TestURI { HiveAuthzBindingHookBase.parseURI("/some/path").getName()); } + @Test + public void testS3URIWithoutPrefix() throws SemanticException { + conf.set(CommonConfigurationKeys.FS_DEFAULT_NAME_KEY, "s3n://123:456@my-bucket"); + conf.set(ConfVars.METASTOREWAREHOUSE.varname, "/path/to/warehouse"); + Assert.assertEquals("s3n://123:456@my-bucket/some/path", + HiveAuthzBindingHookBase.parseURI("/some/path").getName()); + } + @AfterClass public static void clear() { if(baseDir != null) { http://git-wip-us.apache.org/repos/asf/sentry/blob/383cfd3c/sentry-core/sentry-core-model-db/src/test/java/org/apache/sentry/core/db/TestURI.java ---------------------------------------------------------------------- diff --git a/sentry-core/sentry-core-model-db/src/test/java/org/apache/sentry/core/db/TestURI.java b/sentry-core/sentry-core-model-db/src/test/java/org/apache/sentry/core/db/TestURI.java index b639a95..40b60f7 100644 --- a/sentry-core/sentry-core-model-db/src/test/java/org/apache/sentry/core/db/TestURI.java +++ b/sentry-core/sentry-core-model-db/src/test/java/org/apache/sentry/core/db/TestURI.java @@ -30,14 +30,17 @@ public class TestURI { public void testBadUriNull() { new AccessURI(null); } + @Test(expected=IllegalArgumentException.class) public void testBadUriNoFilePrefix() { new AccessURI("/"); } + @Test(expected=IllegalArgumentException.class) public void testBadUriIncorrectFilePrefix() { new AccessURI("file:/some/path"); } + @Test(expected=IllegalArgumentException.class) public void testBadUriIncorrectHdfsPrefix() { new AccessURI("hdfs:/some/path"); @@ -49,6 +52,16 @@ public class TestURI { } @Test + public void testS3Uri() { + new AccessURI("s3://my-bucket/my/funny/picture.jpg"); + } + + @Test + public void testS3UriWithAuthority() { + new AccessURI("s3n://123:456@my-bucket/my/funny/picture.jpg"); + } + + @Test public void testUriWithAuthority() { new AccessURI("hdfs://localhost:9999/some/path"); }
