hadoop git commit: YARN-3287. Made TimelineClient put methods do as the correct login context. Contributed by Daryn Sharp and Jonathan Eagles.

2015-09-01 Thread vinodkv
Repository: hadoop
Updated Branches:
  refs/heads/branch-2.6.1 a57ada6c1 -> 9005b141a


YARN-3287. Made TimelineClient put methods do as the correct login context. 
Contributed by Daryn Sharp and Jonathan Eagles.

(cherry picked from commit d6e05c5ee26feefc17267b7c9db1e2a3dbdef117)
(cherry picked from commit a94d23762e2cf4211fe84661eb67504c7072db49)
(cherry picked from commit 68e07eb50b872ec8a78923df8f5f640f08a72aa2)


Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/9005b141
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/9005b141
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/9005b141

Branch: refs/heads/branch-2.6.1
Commit: 9005b141a5188b2509b115348dea50816766b7f1
Parents: a57ada6
Author: Zhijie Shen 
Authored: Mon Mar 9 13:54:36 2015 -0700
Committer: Vinod Kumar Vavilapalli 
Committed: Tue Sep 1 15:24:36 2015 -0700

--
 hadoop-yarn-project/CHANGES.txt |   3 +
 .../client/api/impl/TimelineClientImpl.java |  82 +++
 .../TestTimelineAuthenticationFilter.java   | 221 +--
 3 files changed, 135 insertions(+), 171 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/hadoop/blob/9005b141/hadoop-yarn-project/CHANGES.txt
--
diff --git a/hadoop-yarn-project/CHANGES.txt b/hadoop-yarn-project/CHANGES.txt
index 1b1d4c0..ef76d45 100644
--- a/hadoop-yarn-project/CHANGES.txt
+++ b/hadoop-yarn-project/CHANGES.txt
@@ -108,6 +108,9 @@ Release 2.6.1 - UNRELEASED
 YARN-3227. Timeline renew delegation token fails when RM user's TGT is 
expired
 (Zhijie Shen via xgong)
 
+YARN-3287. Made TimelineClient put methods do as the correct login context.
+(Daryn Sharp and Jonathan Eagles via zjshen)
+
 Release 2.6.0 - 2014-11-18
 
   INCOMPATIBLE CHANGES

http://git-wip-us.apache.org/repos/asf/hadoop/blob/9005b141/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/client/api/impl/TimelineClientImpl.java
--
diff --git 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/client/api/impl/TimelineClientImpl.java
 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/client/api/impl/TimelineClientImpl.java
index ad5345c..f5c85c1 100644
--- 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/client/api/impl/TimelineClientImpl.java
+++ 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/client/api/impl/TimelineClientImpl.java
@@ -45,6 +45,7 @@ import 
org.apache.hadoop.classification.InterfaceAudience.Private;
 import org.apache.hadoop.classification.InterfaceStability.Unstable;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.security.UserGroupInformation;
+import 
org.apache.hadoop.security.authentication.client.AuthenticationException;
 import org.apache.hadoop.security.authentication.client.ConnectionConfigurator;
 import org.apache.hadoop.security.ssl.SSLFactory;
 import org.apache.hadoop.security.token.Token;
@@ -105,6 +106,8 @@ public class TimelineClientImpl extends TimelineClient {
   private DelegationTokenAuthenticator authenticator;
   private DelegationTokenAuthenticatedURL.Token token;
   private URI resURI;
+  private UserGroupInformation authUgi;
+  private String doAsUser;
 
   @Private
   @VisibleForTesting
@@ -246,6 +249,15 @@ public class TimelineClientImpl extends TimelineClient {
   }
 
   protected void serviceInit(Configuration conf) throws Exception {
+UserGroupInformation ugi = UserGroupInformation.getCurrentUser();
+UserGroupInformation realUgi = ugi.getRealUser();
+if (realUgi != null) {
+  authUgi = realUgi;
+  doAsUser = ugi.getShortUserName();
+} else {
+  authUgi = ugi;
+  doAsUser = null;
+}
 ClientConfig cc = new DefaultClientConfig();
 cc.getClasses().add(YarnJacksonJaxbJsonProvider.class);
 connConfigurator = newConnConfigurator(conf);
@@ -295,16 +307,20 @@ public class TimelineClientImpl extends TimelineClient {
 doPosting(domain, "domain");
   }
 
-  private ClientResponse doPosting(Object obj, String path) throws 
IOException, YarnException {
+  private ClientResponse doPosting(final Object obj, final String path)
+  throws IOException, YarnException {
 ClientResponse resp;
 try {
-  resp = doPostingObject(obj, path);
-} catch (RuntimeException re) {
-  // runtime exception is expected if the client cannot connect the server
-  String msg =
-  "Failed to get the response from the timeline server.";
-  LOG.error(msg, re);
-  throw re;
+  

[24/49] hadoop git commit: YARN-3287. Made TimelineClient put methods do as the correct login context. Contributed by Daryn Sharp and Jonathan Eagles.

2015-03-12 Thread zjshen
YARN-3287. Made TimelineClient put methods do as the correct login context. 
Contributed by Daryn Sharp and Jonathan Eagles.


Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/d6e05c5e
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/d6e05c5e
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/d6e05c5e

Branch: refs/heads/YARN-2928
Commit: d6e05c5ee26feefc17267b7c9db1e2a3dbdef117
Parents: 3241fc2
Author: Zhijie Shen zjs...@apache.org
Authored: Mon Mar 9 13:54:36 2015 -0700
Committer: Zhijie Shen zjs...@apache.org
Committed: Mon Mar 9 13:54:36 2015 -0700

--
 hadoop-yarn-project/CHANGES.txt |   3 +
 .../client/api/impl/TimelineClientImpl.java |  82 +++
 .../TestTimelineAuthenticationFilter.java   | 221 +--
 3 files changed, 135 insertions(+), 171 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/hadoop/blob/d6e05c5e/hadoop-yarn-project/CHANGES.txt
--
diff --git a/hadoop-yarn-project/CHANGES.txt b/hadoop-yarn-project/CHANGES.txt
index da8b02e..1894552 100644
--- a/hadoop-yarn-project/CHANGES.txt
+++ b/hadoop-yarn-project/CHANGES.txt
@@ -737,6 +737,9 @@ Release 2.7.0 - UNRELEASED
 YARN-3275. CapacityScheduler: Preemption happening on non-preemptable
 queues (Eric Payne via jlowe)
 
+YARN-3287. Made TimelineClient put methods do as the correct login context.
+(Daryn Sharp and Jonathan Eagles via zjshen)
+
 Release 2.6.0 - 2014-11-18
 
   INCOMPATIBLE CHANGES

http://git-wip-us.apache.org/repos/asf/hadoop/blob/d6e05c5e/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/client/api/impl/TimelineClientImpl.java
--
diff --git 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/client/api/impl/TimelineClientImpl.java
 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/client/api/impl/TimelineClientImpl.java
index c05d65b..df6c7a4 100644
--- 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/client/api/impl/TimelineClientImpl.java
+++ 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/client/api/impl/TimelineClientImpl.java
@@ -47,6 +47,7 @@ import 
org.apache.hadoop.classification.InterfaceStability.Unstable;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.security.UserGroupInformation;
 import org.apache.hadoop.security.SecurityUtil;
+import 
org.apache.hadoop.security.authentication.client.AuthenticationException;
 import org.apache.hadoop.security.authentication.client.ConnectionConfigurator;
 import org.apache.hadoop.security.ssl.SSLFactory;
 import org.apache.hadoop.security.token.Token;
@@ -108,6 +109,8 @@ public class TimelineClientImpl extends TimelineClient {
   private DelegationTokenAuthenticator authenticator;
   private DelegationTokenAuthenticatedURL.Token token;
   private URI resURI;
+  private UserGroupInformation authUgi;
+  private String doAsUser;
 
   @Private
   @VisibleForTesting
@@ -252,6 +255,15 @@ public class TimelineClientImpl extends TimelineClient {
   }
 
   protected void serviceInit(Configuration conf) throws Exception {
+UserGroupInformation ugi = UserGroupInformation.getCurrentUser();
+UserGroupInformation realUgi = ugi.getRealUser();
+if (realUgi != null) {
+  authUgi = realUgi;
+  doAsUser = ugi.getShortUserName();
+} else {
+  authUgi = ugi;
+  doAsUser = null;
+}
 ClientConfig cc = new DefaultClientConfig();
 cc.getClasses().add(YarnJacksonJaxbJsonProvider.class);
 connConfigurator = newConnConfigurator(conf);
@@ -301,16 +313,20 @@ public class TimelineClientImpl extends TimelineClient {
 doPosting(domain, domain);
   }
 
-  private ClientResponse doPosting(Object obj, String path) throws 
IOException, YarnException {
+  private ClientResponse doPosting(final Object obj, final String path)
+  throws IOException, YarnException {
 ClientResponse resp;
 try {
-  resp = doPostingObject(obj, path);
-} catch (RuntimeException re) {
-  // runtime exception is expected if the client cannot connect the server
-  String msg =
-  Failed to get the response from the timeline server.;
-  LOG.error(msg, re);
-  throw re;
+  resp = authUgi.doAs(new PrivilegedExceptionActionClientResponse() {
+@Override
+public ClientResponse run() throws Exception {
+  return doPostingObject(obj, path);
+}
+  });
+} catch (UndeclaredThrowableException e) {
+throw new IOException(e.getCause());
+} catch (InterruptedException ie)