hadoop git commit: YARN-3287. Made TimelineClient put methods do as the correct login context. Contributed by Daryn Sharp and Jonathan Eagles.
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 ShenAuthored: 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.
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)