diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/client/api/impl/TimelineClientImpl.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/client/api/impl/TimelineClientImpl.java index 605d60b..71bd49f 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/client/api/impl/TimelineClientImpl.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/client/api/impl/TimelineClientImpl.java @@ -369,6 +369,10 @@ public long renewDelegationToken( == UserGroupInformation.AuthenticationMethod.PROXY; final String doAsUser = isProxyAccess ? UserGroupInformation.getCurrentUser().getShortUserName() : null; + boolean useHttps = YarnConfiguration.useHttps(this.getConfig()); + String service = timelineDT.getService().toString(); + final URI serviceURI = URI.create(JOINER.join( + useHttps ? "https://" : "http://", service, RESOURCE_URI_STR)); PrivilegedExceptionAction renewDTAction = new PrivilegedExceptionAction() { @@ -385,7 +389,7 @@ public Long run() new DelegationTokenAuthenticatedURL(authenticator, connConfigurator); return authUrl - .renewDelegationToken(resURI.toURL(), token, doAsUser); + .renewDelegationToken(serviceURI.toURL(), token, doAsUser); } }; return (Long) operateDelegationToken(renewDTAction); @@ -401,6 +405,10 @@ public void cancelDelegationToken( == UserGroupInformation.AuthenticationMethod.PROXY; final String doAsUser = isProxyAccess ? UserGroupInformation.getCurrentUser().getShortUserName() : null; + boolean useHttps = YarnConfiguration.useHttps(this.getConfig()); + String service = timelineDT.getService().toString(); + final URI serviceURI = URI.create(JOINER.join( + useHttps ? "https://" : "http://", service, RESOURCE_URI_STR)); PrivilegedExceptionAction cancelDTAction = new PrivilegedExceptionAction() { @@ -416,7 +424,7 @@ public Void run() DelegationTokenAuthenticatedURL authUrl = new DelegationTokenAuthenticatedURL(authenticator, connConfigurator); - authUrl.cancelDelegationToken(resURI.toURL(), token, doAsUser); + authUrl.cancelDelegationToken(serviceURI.toURL(), token, doAsUser); return null; } }; diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/client/api/impl/TestTimelineClient.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/client/api/impl/TestTimelineClient.java index 7da3bbf..6f35e3d 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/client/api/impl/TestTimelineClient.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/client/api/impl/TestTimelineClient.java @@ -238,7 +238,10 @@ public void testDelegationTokenOperationsRetry() throws Exception { new TimelineDelegationTokenIdentifier( new Text("tester"), new Text("tester"), new Text("tester")); client.renewDelegationToken( - new Token(timelineDT, dtManager)); + new Token(timelineDT.getBytes(), + dtManager.createPassword(timelineDT), + timelineDT.getKind(), + new Text("0.0.0.0:8188"))); assertFail(); } catch (RuntimeException ce) { assertException(client, ce); @@ -250,7 +253,10 @@ public void testDelegationTokenOperationsRetry() throws Exception { new TimelineDelegationTokenIdentifier( new Text("tester"), new Text("tester"), new Text("tester")); client.cancelDelegationToken( - new Token(timelineDT, dtManager)); + new Token(timelineDT.getBytes(), + dtManager.createPassword(timelineDT), + timelineDT.getKind(), + new Text("0.0.0.0:8188"))); assertFail(); } catch (RuntimeException ce) { assertException(client, ce); @@ -371,5 +377,9 @@ public TimelineDelegationTokenIdentifier createIdentifier() { return new TimelineDelegationTokenIdentifier(); } + @Override + public synchronized byte[] createPassword(TimelineDelegationTokenIdentifier identifier) { + return super.createPassword(identifier); + } } }