You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sentry.apache.org by sr...@apache.org on 2016/03/11 02:18:51 UTC

incubator-sentry git commit: SENTRY-922: INSERT OVERWRITE DIRECTORY permission not working correctly (Yibing Shi, Reviewed by: Sravya Tirukkovalur)

Repository: incubator-sentry
Updated Branches:
  refs/heads/master baad976f0 -> 0619d8a1a


SENTRY-922: INSERT OVERWRITE DIRECTORY permission not working correctly (Yibing Shi, Reviewed by: Sravya Tirukkovalur)

Change-Id: I9bc565506e544ee747a7ce5f7cc9b84a56786ec2


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

Branch: refs/heads/master
Commit: 0619d8a1a0860674bae2fcc035148ce3d23d009f
Parents: baad976
Author: Sravya Tirukkovalur <sr...@cloudera.com>
Authored: Thu Mar 10 17:18:03 2016 -0800
Committer: Sravya Tirukkovalur <sr...@cloudera.com>
Committed: Thu Mar 10 17:18:03 2016 -0800

----------------------------------------------------------------------
 .../apache/sentry/binding/hive/HiveAuthzBindingHook.java    | 7 +++++++
 .../test/java/org/apache/sentry/binding/hive/TestURI.java   | 9 +++++++++
 2 files changed, 16 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-sentry/blob/0619d8a1/sentry-binding/sentry-binding-hive/src/main/java/org/apache/sentry/binding/hive/HiveAuthzBindingHook.java
----------------------------------------------------------------------
diff --git a/sentry-binding/sentry-binding-hive/src/main/java/org/apache/sentry/binding/hive/HiveAuthzBindingHook.java b/sentry-binding/sentry-binding-hive/src/main/java/org/apache/sentry/binding/hive/HiveAuthzBindingHook.java
index dd33d2d..c425e06 100644
--- a/sentry-binding/sentry-binding-hive/src/main/java/org/apache/sentry/binding/hive/HiveAuthzBindingHook.java
+++ b/sentry-binding/sentry-binding-hive/src/main/java/org/apache/sentry/binding/hive/HiveAuthzBindingHook.java
@@ -30,6 +30,8 @@ import java.util.Set;
 import java.util.Arrays;
 
 import com.google.common.base.Preconditions;
+import org.apache.hadoop.fs.FileSystem;
+import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.hive.common.JavaUtils;
 import org.apache.hadoop.hive.conf.HiveConf;
 import org.apache.hadoop.hive.conf.HiveConf.ConfVars;
@@ -368,6 +370,11 @@ public class HiveAuthzBindingHook extends AbstractSemanticAnalyzerHook {
     try {
       HiveConf conf = SessionState.get().getConf();
       String warehouseDir = conf.getVar(ConfVars.METASTOREWAREHOUSE);
+      Path warehousePath = new Path(warehouseDir);
+      if (warehousePath.isAbsoluteAndSchemeAuthorityNull()) {
+        FileSystem fs = FileSystem.get(conf);
+        warehouseDir = fs.makeQualified(warehousePath).toUri().toString();
+      }
       return new AccessURI(PathUtils.parseURI(warehouseDir, uri, isLocal));
     } catch (Exception e) {
       throw new SemanticException("Error parsing URI " + uri + ": " +

http://git-wip-us.apache.org/repos/asf/incubator-sentry/blob/0619d8a1/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 cdd4e0b..8b716c3 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
@@ -19,6 +19,7 @@ package org.apache.sentry.binding.hive;
 import java.io.File;
 
 import org.apache.commons.io.FileUtils;
+import org.apache.hadoop.fs.CommonConfigurationKeys;
 import org.apache.hadoop.hive.conf.HiveConf;
 import org.apache.hadoop.hive.conf.HiveConf.ConfVars;
 import org.apache.hadoop.hive.ql.parse.SemanticException;
@@ -72,6 +73,14 @@ public class TestURI {
         HiveAuthzBindingHook.parseURI("hdfs:///some/path").getName());
   }
 
+  @Test
+  public void testWarehouseDirWithoutPrefix() throws SemanticException {
+    conf.set(CommonConfigurationKeys.FS_DEFAULT_NAME_KEY, "hdfs://localhost:8020");
+    conf.set(ConfVars.METASTOREWAREHOUSE.varname, "/path/to/warehouse");
+    Assert.assertEquals("hdfs://localhost:8020/some/path",
+        HiveAuthzBindingHook.parseURI("/some/path").getName());
+  }
+
   @AfterClass
   public static void clear() {
     if(baseDir != null) {