Skip to content

Commit ca3cc55

Browse files
committed
YARN-716. Fixed unit test failures - TestDistributedShell and TestUnmanagedAMLauncher. Contributed by Vinod Kumar Vavilapalli.
git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1485579 13f79535-47bb-0310-9956-ffa450edef68
1 parent fab03c3 commit ca3cc55

File tree

2 files changed

+23
-6
lines changed
  • hadoop-yarn-project
    • hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-distributedshell/src/main/java/org/apache/hadoop/yarn/applications/distributedshell

2 files changed

+23
-6
lines changed

hadoop-yarn-project/CHANGES.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -404,6 +404,9 @@ Release 2.0.5-beta - UNRELEASED
404404

405405
YARN-706. Fixed race conditions in TestFSDownload. (Zhijie Shen via vinodkv).
406406

407+
YARN-716. Fixed unit test failures - TestDistributedShell and
408+
TestUnmanagedAMLauncher. (Vinod Kumar Vavilapalli via sseth)
409+
407410
Release 2.0.4-alpha - 2013-04-25
408411

409412
INCOMPATIBLE CHANGES

hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-distributedshell/src/main/java/org/apache/hadoop/yarn/applications/distributedshell/ApplicationMaster.java

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import java.net.InetSocketAddress;
2525
import java.net.URI;
2626
import java.net.URISyntaxException;
27+
import java.security.PrivilegedAction;
2728
import java.util.ArrayList;
2829
import java.util.HashMap;
2930
import java.util.List;
@@ -38,23 +39,22 @@
3839
import org.apache.commons.cli.ParseException;
3940
import org.apache.commons.logging.Log;
4041
import org.apache.commons.logging.LogFactory;
41-
4242
import org.apache.hadoop.classification.InterfaceAudience;
4343
import org.apache.hadoop.classification.InterfaceStability;
4444
import org.apache.hadoop.conf.Configuration;
4545
import org.apache.hadoop.net.NetUtils;
46+
import org.apache.hadoop.security.UserGroupInformation;
47+
import org.apache.hadoop.security.token.Token;
4648
import org.apache.hadoop.yarn.api.AMRMProtocol;
4749
import org.apache.hadoop.yarn.api.ApplicationConstants;
4850
import org.apache.hadoop.yarn.api.ApplicationConstants.Environment;
4951
import org.apache.hadoop.yarn.api.ContainerExitStatus;
5052
import org.apache.hadoop.yarn.api.ContainerManager;
51-
5253
import org.apache.hadoop.yarn.api.protocolrecords.AllocateRequest;
5354
import org.apache.hadoop.yarn.api.protocolrecords.AllocateResponse;
5455
import org.apache.hadoop.yarn.api.protocolrecords.FinishApplicationMasterRequest;
5556
import org.apache.hadoop.yarn.api.protocolrecords.RegisterApplicationMasterResponse;
5657
import org.apache.hadoop.yarn.api.protocolrecords.StartContainerRequest;
57-
5858
import org.apache.hadoop.yarn.api.records.ApplicationAttemptId;
5959
import org.apache.hadoop.yarn.api.records.Container;
6060
import org.apache.hadoop.yarn.api.records.ContainerId;
@@ -74,7 +74,9 @@
7474
import org.apache.hadoop.yarn.conf.YarnConfiguration;
7575
import org.apache.hadoop.yarn.exceptions.YarnRemoteException;
7676
import org.apache.hadoop.yarn.ipc.YarnRPC;
77+
import org.apache.hadoop.yarn.security.ContainerTokenIdentifier;
7778
import org.apache.hadoop.yarn.util.ConverterUtils;
79+
import org.apache.hadoop.yarn.util.ProtoUtils;
7880
import org.apache.hadoop.yarn.util.Records;
7981

8082
/**
@@ -663,10 +665,22 @@ private void connectToCM() {
663665
+ container.getId());
664666
String cmIpPortStr = container.getNodeId().getHost() + ":"
665667
+ container.getNodeId().getPort();
666-
InetSocketAddress cmAddress = NetUtils.createSocketAddr(cmIpPortStr);
668+
final InetSocketAddress cmAddress =
669+
NetUtils.createSocketAddr(cmIpPortStr);
667670
LOG.info("Connecting to ContainerManager at " + cmIpPortStr);
668-
this.cm = ((ContainerManager) rpc.getProxy(ContainerManager.class,
669-
cmAddress, conf));
671+
UserGroupInformation ugi =
672+
UserGroupInformation.createRemoteUser(container.getId().toString());
673+
Token<ContainerTokenIdentifier> token =
674+
ProtoUtils.convertFromProtoFormat(container.getContainerToken(),
675+
cmAddress);
676+
ugi.addToken(token);
677+
this.cm = ugi.doAs(new PrivilegedAction<ContainerManager>() {
678+
@Override
679+
public ContainerManager run() {
680+
return ((ContainerManager) rpc.getProxy(ContainerManager.class,
681+
cmAddress, conf));
682+
}
683+
});
670684
}
671685

672686
@Override

0 commit comments

Comments
 (0)