diff --git hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/SecureProxySupport.java hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/SecureProxySupport.java index d47f97e..8966897 100644 --- hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/SecureProxySupport.java +++ hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/SecureProxySupport.java @@ -121,9 +121,9 @@ public void addArgs(List args) { if (isEnabled) { args.add("-D"); args.add("hive.metastore.token.signature=" + getHcatServiceStr()); - args.add("-D"); - args.add("proxy.user.name=" + user); } + args.add("-D"); + args.add("proxy.user.name=" + user); } class TokenWrapper { @@ -140,6 +140,7 @@ public void addArgs(List args) { ugi.doAs(new PrivilegedExceptionAction() { public Object run() throws IOException { FileSystem fs = FileSystem.get(conf); + //todo: according to JavaDoc this seems like private API: addDelegationToken should be used twrapper.token = fs.getDelegationToken(ugi.getShortUserName()); return null; } diff --git ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java index af633cb..092b34e 100644 --- ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java +++ ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java @@ -427,7 +427,13 @@ public static SessionState start(SessionState startSs) { FileSystem.get(startSs.conf); // Create scratch dirs for this session - startSs.createSessionDirs(sessionUGI.getShortUserName()); + if(startSs.conf.get("proxy.user.name") != null) { + //supports HCatCli called from WebHCat with doAs + startSs.createSessionDirs(startSs.conf.get("proxy.user.name")); + } + else { + startSs.createSessionDirs(sessionUGI.getShortUserName()); + } // Set temp file containing results to be sent to HiveClient if (startSs.getTmpOutputFile() == null) {