YARN-717. Put object creation factories for Token in the class itself and remove useless derivations for specific tokens. Contributed by Jian He.

MAPREDUCE-5289. Updated MR App to use Token directly after YARN-717. Contributed by Jian He.
svn merge --ignore-ancestry -c 1488616 ../../trunk/


git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/branch-2@1488617 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Vinod Kumar Vavilapalli 2013-06-01 21:45:24 +00:00
parent 6e0b55c5b7
commit 41ed12124c
77 changed files with 366 additions and 511 deletions

View File

@ -130,6 +130,9 @@ Release 2.1.0-beta - UNRELEASED
ClusterMetrics for binary compatibility with 1.x APIs. (Mayank Bansal via ClusterMetrics for binary compatibility with 1.x APIs. (Mayank Bansal via
vinodkv) vinodkv)
MAPREDUCE-5289. Updated MR App to use Token directly after YARN-717. (Jian He
via vinodkv)
OPTIMIZATIONS OPTIMIZATIONS
MAPREDUCE-4974. Optimising the LineRecordReader initialize() method MAPREDUCE-4974. Optimising the LineRecordReader initialize() method

View File

@ -18,10 +18,10 @@
package org.apache.hadoop.mapreduce.v2.app.launcher; package org.apache.hadoop.mapreduce.v2.app.launcher;
import org.apache.hadoop.yarn.api.records.ContainerId;
import org.apache.hadoop.yarn.api.records.ContainerToken;
import org.apache.hadoop.yarn.event.AbstractEvent;
import org.apache.hadoop.mapreduce.v2.api.records.TaskAttemptId; import org.apache.hadoop.mapreduce.v2.api.records.TaskAttemptId;
import org.apache.hadoop.yarn.api.records.ContainerId;
import org.apache.hadoop.yarn.api.records.Token;
import org.apache.hadoop.yarn.event.AbstractEvent;
public class ContainerLauncherEvent public class ContainerLauncherEvent
extends AbstractEvent<ContainerLauncher.EventType> { extends AbstractEvent<ContainerLauncher.EventType> {
@ -29,12 +29,12 @@ public class ContainerLauncherEvent
private TaskAttemptId taskAttemptID; private TaskAttemptId taskAttemptID;
private ContainerId containerID; private ContainerId containerID;
private String containerMgrAddress; private String containerMgrAddress;
private ContainerToken containerToken; private Token containerToken;
public ContainerLauncherEvent(TaskAttemptId taskAttemptID, public ContainerLauncherEvent(TaskAttemptId taskAttemptID,
ContainerId containerID, ContainerId containerID,
String containerMgrAddress, String containerMgrAddress,
ContainerToken containerToken, Token containerToken,
ContainerLauncher.EventType type) { ContainerLauncher.EventType type) {
super(type); super(type);
this.taskAttemptID = taskAttemptID; this.taskAttemptID = taskAttemptID;
@ -55,7 +55,7 @@ public String getContainerMgrAddress() {
return containerMgrAddress; return containerMgrAddress;
} }
public ContainerToken getContainerToken() { public Token getContainerToken() {
return containerToken; return containerToken;
} }

View File

@ -55,7 +55,6 @@
import org.apache.hadoop.yarn.api.protocolrecords.StopContainerRequest; import org.apache.hadoop.yarn.api.protocolrecords.StopContainerRequest;
import org.apache.hadoop.yarn.api.records.ContainerId; import org.apache.hadoop.yarn.api.records.ContainerId;
import org.apache.hadoop.yarn.api.records.ContainerLaunchContext; import org.apache.hadoop.yarn.api.records.ContainerLaunchContext;
import org.apache.hadoop.yarn.api.records.ContainerToken;
import org.apache.hadoop.yarn.ipc.YarnRPC; import org.apache.hadoop.yarn.ipc.YarnRPC;
import org.apache.hadoop.yarn.security.ContainerTokenIdentifier; import org.apache.hadoop.yarn.security.ContainerTokenIdentifier;
import org.apache.hadoop.yarn.service.AbstractService; import org.apache.hadoop.yarn.service.AbstractService;
@ -115,10 +114,11 @@ private class Container {
private TaskAttemptId taskAttemptID; private TaskAttemptId taskAttemptID;
private ContainerId containerID; private ContainerId containerID;
final private String containerMgrAddress; final private String containerMgrAddress;
private ContainerToken containerToken; private org.apache.hadoop.yarn.api.records.Token containerToken;
public Container(TaskAttemptId taId, ContainerId containerID, public Container(TaskAttemptId taId, ContainerId containerID,
String containerMgrAddress, ContainerToken containerToken) { String containerMgrAddress,
org.apache.hadoop.yarn.api.records.Token containerToken) {
this.state = ContainerState.PREP; this.state = ContainerState.PREP;
this.taskAttemptID = taId; this.taskAttemptID = taId;
this.containerMgrAddress = containerMgrAddress; this.containerMgrAddress = containerMgrAddress;
@ -345,7 +345,8 @@ protected EventProcessor createEventProcessor(ContainerLauncherEvent event) {
} }
protected ContainerManager getCMProxy(ContainerId containerID, protected ContainerManager getCMProxy(ContainerId containerID,
final String containerManagerBindAddr, ContainerToken containerToken) final String containerManagerBindAddr,
org.apache.hadoop.yarn.api.records.Token containerToken)
throws IOException { throws IOException {
final InetSocketAddress cmAddr = final InetSocketAddress cmAddr =

View File

@ -90,7 +90,7 @@
import org.apache.hadoop.yarn.api.records.ApplicationId; import org.apache.hadoop.yarn.api.records.ApplicationId;
import org.apache.hadoop.yarn.api.records.Container; import org.apache.hadoop.yarn.api.records.Container;
import org.apache.hadoop.yarn.api.records.ContainerId; import org.apache.hadoop.yarn.api.records.ContainerId;
import org.apache.hadoop.yarn.api.records.ContainerToken; import org.apache.hadoop.yarn.api.records.Token;
import org.apache.hadoop.yarn.api.records.NodeId; import org.apache.hadoop.yarn.api.records.NodeId;
import org.apache.hadoop.yarn.api.records.Resource; import org.apache.hadoop.yarn.api.records.Resource;
import org.apache.hadoop.yarn.event.EventHandler; import org.apache.hadoop.yarn.event.EventHandler;
@ -516,7 +516,7 @@ public void handle(ContainerAllocatorEvent event) {
ContainerTokenIdentifier containerTokenIdentifier = ContainerTokenIdentifier containerTokenIdentifier =
new ContainerTokenIdentifier(cId, nodeId.toString(), "user", new ContainerTokenIdentifier(cId, nodeId.toString(), "user",
resource, System.currentTimeMillis() + 10000, 42, 42); resource, System.currentTimeMillis() + 10000, 42, 42);
ContainerToken containerToken = Token containerToken =
BuilderUtils.newContainerToken(nodeId, "password".getBytes(), BuilderUtils.newContainerToken(nodeId, "password".getBytes(),
containerTokenIdentifier); containerTokenIdentifier);
Container container = Container.newInstance(cId, nodeId, Container container = Container.newInstance(cId, nodeId,

View File

@ -46,7 +46,7 @@
import org.apache.hadoop.net.NetUtils; import org.apache.hadoop.net.NetUtils;
import org.apache.hadoop.yarn.api.ContainerManager; import org.apache.hadoop.yarn.api.ContainerManager;
import org.apache.hadoop.yarn.api.records.ContainerId; import org.apache.hadoop.yarn.api.records.ContainerId;
import org.apache.hadoop.yarn.api.records.ContainerToken; import org.apache.hadoop.yarn.api.records.Token;
import org.junit.Test; import org.junit.Test;
/** /**
@ -226,7 +226,7 @@ public void handle(ContainerLauncherEvent event) {
@Override @Override
protected ContainerManager getCMProxy(ContainerId contianerID, protected ContainerManager getCMProxy(ContainerId contianerID,
String containerManagerBindAddr, ContainerToken containerToken) String containerManagerBindAddr, Token containerToken)
throws IOException { throws IOException {
try { try {
synchronized (this) { synchronized (this) {

View File

@ -61,7 +61,7 @@
import org.apache.hadoop.yarn.api.records.ContainerId; import org.apache.hadoop.yarn.api.records.ContainerId;
import org.apache.hadoop.yarn.api.records.ContainerState; import org.apache.hadoop.yarn.api.records.ContainerState;
import org.apache.hadoop.yarn.api.records.ContainerStatus; import org.apache.hadoop.yarn.api.records.ContainerStatus;
import org.apache.hadoop.yarn.api.records.ContainerToken; import org.apache.hadoop.yarn.api.records.Token;
import org.apache.hadoop.yarn.conf.YarnConfiguration; import org.apache.hadoop.yarn.conf.YarnConfiguration;
import org.apache.hadoop.yarn.factories.RecordFactory; import org.apache.hadoop.yarn.factories.RecordFactory;
import org.apache.hadoop.yarn.factory.providers.RecordFactoryProvider; import org.apache.hadoop.yarn.factory.providers.RecordFactoryProvider;
@ -347,7 +347,7 @@ protected ContainerLauncher createContainerLauncher(AppContext context) {
return new ContainerLauncherImpl(context) { return new ContainerLauncherImpl(context) {
@Override @Override
protected ContainerManager getCMProxy(ContainerId containerID, protected ContainerManager getCMProxy(ContainerId containerID,
String containerManagerBindAddr, ContainerToken containerToken) String containerManagerBindAddr, Token containerToken)
throws IOException { throws IOException {
// make proxy connect to our local containerManager server // make proxy connect to our local containerManager server
ContainerManager proxy = (ContainerManager) rpc.getProxy( ContainerManager proxy = (ContainerManager) rpc.getProxy(

View File

@ -55,9 +55,9 @@
import org.apache.hadoop.yarn.api.records.ApplicationAttemptId; import org.apache.hadoop.yarn.api.records.ApplicationAttemptId;
import org.apache.hadoop.yarn.api.records.ApplicationId; import org.apache.hadoop.yarn.api.records.ApplicationId;
import org.apache.hadoop.yarn.api.records.ContainerId; import org.apache.hadoop.yarn.api.records.ContainerId;
import org.apache.hadoop.yarn.api.records.ContainerToken;
import org.apache.hadoop.yarn.api.records.NodeId; import org.apache.hadoop.yarn.api.records.NodeId;
import org.apache.hadoop.yarn.api.records.Resource; import org.apache.hadoop.yarn.api.records.Resource;
import org.apache.hadoop.yarn.api.records.Token;
import org.apache.hadoop.yarn.event.Event; import org.apache.hadoop.yarn.event.Event;
import org.apache.hadoop.yarn.event.EventHandler; import org.apache.hadoop.yarn.event.EventHandler;
import org.apache.hadoop.yarn.exceptions.YarnRemoteException; import org.apache.hadoop.yarn.exceptions.YarnRemoteException;
@ -407,7 +407,7 @@ public void testContainerCleaned() throws Exception {
} }
} }
private ContainerToken createNewContainerToken(ContainerId contId, private Token createNewContainerToken(ContainerId contId,
String containerManagerAddr) { String containerManagerAddr) {
long currentTime = System.currentTimeMillis(); long currentTime = System.currentTimeMillis();
return BuilderUtils.newContainerToken(NodeId.newInstance("127.0.0.1", return BuilderUtils.newContainerToken(NodeId.newInstance("127.0.0.1",

View File

@ -20,7 +20,7 @@
import org.apache.hadoop.classification.InterfaceAudience.Public; import org.apache.hadoop.classification.InterfaceAudience.Public;
import org.apache.hadoop.classification.InterfaceStability.Evolving; import org.apache.hadoop.classification.InterfaceStability.Evolving;
import org.apache.hadoop.yarn.api.records.DelegationToken; import org.apache.hadoop.yarn.api.records.Token;
/** /**
* The request issued by the client to the {@code ResourceManager} to cancel a * The request issued by the client to the {@code ResourceManager} to cancel a
@ -29,6 +29,6 @@
@Public @Public
@Evolving @Evolving
public interface CancelDelegationTokenRequest { public interface CancelDelegationTokenRequest {
DelegationToken getDelegationToken(); Token getDelegationToken();
void setDelegationToken(DelegationToken dToken); void setDelegationToken(Token dToken);
} }

View File

@ -17,9 +17,9 @@
*/ */
package org.apache.hadoop.mapreduce.v2.api.protocolrecords; package org.apache.hadoop.mapreduce.v2.api.protocolrecords;
import org.apache.hadoop.yarn.api.records.DelegationToken; import org.apache.hadoop.yarn.api.records.Token;
public interface GetDelegationTokenResponse { public interface GetDelegationTokenResponse {
void setDelegationToken(DelegationToken clientDToken); void setDelegationToken(Token clientDToken);
DelegationToken getDelegationToken(); Token getDelegationToken();
} }

View File

@ -20,7 +20,7 @@
import org.apache.hadoop.classification.InterfaceAudience.Public; import org.apache.hadoop.classification.InterfaceAudience.Public;
import org.apache.hadoop.classification.InterfaceStability.Evolving; import org.apache.hadoop.classification.InterfaceStability.Evolving;
import org.apache.hadoop.yarn.api.records.DelegationToken; import org.apache.hadoop.yarn.api.records.Token;
/** /**
* The request issued by the client to renew a delegation token from * The request issued by the client to renew a delegation token from
@ -29,6 +29,6 @@
@Public @Public
@Evolving @Evolving
public interface RenewDelegationTokenRequest { public interface RenewDelegationTokenRequest {
DelegationToken getDelegationToken(); Token getDelegationToken();
void setDelegationToken(DelegationToken dToken); void setDelegationToken(Token dToken);
} }

View File

@ -21,9 +21,9 @@
import org.apache.hadoop.security.proto.SecurityProtos.CancelDelegationTokenRequestProto; import org.apache.hadoop.security.proto.SecurityProtos.CancelDelegationTokenRequestProto;
import org.apache.hadoop.security.proto.SecurityProtos.CancelDelegationTokenRequestProtoOrBuilder; import org.apache.hadoop.security.proto.SecurityProtos.CancelDelegationTokenRequestProtoOrBuilder;
import org.apache.hadoop.security.proto.SecurityProtos.TokenProto; import org.apache.hadoop.security.proto.SecurityProtos.TokenProto;
import org.apache.hadoop.yarn.api.records.DelegationToken;
import org.apache.hadoop.yarn.api.records.ProtoBase; import org.apache.hadoop.yarn.api.records.ProtoBase;
import org.apache.hadoop.yarn.api.records.impl.pb.DelegationTokenPBImpl; import org.apache.hadoop.yarn.api.records.Token;
import org.apache.hadoop.yarn.api.records.impl.pb.TokenPBImpl;
public class CancelDelegationTokenRequestPBImpl extends public class CancelDelegationTokenRequestPBImpl extends
ProtoBase<CancelDelegationTokenRequestProto> implements ProtoBase<CancelDelegationTokenRequestProto> implements
@ -44,10 +44,10 @@ public CancelDelegationTokenRequestPBImpl (
this.viaProto = true; this.viaProto = true;
} }
DelegationToken token; Token token;
@Override @Override
public DelegationToken getDelegationToken() { public Token getDelegationToken() {
CancelDelegationTokenRequestProtoOrBuilder p = viaProto ? proto : builder; CancelDelegationTokenRequestProtoOrBuilder p = viaProto ? proto : builder;
if (this.token != null) { if (this.token != null) {
return this.token; return this.token;
@ -57,7 +57,7 @@ public DelegationToken getDelegationToken() {
} }
@Override @Override
public void setDelegationToken(DelegationToken token) { public void setDelegationToken(Token token) {
maybeInitBuilder(); maybeInitBuilder();
if (token == null) if (token == null)
builder.clearToken(); builder.clearToken();
@ -95,11 +95,11 @@ private void maybeInitBuilder() {
} }
private DelegationTokenPBImpl convertFromProtoFormat(TokenProto p) { private TokenPBImpl convertFromProtoFormat(TokenProto p) {
return new DelegationTokenPBImpl(p); return new TokenPBImpl(p);
} }
private TokenProto convertToProtoFormat(DelegationToken t) { private TokenProto convertToProtoFormat(Token t) {
return ((DelegationTokenPBImpl)t).getProto(); return ((TokenPBImpl)t).getProto();
} }
} }

View File

@ -21,14 +21,14 @@
import org.apache.hadoop.security.proto.SecurityProtos.GetDelegationTokenResponseProto; import org.apache.hadoop.security.proto.SecurityProtos.GetDelegationTokenResponseProto;
import org.apache.hadoop.security.proto.SecurityProtos.GetDelegationTokenResponseProtoOrBuilder; import org.apache.hadoop.security.proto.SecurityProtos.GetDelegationTokenResponseProtoOrBuilder;
import org.apache.hadoop.security.proto.SecurityProtos.TokenProto; import org.apache.hadoop.security.proto.SecurityProtos.TokenProto;
import org.apache.hadoop.yarn.api.records.DelegationToken;
import org.apache.hadoop.yarn.api.records.ProtoBase; import org.apache.hadoop.yarn.api.records.ProtoBase;
import org.apache.hadoop.yarn.api.records.impl.pb.DelegationTokenPBImpl; import org.apache.hadoop.yarn.api.records.Token;
import org.apache.hadoop.yarn.api.records.impl.pb.TokenPBImpl;
public class GetDelegationTokenResponsePBImpl extends public class GetDelegationTokenResponsePBImpl extends
ProtoBase<GetDelegationTokenResponseProto> implements GetDelegationTokenResponse { ProtoBase<GetDelegationTokenResponseProto> implements GetDelegationTokenResponse {
DelegationToken mrToken; Token mrToken;
GetDelegationTokenResponseProto proto = GetDelegationTokenResponseProto proto =
@ -47,7 +47,7 @@ public GetDelegationTokenResponsePBImpl (
} }
@Override @Override
public DelegationToken getDelegationToken() { public Token getDelegationToken() {
GetDelegationTokenResponseProtoOrBuilder p = viaProto ? proto : builder; GetDelegationTokenResponseProtoOrBuilder p = viaProto ? proto : builder;
if (this.mrToken != null) { if (this.mrToken != null) {
return this.mrToken; return this.mrToken;
@ -60,7 +60,7 @@ public DelegationToken getDelegationToken() {
} }
@Override @Override
public void setDelegationToken(DelegationToken mrToken) { public void setDelegationToken(Token mrToken) {
maybeInitBuilder(); maybeInitBuilder();
if (mrToken == null) if (mrToken == null)
builder.getToken(); builder.getToken();
@ -97,11 +97,11 @@ private void maybeInitBuilder() {
viaProto = false; viaProto = false;
} }
private DelegationTokenPBImpl convertFromProtoFormat(TokenProto p) { private TokenPBImpl convertFromProtoFormat(TokenProto p) {
return new DelegationTokenPBImpl(p); return new TokenPBImpl(p);
} }
private TokenProto convertToProtoFormat(DelegationToken t) { private TokenProto convertToProtoFormat(Token t) {
return ((DelegationTokenPBImpl)t).getProto(); return ((TokenPBImpl)t).getProto();
} }
} }

View File

@ -21,9 +21,9 @@
import org.apache.hadoop.security.proto.SecurityProtos.RenewDelegationTokenRequestProto; import org.apache.hadoop.security.proto.SecurityProtos.RenewDelegationTokenRequestProto;
import org.apache.hadoop.security.proto.SecurityProtos.RenewDelegationTokenRequestProtoOrBuilder; import org.apache.hadoop.security.proto.SecurityProtos.RenewDelegationTokenRequestProtoOrBuilder;
import org.apache.hadoop.security.proto.SecurityProtos.TokenProto; import org.apache.hadoop.security.proto.SecurityProtos.TokenProto;
import org.apache.hadoop.yarn.api.records.DelegationToken;
import org.apache.hadoop.yarn.api.records.ProtoBase; import org.apache.hadoop.yarn.api.records.ProtoBase;
import org.apache.hadoop.yarn.api.records.impl.pb.DelegationTokenPBImpl; import org.apache.hadoop.yarn.api.records.Token;
import org.apache.hadoop.yarn.api.records.impl.pb.TokenPBImpl;
public class RenewDelegationTokenRequestPBImpl extends public class RenewDelegationTokenRequestPBImpl extends
ProtoBase<RenewDelegationTokenRequestProto> implements ProtoBase<RenewDelegationTokenRequestProto> implements
@ -44,10 +44,10 @@ public RenewDelegationTokenRequestPBImpl(
this.viaProto = true; this.viaProto = true;
} }
DelegationToken token; Token token;
@Override @Override
public DelegationToken getDelegationToken() { public Token getDelegationToken() {
RenewDelegationTokenRequestProtoOrBuilder p = viaProto ? proto : builder; RenewDelegationTokenRequestProtoOrBuilder p = viaProto ? proto : builder;
if (this.token != null) { if (this.token != null) {
return this.token; return this.token;
@ -57,7 +57,7 @@ public DelegationToken getDelegationToken() {
} }
@Override @Override
public void setDelegationToken(DelegationToken token) { public void setDelegationToken(Token token) {
maybeInitBuilder(); maybeInitBuilder();
if (token == null) if (token == null)
builder.clearToken(); builder.clearToken();
@ -93,11 +93,11 @@ private void maybeInitBuilder() {
viaProto = false; viaProto = false;
} }
private DelegationTokenPBImpl convertFromProtoFormat(TokenProto p) { private TokenPBImpl convertFromProtoFormat(TokenProto p) {
return new DelegationTokenPBImpl(p); return new TokenPBImpl(p);
} }
private TokenProto convertToProtoFormat(DelegationToken t) { private TokenProto convertToProtoFormat(Token t) {
return ((DelegationTokenPBImpl) t).getProto(); return ((TokenPBImpl) t).getProto();
} }
} }

View File

@ -36,7 +36,6 @@
import org.apache.hadoop.security.UserGroupInformation; import org.apache.hadoop.security.UserGroupInformation;
import org.apache.hadoop.security.token.Token; import org.apache.hadoop.security.token.Token;
import org.apache.hadoop.security.token.TokenRenewer; import org.apache.hadoop.security.token.TokenRenewer;
import org.apache.hadoop.yarn.api.records.DelegationToken;
import org.apache.hadoop.yarn.ipc.YarnRPC; import org.apache.hadoop.yarn.ipc.YarnRPC;
import org.apache.hadoop.yarn.util.BuilderUtils; import org.apache.hadoop.yarn.util.BuilderUtils;
import org.apache.hadoop.yarn.util.Records; import org.apache.hadoop.yarn.util.Records;
@ -56,7 +55,7 @@ public boolean handleKind(Text kind) {
public long renew(Token<?> token, Configuration conf) throws IOException, public long renew(Token<?> token, Configuration conf) throws IOException,
InterruptedException { InterruptedException {
DelegationToken dToken = BuilderUtils.newDelegationToken( org.apache.hadoop.yarn.api.records.Token dToken = BuilderUtils.newDelegationToken(
token.getIdentifier(), token.getKind().toString(), token.getPassword(), token.getIdentifier(), token.getKind().toString(), token.getPassword(),
token.getService().toString()); token.getService().toString());
@ -77,7 +76,7 @@ public long renew(Token<?> token, Configuration conf) throws IOException,
public void cancel(Token<?> token, Configuration conf) throws IOException, public void cancel(Token<?> token, Configuration conf) throws IOException,
InterruptedException { InterruptedException {
DelegationToken dToken = BuilderUtils.newDelegationToken( org.apache.hadoop.yarn.api.records.Token dToken = BuilderUtils.newDelegationToken(
token.getIdentifier(), token.getKind().toString(), token.getPassword(), token.getIdentifier(), token.getKind().toString(), token.getPassword(),
token.getService().toString()); token.getService().toString());

View File

@ -79,7 +79,6 @@
import org.apache.hadoop.security.UserGroupInformation; import org.apache.hadoop.security.UserGroupInformation;
import org.apache.hadoop.security.UserGroupInformation.AuthenticationMethod; import org.apache.hadoop.security.UserGroupInformation.AuthenticationMethod;
import org.apache.hadoop.security.token.Token; import org.apache.hadoop.security.token.Token;
import org.apache.hadoop.yarn.api.records.DelegationToken;
import org.apache.hadoop.yarn.factories.RecordFactory; import org.apache.hadoop.yarn.factories.RecordFactory;
import org.apache.hadoop.yarn.factory.providers.RecordFactoryProvider; import org.apache.hadoop.yarn.factory.providers.RecordFactoryProvider;
import org.apache.hadoop.yarn.ipc.YarnRPC; import org.apache.hadoop.yarn.ipc.YarnRPC;
@ -344,7 +343,7 @@ public GetDelegationTokenResponse getDelegationToken(
Token<MRDelegationTokenIdentifier> realJHSToken = Token<MRDelegationTokenIdentifier> realJHSToken =
new Token<MRDelegationTokenIdentifier>(tokenIdentifier, new Token<MRDelegationTokenIdentifier>(tokenIdentifier,
jhsDTSecretManager); jhsDTSecretManager);
DelegationToken mrDToken = BuilderUtils.newDelegationToken( org.apache.hadoop.yarn.api.records.Token mrDToken = BuilderUtils.newDelegationToken(
realJHSToken.getIdentifier(), realJHSToken.getKind().toString(), realJHSToken.getIdentifier(), realJHSToken.getKind().toString(),
realJHSToken.getPassword(), realJHSToken.getService().toString()); realJHSToken.getPassword(), realJHSToken.getService().toString());
response.setDelegationToken(mrDToken); response.setDelegationToken(mrDToken);
@ -359,7 +358,7 @@ public RenewDelegationTokenResponse renewDelegationToken(
"Delegation Token can be renewed only with kerberos authentication"); "Delegation Token can be renewed only with kerberos authentication");
} }
DelegationToken protoToken = request.getDelegationToken(); org.apache.hadoop.yarn.api.records.Token protoToken = request.getDelegationToken();
Token<MRDelegationTokenIdentifier> token = Token<MRDelegationTokenIdentifier> token =
new Token<MRDelegationTokenIdentifier>( new Token<MRDelegationTokenIdentifier>(
protoToken.getIdentifier().array(), protoToken.getPassword() protoToken.getIdentifier().array(), protoToken.getPassword()
@ -382,7 +381,7 @@ public CancelDelegationTokenResponse cancelDelegationToken(
"Delegation Token can be cancelled only with kerberos authentication"); "Delegation Token can be cancelled only with kerberos authentication");
} }
DelegationToken protoToken = request.getDelegationToken(); org.apache.hadoop.yarn.api.records.Token protoToken = request.getDelegationToken();
Token<MRDelegationTokenIdentifier> token = Token<MRDelegationTokenIdentifier> token =
new Token<MRDelegationTokenIdentifier>( new Token<MRDelegationTokenIdentifier>(
protoToken.getIdentifier().array(), protoToken.getPassword() protoToken.getIdentifier().array(), protoToken.getPassword()

View File

@ -33,7 +33,6 @@
import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.CommonConfigurationKeysPublic; import org.apache.hadoop.fs.CommonConfigurationKeysPublic;
import org.apache.hadoop.http.HttpConfig; import org.apache.hadoop.http.HttpConfig;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.JobID; import org.apache.hadoop.mapreduce.JobID;
import org.apache.hadoop.mapreduce.JobStatus; import org.apache.hadoop.mapreduce.JobStatus;
import org.apache.hadoop.mapreduce.MRJobConfig; import org.apache.hadoop.mapreduce.MRJobConfig;
@ -64,13 +63,11 @@
import org.apache.hadoop.mapreduce.v2.api.records.TaskAttemptReport; import org.apache.hadoop.mapreduce.v2.api.records.TaskAttemptReport;
import org.apache.hadoop.mapreduce.v2.util.MRApps; import org.apache.hadoop.mapreduce.v2.util.MRApps;
import org.apache.hadoop.net.NetUtils; import org.apache.hadoop.net.NetUtils;
import org.apache.hadoop.security.SecurityUtil;
import org.apache.hadoop.security.UserGroupInformation; import org.apache.hadoop.security.UserGroupInformation;
import org.apache.hadoop.security.token.Token; import org.apache.hadoop.security.token.Token;
import org.apache.hadoop.yarn.YarnException; import org.apache.hadoop.yarn.YarnException;
import org.apache.hadoop.yarn.api.records.ApplicationId; import org.apache.hadoop.yarn.api.records.ApplicationId;
import org.apache.hadoop.yarn.api.records.ApplicationReport; import org.apache.hadoop.yarn.api.records.ApplicationReport;
import org.apache.hadoop.yarn.api.records.ClientToken;
import org.apache.hadoop.yarn.api.records.NodeId; import org.apache.hadoop.yarn.api.records.NodeId;
import org.apache.hadoop.yarn.api.records.YarnApplicationState; import org.apache.hadoop.yarn.api.records.YarnApplicationState;
import org.apache.hadoop.yarn.exceptions.YarnRemoteException; import org.apache.hadoop.yarn.exceptions.YarnRemoteException;
@ -78,7 +75,6 @@
import org.apache.hadoop.yarn.factory.providers.RecordFactoryProvider; import org.apache.hadoop.yarn.factory.providers.RecordFactoryProvider;
import org.apache.hadoop.yarn.ipc.YarnRPC; import org.apache.hadoop.yarn.ipc.YarnRPC;
import org.apache.hadoop.yarn.security.client.ClientTokenIdentifier; import org.apache.hadoop.yarn.security.client.ClientTokenIdentifier;
import org.apache.hadoop.yarn.util.BuilderUtils;
import org.apache.hadoop.yarn.util.ProtoUtils; import org.apache.hadoop.yarn.util.ProtoUtils;
public class ClientServiceDelegate { public class ClientServiceDelegate {
@ -184,7 +180,7 @@ private MRClientProtocol getProxy() throws IOException {
serviceAddr = NetUtils.createSocketAddrForHost( serviceAddr = NetUtils.createSocketAddrForHost(
application.getHost(), application.getRpcPort()); application.getHost(), application.getRpcPort());
if (UserGroupInformation.isSecurityEnabled()) { if (UserGroupInformation.isSecurityEnabled()) {
ClientToken clientToken = application.getClientToken(); org.apache.hadoop.yarn.api.records.Token clientToken = application.getClientToken();
Token<ClientTokenIdentifier> token = Token<ClientTokenIdentifier> token =
ProtoUtils.convertFromProtoFormat(clientToken, serviceAddr); ProtoUtils.convertFromProtoFormat(clientToken, serviceAddr);
newUgi.addToken(token); newUgi.addToken(token);

View File

@ -72,7 +72,6 @@
import org.apache.hadoop.yarn.api.records.ApplicationReport; import org.apache.hadoop.yarn.api.records.ApplicationReport;
import org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext; import org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext;
import org.apache.hadoop.yarn.api.records.ContainerLaunchContext; import org.apache.hadoop.yarn.api.records.ContainerLaunchContext;
import org.apache.hadoop.yarn.api.records.DelegationToken;
import org.apache.hadoop.yarn.api.records.LocalResource; import org.apache.hadoop.yarn.api.records.LocalResource;
import org.apache.hadoop.yarn.api.records.LocalResourceType; import org.apache.hadoop.yarn.api.records.LocalResourceType;
import org.apache.hadoop.yarn.api.records.LocalResourceVisibility; import org.apache.hadoop.yarn.api.records.LocalResourceVisibility;
@ -207,7 +206,7 @@ Token<?> getDelegationTokenFromHS(MRClientProtocol hsProxy)
GetDelegationTokenRequest request = recordFactory GetDelegationTokenRequest request = recordFactory
.newRecordInstance(GetDelegationTokenRequest.class); .newRecordInstance(GetDelegationTokenRequest.class);
request.setRenewer(Master.getMasterPrincipal(conf)); request.setRenewer(Master.getMasterPrincipal(conf));
DelegationToken mrDelegationToken; org.apache.hadoop.yarn.api.records.Token mrDelegationToken;
mrDelegationToken = hsProxy.getDelegationToken(request) mrDelegationToken = hsProxy.getDelegationToken(request)
.getDelegationToken(); .getDelegationToken();
return ProtoUtils.convertFromProtoFormat(mrDelegationToken, return ProtoUtils.convertFromProtoFormat(mrDelegationToken,

View File

@ -79,7 +79,6 @@
import org.apache.hadoop.yarn.api.records.ApplicationReport; import org.apache.hadoop.yarn.api.records.ApplicationReport;
import org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext; import org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext;
import org.apache.hadoop.yarn.api.records.ContainerLaunchContext; import org.apache.hadoop.yarn.api.records.ContainerLaunchContext;
import org.apache.hadoop.yarn.api.records.DelegationToken;
import org.apache.hadoop.yarn.api.records.QueueInfo; import org.apache.hadoop.yarn.api.records.QueueInfo;
import org.apache.hadoop.yarn.api.records.YarnApplicationState; import org.apache.hadoop.yarn.api.records.YarnApplicationState;
import org.apache.hadoop.yarn.api.records.YarnClusterMetrics; import org.apache.hadoop.yarn.api.records.YarnClusterMetrics;
@ -283,7 +282,7 @@ public void testGetHSDelegationToken() throws Exception {
token.setKind(RMDelegationTokenIdentifier.KIND_NAME); token.setKind(RMDelegationTokenIdentifier.KIND_NAME);
// Setup mock history token // Setup mock history token
DelegationToken historyToken = BuilderUtils.newDelegationToken( org.apache.hadoop.yarn.api.records.Token historyToken = BuilderUtils.newDelegationToken(
new byte[0], MRDelegationTokenIdentifier.KIND_NAME.toString(), new byte[0], MRDelegationTokenIdentifier.KIND_NAME.toString(),
new byte[0], hsTokenSevice.toString()); new byte[0], hsTokenSevice.toString());
GetDelegationTokenResponse getDtResponse = Records GetDelegationTokenResponse getDtResponse = Records
@ -359,8 +358,8 @@ public GetDelegationTokenResponse answer(InvocationOnMock invocation) {
// check that the renewer matches the cluster's RM principal // check that the renewer matches the cluster's RM principal
assertEquals(masterPrincipal, request.getRenewer() ); assertEquals(masterPrincipal, request.getRenewer() );
DelegationToken token = org.apache.hadoop.yarn.api.records.Token token =
recordFactory.newRecordInstance(DelegationToken.class); recordFactory.newRecordInstance(org.apache.hadoop.yarn.api.records.Token.class);
// none of these fields matter for the sake of the test // none of these fields matter for the sake of the test
token.setKind(""); token.setKind("");
token.setService(""); token.setService("");

View File

@ -37,7 +37,6 @@
import org.apache.hadoop.yarn.api.ClientRMProtocol; import org.apache.hadoop.yarn.api.ClientRMProtocol;
import org.apache.hadoop.yarn.api.protocolrecords.GetDelegationTokenRequest; import org.apache.hadoop.yarn.api.protocolrecords.GetDelegationTokenRequest;
import org.apache.hadoop.yarn.api.protocolrecords.GetDelegationTokenResponse; import org.apache.hadoop.yarn.api.protocolrecords.GetDelegationTokenResponse;
import org.apache.hadoop.yarn.api.records.DelegationToken;
import org.apache.hadoop.yarn.conf.YarnConfiguration; import org.apache.hadoop.yarn.conf.YarnConfiguration;
import org.apache.hadoop.yarn.factories.RecordFactory; import org.apache.hadoop.yarn.factories.RecordFactory;
import org.apache.hadoop.yarn.factory.providers.RecordFactoryProvider; import org.apache.hadoop.yarn.factory.providers.RecordFactoryProvider;
@ -98,8 +97,8 @@ public void testClusterGetDelegationToken() throws Exception {
YARNRunner yrunner = (YARNRunner) cluster.getClient(); YARNRunner yrunner = (YARNRunner) cluster.getClient();
GetDelegationTokenResponse getDTResponse = GetDelegationTokenResponse getDTResponse =
recordFactory.newRecordInstance(GetDelegationTokenResponse.class); recordFactory.newRecordInstance(GetDelegationTokenResponse.class);
DelegationToken rmDTToken = recordFactory.newRecordInstance( org.apache.hadoop.yarn.api.records.Token rmDTToken = recordFactory.newRecordInstance(
DelegationToken.class); org.apache.hadoop.yarn.api.records.Token.class);
rmDTToken.setIdentifier(ByteBuffer.wrap(new byte[2])); rmDTToken.setIdentifier(ByteBuffer.wrap(new byte[2]));
rmDTToken.setKind("Testclusterkind"); rmDTToken.setKind("Testclusterkind");
rmDTToken.setPassword(ByteBuffer.wrap("testcluster".getBytes())); rmDTToken.setPassword(ByteBuffer.wrap("testcluster".getBytes()));

View File

@ -45,7 +45,7 @@
import org.apache.hadoop.mapreduce.v2.util.MRBuilderUtils; import org.apache.hadoop.mapreduce.v2.util.MRBuilderUtils;
import org.apache.hadoop.security.UserGroupInformation; import org.apache.hadoop.security.UserGroupInformation;
import org.apache.hadoop.security.UserGroupInformation.AuthenticationMethod; import org.apache.hadoop.security.UserGroupInformation.AuthenticationMethod;
import org.apache.hadoop.yarn.api.records.DelegationToken; import org.apache.hadoop.yarn.api.records.Token;
import org.apache.hadoop.yarn.conf.YarnConfiguration; import org.apache.hadoop.yarn.conf.YarnConfiguration;
import org.apache.hadoop.yarn.ipc.YarnRPC; import org.apache.hadoop.yarn.ipc.YarnRPC;
import org.apache.hadoop.yarn.util.ProtoUtils; import org.apache.hadoop.yarn.util.ProtoUtils;
@ -107,7 +107,7 @@ protected JHSDelegationTokenSecretManager createJHSSecretManager(
loggedInUser.setAuthenticationMethod(AuthenticationMethod.KERBEROS); loggedInUser.setAuthenticationMethod(AuthenticationMethod.KERBEROS);
DelegationToken token = getDelegationToken(loggedInUser, hsService, Token token = getDelegationToken(loggedInUser, hsService,
loggedInUser.getShortUserName()); loggedInUser.getShortUserName());
tokenFetchTime = System.currentTimeMillis(); tokenFetchTime = System.currentTimeMillis();
LOG.info("Got delegation token at: " + tokenFetchTime); LOG.info("Got delegation token at: " + tokenFetchTime);
@ -207,16 +207,16 @@ protected JHSDelegationTokenSecretManager createJHSSecretManager(
} }
} }
private DelegationToken getDelegationToken( private Token getDelegationToken(
final UserGroupInformation loggedInUser, final UserGroupInformation loggedInUser,
final MRClientProtocol hsService, final String renewerString) final MRClientProtocol hsService, final String renewerString)
throws IOException, InterruptedException { throws IOException, InterruptedException {
// Get the delegation token directly as it is a little difficult to setup // Get the delegation token directly as it is a little difficult to setup
// the kerberos based rpc. // the kerberos based rpc.
DelegationToken token = loggedInUser Token token = loggedInUser
.doAs(new PrivilegedExceptionAction<DelegationToken>() { .doAs(new PrivilegedExceptionAction<Token>() {
@Override @Override
public DelegationToken run() throws IOException { public Token run() throws IOException {
GetDelegationTokenRequest request = Records GetDelegationTokenRequest request = Records
.newRecord(GetDelegationTokenRequest.class); .newRecord(GetDelegationTokenRequest.class);
request.setRenewer(renewerString); request.setRenewer(renewerString);
@ -228,7 +228,7 @@ public DelegationToken run() throws IOException {
} }
private long renewDelegationToken(final UserGroupInformation loggedInUser, private long renewDelegationToken(final UserGroupInformation loggedInUser,
final MRClientProtocol hsService, final DelegationToken dToken) final MRClientProtocol hsService, final Token dToken)
throws IOException, InterruptedException { throws IOException, InterruptedException {
long nextExpTime = loggedInUser.doAs(new PrivilegedExceptionAction<Long>() { long nextExpTime = loggedInUser.doAs(new PrivilegedExceptionAction<Long>() {
@ -244,7 +244,7 @@ public Long run() throws IOException {
} }
private void cancelDelegationToken(final UserGroupInformation loggedInUser, private void cancelDelegationToken(final UserGroupInformation loggedInUser,
final MRClientProtocol hsService, final DelegationToken dToken) final MRClientProtocol hsService, final Token dToken)
throws IOException, InterruptedException { throws IOException, InterruptedException {
loggedInUser.doAs(new PrivilegedExceptionAction<Void>() { loggedInUser.doAs(new PrivilegedExceptionAction<Void>() {
@ -259,7 +259,7 @@ public Void run() throws IOException {
}); });
} }
private MRClientProtocol getMRClientProtocol(DelegationToken token, private MRClientProtocol getMRClientProtocol(Token token,
final InetSocketAddress hsAddress, String user, final Configuration conf) { final InetSocketAddress hsAddress, String user, final Configuration conf) {
UserGroupInformation ugi = UserGroupInformation.createRemoteUser(user); UserGroupInformation ugi = UserGroupInformation.createRemoteUser(user);
ugi.addToken(ProtoUtils.convertFromProtoFormat(token, hsAddress)); ugi.addToken(ProtoUtils.convertFromProtoFormat(token, hsAddress));

View File

@ -221,6 +221,9 @@ Release 2.1.0-beta - UNRELEASED
YARN-660. Improve AMRMClient with matching requests (bikas) YARN-660. Improve AMRMClient with matching requests (bikas)
YARN-717. Put object creation factories for Token in the class itself and
remove useless derivations for specific tokens. (Jian He via vinodkv)
OPTIMIZATIONS OPTIMIZATIONS
YARN-512. Log aggregation root directory check is more expensive than it YARN-512. Log aggregation root directory check is more expensive than it

View File

@ -50,9 +50,9 @@
import org.apache.hadoop.yarn.api.records.ApplicationId; import org.apache.hadoop.yarn.api.records.ApplicationId;
import org.apache.hadoop.yarn.api.records.ApplicationReport; import org.apache.hadoop.yarn.api.records.ApplicationReport;
import org.apache.hadoop.yarn.api.records.ContainerLaunchContext; import org.apache.hadoop.yarn.api.records.ContainerLaunchContext;
import org.apache.hadoop.yarn.api.records.DelegationToken;
import org.apache.hadoop.yarn.api.records.NodeReport; import org.apache.hadoop.yarn.api.records.NodeReport;
import org.apache.hadoop.yarn.api.records.Resource; import org.apache.hadoop.yarn.api.records.Resource;
import org.apache.hadoop.yarn.api.records.Token;
import org.apache.hadoop.yarn.api.records.YarnClusterMetrics; import org.apache.hadoop.yarn.api.records.YarnClusterMetrics;
import org.apache.hadoop.yarn.exceptions.YarnRemoteException; import org.apache.hadoop.yarn.exceptions.YarnRemoteException;
@ -273,7 +273,7 @@ public GetQueueUserAclsInfoResponse getQueueUserAcls(
* containers to be able to talk to the service using those tokens. * containers to be able to talk to the service using those tokens.
* *
* <p> The <code>ResourceManager</code> responds with the delegation token * <p> The <code>ResourceManager</code> responds with the delegation token
* {@link DelegationToken} that can be used by the client to speak to this * {@link Token} that can be used by the client to speak to this
* service. * service.
* @param request request to get a delegation token for the client. * @param request request to get a delegation token for the client.
* @return delegation token that can be used to talk to this service * @return delegation token that can be used to talk to this service

View File

@ -20,7 +20,7 @@
import org.apache.hadoop.classification.InterfaceAudience.Public; import org.apache.hadoop.classification.InterfaceAudience.Public;
import org.apache.hadoop.classification.InterfaceStability.Evolving; import org.apache.hadoop.classification.InterfaceStability.Evolving;
import org.apache.hadoop.yarn.api.records.DelegationToken; import org.apache.hadoop.yarn.api.records.Token;
/** /**
* The request issued by the client to the {@code ResourceManager} to cancel a * The request issued by the client to the {@code ResourceManager} to cancel a
@ -29,6 +29,6 @@
@Public @Public
@Evolving @Evolving
public interface CancelDelegationTokenRequest { public interface CancelDelegationTokenRequest {
DelegationToken getDelegationToken(); Token getDelegationToken();
void setDelegationToken(DelegationToken dToken); void setDelegationToken(Token dToken);
} }

View File

@ -20,7 +20,8 @@
import org.apache.hadoop.classification.InterfaceAudience.Public; import org.apache.hadoop.classification.InterfaceAudience.Public;
import org.apache.hadoop.classification.InterfaceStability.Evolving; import org.apache.hadoop.classification.InterfaceStability.Evolving;
import org.apache.hadoop.yarn.api.records.DelegationToken; import org.apache.hadoop.security.token.delegation.AbstractDelegationTokenIdentifier;
import org.apache.hadoop.yarn.api.records.Token;
/** /**
@ -32,6 +33,12 @@
@Public @Public
@Evolving @Evolving
public interface GetDelegationTokenResponse { public interface GetDelegationTokenResponse {
DelegationToken getRMDelegationToken();
void setRMDelegationToken(DelegationToken rmDTToken); /**
* The Delegation tokens have a identifier which maps to
* {@link AbstractDelegationTokenIdentifier}.
*
*/
Token getRMDelegationToken();
void setRMDelegationToken(Token rmDTToken);
} }

View File

@ -20,7 +20,7 @@
import org.apache.hadoop.classification.InterfaceAudience.Public; import org.apache.hadoop.classification.InterfaceAudience.Public;
import org.apache.hadoop.classification.InterfaceStability.Evolving; import org.apache.hadoop.classification.InterfaceStability.Evolving;
import org.apache.hadoop.yarn.api.records.DelegationToken; import org.apache.hadoop.yarn.api.records.Token;
/** /**
* The request issued by the client to renew a delegation token from * The request issued by the client to renew a delegation token from
@ -29,6 +29,6 @@
@Public @Public
@Evolving @Evolving
public interface RenewDelegationTokenRequest { public interface RenewDelegationTokenRequest {
DelegationToken getDelegationToken(); Token getDelegationToken();
void setDelegationToken(DelegationToken dToken); void setDelegationToken(Token dToken);
} }

View File

@ -22,7 +22,7 @@
import org.apache.hadoop.classification.InterfaceStability.Stable; import org.apache.hadoop.classification.InterfaceStability.Stable;
import org.apache.hadoop.yarn.api.ContainerManager; import org.apache.hadoop.yarn.api.ContainerManager;
import org.apache.hadoop.yarn.api.records.ContainerLaunchContext; import org.apache.hadoop.yarn.api.records.ContainerLaunchContext;
import org.apache.hadoop.yarn.api.records.ContainerToken; import org.apache.hadoop.yarn.api.records.Token;
/** /**
* <p>The request sent by the <code>ApplicationMaster</code> to the * <p>The request sent by the <code>ApplicationMaster</code> to the
@ -62,9 +62,9 @@ public interface StartContainerRequest {
@Public @Public
@Stable @Stable
public ContainerToken getContainerToken(); public Token getContainerToken();
@Public @Public
@Stable @Stable
public void setContainerToken(ContainerToken container); public void setContainerToken(Token container);
} }

View File

@ -21,9 +21,9 @@
import org.apache.hadoop.security.proto.SecurityProtos.CancelDelegationTokenRequestProtoOrBuilder; import org.apache.hadoop.security.proto.SecurityProtos.CancelDelegationTokenRequestProtoOrBuilder;
import org.apache.hadoop.security.proto.SecurityProtos.TokenProto; import org.apache.hadoop.security.proto.SecurityProtos.TokenProto;
import org.apache.hadoop.yarn.api.protocolrecords.CancelDelegationTokenRequest; import org.apache.hadoop.yarn.api.protocolrecords.CancelDelegationTokenRequest;
import org.apache.hadoop.yarn.api.records.DelegationToken;
import org.apache.hadoop.yarn.api.records.ProtoBase; import org.apache.hadoop.yarn.api.records.ProtoBase;
import org.apache.hadoop.yarn.api.records.impl.pb.DelegationTokenPBImpl; import org.apache.hadoop.yarn.api.records.Token;
import org.apache.hadoop.yarn.api.records.impl.pb.TokenPBImpl;
public class CancelDelegationTokenRequestPBImpl extends public class CancelDelegationTokenRequestPBImpl extends
ProtoBase<CancelDelegationTokenRequestProto> implements ProtoBase<CancelDelegationTokenRequestProto> implements
@ -44,10 +44,10 @@ public CancelDelegationTokenRequestPBImpl(
viaProto = true; viaProto = true;
} }
DelegationToken token; Token token;
@Override @Override
public DelegationToken getDelegationToken() { public Token getDelegationToken() {
CancelDelegationTokenRequestProtoOrBuilder p = viaProto ? proto : builder; CancelDelegationTokenRequestProtoOrBuilder p = viaProto ? proto : builder;
if (this.token != null) { if (this.token != null) {
return this.token; return this.token;
@ -57,7 +57,7 @@ public DelegationToken getDelegationToken() {
} }
@Override @Override
public void setDelegationToken(DelegationToken token) { public void setDelegationToken(Token token) {
maybeInitBuilder(); maybeInitBuilder();
if (token == null) if (token == null)
builder.clearToken(); builder.clearToken();
@ -93,11 +93,11 @@ private void maybeInitBuilder() {
viaProto = false; viaProto = false;
} }
private DelegationTokenPBImpl convertFromProtoFormat(TokenProto p) { private TokenPBImpl convertFromProtoFormat(TokenProto p) {
return new DelegationTokenPBImpl(p); return new TokenPBImpl(p);
} }
private TokenProto convertToProtoFormat(DelegationToken t) { private TokenProto convertToProtoFormat(Token t) {
return ((DelegationTokenPBImpl) t).getProto(); return ((TokenPBImpl) t).getProto();
} }
} }

View File

@ -22,14 +22,14 @@
import org.apache.hadoop.security.proto.SecurityProtos.GetDelegationTokenResponseProtoOrBuilder; import org.apache.hadoop.security.proto.SecurityProtos.GetDelegationTokenResponseProtoOrBuilder;
import org.apache.hadoop.security.proto.SecurityProtos.TokenProto; import org.apache.hadoop.security.proto.SecurityProtos.TokenProto;
import org.apache.hadoop.yarn.api.protocolrecords.GetDelegationTokenResponse; import org.apache.hadoop.yarn.api.protocolrecords.GetDelegationTokenResponse;
import org.apache.hadoop.yarn.api.records.DelegationToken;
import org.apache.hadoop.yarn.api.records.ProtoBase; import org.apache.hadoop.yarn.api.records.ProtoBase;
import org.apache.hadoop.yarn.api.records.impl.pb.DelegationTokenPBImpl; import org.apache.hadoop.yarn.api.records.Token;
import org.apache.hadoop.yarn.api.records.impl.pb.TokenPBImpl;
public class GetDelegationTokenResponsePBImpl extends public class GetDelegationTokenResponsePBImpl extends
ProtoBase<GetDelegationTokenResponseProto> implements GetDelegationTokenResponse { ProtoBase<GetDelegationTokenResponseProto> implements GetDelegationTokenResponse {
DelegationToken appToken; Token appToken;
GetDelegationTokenResponseProto proto = GetDelegationTokenResponseProto proto =
@ -48,7 +48,7 @@ public GetDelegationTokenResponsePBImpl (
} }
@Override @Override
public DelegationToken getRMDelegationToken() { public Token getRMDelegationToken() {
GetDelegationTokenResponseProtoOrBuilder p = viaProto ? proto : builder; GetDelegationTokenResponseProtoOrBuilder p = viaProto ? proto : builder;
if (this.appToken != null) { if (this.appToken != null) {
return this.appToken; return this.appToken;
@ -61,7 +61,7 @@ public DelegationToken getRMDelegationToken() {
} }
@Override @Override
public void setRMDelegationToken(DelegationToken appToken) { public void setRMDelegationToken(Token appToken) {
maybeInitBuilder(); maybeInitBuilder();
if (appToken == null) if (appToken == null)
builder.clearToken(); builder.clearToken();
@ -99,11 +99,11 @@ private void maybeInitBuilder() {
} }
private DelegationTokenPBImpl convertFromProtoFormat(TokenProto p) { private TokenPBImpl convertFromProtoFormat(TokenProto p) {
return new DelegationTokenPBImpl(p); return new TokenPBImpl(p);
} }
private TokenProto convertToProtoFormat(DelegationToken t) { private TokenProto convertToProtoFormat(Token t) {
return ((DelegationTokenPBImpl)t).getProto(); return ((TokenPBImpl)t).getProto();
} }
} }

View File

@ -21,9 +21,9 @@
import org.apache.hadoop.security.proto.SecurityProtos.RenewDelegationTokenRequestProtoOrBuilder; import org.apache.hadoop.security.proto.SecurityProtos.RenewDelegationTokenRequestProtoOrBuilder;
import org.apache.hadoop.security.proto.SecurityProtos.TokenProto; import org.apache.hadoop.security.proto.SecurityProtos.TokenProto;
import org.apache.hadoop.yarn.api.protocolrecords.RenewDelegationTokenRequest; import org.apache.hadoop.yarn.api.protocolrecords.RenewDelegationTokenRequest;
import org.apache.hadoop.yarn.api.records.DelegationToken;
import org.apache.hadoop.yarn.api.records.ProtoBase; import org.apache.hadoop.yarn.api.records.ProtoBase;
import org.apache.hadoop.yarn.api.records.impl.pb.DelegationTokenPBImpl; import org.apache.hadoop.yarn.api.records.Token;
import org.apache.hadoop.yarn.api.records.impl.pb.TokenPBImpl;
public class RenewDelegationTokenRequestPBImpl extends public class RenewDelegationTokenRequestPBImpl extends
ProtoBase<RenewDelegationTokenRequestProto> implements ProtoBase<RenewDelegationTokenRequestProto> implements
@ -43,10 +43,10 @@ public RenewDelegationTokenRequestPBImpl (
this.viaProto = true; this.viaProto = true;
} }
DelegationToken token; Token token;
@Override @Override
public DelegationToken getDelegationToken() { public Token getDelegationToken() {
RenewDelegationTokenRequestProtoOrBuilder p = viaProto ? proto : builder; RenewDelegationTokenRequestProtoOrBuilder p = viaProto ? proto : builder;
if (this.token != null) { if (this.token != null) {
return this.token; return this.token;
@ -56,7 +56,7 @@ public DelegationToken getDelegationToken() {
} }
@Override @Override
public void setDelegationToken(DelegationToken token) { public void setDelegationToken(Token token) {
maybeInitBuilder(); maybeInitBuilder();
if (token == null) if (token == null)
builder.clearToken(); builder.clearToken();
@ -94,11 +94,11 @@ private void maybeInitBuilder() {
} }
private DelegationTokenPBImpl convertFromProtoFormat(TokenProto p) { private TokenPBImpl convertFromProtoFormat(TokenProto p) {
return new DelegationTokenPBImpl(p); return new TokenPBImpl(p);
} }
private TokenProto convertToProtoFormat(DelegationToken t) { private TokenProto convertToProtoFormat(Token t) {
return ((DelegationTokenPBImpl)t).getProto(); return ((TokenPBImpl)t).getProto();
} }
} }

View File

@ -22,10 +22,10 @@
import org.apache.hadoop.security.proto.SecurityProtos.TokenProto; import org.apache.hadoop.security.proto.SecurityProtos.TokenProto;
import org.apache.hadoop.yarn.api.protocolrecords.StartContainerRequest; import org.apache.hadoop.yarn.api.protocolrecords.StartContainerRequest;
import org.apache.hadoop.yarn.api.records.ContainerLaunchContext; import org.apache.hadoop.yarn.api.records.ContainerLaunchContext;
import org.apache.hadoop.yarn.api.records.ContainerToken;
import org.apache.hadoop.yarn.api.records.ProtoBase; import org.apache.hadoop.yarn.api.records.ProtoBase;
import org.apache.hadoop.yarn.api.records.Token;
import org.apache.hadoop.yarn.api.records.impl.pb.ContainerLaunchContextPBImpl; import org.apache.hadoop.yarn.api.records.impl.pb.ContainerLaunchContextPBImpl;
import org.apache.hadoop.yarn.api.records.impl.pb.ContainerTokenPBImpl; import org.apache.hadoop.yarn.api.records.impl.pb.TokenPBImpl;
import org.apache.hadoop.yarn.proto.YarnProtos.ContainerLaunchContextProto; import org.apache.hadoop.yarn.proto.YarnProtos.ContainerLaunchContextProto;
import org.apache.hadoop.yarn.proto.YarnServiceProtos.StartContainerRequestProto; import org.apache.hadoop.yarn.proto.YarnServiceProtos.StartContainerRequestProto;
import org.apache.hadoop.yarn.proto.YarnServiceProtos.StartContainerRequestProtoOrBuilder; import org.apache.hadoop.yarn.proto.YarnServiceProtos.StartContainerRequestProtoOrBuilder;
@ -39,7 +39,7 @@ public class StartContainerRequestPBImpl extends ProtoBase<StartContainerRequest
private ContainerLaunchContext containerLaunchContext = null; private ContainerLaunchContext containerLaunchContext = null;
private ContainerToken containerToken = null; private Token containerToken = null;
public StartContainerRequestPBImpl() { public StartContainerRequestPBImpl() {
builder = StartContainerRequestProto.newBuilder(); builder = StartContainerRequestProto.newBuilder();
@ -104,7 +104,7 @@ public void setContainerLaunchContext(ContainerLaunchContext containerLaunchCont
} }
@Override @Override
public ContainerToken getContainerToken() { public Token getContainerToken() {
StartContainerRequestProtoOrBuilder p = viaProto ? proto : builder; StartContainerRequestProtoOrBuilder p = viaProto ? proto : builder;
if (this.containerToken != null) { if (this.containerToken != null) {
return this.containerToken; return this.containerToken;
@ -117,7 +117,7 @@ public ContainerToken getContainerToken() {
} }
@Override @Override
public void setContainerToken(ContainerToken containerToken) { public void setContainerToken(Token containerToken) {
maybeInitBuilder(); maybeInitBuilder();
if(containerToken == null) { if(containerToken == null) {
builder.clearContainerToken(); builder.clearContainerToken();
@ -135,11 +135,11 @@ private ContainerLaunchContextProto convertToProtoFormat(ContainerLaunchContext
private ContainerTokenPBImpl convertFromProtoFormat(TokenProto containerProto) { private TokenPBImpl convertFromProtoFormat(TokenProto containerProto) {
return new ContainerTokenPBImpl(containerProto); return new TokenPBImpl(containerProto);
} }
private TokenProto convertToProtoFormat(ContainerToken container) { private TokenProto convertToProtoFormat(Token container) {
return ((ContainerTokenPBImpl)container).getProto(); return ((TokenPBImpl)container).getProto();
} }
} }

View File

@ -51,9 +51,10 @@
public abstract class ApplicationReport { public abstract class ApplicationReport {
@Private @Private
@Stable
public static ApplicationReport newInstance(ApplicationId applicationId, public static ApplicationReport newInstance(ApplicationId applicationId,
ApplicationAttemptId applicationAttemptId, String user, String queue, ApplicationAttemptId applicationAttemptId, String user, String queue,
String name, String host, int rpcPort, ClientToken clientToken, String name, String host, int rpcPort, Token clientToken,
YarnApplicationState state, String diagnostics, String url, YarnApplicationState state, String diagnostics, String url,
long startTime, long finishTime, FinalApplicationStatus finalStatus, long startTime, long finishTime, FinalApplicationStatus finalStatus,
ApplicationResourceUsageReport appResources, String origTrackingUrl, ApplicationResourceUsageReport appResources, String origTrackingUrl,
@ -170,16 +171,26 @@ public static ApplicationReport newInstance(ApplicationId applicationId,
/** /**
* Get the <em>client token</em> for communicating with the * Get the <em>client token</em> for communicating with the
* <code>ApplicationMaster</code>. * <code>ApplicationMaster</code>.
* <p>
* <code>ClientToken</code> is the security token used by the AMs to verify
* authenticity of any <code>client</code>.
* </p>
*
* <p>
* The <code>ResourceManager</code>, provides a secure token (via
* {@link ApplicationReport#getClientToken()}) which is verified by the
* ApplicationMaster when the client directly talks to an AM.
* </p>
* @return <em>client token</em> for communicating with the * @return <em>client token</em> for communicating with the
* <code>ApplicationMaster</code> * <code>ApplicationMaster</code>
*/ */
@Public @Public
@Stable @Stable
public abstract ClientToken getClientToken(); public abstract Token getClientToken();
@Private @Private
@Unstable @Unstable
public abstract void setClientToken(ClientToken clientToken); public abstract void setClientToken(Token clientToken);
/** /**
* Get the <code>YarnApplicationState</code> of the application. * Get the <code>YarnApplicationState</code> of the application.

View File

@ -1,39 +0,0 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.hadoop.yarn.api.records;
import org.apache.hadoop.classification.InterfaceAudience.Public;
import org.apache.hadoop.classification.InterfaceStability.Stable;
/**
* <p>
* <code>ClientToken</code> is the security token used by the AMs to verify
* authenticity of any <code>client</code>.
* </p>
*
* <p>
* The <code>ResourceManager</code>, provides a secure token (via
* {@link ApplicationReport#getClientToken()}) which is verified by the
* ApplicationMaster when the client directly talks to an AM.
* </p>
*
*/
@Public
@Stable
public interface ClientToken extends Token {}

View File

@ -46,7 +46,7 @@
* <li>{@link Priority} at which the container was allocated.</li> * <li>{@link Priority} at which the container was allocated.</li>
* <li>{@link ContainerState} of the container.</li> * <li>{@link ContainerState} of the container.</li>
* <li> * <li>
* {@link ContainerToken} of the container, used to securely verify * Container Token {@link Token} of the container, used to securely verify
* authenticity of the allocation. * authenticity of the allocation.
* </li> * </li>
* <li>{@link ContainerStatus} of the container.</li> * <li>{@link ContainerStatus} of the container.</li>
@ -69,7 +69,7 @@ public abstract class Container implements Comparable<Container> {
@Private @Private
public static Container newInstance(ContainerId containerId, NodeId nodeId, public static Container newInstance(ContainerId containerId, NodeId nodeId,
String nodeHttpAddress, Resource resource, Priority priority, String nodeHttpAddress, Resource resource, Priority priority,
ContainerToken containerToken) { Token containerToken) {
Container container = Records.newRecord(Container.class); Container container = Records.newRecord(Container.class);
container.setId(containerId); container.setId(containerId);
container.setNodeId(nodeId); container.setNodeId(nodeId);
@ -142,13 +142,27 @@ public static Container newInstance(ContainerId containerId, NodeId nodeId,
/** /**
* Get the <code>ContainerToken</code> for the container. * Get the <code>ContainerToken</code> for the container.
* <p><code>ContainerToken</code> is the security token used by the framework
* to verify authenticity of any <code>Container</code>.</p>
*
* <p>The <code>ResourceManager</code>, on container allocation provides a
* secure token which is verified by the <code>NodeManager</code> on
* container launch.</p>
*
* <p>Applications do not need to care about <code>ContainerToken</code>, they
* are transparently handled by the framework - the allocated
* <code>Container</code> includes the <code>ContainerToken</code>.</p>
*
* @see AMRMProtocol#allocate(org.apache.hadoop.yarn.api.protocolrecords.AllocateRequest)
* @see ContainerManager#startContainer(org.apache.hadoop.yarn.api.protocolrecords.StartContainerRequest)
*
* @return <code>ContainerToken</code> for the container * @return <code>ContainerToken</code> for the container
*/ */
@Public @Public
@Stable @Stable
public abstract ContainerToken getContainerToken(); public abstract Token getContainerToken();
@Private @Private
@Unstable @Unstable
public abstract void setContainerToken(ContainerToken containerToken); public abstract void setContainerToken(Token containerToken);
} }

View File

@ -1,43 +0,0 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.hadoop.yarn.api.records;
import org.apache.hadoop.classification.InterfaceAudience.Public;
import org.apache.hadoop.classification.InterfaceStability.Stable;
import org.apache.hadoop.yarn.api.AMRMProtocol;
import org.apache.hadoop.yarn.api.ContainerManager;
/**
* <p><code>ContainerToken</code> is the security token used by the framework
* to verify authenticity of any <code>Container</code>.</p>
*
* <p>The <code>ResourceManager</code>, on container allocation provides a
* secure token which is verified by the <code>NodeManager</code> on
* container launch.</p>
*
* <p>Applications do not need to care about <code>ContainerToken</code>, they
* are transparently handled by the framework - the allocated
* <code>Container</code> includes the <code>ContainerToken</code>.</p>
*
* @see AMRMProtocol#allocate(org.apache.hadoop.yarn.api.protocolrecords.AllocateRequest)
* @see ContainerManager#startContainer(org.apache.hadoop.yarn.api.protocolrecords.StartContainerRequest)
*/
@Public
@Stable
public interface ContainerToken extends Token {}

View File

@ -1,32 +0,0 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.hadoop.yarn.api.records;
import org.apache.hadoop.classification.InterfaceAudience.Public;
import org.apache.hadoop.classification.InterfaceStability.Evolving;
import org.apache.hadoop.security.token.delegation.AbstractDelegationTokenIdentifier;
/**
* The Delegation tokens have a identifier which maps to
* {@link AbstractDelegationTokenIdentifier}.
*
*/
@Public
@Evolving
public interface DelegationToken extends Token {}

View File

@ -23,6 +23,7 @@
import org.apache.hadoop.classification.InterfaceAudience.Private; import org.apache.hadoop.classification.InterfaceAudience.Private;
import org.apache.hadoop.classification.InterfaceAudience.Public; import org.apache.hadoop.classification.InterfaceAudience.Public;
import org.apache.hadoop.classification.InterfaceStability.Stable; import org.apache.hadoop.classification.InterfaceStability.Stable;
import org.apache.hadoop.yarn.util.Records;
/** /**
* <p><code>Token</code> is the security entity used by the framework * <p><code>Token</code> is the security entity used by the framework
@ -30,18 +31,30 @@
*/ */
@Public @Public
@Stable @Stable
public interface Token { public abstract class Token {
@Private
public static Token newInstance(byte[] identifier, String kind, byte[] password,
String service) {
Token token = Records.newRecord(Token.class);
token.setIdentifier(ByteBuffer.wrap(identifier));
token.setKind(kind);
token.setPassword(ByteBuffer.wrap(password));
token.setService(service);
return token;
}
/** /**
* Get the token identifier. * Get the token identifier.
* @return token identifier * @return token identifier
*/ */
@Public @Public
@Stable @Stable
ByteBuffer getIdentifier(); public abstract ByteBuffer getIdentifier();
@Private @Private
@Stable @Stable
void setIdentifier(ByteBuffer identifier); public abstract void setIdentifier(ByteBuffer identifier);
/** /**
* Get the token password * Get the token password
@ -49,11 +62,11 @@ public interface Token {
*/ */
@Public @Public
@Stable @Stable
ByteBuffer getPassword(); public abstract ByteBuffer getPassword();
@Private @Private
@Stable @Stable
void setPassword(ByteBuffer password); public abstract void setPassword(ByteBuffer password);
/** /**
* Get the token kind. * Get the token kind.
@ -61,11 +74,11 @@ public interface Token {
*/ */
@Public @Public
@Stable @Stable
String getKind(); public abstract String getKind();
@Private @Private
@Stable @Stable
void setKind(String kind); public abstract void setKind(String kind);
/** /**
* Get the service to which the token is allocated. * Get the service to which the token is allocated.
@ -73,10 +86,10 @@ public interface Token {
*/ */
@Public @Public
@Stable @Stable
String getService(); public abstract String getService();
@Private @Private
@Stable @Stable
void setService(String service); public abstract void setService(String service);
} }

View File

@ -23,8 +23,8 @@
import org.apache.hadoop.yarn.api.records.ApplicationId; import org.apache.hadoop.yarn.api.records.ApplicationId;
import org.apache.hadoop.yarn.api.records.ApplicationReport; import org.apache.hadoop.yarn.api.records.ApplicationReport;
import org.apache.hadoop.yarn.api.records.ApplicationResourceUsageReport; import org.apache.hadoop.yarn.api.records.ApplicationResourceUsageReport;
import org.apache.hadoop.yarn.api.records.ClientToken;
import org.apache.hadoop.yarn.api.records.FinalApplicationStatus; import org.apache.hadoop.yarn.api.records.FinalApplicationStatus;
import org.apache.hadoop.yarn.api.records.Token;
import org.apache.hadoop.yarn.api.records.YarnApplicationState; import org.apache.hadoop.yarn.api.records.YarnApplicationState;
import org.apache.hadoop.yarn.proto.YarnProtos.ApplicationAttemptIdProto; import org.apache.hadoop.yarn.proto.YarnProtos.ApplicationAttemptIdProto;
import org.apache.hadoop.yarn.proto.YarnProtos.ApplicationIdProto; import org.apache.hadoop.yarn.proto.YarnProtos.ApplicationIdProto;
@ -42,7 +42,7 @@ public class ApplicationReportPBImpl extends ApplicationReport {
private ApplicationId applicationId; private ApplicationId applicationId;
private ApplicationAttemptId currentApplicationAttemptId; private ApplicationAttemptId currentApplicationAttemptId;
private ClientToken clientToken = null; private Token clientToken = null;
public ApplicationReportPBImpl() { public ApplicationReportPBImpl() {
builder = ApplicationReportProto.newBuilder(); builder = ApplicationReportProto.newBuilder();
@ -160,7 +160,7 @@ public int getRpcPort() {
} }
@Override @Override
public ClientToken getClientToken() { public Token getClientToken() {
ApplicationReportProtoOrBuilder p = viaProto ? proto : builder; ApplicationReportProtoOrBuilder p = viaProto ? proto : builder;
if (this.clientToken != null) { if (this.clientToken != null) {
return this.clientToken; return this.clientToken;
@ -309,7 +309,7 @@ public void setRpcPort(int rpcPort) {
} }
@Override @Override
public void setClientToken(ClientToken clientToken) { public void setClientToken(Token clientToken) {
maybeInitBuilder(); maybeInitBuilder();
if (clientToken == null) if (clientToken == null)
builder.clearClientToken(); builder.clearClientToken();
@ -413,7 +413,7 @@ private void mergeLocalToBuilder() {
builder.setCurrentApplicationAttemptId(convertToProtoFormat(this.currentApplicationAttemptId)); builder.setCurrentApplicationAttemptId(convertToProtoFormat(this.currentApplicationAttemptId));
} }
if (this.clientToken != null if (this.clientToken != null
&& !((ClientTokenPBImpl) this.clientToken).getProto().equals( && !((TokenPBImpl) this.clientToken).getProto().equals(
builder.getClientToken())) { builder.getClientToken())) {
builder.setClientToken(convertToProtoFormat(this.clientToken)); builder.setClientToken(convertToProtoFormat(this.clientToken));
} }
@ -476,11 +476,11 @@ private FinalApplicationStatusProto convertToProtoFormat(FinalApplicationStatus
return ProtoUtils.convertToProtoFormat(s); return ProtoUtils.convertToProtoFormat(s);
} }
private ClientTokenPBImpl convertFromProtoFormat(TokenProto p) { private TokenPBImpl convertFromProtoFormat(TokenProto p) {
return new ClientTokenPBImpl(p); return new TokenPBImpl(p);
} }
private TokenProto convertToProtoFormat(ClientToken t) { private TokenProto convertToProtoFormat(Token t) {
return ((ClientTokenPBImpl)t).getProto(); return ((TokenPBImpl)t).getProto();
} }
} }

View File

@ -1,33 +0,0 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.hadoop.yarn.api.records.impl.pb;
import org.apache.hadoop.security.proto.SecurityProtos.TokenProto;
import org.apache.hadoop.yarn.api.records.ClientToken;
public class ClientTokenPBImpl extends TokenPBImpl implements ClientToken {
public ClientTokenPBImpl() {
super();
}
public ClientTokenPBImpl(TokenProto p) {
super(p);
}
}

View File

@ -21,10 +21,10 @@
import org.apache.hadoop.security.proto.SecurityProtos.TokenProto; import org.apache.hadoop.security.proto.SecurityProtos.TokenProto;
import org.apache.hadoop.yarn.api.records.Container; import org.apache.hadoop.yarn.api.records.Container;
import org.apache.hadoop.yarn.api.records.ContainerId; import org.apache.hadoop.yarn.api.records.ContainerId;
import org.apache.hadoop.yarn.api.records.ContainerToken;
import org.apache.hadoop.yarn.api.records.NodeId; import org.apache.hadoop.yarn.api.records.NodeId;
import org.apache.hadoop.yarn.api.records.Priority; import org.apache.hadoop.yarn.api.records.Priority;
import org.apache.hadoop.yarn.api.records.Resource; import org.apache.hadoop.yarn.api.records.Resource;
import org.apache.hadoop.yarn.api.records.Token;
import org.apache.hadoop.yarn.proto.YarnProtos.ContainerIdProto; import org.apache.hadoop.yarn.proto.YarnProtos.ContainerIdProto;
import org.apache.hadoop.yarn.proto.YarnProtos.ContainerProto; import org.apache.hadoop.yarn.proto.YarnProtos.ContainerProto;
import org.apache.hadoop.yarn.proto.YarnProtos.ContainerProtoOrBuilder; import org.apache.hadoop.yarn.proto.YarnProtos.ContainerProtoOrBuilder;
@ -42,7 +42,7 @@ public class ContainerPBImpl extends Container {
private NodeId nodeId = null; private NodeId nodeId = null;
private Resource resource = null; private Resource resource = null;
private Priority priority = null; private Priority priority = null;
private ContainerToken containerToken = null; private Token containerToken = null;
public ContainerPBImpl() { public ContainerPBImpl() {
builder = ContainerProto.newBuilder(); builder = ContainerProto.newBuilder();
@ -98,7 +98,7 @@ private void mergeLocalToBuilder() {
builder.setPriority(convertToProtoFormat(this.priority)); builder.setPriority(convertToProtoFormat(this.priority));
} }
if (this.containerToken != null if (this.containerToken != null
&& !((ContainerTokenPBImpl) this.containerToken).getProto().equals( && !((TokenPBImpl) this.containerToken).getProto().equals(
builder.getContainerToken())) { builder.getContainerToken())) {
builder.setContainerToken(convertToProtoFormat(this.containerToken)); builder.setContainerToken(convertToProtoFormat(this.containerToken));
} }
@ -224,7 +224,7 @@ public void setPriority(Priority priority) {
} }
@Override @Override
public ContainerToken getContainerToken() { public Token getContainerToken() {
ContainerProtoOrBuilder p = viaProto ? proto : builder; ContainerProtoOrBuilder p = viaProto ? proto : builder;
if (this.containerToken != null) { if (this.containerToken != null) {
return this.containerToken; return this.containerToken;
@ -237,7 +237,7 @@ public ContainerToken getContainerToken() {
} }
@Override @Override
public void setContainerToken(ContainerToken containerToken) { public void setContainerToken(Token containerToken) {
maybeInitBuilder(); maybeInitBuilder();
if (containerToken == null) if (containerToken == null)
builder.clearContainerToken(); builder.clearContainerToken();
@ -276,12 +276,12 @@ private PriorityProto convertToProtoFormat(Priority p) {
return ((PriorityPBImpl)p).getProto(); return ((PriorityPBImpl)p).getProto();
} }
private ContainerTokenPBImpl convertFromProtoFormat(TokenProto p) { private TokenPBImpl convertFromProtoFormat(TokenProto p) {
return new ContainerTokenPBImpl(p); return new TokenPBImpl(p);
} }
private TokenProto convertToProtoFormat(ContainerToken t) { private TokenProto convertToProtoFormat(Token t) {
return ((ContainerTokenPBImpl)t).getProto(); return ((TokenPBImpl)t).getProto();
} }
public String toString() { public String toString() {

View File

@ -1,33 +0,0 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.hadoop.yarn.api.records.impl.pb;
import org.apache.hadoop.security.proto.SecurityProtos.TokenProto;
import org.apache.hadoop.yarn.api.records.ContainerToken;
public class ContainerTokenPBImpl extends TokenPBImpl implements ContainerToken {
public ContainerTokenPBImpl() {
super();
}
public ContainerTokenPBImpl(TokenProto p) {
super(p);
}
}

View File

@ -1,34 +0,0 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.hadoop.yarn.api.records.impl.pb;
import org.apache.hadoop.security.proto.SecurityProtos.TokenProto;
import org.apache.hadoop.yarn.api.records.DelegationToken;
public class DelegationTokenPBImpl extends TokenPBImpl implements
DelegationToken {
public DelegationTokenPBImpl() {
super();
}
public DelegationTokenPBImpl(TokenProto p) {
super(p);
}
}

View File

@ -22,11 +22,12 @@
import org.apache.hadoop.security.proto.SecurityProtos.TokenProto; import org.apache.hadoop.security.proto.SecurityProtos.TokenProto;
import org.apache.hadoop.security.proto.SecurityProtos.TokenProtoOrBuilder; import org.apache.hadoop.security.proto.SecurityProtos.TokenProtoOrBuilder;
import org.apache.hadoop.yarn.api.records.ProtoBase;
import org.apache.hadoop.yarn.api.records.Token; import org.apache.hadoop.yarn.api.records.Token;
import org.apache.hadoop.yarn.util.ProtoUtils;
public class TokenPBImpl extends ProtoBase<TokenProto> implements import com.google.protobuf.ByteString;
Token {
public class TokenPBImpl extends Token {
private TokenProto proto = TokenProto.getDefaultInstance(); private TokenProto proto = TokenProto.getDefaultInstance();
private TokenProto.Builder builder = null; private TokenProto.Builder builder = null;
private boolean viaProto = false; private boolean viaProto = false;
@ -50,6 +51,29 @@ public synchronized TokenProto getProto() {
return proto; return proto;
} }
@Override
public int hashCode() {
return getProto().hashCode();
}
@Override
public boolean equals(Object other) {
if (other == null)
return false;
if (other.getClass().isAssignableFrom(this.getClass())) {
return this.getProto().equals(this.getClass().cast(other).getProto());
}
return false;
}
protected final ByteBuffer convertFromProtoFormat(ByteString byteString) {
return ProtoUtils.convertFromProtoFormat(byteString);
}
protected final ByteString convertToProtoFormat(ByteBuffer byteBuffer) {
return ProtoUtils.convertToProtoFormat(byteBuffer);
}
private synchronized void mergeLocalToBuilder() { private synchronized void mergeLocalToBuilder() {
if (this.identifier != null) { if (this.identifier != null) {
builder.setIdentifier(convertToProtoFormat(this.identifier)); builder.setIdentifier(convertToProtoFormat(this.identifier));

View File

@ -28,8 +28,8 @@
import org.apache.hadoop.yarn.api.records.ContainerId; import org.apache.hadoop.yarn.api.records.ContainerId;
import org.apache.hadoop.yarn.api.records.ContainerLaunchContext; import org.apache.hadoop.yarn.api.records.ContainerLaunchContext;
import org.apache.hadoop.yarn.api.records.ContainerStatus; import org.apache.hadoop.yarn.api.records.ContainerStatus;
import org.apache.hadoop.yarn.api.records.ContainerToken;
import org.apache.hadoop.yarn.api.records.NodeId; import org.apache.hadoop.yarn.api.records.NodeId;
import org.apache.hadoop.yarn.api.records.Token;
import org.apache.hadoop.yarn.exceptions.YarnRemoteException; import org.apache.hadoop.yarn.exceptions.YarnRemoteException;
import org.apache.hadoop.yarn.service.Service; import org.apache.hadoop.yarn.service.Service;
@ -69,7 +69,7 @@ Map<String, ByteBuffer> startContainer(Container container,
* @throws IOException * @throws IOException
*/ */
void stopContainer(ContainerId containerId, NodeId nodeId, void stopContainer(ContainerId containerId, NodeId nodeId,
ContainerToken containerToken) throws YarnRemoteException, IOException; Token containerToken) throws YarnRemoteException, IOException;
/** /**
* <p>Query the status of a container.</p> * <p>Query the status of a container.</p>
@ -83,7 +83,7 @@ void stopContainer(ContainerId containerId, NodeId nodeId,
* @throws IOException * @throws IOException
*/ */
ContainerStatus getContainerStatus(ContainerId containerId, NodeId nodeId, ContainerStatus getContainerStatus(ContainerId containerId, NodeId nodeId,
ContainerToken containerToken) throws YarnRemoteException, IOException; Token containerToken) throws YarnRemoteException, IOException;
/** /**
* <p>Set whether the containers that are started by this client, and are * <p>Set whether the containers that are started by this client, and are

View File

@ -46,7 +46,7 @@
import org.apache.hadoop.yarn.api.records.ContainerId; import org.apache.hadoop.yarn.api.records.ContainerId;
import org.apache.hadoop.yarn.api.records.ContainerLaunchContext; import org.apache.hadoop.yarn.api.records.ContainerLaunchContext;
import org.apache.hadoop.yarn.api.records.ContainerStatus; import org.apache.hadoop.yarn.api.records.ContainerStatus;
import org.apache.hadoop.yarn.api.records.ContainerToken; import org.apache.hadoop.yarn.api.records.Token;
import org.apache.hadoop.yarn.api.records.NodeId; import org.apache.hadoop.yarn.api.records.NodeId;
import org.apache.hadoop.yarn.conf.YarnConfiguration; import org.apache.hadoop.yarn.conf.YarnConfiguration;
import org.apache.hadoop.yarn.event.AbstractEvent; import org.apache.hadoop.yarn.event.AbstractEvent;
@ -288,7 +288,7 @@ public void startContainer(
} }
public void stopContainer(ContainerId containerId, NodeId nodeId, public void stopContainer(ContainerId containerId, NodeId nodeId,
ContainerToken containerToken) { Token containerToken) {
if (containers.get(containerId) == null) { if (containers.get(containerId) == null) {
callbackHandler.onStopContainerError(containerId, callbackHandler.onStopContainerError(containerId,
RPCUtil.getRemoteException("Container " + containerId + RPCUtil.getRemoteException("Container " + containerId +
@ -305,7 +305,7 @@ public void stopContainer(ContainerId containerId, NodeId nodeId,
} }
public void getContainerStatus(ContainerId containerId, NodeId nodeId, public void getContainerStatus(ContainerId containerId, NodeId nodeId,
ContainerToken containerToken) { Token containerToken) {
try { try {
events.put(new ContainerEvent(containerId, nodeId, containerToken, events.put(new ContainerEvent(containerId, nodeId, containerToken,
ContainerEventType.QUERY_CONTAINER)); ContainerEventType.QUERY_CONTAINER));
@ -343,10 +343,10 @@ protected static class ContainerEvent
extends AbstractEvent<ContainerEventType>{ extends AbstractEvent<ContainerEventType>{
private ContainerId containerId; private ContainerId containerId;
private NodeId nodeId; private NodeId nodeId;
private ContainerToken containerToken; private Token containerToken;
public ContainerEvent(ContainerId containerId, NodeId nodeId, public ContainerEvent(ContainerId containerId, NodeId nodeId,
ContainerToken containerToken, ContainerEventType type) { Token containerToken, ContainerEventType type) {
super(type); super(type);
this.containerId = containerId; this.containerId = containerId;
this.nodeId = nodeId; this.nodeId = nodeId;
@ -361,7 +361,7 @@ public NodeId getNodeId() {
return nodeId; return nodeId;
} }
public ContainerToken getContainerToken() { public Token getContainerToken() {
return containerToken; return containerToken;
} }
} }

View File

@ -32,7 +32,6 @@
import org.apache.hadoop.ipc.RPC; import org.apache.hadoop.ipc.RPC;
import org.apache.hadoop.net.NetUtils; import org.apache.hadoop.net.NetUtils;
import org.apache.hadoop.security.UserGroupInformation; import org.apache.hadoop.security.UserGroupInformation;
import org.apache.hadoop.security.token.Token;
import org.apache.hadoop.yarn.api.ContainerManager; import org.apache.hadoop.yarn.api.ContainerManager;
import org.apache.hadoop.yarn.api.protocolrecords.GetContainerStatusRequest; import org.apache.hadoop.yarn.api.protocolrecords.GetContainerStatusRequest;
import org.apache.hadoop.yarn.api.protocolrecords.GetContainerStatusResponse; import org.apache.hadoop.yarn.api.protocolrecords.GetContainerStatusResponse;
@ -43,7 +42,7 @@
import org.apache.hadoop.yarn.api.records.ContainerId; import org.apache.hadoop.yarn.api.records.ContainerId;
import org.apache.hadoop.yarn.api.records.ContainerLaunchContext; import org.apache.hadoop.yarn.api.records.ContainerLaunchContext;
import org.apache.hadoop.yarn.api.records.ContainerStatus; import org.apache.hadoop.yarn.api.records.ContainerStatus;
import org.apache.hadoop.yarn.api.records.ContainerToken; import org.apache.hadoop.yarn.api.records.Token;
import org.apache.hadoop.yarn.api.records.NodeId; import org.apache.hadoop.yarn.api.records.NodeId;
import org.apache.hadoop.yarn.exceptions.YarnRemoteException; import org.apache.hadoop.yarn.exceptions.YarnRemoteException;
import org.apache.hadoop.yarn.ipc.RPCUtil; import org.apache.hadoop.yarn.ipc.RPCUtil;
@ -122,11 +121,11 @@ public void cleanupRunningContainersOnStop(boolean enabled) {
protected static class StartedContainer { protected static class StartedContainer {
private ContainerId containerId; private ContainerId containerId;
private NodeId nodeId; private NodeId nodeId;
private ContainerToken containerToken; private Token containerToken;
private boolean stopped; private boolean stopped;
public StartedContainer(ContainerId containerId, NodeId nodeId, public StartedContainer(ContainerId containerId, NodeId nodeId,
ContainerToken containerToken) { Token containerToken) {
this.containerId = containerId; this.containerId = containerId;
this.nodeId = nodeId; this.nodeId = nodeId;
this.containerToken = containerToken; this.containerToken = containerToken;
@ -141,7 +140,7 @@ public NodeId getNodeId() {
return nodeId; return nodeId;
} }
public ContainerToken getContainerToken() { public Token getContainerToken() {
return containerToken; return containerToken;
} }
} }
@ -149,11 +148,11 @@ public ContainerToken getContainerToken() {
protected static final class NMCommunicator extends AbstractService { protected static final class NMCommunicator extends AbstractService {
private ContainerId containerId; private ContainerId containerId;
private NodeId nodeId; private NodeId nodeId;
private ContainerToken containerToken; private Token containerToken;
private ContainerManager containerManager; private ContainerManager containerManager;
public NMCommunicator(ContainerId containerId, NodeId nodeId, public NMCommunicator(ContainerId containerId, NodeId nodeId,
ContainerToken containerToken) { Token containerToken) {
super(NMCommunicator.class.getName()); super(NMCommunicator.class.getName());
this.containerId = containerId; this.containerId = containerId;
this.nodeId = nodeId; this.nodeId = nodeId;
@ -171,7 +170,7 @@ public synchronized void start() {
UserGroupInformation currentUser = UserGroupInformation currentUser =
UserGroupInformation.createRemoteUser(containerId.toString()); UserGroupInformation.createRemoteUser(containerId.toString());
Token<ContainerTokenIdentifier> token = org.apache.hadoop.security.token.Token<ContainerTokenIdentifier> token =
ProtoUtils.convertFromProtoFormat(containerToken, containerAddress); ProtoUtils.convertFromProtoFormat(containerToken, containerAddress);
currentUser.addToken(token); currentUser.addToken(token);
@ -316,7 +315,7 @@ public Map<String, ByteBuffer> startContainer(
@Override @Override
public void stopContainer(ContainerId containerId, NodeId nodeId, public void stopContainer(ContainerId containerId, NodeId nodeId,
ContainerToken containerToken) throws YarnRemoteException, IOException { Token containerToken) throws YarnRemoteException, IOException {
StartedContainer startedContainer = getStartedContainer(containerId); StartedContainer startedContainer = getStartedContainer(containerId);
if (startedContainer == null) { if (startedContainer == null) {
throw RPCUtil.getRemoteException("Container " + containerId + throw RPCUtil.getRemoteException("Container " + containerId +
@ -348,7 +347,7 @@ public void stopContainer(ContainerId containerId, NodeId nodeId,
@Override @Override
public ContainerStatus getContainerStatus(ContainerId containerId, public ContainerStatus getContainerStatus(ContainerId containerId,
NodeId nodeId, ContainerToken containerToken) NodeId nodeId, Token containerToken)
throws YarnRemoteException, IOException { throws YarnRemoteException, IOException {
NMCommunicator nmCommunicator = null; NMCommunicator nmCommunicator = null;
try { try {

View File

@ -28,10 +28,10 @@
import org.apache.hadoop.yarn.api.records.ApplicationId; import org.apache.hadoop.yarn.api.records.ApplicationId;
import org.apache.hadoop.yarn.api.records.ApplicationReport; import org.apache.hadoop.yarn.api.records.ApplicationReport;
import org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext; import org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext;
import org.apache.hadoop.yarn.api.records.DelegationToken;
import org.apache.hadoop.yarn.api.records.NodeReport; import org.apache.hadoop.yarn.api.records.NodeReport;
import org.apache.hadoop.yarn.api.records.QueueInfo; import org.apache.hadoop.yarn.api.records.QueueInfo;
import org.apache.hadoop.yarn.api.records.QueueUserACLInfo; import org.apache.hadoop.yarn.api.records.QueueUserACLInfo;
import org.apache.hadoop.yarn.api.records.Token;
import org.apache.hadoop.yarn.api.records.YarnClusterMetrics; import org.apache.hadoop.yarn.api.records.YarnClusterMetrics;
import org.apache.hadoop.yarn.exceptions.YarnRemoteException; import org.apache.hadoop.yarn.exceptions.YarnRemoteException;
import org.apache.hadoop.yarn.service.Service; import org.apache.hadoop.yarn.service.Service;
@ -179,12 +179,12 @@ YarnClusterMetrics getYarnClusterMetrics() throws YarnRemoteException,
* @param renewer * @param renewer
* Address of the renewer who can renew these tokens when needed by * Address of the renewer who can renew these tokens when needed by
* securely talking to YARN. * securely talking to YARN.
* @return a delegation token ({@link DelegationToken}) that can be used to * @return a delegation token ({@link Token}) that can be used to
* talk to YARN * talk to YARN
* @throws YarnRemoteException * @throws YarnRemoteException
* @throws IOException * @throws IOException
*/ */
DelegationToken getRMDelegationToken(Text renewer) Token getRMDelegationToken(Text renewer)
throws YarnRemoteException, IOException; throws YarnRemoteException, IOException;
/** /**

View File

@ -50,15 +50,14 @@
import org.apache.hadoop.yarn.api.records.ApplicationId; import org.apache.hadoop.yarn.api.records.ApplicationId;
import org.apache.hadoop.yarn.api.records.ApplicationReport; import org.apache.hadoop.yarn.api.records.ApplicationReport;
import org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext; import org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext;
import org.apache.hadoop.yarn.api.records.DelegationToken;
import org.apache.hadoop.yarn.api.records.NodeReport; import org.apache.hadoop.yarn.api.records.NodeReport;
import org.apache.hadoop.yarn.api.records.QueueInfo; import org.apache.hadoop.yarn.api.records.QueueInfo;
import org.apache.hadoop.yarn.api.records.QueueUserACLInfo; import org.apache.hadoop.yarn.api.records.QueueUserACLInfo;
import org.apache.hadoop.yarn.api.records.Token;
import org.apache.hadoop.yarn.api.records.YarnApplicationState; import org.apache.hadoop.yarn.api.records.YarnApplicationState;
import org.apache.hadoop.yarn.api.records.YarnClusterMetrics; import org.apache.hadoop.yarn.api.records.YarnClusterMetrics;
import org.apache.hadoop.yarn.conf.YarnConfiguration; import org.apache.hadoop.yarn.conf.YarnConfiguration;
import org.apache.hadoop.yarn.exceptions.YarnRemoteException; import org.apache.hadoop.yarn.exceptions.YarnRemoteException;
import org.apache.hadoop.yarn.ipc.RPCUtil;
import org.apache.hadoop.yarn.ipc.YarnRPC; import org.apache.hadoop.yarn.ipc.YarnRPC;
import org.apache.hadoop.yarn.service.AbstractService; import org.apache.hadoop.yarn.service.AbstractService;
import org.apache.hadoop.yarn.util.Records; import org.apache.hadoop.yarn.util.Records;
@ -215,7 +214,7 @@ public List<NodeReport> getNodeReports() throws YarnRemoteException,
} }
@Override @Override
public DelegationToken getRMDelegationToken(Text renewer) public Token getRMDelegationToken(Text renewer)
throws YarnRemoteException, IOException { throws YarnRemoteException, IOException {
/* get the token from RM */ /* get the token from RM */
GetDelegationTokenRequest rmDTRequest = GetDelegationTokenRequest rmDTRequest =

View File

@ -45,7 +45,7 @@
import org.apache.hadoop.yarn.api.records.ContainerId; import org.apache.hadoop.yarn.api.records.ContainerId;
import org.apache.hadoop.yarn.api.records.ContainerLaunchContext; import org.apache.hadoop.yarn.api.records.ContainerLaunchContext;
import org.apache.hadoop.yarn.api.records.ContainerStatus; import org.apache.hadoop.yarn.api.records.ContainerStatus;
import org.apache.hadoop.yarn.api.records.ContainerToken; import org.apache.hadoop.yarn.api.records.Token;
import org.apache.hadoop.yarn.api.records.NodeId; import org.apache.hadoop.yarn.api.records.NodeId;
import org.apache.hadoop.yarn.conf.YarnConfiguration; import org.apache.hadoop.yarn.conf.YarnConfiguration;
import org.apache.hadoop.yarn.exceptions.YarnRemoteException; import org.apache.hadoop.yarn.exceptions.YarnRemoteException;
@ -63,7 +63,7 @@ public class TestNMClientAsync {
private NMClientAsync asyncClient; private NMClientAsync asyncClient;
private NodeId nodeId; private NodeId nodeId;
private ContainerToken containerToken; private Token containerToken;
@Test (timeout = 30000) @Test (timeout = 30000)
public void testNMClientAsync() throws Exception { public void testNMClientAsync() throws Exception {
@ -368,10 +368,10 @@ private NMClient mockNMClient(int mode)
any(ContainerLaunchContext.class))).thenReturn( any(ContainerLaunchContext.class))).thenReturn(
Collections.<String, ByteBuffer>emptyMap()); Collections.<String, ByteBuffer>emptyMap());
when(client.getContainerStatus(any(ContainerId.class), any(NodeId.class), when(client.getContainerStatus(any(ContainerId.class), any(NodeId.class),
any(ContainerToken.class))).thenReturn( any(Token.class))).thenReturn(
recordFactory.newRecordInstance(ContainerStatus.class)); recordFactory.newRecordInstance(ContainerStatus.class));
doNothing().when(client).stopContainer(any(ContainerId.class), doNothing().when(client).stopContainer(any(ContainerId.class),
any(NodeId.class), any(ContainerToken.class)); any(NodeId.class), any(Token.class));
break; break;
case 1: case 1:
doThrow(RPCUtil.getRemoteException("Start Exception")).when(client) doThrow(RPCUtil.getRemoteException("Start Exception")).when(client)
@ -379,21 +379,21 @@ private NMClient mockNMClient(int mode)
any(ContainerLaunchContext.class)); any(ContainerLaunchContext.class));
doThrow(RPCUtil.getRemoteException("Query Exception")).when(client) doThrow(RPCUtil.getRemoteException("Query Exception")).when(client)
.getContainerStatus(any(ContainerId.class), any(NodeId.class), .getContainerStatus(any(ContainerId.class), any(NodeId.class),
any(ContainerToken.class)); any(Token.class));
doThrow(RPCUtil.getRemoteException("Stop Exception")).when(client) doThrow(RPCUtil.getRemoteException("Stop Exception")).when(client)
.stopContainer(any(ContainerId.class), any(NodeId.class), .stopContainer(any(ContainerId.class), any(NodeId.class),
any(ContainerToken.class)); any(Token.class));
break; break;
case 2: case 2:
when(client.startContainer(any(Container.class), when(client.startContainer(any(Container.class),
any(ContainerLaunchContext.class))).thenReturn( any(ContainerLaunchContext.class))).thenReturn(
Collections.<String, ByteBuffer>emptyMap()); Collections.<String, ByteBuffer>emptyMap());
when(client.getContainerStatus(any(ContainerId.class), any(NodeId.class), when(client.getContainerStatus(any(ContainerId.class), any(NodeId.class),
any(ContainerToken.class))).thenReturn( any(Token.class))).thenReturn(
recordFactory.newRecordInstance(ContainerStatus.class)); recordFactory.newRecordInstance(ContainerStatus.class));
doThrow(RPCUtil.getRemoteException("Stop Exception")).when(client) doThrow(RPCUtil.getRemoteException("Stop Exception")).when(client)
.stopContainer(any(ContainerId.class), any(NodeId.class), .stopContainer(any(ContainerId.class), any(NodeId.class),
any(ContainerToken.class)); any(Token.class));
} }
return client; return client;
} }
@ -532,9 +532,8 @@ private Container mockContainer(int i) {
ContainerId containerId = ContainerId.newInstance(attemptId, i); ContainerId containerId = ContainerId.newInstance(attemptId, i);
nodeId = NodeId.newInstance("localhost", 0); nodeId = NodeId.newInstance("localhost", 0);
// Create an empty record // Create an empty record
containerToken = recordFactory.newRecordInstance(ContainerToken.class); containerToken = recordFactory.newRecordInstance(Token.class);
return BuilderUtils.newContainer(containerId, nodeId, null, null, null, return BuilderUtils.newContainer(containerId, nodeId, null, null, null,
containerToken); containerToken);
} }
} }

View File

@ -37,7 +37,6 @@
import org.apache.hadoop.yarn.api.ClientRMProtocol; import org.apache.hadoop.yarn.api.ClientRMProtocol;
import org.apache.hadoop.yarn.api.protocolrecords.CancelDelegationTokenRequest; import org.apache.hadoop.yarn.api.protocolrecords.CancelDelegationTokenRequest;
import org.apache.hadoop.yarn.api.protocolrecords.RenewDelegationTokenRequest; import org.apache.hadoop.yarn.api.protocolrecords.RenewDelegationTokenRequest;
import org.apache.hadoop.yarn.api.records.DelegationToken;
import org.apache.hadoop.yarn.exceptions.YarnRemoteException; import org.apache.hadoop.yarn.exceptions.YarnRemoteException;
import org.apache.hadoop.yarn.ipc.YarnRPC; import org.apache.hadoop.yarn.ipc.YarnRPC;
import org.apache.hadoop.yarn.util.BuilderUtils; import org.apache.hadoop.yarn.util.BuilderUtils;
@ -164,7 +163,8 @@ private static String getRenewer(Token<?> token) throws IOException {
.getRenewer().toString(); .getRenewer().toString();
} }
private static DelegationToken convertToProtoToken(Token<?> token) { private static org.apache.hadoop.yarn.api.records.Token
convertToProtoToken(Token<?> token) {
return BuilderUtils.newDelegationToken( return BuilderUtils.newDelegationToken(
token.getIdentifier(), token.getKind().toString(), token.getIdentifier(), token.getKind().toString(),
token.getPassword(), token.getService().toString()); token.getPassword(), token.getService().toString());

View File

@ -38,14 +38,11 @@
import org.apache.hadoop.yarn.api.records.ApplicationReport; import org.apache.hadoop.yarn.api.records.ApplicationReport;
import org.apache.hadoop.yarn.api.records.ApplicationResourceUsageReport; import org.apache.hadoop.yarn.api.records.ApplicationResourceUsageReport;
import org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext; import org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext;
import org.apache.hadoop.yarn.api.records.ClientToken;
import org.apache.hadoop.yarn.api.records.Container; import org.apache.hadoop.yarn.api.records.Container;
import org.apache.hadoop.yarn.api.records.ContainerId; import org.apache.hadoop.yarn.api.records.ContainerId;
import org.apache.hadoop.yarn.api.records.ContainerLaunchContext; import org.apache.hadoop.yarn.api.records.ContainerLaunchContext;
import org.apache.hadoop.yarn.api.records.ContainerState; import org.apache.hadoop.yarn.api.records.ContainerState;
import org.apache.hadoop.yarn.api.records.ContainerStatus; import org.apache.hadoop.yarn.api.records.ContainerStatus;
import org.apache.hadoop.yarn.api.records.ContainerToken;
import org.apache.hadoop.yarn.api.records.DelegationToken;
import org.apache.hadoop.yarn.api.records.FinalApplicationStatus; import org.apache.hadoop.yarn.api.records.FinalApplicationStatus;
import org.apache.hadoop.yarn.api.records.LocalResource; import org.apache.hadoop.yarn.api.records.LocalResource;
import org.apache.hadoop.yarn.api.records.LocalResourceType; import org.apache.hadoop.yarn.api.records.LocalResourceType;
@ -169,7 +166,7 @@ public static ContainerId newContainerId(int appId, int appAttemptId,
return cId; return cId;
} }
public static ContainerToken newContainerToken(ContainerId cId, String host, public static Token newContainerToken(ContainerId cId, String host,
int port, String user, Resource r, long expiryTime, int masterKeyId, int port, String user, Resource r, long expiryTime, int masterKeyId,
byte[] password, long rmIdentifier) throws IOException { byte[] password, long rmIdentifier) throws IOException {
ContainerTokenIdentifier identifier = ContainerTokenIdentifier identifier =
@ -217,7 +214,7 @@ public static ContainerStatus newContainerStatus(ContainerId containerId,
public static Container newContainer(ContainerId containerId, NodeId nodeId, public static Container newContainer(ContainerId containerId, NodeId nodeId,
String nodeHttpAddress, Resource resource, Priority priority, String nodeHttpAddress, Resource resource, Priority priority,
ContainerToken containerToken) { Token containerToken) {
Container container = recordFactory.newRecordInstance(Container.class); Container container = recordFactory.newRecordInstance(Container.class);
container.setId(containerId); container.setId(containerId);
container.setNodeId(nodeId); container.setNodeId(nodeId);
@ -238,31 +235,31 @@ public static <T extends Token> T newToken(Class<T> tokenClass,
return token; return token;
} }
public static DelegationToken newDelegationToken(byte[] identifier, public static Token newDelegationToken(byte[] identifier,
String kind, byte[] password, String service) { String kind, byte[] password, String service) {
return newToken(DelegationToken.class, identifier, kind, password, service); return newToken(Token.class, identifier, kind, password, service);
} }
public static ClientToken newClientToken(byte[] identifier, String kind, public static Token newClientToken(byte[] identifier, String kind,
byte[] password, String service) { byte[] password, String service) {
return newToken(ClientToken.class, identifier, kind, password, service); return newToken(Token.class, identifier, kind, password, service);
} }
public static ContainerToken newContainerToken(NodeId nodeId, public static Token newContainerToken(NodeId nodeId,
byte[] password, ContainerTokenIdentifier tokenIdentifier) { byte[] password, ContainerTokenIdentifier tokenIdentifier) {
// RPC layer client expects ip:port as service for tokens // RPC layer client expects ip:port as service for tokens
InetSocketAddress addr = InetSocketAddress addr =
NetUtils.createSocketAddrForHost(nodeId.getHost(), nodeId.getPort()); NetUtils.createSocketAddrForHost(nodeId.getHost(), nodeId.getPort());
// NOTE: use SecurityUtil.setTokenService if this becomes a "real" token // NOTE: use SecurityUtil.setTokenService if this becomes a "real" token
ContainerToken containerToken = Token containerToken =
newToken(ContainerToken.class, tokenIdentifier.getBytes(), newToken(Token.class, tokenIdentifier.getBytes(),
ContainerTokenIdentifier.KIND.toString(), password, SecurityUtil ContainerTokenIdentifier.KIND.toString(), password, SecurityUtil
.buildTokenService(addr).toString()); .buildTokenService(addr).toString());
return containerToken; return containerToken;
} }
public static ContainerTokenIdentifier newContainerTokenIdentifier( public static ContainerTokenIdentifier newContainerTokenIdentifier(
ContainerToken containerToken) throws IOException { Token containerToken) throws IOException {
org.apache.hadoop.security.token.Token<ContainerTokenIdentifier> token = org.apache.hadoop.security.token.Token<ContainerTokenIdentifier> token =
new org.apache.hadoop.security.token.Token<ContainerTokenIdentifier>( new org.apache.hadoop.security.token.Token<ContainerTokenIdentifier>(
containerToken.getIdentifier() containerToken.getIdentifier()
@ -318,7 +315,7 @@ public static ResourceRequest newResourceRequest(ResourceRequest r) {
public static ApplicationReport newApplicationReport( public static ApplicationReport newApplicationReport(
ApplicationId applicationId, ApplicationAttemptId applicationAttemptId, ApplicationId applicationId, ApplicationAttemptId applicationAttemptId,
String user, String queue, String name, String host, int rpcPort, String user, String queue, String name, String host, int rpcPort,
ClientToken clientToken, YarnApplicationState state, String diagnostics, Token clientToken, YarnApplicationState state, String diagnostics,
String url, long startTime, long finishTime, String url, long startTime, long finishTime,
FinalApplicationStatus finalStatus, FinalApplicationStatus finalStatus,
ApplicationResourceUsageReport appResources, String origTrackingUrl, ApplicationResourceUsageReport appResources, String origTrackingUrl,

View File

@ -42,9 +42,9 @@
import org.apache.hadoop.yarn.api.records.ContainerId; import org.apache.hadoop.yarn.api.records.ContainerId;
import org.apache.hadoop.yarn.api.records.ContainerLaunchContext; import org.apache.hadoop.yarn.api.records.ContainerLaunchContext;
import org.apache.hadoop.yarn.api.records.ContainerStatus; import org.apache.hadoop.yarn.api.records.ContainerStatus;
import org.apache.hadoop.yarn.api.records.ContainerToken;
import org.apache.hadoop.yarn.api.records.NodeId; import org.apache.hadoop.yarn.api.records.NodeId;
import org.apache.hadoop.yarn.api.records.Resource; import org.apache.hadoop.yarn.api.records.Resource;
import org.apache.hadoop.yarn.api.records.Token;
import org.apache.hadoop.yarn.conf.YarnConfiguration; import org.apache.hadoop.yarn.conf.YarnConfiguration;
import org.apache.hadoop.yarn.exceptions.YarnRemoteException; import org.apache.hadoop.yarn.exceptions.YarnRemoteException;
import org.apache.hadoop.yarn.factories.RecordFactory; import org.apache.hadoop.yarn.factories.RecordFactory;
@ -101,7 +101,7 @@ private void testRPCTimeout(String rpcClass) throws Exception {
ContainerTokenIdentifier containerTokenIdentifier = ContainerTokenIdentifier containerTokenIdentifier =
new ContainerTokenIdentifier(containerId, "localhost", "user", new ContainerTokenIdentifier(containerId, "localhost", "user",
resource, System.currentTimeMillis() + 10000, 42, 42); resource, System.currentTimeMillis() + 10000, 42, 42);
ContainerToken containerToken = Token containerToken =
BuilderUtils.newContainerToken(nodeId, "password".getBytes(), BuilderUtils.newContainerToken(nodeId, "password".getBytes(),
containerTokenIdentifier); containerTokenIdentifier);

View File

@ -44,9 +44,9 @@
import org.apache.hadoop.yarn.api.records.ContainerLaunchContext; import org.apache.hadoop.yarn.api.records.ContainerLaunchContext;
import org.apache.hadoop.yarn.api.records.ContainerState; import org.apache.hadoop.yarn.api.records.ContainerState;
import org.apache.hadoop.yarn.api.records.ContainerStatus; import org.apache.hadoop.yarn.api.records.ContainerStatus;
import org.apache.hadoop.yarn.api.records.ContainerToken;
import org.apache.hadoop.yarn.api.records.NodeId; import org.apache.hadoop.yarn.api.records.NodeId;
import org.apache.hadoop.yarn.api.records.Resource; import org.apache.hadoop.yarn.api.records.Resource;
import org.apache.hadoop.yarn.api.records.Token;
import org.apache.hadoop.yarn.conf.YarnConfiguration; import org.apache.hadoop.yarn.conf.YarnConfiguration;
import org.apache.hadoop.yarn.exceptions.YarnRemoteException; import org.apache.hadoop.yarn.exceptions.YarnRemoteException;
import org.apache.hadoop.yarn.factories.RecordFactory; import org.apache.hadoop.yarn.factories.RecordFactory;
@ -129,7 +129,7 @@ private void test(String rpcClass) throws Exception {
ContainerTokenIdentifier containerTokenIdentifier = ContainerTokenIdentifier containerTokenIdentifier =
new ContainerTokenIdentifier(containerId, "localhost", "user", new ContainerTokenIdentifier(containerId, "localhost", "user",
resource, System.currentTimeMillis() + 10000, 42, 42); resource, System.currentTimeMillis() + 10000, 42, 42);
ContainerToken containerToken = Token containerToken =
BuilderUtils.newContainerToken(nodeId, "password".getBytes(), BuilderUtils.newContainerToken(nodeId, "password".getBytes(),
containerTokenIdentifier); containerTokenIdentifier);
scRequest.setContainerToken(containerToken); scRequest.setContainerToken(containerToken);
@ -179,7 +179,7 @@ public GetContainerStatusResponse getContainerStatus(
@Override @Override
public StartContainerResponse startContainer(StartContainerRequest request) public StartContainerResponse startContainer(StartContainerRequest request)
throws YarnRemoteException { throws YarnRemoteException {
ContainerToken containerToken = request.getContainerToken(); Token containerToken = request.getContainerToken();
ContainerTokenIdentifier tokenId = null; ContainerTokenIdentifier tokenId = null;
try { try {

View File

@ -52,7 +52,6 @@
import org.apache.hadoop.yarn.api.records.ContainerId; import org.apache.hadoop.yarn.api.records.ContainerId;
import org.apache.hadoop.yarn.api.records.ContainerLaunchContext; import org.apache.hadoop.yarn.api.records.ContainerLaunchContext;
import org.apache.hadoop.yarn.api.records.ContainerStatus; import org.apache.hadoop.yarn.api.records.ContainerStatus;
import org.apache.hadoop.yarn.api.records.ContainerToken;
import org.apache.hadoop.yarn.api.records.NodeId; import org.apache.hadoop.yarn.api.records.NodeId;
import org.apache.hadoop.yarn.conf.YarnConfiguration; import org.apache.hadoop.yarn.conf.YarnConfiguration;
import org.apache.hadoop.yarn.event.AsyncDispatcher; import org.apache.hadoop.yarn.event.AsyncDispatcher;
@ -401,7 +400,7 @@ public StartContainerResponse startContainer(StartContainerRequest request)
} }
ContainerLaunchContext launchContext = request.getContainerLaunchContext(); ContainerLaunchContext launchContext = request.getContainerLaunchContext();
ContainerToken token = request.getContainerToken(); org.apache.hadoop.yarn.api.records.Token token = request.getContainerToken();
ContainerTokenIdentifier tokenIdentifier = null; ContainerTokenIdentifier tokenIdentifier = null;
try { try {

View File

@ -30,7 +30,7 @@
import org.apache.hadoop.yarn.api.records.ContainerId; import org.apache.hadoop.yarn.api.records.ContainerId;
import org.apache.hadoop.yarn.api.records.ContainerLaunchContext; import org.apache.hadoop.yarn.api.records.ContainerLaunchContext;
import org.apache.hadoop.yarn.api.records.ContainerState; import org.apache.hadoop.yarn.api.records.ContainerState;
import org.apache.hadoop.yarn.api.records.ContainerToken; import org.apache.hadoop.yarn.api.records.Token;
import org.apache.hadoop.yarn.api.records.Resource; import org.apache.hadoop.yarn.api.records.Resource;
import org.apache.hadoop.yarn.conf.YarnConfiguration; import org.apache.hadoop.yarn.conf.YarnConfiguration;
import org.apache.hadoop.yarn.event.AsyncDispatcher; import org.apache.hadoop.yarn.event.AsyncDispatcher;
@ -135,7 +135,7 @@ public long getRMIdentifier() {
String user = "testing"; String user = "testing";
String host = "127.0.0.1"; String host = "127.0.0.1";
int port = 1234; int port = 1234;
ContainerToken containerToken = Token containerToken =
BuilderUtils.newContainerToken(cID, host, port, user, r, BuilderUtils.newContainerToken(cID, host, port, user, r,
System.currentTimeMillis() + 10000L, 123, "password".getBytes(), System.currentTimeMillis() + 10000L, 123, "password".getBytes(),
SIMULATED_RM_IDENTIFIER); SIMULATED_RM_IDENTIFIER);

View File

@ -46,12 +46,12 @@
import org.apache.hadoop.yarn.api.records.ApplicationId; import org.apache.hadoop.yarn.api.records.ApplicationId;
import org.apache.hadoop.yarn.api.records.ContainerId; import org.apache.hadoop.yarn.api.records.ContainerId;
import org.apache.hadoop.yarn.api.records.ContainerLaunchContext; import org.apache.hadoop.yarn.api.records.ContainerLaunchContext;
import org.apache.hadoop.yarn.api.records.ContainerToken;
import org.apache.hadoop.yarn.api.records.LocalResource; import org.apache.hadoop.yarn.api.records.LocalResource;
import org.apache.hadoop.yarn.api.records.LocalResourceType; import org.apache.hadoop.yarn.api.records.LocalResourceType;
import org.apache.hadoop.yarn.api.records.LocalResourceVisibility; import org.apache.hadoop.yarn.api.records.LocalResourceVisibility;
import org.apache.hadoop.yarn.api.records.NodeId; import org.apache.hadoop.yarn.api.records.NodeId;
import org.apache.hadoop.yarn.api.records.Resource; import org.apache.hadoop.yarn.api.records.Resource;
import org.apache.hadoop.yarn.api.records.Token;
import org.apache.hadoop.yarn.api.records.URL; import org.apache.hadoop.yarn.api.records.URL;
import org.apache.hadoop.yarn.conf.YarnConfiguration; import org.apache.hadoop.yarn.conf.YarnConfiguration;
import org.apache.hadoop.yarn.event.Dispatcher; import org.apache.hadoop.yarn.event.Dispatcher;
@ -134,7 +134,7 @@ public void testClearLocalDirWhenNodeReboot() throws IOException,
Resource resource = Records.newRecord(Resource.class); Resource resource = Records.newRecord(Resource.class);
resource.setMemory(1024); resource.setMemory(1024);
NodeId nodeId = BuilderUtils.newNodeId("127.0.0.1", 12345); NodeId nodeId = BuilderUtils.newNodeId("127.0.0.1", 12345);
ContainerToken containerToken = Token containerToken =
BuilderUtils.newContainerToken(cId, nodeId.getHost(), nodeId.getPort(), BuilderUtils.newContainerToken(cId, nodeId.getHost(), nodeId.getPort(),
user, resource, System.currentTimeMillis() + 10000L, 123, user, resource, System.currentTimeMillis() + 10000L, 123,
"password".getBytes(), 0); "password".getBytes(), 0);

View File

@ -48,12 +48,12 @@
import org.apache.hadoop.yarn.api.records.ContainerLaunchContext; import org.apache.hadoop.yarn.api.records.ContainerLaunchContext;
import org.apache.hadoop.yarn.api.records.ContainerState; import org.apache.hadoop.yarn.api.records.ContainerState;
import org.apache.hadoop.yarn.api.records.ContainerStatus; import org.apache.hadoop.yarn.api.records.ContainerStatus;
import org.apache.hadoop.yarn.api.records.ContainerToken;
import org.apache.hadoop.yarn.api.records.LocalResource; import org.apache.hadoop.yarn.api.records.LocalResource;
import org.apache.hadoop.yarn.api.records.LocalResourceType; import org.apache.hadoop.yarn.api.records.LocalResourceType;
import org.apache.hadoop.yarn.api.records.LocalResourceVisibility; import org.apache.hadoop.yarn.api.records.LocalResourceVisibility;
import org.apache.hadoop.yarn.api.records.NodeId; import org.apache.hadoop.yarn.api.records.NodeId;
import org.apache.hadoop.yarn.api.records.Resource; import org.apache.hadoop.yarn.api.records.Resource;
import org.apache.hadoop.yarn.api.records.Token;
import org.apache.hadoop.yarn.api.records.URL; import org.apache.hadoop.yarn.api.records.URL;
import org.apache.hadoop.yarn.conf.YarnConfiguration; import org.apache.hadoop.yarn.conf.YarnConfiguration;
import org.apache.hadoop.yarn.event.Dispatcher; import org.apache.hadoop.yarn.event.Dispatcher;
@ -177,7 +177,7 @@ public static void startContainer(NodeManager nm, ContainerId cId,
List<String> commands = Arrays.asList(Shell.getRunScriptCommand(scriptFile)); List<String> commands = Arrays.asList(Shell.getRunScriptCommand(scriptFile));
containerLaunchContext.setCommands(commands); containerLaunchContext.setCommands(commands);
Resource resource = BuilderUtils.newResource(1024, 1); Resource resource = BuilderUtils.newResource(1024, 1);
ContainerToken containerToken = Token containerToken =
BuilderUtils.newContainerToken(cId, nodeId.getHost(), nodeId.getPort(), BuilderUtils.newContainerToken(cId, nodeId.getHost(), nodeId.getPort(),
user, resource, System.currentTimeMillis() + 10000L, 123, user, resource, System.currentTimeMillis() + 10000L, 123,
"password".getBytes(), 0); "password".getBytes(), 0);
@ -257,7 +257,7 @@ private static File createUnhaltingScriptFile(ContainerId cId,
fileWriter.close(); fileWriter.close();
return scriptFile; return scriptFile;
} }
class TestNodeManager extends NodeManager { class TestNodeManager extends NodeManager {
@Override @Override

View File

@ -44,11 +44,11 @@
import org.apache.hadoop.yarn.api.records.ContainerLaunchContext; import org.apache.hadoop.yarn.api.records.ContainerLaunchContext;
import org.apache.hadoop.yarn.api.records.ContainerState; import org.apache.hadoop.yarn.api.records.ContainerState;
import org.apache.hadoop.yarn.api.records.ContainerStatus; import org.apache.hadoop.yarn.api.records.ContainerStatus;
import org.apache.hadoop.yarn.api.records.ContainerToken;
import org.apache.hadoop.yarn.api.records.LocalResource; import org.apache.hadoop.yarn.api.records.LocalResource;
import org.apache.hadoop.yarn.api.records.LocalResourceType; import org.apache.hadoop.yarn.api.records.LocalResourceType;
import org.apache.hadoop.yarn.api.records.LocalResourceVisibility; import org.apache.hadoop.yarn.api.records.LocalResourceVisibility;
import org.apache.hadoop.yarn.api.records.Resource; import org.apache.hadoop.yarn.api.records.Resource;
import org.apache.hadoop.yarn.api.records.Token;
import org.apache.hadoop.yarn.api.records.URL; import org.apache.hadoop.yarn.api.records.URL;
import org.apache.hadoop.yarn.exceptions.YarnRemoteException; import org.apache.hadoop.yarn.exceptions.YarnRemoteException;
import org.apache.hadoop.yarn.server.api.ResourceManagerConstants; import org.apache.hadoop.yarn.server.api.ResourceManagerConstants;
@ -136,7 +136,7 @@ public void testContainerSetup() throws IOException, InterruptedException,
containerLaunchContext.setLocalResources(localResources); containerLaunchContext.setLocalResources(localResources);
Resource r = BuilderUtils.newResource(512, 1); Resource r = BuilderUtils.newResource(512, 1);
int port = 12345; int port = 12345;
ContainerToken containerToken = Token containerToken =
BuilderUtils.newContainerToken(cId, context.getNodeId().getHost(), BuilderUtils.newContainerToken(cId, context.getNodeId().getHost(),
port, user, r, System.currentTimeMillis() + 10000L, 123, port, user, r, System.currentTimeMillis() + 10000L, 123,
"password".getBytes(), super.DUMMY_RM_IDENTIFIER); "password".getBytes(), super.DUMMY_RM_IDENTIFIER);
@ -229,7 +229,7 @@ public void testContainerLaunchAndStop() throws IOException,
containerLaunchContext.setCommands(commands); containerLaunchContext.setCommands(commands);
Resource r = BuilderUtils.newResource(100, 1); Resource r = BuilderUtils.newResource(100, 1);
int port = 12345; int port = 12345;
ContainerToken containerToken = Token containerToken =
BuilderUtils.newContainerToken(cId, context.getNodeId().getHost(), BuilderUtils.newContainerToken(cId, context.getNodeId().getHost(),
port, user, r, System.currentTimeMillis() + 10000L, 123, port, user, r, System.currentTimeMillis() + 10000L, 123,
"password".getBytes(), super.DUMMY_RM_IDENTIFIER); "password".getBytes(), super.DUMMY_RM_IDENTIFIER);
@ -337,7 +337,7 @@ private void testContainerLaunchAndExit(int exitCode) throws IOException,
containerLaunchContext.setCommands(commands); containerLaunchContext.setCommands(commands);
Resource r = BuilderUtils.newResource(100, 1); Resource r = BuilderUtils.newResource(100, 1);
int port = 12345; int port = 12345;
ContainerToken containerToken = Token containerToken =
BuilderUtils.newContainerToken(cId, context.getNodeId().getHost(), BuilderUtils.newContainerToken(cId, context.getNodeId().getHost(),
port, user, r, System.currentTimeMillis() + 10000L, 123, port, user, r, System.currentTimeMillis() + 10000L, 123,
"password".getBytes(), super.DUMMY_RM_IDENTIFIER); "password".getBytes(), super.DUMMY_RM_IDENTIFIER);
@ -426,7 +426,7 @@ public void testLocalFilesCleanup() throws InterruptedException,
Resource r = BuilderUtils.newResource(100, 1); Resource r = BuilderUtils.newResource(100, 1);
int port = 12345; int port = 12345;
ContainerToken containerToken = Token containerToken =
BuilderUtils.newContainerToken(cId, context.getNodeId().getHost(), BuilderUtils.newContainerToken(cId, context.getNodeId().getHost(),
port, user, r, System.currentTimeMillis() + 10000L, 123, port, user, r, System.currentTimeMillis() + 10000L, 123,
"password".getBytes(), super.DUMMY_RM_IDENTIFIER); "password".getBytes(), super.DUMMY_RM_IDENTIFIER);
@ -516,7 +516,7 @@ public void testContainerLaunchFromPreviousRM() throws IOException,
recordFactory.newRecordInstance(StartContainerRequest.class); recordFactory.newRecordInstance(StartContainerRequest.class);
startRequest1.setContainerLaunchContext(containerLaunchContext); startRequest1.setContainerLaunchContext(containerLaunchContext);
ContainerToken containerToken1 = Token containerToken1 =
BuilderUtils.newContainerToken(cId1, host, port, user, mockResource, BuilderUtils.newContainerToken(cId1, host, port, user, mockResource,
System.currentTimeMillis() + 10000, 123, "password".getBytes(), System.currentTimeMillis() + 10000, 123, "password".getBytes(),
(long) ResourceManagerConstants.RM_INVALID_IDENTIFIER); (long) ResourceManagerConstants.RM_INVALID_IDENTIFIER);
@ -541,7 +541,7 @@ public void testContainerLaunchFromPreviousRM() throws IOException,
StartContainerRequest startRequest2 = StartContainerRequest startRequest2 =
recordFactory.newRecordInstance(StartContainerRequest.class); recordFactory.newRecordInstance(StartContainerRequest.class);
startRequest2.setContainerLaunchContext(containerLaunchContext); startRequest2.setContainerLaunchContext(containerLaunchContext);
ContainerToken containerToken2 = Token containerToken2 =
BuilderUtils.newContainerToken(cId1, host, port, user, mockResource, BuilderUtils.newContainerToken(cId1, host, port, user, mockResource,
System.currentTimeMillis() + 10000, 123, "password".getBytes(), System.currentTimeMillis() + 10000, 123, "password".getBytes(),
super.DUMMY_RM_IDENTIFIER); super.DUMMY_RM_IDENTIFIER);

View File

@ -45,11 +45,11 @@
import org.apache.hadoop.fs.Path; import org.apache.hadoop.fs.Path;
import org.apache.hadoop.yarn.api.records.ContainerId; import org.apache.hadoop.yarn.api.records.ContainerId;
import org.apache.hadoop.yarn.api.records.ContainerLaunchContext; import org.apache.hadoop.yarn.api.records.ContainerLaunchContext;
import org.apache.hadoop.yarn.api.records.ContainerToken;
import org.apache.hadoop.yarn.api.records.LocalResource; import org.apache.hadoop.yarn.api.records.LocalResource;
import org.apache.hadoop.yarn.api.records.LocalResourceType; import org.apache.hadoop.yarn.api.records.LocalResourceType;
import org.apache.hadoop.yarn.api.records.LocalResourceVisibility; import org.apache.hadoop.yarn.api.records.LocalResourceVisibility;
import org.apache.hadoop.yarn.api.records.Resource; import org.apache.hadoop.yarn.api.records.Resource;
import org.apache.hadoop.yarn.api.records.Token;
import org.apache.hadoop.yarn.api.records.URL; import org.apache.hadoop.yarn.api.records.URL;
import org.apache.hadoop.yarn.conf.YarnConfiguration; import org.apache.hadoop.yarn.conf.YarnConfiguration;
import org.apache.hadoop.yarn.event.DrainDispatcher; import org.apache.hadoop.yarn.event.DrainDispatcher;
@ -578,7 +578,7 @@ private class WrappedContainer {
ContainerTokenIdentifier identifier = ContainerTokenIdentifier identifier =
new ContainerTokenIdentifier(cId, "127.0.0.1", user, resource, new ContainerTokenIdentifier(cId, "127.0.0.1", user, resource,
currentTime + 10000L, 123, currentTime); currentTime + 10000L, 123, currentTime);
ContainerToken token = Token token =
BuilderUtils.newContainerToken(BuilderUtils.newNodeId(host, port), BuilderUtils.newContainerToken(BuilderUtils.newNodeId(host, port),
"password".getBytes(), identifier); "password".getBytes(), identifier);
when(mockContainer.getContainerToken()).thenReturn(token); when(mockContainer.getContainerToken()).thenReturn(token);

View File

@ -49,11 +49,11 @@
import org.apache.hadoop.yarn.api.records.ContainerLaunchContext; import org.apache.hadoop.yarn.api.records.ContainerLaunchContext;
import org.apache.hadoop.yarn.api.records.ContainerState; import org.apache.hadoop.yarn.api.records.ContainerState;
import org.apache.hadoop.yarn.api.records.ContainerStatus; import org.apache.hadoop.yarn.api.records.ContainerStatus;
import org.apache.hadoop.yarn.api.records.ContainerToken;
import org.apache.hadoop.yarn.api.records.LocalResource; import org.apache.hadoop.yarn.api.records.LocalResource;
import org.apache.hadoop.yarn.api.records.LocalResourceType; import org.apache.hadoop.yarn.api.records.LocalResourceType;
import org.apache.hadoop.yarn.api.records.LocalResourceVisibility; import org.apache.hadoop.yarn.api.records.LocalResourceVisibility;
import org.apache.hadoop.yarn.api.records.Resource; import org.apache.hadoop.yarn.api.records.Resource;
import org.apache.hadoop.yarn.api.records.Token;
import org.apache.hadoop.yarn.api.records.URL; import org.apache.hadoop.yarn.api.records.URL;
import org.apache.hadoop.yarn.conf.YarnConfiguration; import org.apache.hadoop.yarn.conf.YarnConfiguration;
import org.apache.hadoop.yarn.server.nodemanager.ContainerExecutor.ExitCode; import org.apache.hadoop.yarn.server.nodemanager.ContainerExecutor.ExitCode;
@ -233,7 +233,7 @@ public void testContainerEnvVariables() throws Exception {
Resource r = BuilderUtils.newResource(1024, 1); Resource r = BuilderUtils.newResource(1024, 1);
StartContainerRequest startRequest = recordFactory.newRecordInstance(StartContainerRequest.class); StartContainerRequest startRequest = recordFactory.newRecordInstance(StartContainerRequest.class);
startRequest.setContainerLaunchContext(containerLaunchContext); startRequest.setContainerLaunchContext(containerLaunchContext);
ContainerToken containerToken = Token containerToken =
BuilderUtils.newContainerToken(cId, context.getNodeId().getHost(), BuilderUtils.newContainerToken(cId, context.getNodeId().getHost(),
port, user, r, System.currentTimeMillis() + 10000L, 1234, port, user, r, System.currentTimeMillis() + 10000L, 1234,
"password".getBytes(), super.DUMMY_RM_IDENTIFIER); "password".getBytes(), super.DUMMY_RM_IDENTIFIER);
@ -369,7 +369,7 @@ public void testDelayedKill() throws Exception {
List<String> commands = Arrays.asList(Shell.getRunScriptCommand(scriptFile)); List<String> commands = Arrays.asList(Shell.getRunScriptCommand(scriptFile));
containerLaunchContext.setCommands(commands); containerLaunchContext.setCommands(commands);
Resource r = BuilderUtils.newResource(1024, 1); Resource r = BuilderUtils.newResource(1024, 1);
ContainerToken containerToken = Token containerToken =
BuilderUtils.newContainerToken(cId, context.getNodeId().getHost(), BuilderUtils.newContainerToken(cId, context.getNodeId().getHost(),
port, user, r, System.currentTimeMillis() + 10000L, 123, port, user, r, System.currentTimeMillis() + 10000L, 123,
"password".getBytes(), super.DUMMY_RM_IDENTIFIER); "password".getBytes(), super.DUMMY_RM_IDENTIFIER);

View File

@ -18,10 +18,19 @@
package org.apache.hadoop.yarn.server.nodemanager.containermanager.logaggregation; package org.apache.hadoop.yarn.server.nodemanager.containermanager.logaggregation;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.*;
import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertTrue; import static junit.framework.Assert.assertTrue;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyMap;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.atLeast;
import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.DataInputStream; import java.io.DataInputStream;
@ -58,12 +67,12 @@
import org.apache.hadoop.yarn.api.records.ContainerId; import org.apache.hadoop.yarn.api.records.ContainerId;
import org.apache.hadoop.yarn.api.records.ContainerLaunchContext; import org.apache.hadoop.yarn.api.records.ContainerLaunchContext;
import org.apache.hadoop.yarn.api.records.ContainerState; import org.apache.hadoop.yarn.api.records.ContainerState;
import org.apache.hadoop.yarn.api.records.ContainerToken;
import org.apache.hadoop.yarn.api.records.LocalResource; import org.apache.hadoop.yarn.api.records.LocalResource;
import org.apache.hadoop.yarn.api.records.LocalResourceType; import org.apache.hadoop.yarn.api.records.LocalResourceType;
import org.apache.hadoop.yarn.api.records.LocalResourceVisibility; import org.apache.hadoop.yarn.api.records.LocalResourceVisibility;
import org.apache.hadoop.yarn.api.records.NodeId; import org.apache.hadoop.yarn.api.records.NodeId;
import org.apache.hadoop.yarn.api.records.Resource; import org.apache.hadoop.yarn.api.records.Resource;
import org.apache.hadoop.yarn.api.records.Token;
import org.apache.hadoop.yarn.api.records.URL; import org.apache.hadoop.yarn.api.records.URL;
import org.apache.hadoop.yarn.conf.YarnConfiguration; import org.apache.hadoop.yarn.conf.YarnConfiguration;
import org.apache.hadoop.yarn.event.DrainDispatcher; import org.apache.hadoop.yarn.event.DrainDispatcher;
@ -742,7 +751,7 @@ public void testLogAggregationForRealContainerLaunch() throws IOException,
commands.add(scriptFile.getAbsolutePath()); commands.add(scriptFile.getAbsolutePath());
containerLaunchContext.setCommands(commands); containerLaunchContext.setCommands(commands);
Resource r = BuilderUtils.newResource(100 * 1024 * 1024, 1); Resource r = BuilderUtils.newResource(100 * 1024 * 1024, 1);
ContainerToken containerToken = Token containerToken =
BuilderUtils.newContainerToken(cId, "127.0.0.1", 1234, user, r, BuilderUtils.newContainerToken(cId, "127.0.0.1", 1234, user, r,
System.currentTimeMillis() + 10000L, 123, "password".getBytes(), System.currentTimeMillis() + 10000L, 123, "password".getBytes(),
super.DUMMY_RM_IDENTIFIER); super.DUMMY_RM_IDENTIFIER);

View File

@ -48,11 +48,11 @@
import org.apache.hadoop.yarn.api.records.ContainerLaunchContext; import org.apache.hadoop.yarn.api.records.ContainerLaunchContext;
import org.apache.hadoop.yarn.api.records.ContainerState; import org.apache.hadoop.yarn.api.records.ContainerState;
import org.apache.hadoop.yarn.api.records.ContainerStatus; import org.apache.hadoop.yarn.api.records.ContainerStatus;
import org.apache.hadoop.yarn.api.records.ContainerToken;
import org.apache.hadoop.yarn.api.records.LocalResource; import org.apache.hadoop.yarn.api.records.LocalResource;
import org.apache.hadoop.yarn.api.records.LocalResourceType; import org.apache.hadoop.yarn.api.records.LocalResourceType;
import org.apache.hadoop.yarn.api.records.LocalResourceVisibility; import org.apache.hadoop.yarn.api.records.LocalResourceVisibility;
import org.apache.hadoop.yarn.api.records.Resource; import org.apache.hadoop.yarn.api.records.Resource;
import org.apache.hadoop.yarn.api.records.Token;
import org.apache.hadoop.yarn.api.records.URL; import org.apache.hadoop.yarn.api.records.URL;
import org.apache.hadoop.yarn.conf.YarnConfiguration; import org.apache.hadoop.yarn.conf.YarnConfiguration;
import org.apache.hadoop.yarn.event.AsyncDispatcher; import org.apache.hadoop.yarn.event.AsyncDispatcher;
@ -229,7 +229,7 @@ public void testContainerKillOnMemoryOverflow() throws IOException,
StartContainerRequest startRequest = StartContainerRequest startRequest =
recordFactory.newRecordInstance(StartContainerRequest.class); recordFactory.newRecordInstance(StartContainerRequest.class);
startRequest.setContainerLaunchContext(containerLaunchContext); startRequest.setContainerLaunchContext(containerLaunchContext);
ContainerToken containerToken = Token containerToken =
BuilderUtils.newContainerToken(cId, context.getNodeId().getHost(), BuilderUtils.newContainerToken(cId, context.getNodeId().getHost(),
port, user, r, System.currentTimeMillis() + 10000L, 123, port, user, r, System.currentTimeMillis() + 10000L, 123,
"password".getBytes(), super.DUMMY_RM_IDENTIFIER); "password".getBytes(), super.DUMMY_RM_IDENTIFIER);

View File

@ -32,7 +32,7 @@
import org.apache.hadoop.yarn.api.records.ApplicationId; import org.apache.hadoop.yarn.api.records.ApplicationId;
import org.apache.hadoop.yarn.api.records.ContainerId; import org.apache.hadoop.yarn.api.records.ContainerId;
import org.apache.hadoop.yarn.api.records.ContainerLaunchContext; import org.apache.hadoop.yarn.api.records.ContainerLaunchContext;
import org.apache.hadoop.yarn.api.records.ContainerToken; import org.apache.hadoop.yarn.api.records.Token;
import org.apache.hadoop.yarn.conf.YarnConfiguration; import org.apache.hadoop.yarn.conf.YarnConfiguration;
import org.apache.hadoop.yarn.event.AsyncDispatcher; import org.apache.hadoop.yarn.event.AsyncDispatcher;
import org.apache.hadoop.yarn.event.Dispatcher; import org.apache.hadoop.yarn.event.Dispatcher;
@ -179,7 +179,7 @@ public boolean isPmemCheckEnabled() {
ContainerLaunchContext launchContext = ContainerLaunchContext launchContext =
recordFactory.newRecordInstance(ContainerLaunchContext.class); recordFactory.newRecordInstance(ContainerLaunchContext.class);
long currentTime = System.currentTimeMillis(); long currentTime = System.currentTimeMillis();
ContainerToken containerToken = Token containerToken =
BuilderUtils.newContainerToken(containerId, "127.0.0.1", 1234, user, BuilderUtils.newContainerToken(containerId, "127.0.0.1", 1234, user,
BuilderUtils.newResource(1024, 1), currentTime + 10000L, 123, BuilderUtils.newResource(1024, 1), currentTime + 10000L, 123,
"password".getBytes(), currentTime); "password".getBytes(), currentTime);

View File

@ -67,7 +67,6 @@
import org.apache.hadoop.yarn.api.records.ApplicationId; import org.apache.hadoop.yarn.api.records.ApplicationId;
import org.apache.hadoop.yarn.api.records.ApplicationReport; import org.apache.hadoop.yarn.api.records.ApplicationReport;
import org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext; import org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext;
import org.apache.hadoop.yarn.api.records.DelegationToken;
import org.apache.hadoop.yarn.api.records.NodeReport; import org.apache.hadoop.yarn.api.records.NodeReport;
import org.apache.hadoop.yarn.api.records.QueueInfo; import org.apache.hadoop.yarn.api.records.QueueInfo;
import org.apache.hadoop.yarn.api.records.Resource; import org.apache.hadoop.yarn.api.records.Resource;
@ -538,7 +537,7 @@ public RenewDelegationTokenResponse renewDelegationToken(
"Delegation Token can be renewed only with kerberos authentication"); "Delegation Token can be renewed only with kerberos authentication");
} }
DelegationToken protoToken = request.getDelegationToken(); org.apache.hadoop.yarn.api.records.Token protoToken = request.getDelegationToken();
Token<RMDelegationTokenIdentifier> token = new Token<RMDelegationTokenIdentifier>( Token<RMDelegationTokenIdentifier> token = new Token<RMDelegationTokenIdentifier>(
protoToken.getIdentifier().array(), protoToken.getPassword().array(), protoToken.getIdentifier().array(), protoToken.getPassword().array(),
new Text(protoToken.getKind()), new Text(protoToken.getService())); new Text(protoToken.getKind()), new Text(protoToken.getService()));
@ -562,7 +561,7 @@ public CancelDelegationTokenResponse cancelDelegationToken(
throw new IOException( throw new IOException(
"Delegation Token can be cancelled only with kerberos authentication"); "Delegation Token can be cancelled only with kerberos authentication");
} }
DelegationToken protoToken = request.getDelegationToken(); org.apache.hadoop.yarn.api.records.Token protoToken = request.getDelegationToken();
Token<RMDelegationTokenIdentifier> token = new Token<RMDelegationTokenIdentifier>( Token<RMDelegationTokenIdentifier> token = new Token<RMDelegationTokenIdentifier>(
protoToken.getIdentifier().array(), protoToken.getPassword().array(), protoToken.getIdentifier().array(), protoToken.getPassword().array(),
new Text(protoToken.getKind()), new Text(protoToken.getService())); new Text(protoToken.getKind()), new Text(protoToken.getService()));

View File

@ -40,7 +40,6 @@
import org.apache.hadoop.yarn.api.records.ApplicationReport; import org.apache.hadoop.yarn.api.records.ApplicationReport;
import org.apache.hadoop.yarn.api.records.ApplicationResourceUsageReport; import org.apache.hadoop.yarn.api.records.ApplicationResourceUsageReport;
import org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext; import org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext;
import org.apache.hadoop.yarn.api.records.ClientToken;
import org.apache.hadoop.yarn.api.records.FinalApplicationStatus; import org.apache.hadoop.yarn.api.records.FinalApplicationStatus;
import org.apache.hadoop.yarn.api.records.NodeId; import org.apache.hadoop.yarn.api.records.NodeId;
import org.apache.hadoop.yarn.api.records.NodeState; import org.apache.hadoop.yarn.api.records.NodeState;
@ -431,7 +430,7 @@ public ApplicationReport createAndGetApplicationReport(boolean allowAccess) {
try { try {
ApplicationAttemptId currentApplicationAttemptId = null; ApplicationAttemptId currentApplicationAttemptId = null;
ClientToken clientToken = null; org.apache.hadoop.yarn.api.records.Token clientToken = null;
String trackingUrl = UNAVAILABLE; String trackingUrl = UNAVAILABLE;
String host = UNAVAILABLE; String host = UNAVAILABLE;
String origTrackingUrl = UNAVAILABLE; String origTrackingUrl = UNAVAILABLE;

View File

@ -42,7 +42,6 @@
import org.apache.hadoop.yarn.api.records.Container; import org.apache.hadoop.yarn.api.records.Container;
import org.apache.hadoop.yarn.api.records.ContainerId; import org.apache.hadoop.yarn.api.records.ContainerId;
import org.apache.hadoop.yarn.api.records.ContainerStatus; import org.apache.hadoop.yarn.api.records.ContainerStatus;
import org.apache.hadoop.yarn.api.records.ContainerToken;
import org.apache.hadoop.yarn.api.records.NodeId; import org.apache.hadoop.yarn.api.records.NodeId;
import org.apache.hadoop.yarn.api.records.Priority; import org.apache.hadoop.yarn.api.records.Priority;
import org.apache.hadoop.yarn.api.records.QueueACL; import org.apache.hadoop.yarn.api.records.QueueACL;
@ -51,6 +50,7 @@
import org.apache.hadoop.yarn.api.records.QueueUserACLInfo; import org.apache.hadoop.yarn.api.records.QueueUserACLInfo;
import org.apache.hadoop.yarn.api.records.Resource; import org.apache.hadoop.yarn.api.records.Resource;
import org.apache.hadoop.yarn.api.records.ResourceRequest; import org.apache.hadoop.yarn.api.records.ResourceRequest;
import org.apache.hadoop.yarn.api.records.Token;
import org.apache.hadoop.yarn.factories.RecordFactory; import org.apache.hadoop.yarn.factories.RecordFactory;
import org.apache.hadoop.yarn.factory.providers.RecordFactoryProvider; import org.apache.hadoop.yarn.factory.providers.RecordFactoryProvider;
import org.apache.hadoop.yarn.server.resourcemanager.resource.ResourceCalculator; import org.apache.hadoop.yarn.server.resourcemanager.resource.ResourceCalculator;
@ -1251,7 +1251,7 @@ Container createContainer(FiCaSchedulerApp application, FiCaSchedulerNode node,
/** /**
* Create <code>ContainerToken</code>, only in secure-mode * Create <code>ContainerToken</code>, only in secure-mode
*/ */
ContainerToken createContainerToken( Token createContainerToken(
FiCaSchedulerApp application, Container container) { FiCaSchedulerApp application, Container container) {
return containerTokenSecretManager.createContainerToken( return containerTokenSecretManager.createContainerToken(
container.getId(), container.getNodeId(), container.getId(), container.getNodeId(),
@ -1295,7 +1295,7 @@ private Resource assignContainer(Resource clusterResource, FiCaSchedulerNode nod
unreserve(application, priority, node, rmContainer); unreserve(application, priority, node, rmContainer);
} }
ContainerToken containerToken = Token containerToken =
createContainerToken(application, container); createContainerToken(application, container);
if (containerToken == null) { if (containerToken == null) {
// Something went wrong... // Something went wrong...

View File

@ -27,7 +27,6 @@
import org.apache.hadoop.classification.InterfaceStability.Unstable; import org.apache.hadoop.classification.InterfaceStability.Unstable;
import org.apache.hadoop.yarn.api.records.Container; import org.apache.hadoop.yarn.api.records.Container;
import org.apache.hadoop.yarn.api.records.ContainerId; import org.apache.hadoop.yarn.api.records.ContainerId;
import org.apache.hadoop.yarn.api.records.ContainerToken;
import org.apache.hadoop.yarn.api.records.NodeId; import org.apache.hadoop.yarn.api.records.NodeId;
import org.apache.hadoop.yarn.api.records.Priority; import org.apache.hadoop.yarn.api.records.Priority;
import org.apache.hadoop.yarn.api.records.Resource; import org.apache.hadoop.yarn.api.records.Resource;
@ -157,7 +156,7 @@ public Container createContainer(
NodeId nodeId = node.getRMNode().getNodeID(); NodeId nodeId = node.getRMNode().getNodeID();
ContainerId containerId = BuilderUtils.newContainerId(application ContainerId containerId = BuilderUtils.newContainerId(application
.getApplicationAttemptId(), application.getNewContainerId()); .getApplicationAttemptId(), application.getNewContainerId());
ContainerToken containerToken = org.apache.hadoop.yarn.api.records.Token containerToken =
containerTokenSecretManager.createContainerToken(containerId, nodeId, containerTokenSecretManager.createContainerToken(containerId, nodeId,
application.getUser(), capability); application.getUser(), capability);
if (containerToken == null) { if (containerToken == null) {

View File

@ -41,7 +41,7 @@
import org.apache.hadoop.yarn.api.records.Container; import org.apache.hadoop.yarn.api.records.Container;
import org.apache.hadoop.yarn.api.records.ContainerId; import org.apache.hadoop.yarn.api.records.ContainerId;
import org.apache.hadoop.yarn.api.records.ContainerStatus; import org.apache.hadoop.yarn.api.records.ContainerStatus;
import org.apache.hadoop.yarn.api.records.ContainerToken; import org.apache.hadoop.yarn.api.records.Token;
import org.apache.hadoop.yarn.api.records.NodeId; import org.apache.hadoop.yarn.api.records.NodeId;
import org.apache.hadoop.yarn.api.records.Priority; import org.apache.hadoop.yarn.api.records.Priority;
import org.apache.hadoop.yarn.api.records.QueueACL; import org.apache.hadoop.yarn.api.records.QueueACL;
@ -549,7 +549,7 @@ private int assignContainer(FiCaSchedulerNode node, FiCaSchedulerApp application
NodeId nodeId = node.getRMNode().getNodeID(); NodeId nodeId = node.getRMNode().getNodeID();
ContainerId containerId = BuilderUtils.newContainerId(application ContainerId containerId = BuilderUtils.newContainerId(application
.getApplicationAttemptId(), application.getNewContainerId()); .getApplicationAttemptId(), application.getNewContainerId());
ContainerToken containerToken = null; Token containerToken = null;
containerToken = containerToken =
this.rmContext.getContainerTokenSecretManager() this.rmContext.getContainerTokenSecretManager()

View File

@ -26,9 +26,9 @@
import org.apache.hadoop.classification.InterfaceAudience.Private; import org.apache.hadoop.classification.InterfaceAudience.Private;
import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.yarn.api.records.ContainerId; import org.apache.hadoop.yarn.api.records.ContainerId;
import org.apache.hadoop.yarn.api.records.ContainerToken;
import org.apache.hadoop.yarn.api.records.NodeId; import org.apache.hadoop.yarn.api.records.NodeId;
import org.apache.hadoop.yarn.api.records.Resource; import org.apache.hadoop.yarn.api.records.Resource;
import org.apache.hadoop.yarn.api.records.Token;
import org.apache.hadoop.yarn.conf.YarnConfiguration; import org.apache.hadoop.yarn.conf.YarnConfiguration;
import org.apache.hadoop.yarn.security.ContainerTokenIdentifier; import org.apache.hadoop.yarn.security.ContainerTokenIdentifier;
import org.apache.hadoop.yarn.server.api.records.MasterKey; import org.apache.hadoop.yarn.server.api.records.MasterKey;
@ -170,7 +170,7 @@ public void run() {
* @param capability * @param capability
* @return the container-token * @return the container-token
*/ */
public ContainerToken public Token
createContainerToken(ContainerId containerId, NodeId nodeId, createContainerToken(ContainerId containerId, NodeId nodeId,
String appSubmitter, Resource capability) { String appSubmitter, Resource capability) {
byte[] password; byte[] password;

View File

@ -42,10 +42,10 @@
import org.apache.hadoop.yarn.api.records.ContainerId; import org.apache.hadoop.yarn.api.records.ContainerId;
import org.apache.hadoop.yarn.api.records.ContainerState; import org.apache.hadoop.yarn.api.records.ContainerState;
import org.apache.hadoop.yarn.api.records.ContainerStatus; import org.apache.hadoop.yarn.api.records.ContainerStatus;
import org.apache.hadoop.yarn.api.records.ContainerToken;
import org.apache.hadoop.yarn.api.records.NodeHealthStatus; import org.apache.hadoop.yarn.api.records.NodeHealthStatus;
import org.apache.hadoop.yarn.api.records.NodeId; import org.apache.hadoop.yarn.api.records.NodeId;
import org.apache.hadoop.yarn.api.records.Resource; import org.apache.hadoop.yarn.api.records.Resource;
import org.apache.hadoop.yarn.api.records.Token;
import org.apache.hadoop.yarn.exceptions.YarnRemoteException; import org.apache.hadoop.yarn.exceptions.YarnRemoteException;
import org.apache.hadoop.yarn.factories.RecordFactory; import org.apache.hadoop.yarn.factories.RecordFactory;
import org.apache.hadoop.yarn.factory.providers.RecordFactoryProvider; import org.apache.hadoop.yarn.factory.providers.RecordFactoryProvider;
@ -162,7 +162,7 @@ synchronized public StartContainerResponse startContainer(
StartContainerRequest request) StartContainerRequest request)
throws YarnRemoteException { throws YarnRemoteException {
ContainerToken containerToken = request.getContainerToken(); Token containerToken = request.getContainerToken();
ContainerTokenIdentifier tokenId = null; ContainerTokenIdentifier tokenId = null;
try { try {

View File

@ -34,7 +34,7 @@
import org.apache.hadoop.yarn.api.records.ApplicationAttemptId; import org.apache.hadoop.yarn.api.records.ApplicationAttemptId;
import org.apache.hadoop.yarn.api.records.ContainerId; import org.apache.hadoop.yarn.api.records.ContainerId;
import org.apache.hadoop.yarn.api.records.ContainerState; import org.apache.hadoop.yarn.api.records.ContainerState;
import org.apache.hadoop.yarn.api.records.ContainerToken; import org.apache.hadoop.yarn.api.records.Token;
import org.apache.hadoop.yarn.conf.YarnConfiguration; import org.apache.hadoop.yarn.conf.YarnConfiguration;
import org.apache.hadoop.yarn.exceptions.YarnRemoteException; import org.apache.hadoop.yarn.exceptions.YarnRemoteException;
import org.apache.hadoop.yarn.ipc.RPCUtil; import org.apache.hadoop.yarn.ipc.RPCUtil;
@ -74,7 +74,7 @@ private static final class MyContainerManagerImpl implements
Map<String, String> env = Map<String, String> env =
request.getContainerLaunchContext().getEnvironment(); request.getContainerLaunchContext().getEnvironment();
ContainerToken containerToken = request.getContainerToken(); Token containerToken = request.getContainerToken();
ContainerTokenIdentifier tokenId = null; ContainerTokenIdentifier tokenId = null;
try { try {

View File

@ -52,7 +52,6 @@
import org.apache.hadoop.yarn.api.records.ApplicationReport; import org.apache.hadoop.yarn.api.records.ApplicationReport;
import org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext; import org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext;
import org.apache.hadoop.yarn.api.records.ContainerLaunchContext; import org.apache.hadoop.yarn.api.records.ContainerLaunchContext;
import org.apache.hadoop.yarn.api.records.DelegationToken;
import org.apache.hadoop.yarn.api.records.NodeReport; import org.apache.hadoop.yarn.api.records.NodeReport;
import org.apache.hadoop.yarn.api.records.QueueInfo; import org.apache.hadoop.yarn.api.records.QueueInfo;
import org.apache.hadoop.yarn.api.records.Resource; import org.apache.hadoop.yarn.api.records.Resource;
@ -244,7 +243,7 @@ private void checkTokenRenewal(UserGroupInformation owner,
new Text(owner.getUserName()), new Text(renewer.getUserName()), null); new Text(owner.getUserName()), new Text(renewer.getUserName()), null);
Token<?> token = Token<?> token =
new Token<RMDelegationTokenIdentifier>(tokenIdentifier, dtsm); new Token<RMDelegationTokenIdentifier>(tokenIdentifier, dtsm);
DelegationToken dToken = BuilderUtils.newDelegationToken( org.apache.hadoop.yarn.api.records.Token dToken = BuilderUtils.newDelegationToken(
token.getIdentifier(), token.getKind().toString(), token.getIdentifier(), token.getKind().toString(),
token.getPassword(), token.getService().toString()); token.getPassword(), token.getService().toString());
RenewDelegationTokenRequest request = RenewDelegationTokenRequest request =

View File

@ -57,7 +57,6 @@
import org.apache.hadoop.yarn.api.protocolrecords.GetDelegationTokenRequest; import org.apache.hadoop.yarn.api.protocolrecords.GetDelegationTokenRequest;
import org.apache.hadoop.yarn.api.protocolrecords.GetNewApplicationRequest; import org.apache.hadoop.yarn.api.protocolrecords.GetNewApplicationRequest;
import org.apache.hadoop.yarn.api.protocolrecords.RenewDelegationTokenRequest; import org.apache.hadoop.yarn.api.protocolrecords.RenewDelegationTokenRequest;
import org.apache.hadoop.yarn.api.records.DelegationToken;
import org.apache.hadoop.yarn.conf.YarnConfiguration; import org.apache.hadoop.yarn.conf.YarnConfiguration;
import org.apache.hadoop.yarn.exceptions.YarnRemoteException; import org.apache.hadoop.yarn.exceptions.YarnRemoteException;
import org.apache.hadoop.yarn.ipc.YarnRPC; import org.apache.hadoop.yarn.ipc.YarnRPC;
@ -120,7 +119,7 @@ public void testDelegationToken() throws IOException, InterruptedException {
loggedInUser.setAuthenticationMethod(AuthenticationMethod.KERBEROS); loggedInUser.setAuthenticationMethod(AuthenticationMethod.KERBEROS);
DelegationToken token = getDelegationToken(loggedInUser, clientRMService, org.apache.hadoop.yarn.api.records.Token token = getDelegationToken(loggedInUser, clientRMService,
loggedInUser.getShortUserName()); loggedInUser.getShortUserName());
long tokenFetchTime = System.currentTimeMillis(); long tokenFetchTime = System.currentTimeMillis();
LOG.info("Got delegation token at: " + tokenFetchTime); LOG.info("Got delegation token at: " + tokenFetchTime);
@ -350,14 +349,15 @@ public Server getServer(Class protocol, Object instance,
// Get the delegation token directly as it is a little difficult to setup // Get the delegation token directly as it is a little difficult to setup
// the kerberos based rpc. // the kerberos based rpc.
private DelegationToken getDelegationToken( private org.apache.hadoop.yarn.api.records.Token getDelegationToken(
final UserGroupInformation loggedInUser, final UserGroupInformation loggedInUser,
final ClientRMProtocol clientRMService, final String renewerString) final ClientRMProtocol clientRMService, final String renewerString)
throws IOException, InterruptedException { throws IOException, InterruptedException {
DelegationToken token = loggedInUser org.apache.hadoop.yarn.api.records.Token token = loggedInUser
.doAs(new PrivilegedExceptionAction<DelegationToken>() { .doAs(new PrivilegedExceptionAction<org.apache.hadoop.yarn.api.records.Token>() {
@Override @Override
public DelegationToken run() throws YarnRemoteException, IOException { public org.apache.hadoop.yarn.api.records.Token run()
throws YarnRemoteException, IOException {
GetDelegationTokenRequest request = Records GetDelegationTokenRequest request = Records
.newRecord(GetDelegationTokenRequest.class); .newRecord(GetDelegationTokenRequest.class);
request.setRenewer(renewerString); request.setRenewer(renewerString);
@ -369,7 +369,8 @@ public DelegationToken run() throws YarnRemoteException, IOException {
} }
private long renewDelegationToken(final UserGroupInformation loggedInUser, private long renewDelegationToken(final UserGroupInformation loggedInUser,
final ClientRMProtocol clientRMService, final DelegationToken dToken) final ClientRMProtocol clientRMService,
final org.apache.hadoop.yarn.api.records.Token dToken)
throws IOException, InterruptedException { throws IOException, InterruptedException {
long nextExpTime = loggedInUser.doAs(new PrivilegedExceptionAction<Long>() { long nextExpTime = loggedInUser.doAs(new PrivilegedExceptionAction<Long>() {
@Override @Override
@ -385,7 +386,8 @@ public Long run() throws YarnRemoteException, IOException {
} }
private void cancelDelegationToken(final UserGroupInformation loggedInUser, private void cancelDelegationToken(final UserGroupInformation loggedInUser,
final ClientRMProtocol clientRMService, final DelegationToken dToken) final ClientRMProtocol clientRMService,
final org.apache.hadoop.yarn.api.records.Token dToken)
throws IOException, InterruptedException { throws IOException, InterruptedException {
loggedInUser.doAs(new PrivilegedExceptionAction<Void>() { loggedInUser.doAs(new PrivilegedExceptionAction<Void>() {
@Override @Override
@ -399,7 +401,8 @@ public Void run() throws YarnRemoteException, IOException {
}); });
} }
private ClientRMProtocol getClientRMProtocolWithDT(DelegationToken token, private ClientRMProtocol getClientRMProtocolWithDT(
org.apache.hadoop.yarn.api.records.Token token,
final InetSocketAddress rmAddress, String user, final Configuration conf) { final InetSocketAddress rmAddress, String user, final Configuration conf) {
// Maybe consider converting to Hadoop token, serialize de-serialize etc // Maybe consider converting to Hadoop token, serialize de-serialize etc
// before trying to renew the token. // before trying to renew the token.

View File

@ -48,7 +48,6 @@
import org.apache.hadoop.yarn.api.records.Container; import org.apache.hadoop.yarn.api.records.Container;
import org.apache.hadoop.yarn.api.records.ContainerId; import org.apache.hadoop.yarn.api.records.ContainerId;
import org.apache.hadoop.yarn.api.records.ContainerState; import org.apache.hadoop.yarn.api.records.ContainerState;
import org.apache.hadoop.yarn.api.records.DelegationToken;
import org.apache.hadoop.yarn.api.records.ResourceRequest; import org.apache.hadoop.yarn.api.records.ResourceRequest;
import org.apache.hadoop.yarn.conf.YarnConfiguration; import org.apache.hadoop.yarn.conf.YarnConfiguration;
import org.apache.hadoop.yarn.security.client.RMDelegationTokenIdentifier; import org.apache.hadoop.yarn.security.client.RMDelegationTokenIdentifier;
@ -597,7 +596,8 @@ public void testRMDelegationTokenRestoredOnRMRestart() throws Exception {
when(request1.getRenewer()).thenReturn("renewer1"); when(request1.getRenewer()).thenReturn("renewer1");
GetDelegationTokenResponse response1 = GetDelegationTokenResponse response1 =
rm1.getClientRMService().getDelegationToken(request1); rm1.getClientRMService().getDelegationToken(request1);
DelegationToken delegationToken1 = response1.getRMDelegationToken(); org.apache.hadoop.yarn.api.records.Token delegationToken1 =
response1.getRMDelegationToken();
Token<RMDelegationTokenIdentifier> token1 = Token<RMDelegationTokenIdentifier> token1 =
ProtoUtils.convertFromProtoFormat(delegationToken1, null); ProtoUtils.convertFromProtoFormat(delegationToken1, null);
RMDelegationTokenIdentifier dtId1 = token1.decodeIdentifier(); RMDelegationTokenIdentifier dtId1 = token1.decodeIdentifier();
@ -635,7 +635,8 @@ public void testRMDelegationTokenRestoredOnRMRestart() throws Exception {
when(request2.getRenewer()).thenReturn("renewer2"); when(request2.getRenewer()).thenReturn("renewer2");
GetDelegationTokenResponse response2 = GetDelegationTokenResponse response2 =
rm1.getClientRMService().getDelegationToken(request2); rm1.getClientRMService().getDelegationToken(request2);
DelegationToken delegationToken2 = response2.getRMDelegationToken(); org.apache.hadoop.yarn.api.records.Token delegationToken2 =
response2.getRMDelegationToken();
Token<RMDelegationTokenIdentifier> token2 = Token<RMDelegationTokenIdentifier> token2 =
ProtoUtils.convertFromProtoFormat(delegationToken2, null); ProtoUtils.convertFromProtoFormat(delegationToken2, null);
RMDelegationTokenIdentifier dtId2 = token2.decodeIdentifier(); RMDelegationTokenIdentifier dtId2 = token2.decodeIdentifier();

View File

@ -36,7 +36,6 @@
import org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext; import org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext;
import org.apache.hadoop.yarn.api.records.Container; import org.apache.hadoop.yarn.api.records.Container;
import org.apache.hadoop.yarn.api.records.ContainerId; import org.apache.hadoop.yarn.api.records.ContainerId;
import org.apache.hadoop.yarn.api.records.ContainerToken;
import org.apache.hadoop.yarn.api.records.NodeId; import org.apache.hadoop.yarn.api.records.NodeId;
import org.apache.hadoop.yarn.api.records.Priority; import org.apache.hadoop.yarn.api.records.Priority;
import org.apache.hadoop.yarn.api.records.QueueInfo; import org.apache.hadoop.yarn.api.records.QueueInfo;

View File

@ -57,7 +57,6 @@
import org.apache.hadoop.yarn.api.protocolrecords.StopContainerResponse; import org.apache.hadoop.yarn.api.protocolrecords.StopContainerResponse;
import org.apache.hadoop.yarn.api.records.ApplicationAttemptId; import org.apache.hadoop.yarn.api.records.ApplicationAttemptId;
import org.apache.hadoop.yarn.api.records.ApplicationReport; import org.apache.hadoop.yarn.api.records.ApplicationReport;
import org.apache.hadoop.yarn.api.records.ClientToken;
import org.apache.hadoop.yarn.event.Dispatcher; import org.apache.hadoop.yarn.event.Dispatcher;
import org.apache.hadoop.yarn.event.DrainDispatcher; import org.apache.hadoop.yarn.event.DrainDispatcher;
import org.apache.hadoop.yarn.exceptions.YarnRemoteException; import org.apache.hadoop.yarn.exceptions.YarnRemoteException;
@ -222,7 +221,7 @@ protected void doSecureLogin() throws IOException {
GetApplicationReportResponse reportResponse = GetApplicationReportResponse reportResponse =
rm.getClientRMService().getApplicationReport(request); rm.getClientRMService().getApplicationReport(request);
ApplicationReport appReport = reportResponse.getApplicationReport(); ApplicationReport appReport = reportResponse.getApplicationReport();
ClientToken clientToken = appReport.getClientToken(); org.apache.hadoop.yarn.api.records.Token clientToken = appReport.getClientToken();
// Wait till AM is 'launched' // Wait till AM is 'launched'
int waitTime = 0; int waitTime = 0;

View File

@ -33,7 +33,6 @@
import org.apache.hadoop.util.ExitUtil; import org.apache.hadoop.util.ExitUtil;
import org.apache.hadoop.yarn.api.protocolrecords.GetDelegationTokenRequest; import org.apache.hadoop.yarn.api.protocolrecords.GetDelegationTokenRequest;
import org.apache.hadoop.yarn.api.protocolrecords.GetDelegationTokenResponse; import org.apache.hadoop.yarn.api.protocolrecords.GetDelegationTokenResponse;
import org.apache.hadoop.yarn.api.records.DelegationToken;
import org.apache.hadoop.yarn.conf.YarnConfiguration; import org.apache.hadoop.yarn.conf.YarnConfiguration;
import org.apache.hadoop.yarn.security.client.RMDelegationTokenIdentifier; import org.apache.hadoop.yarn.security.client.RMDelegationTokenIdentifier;
import org.apache.hadoop.yarn.server.resourcemanager.MockRM; import org.apache.hadoop.yarn.server.resourcemanager.MockRM;
@ -99,7 +98,8 @@ public void testRMDTMasterKeyStateOnRollingMasterKey() throws Exception {
when(request.getRenewer()).thenReturn("renewer1"); when(request.getRenewer()).thenReturn("renewer1");
GetDelegationTokenResponse response = GetDelegationTokenResponse response =
rm1.getClientRMService().getDelegationToken(request); rm1.getClientRMService().getDelegationToken(request);
DelegationToken delegationToken = response.getRMDelegationToken(); org.apache.hadoop.yarn.api.records.Token delegationToken =
response.getRMDelegationToken();
Token<RMDelegationTokenIdentifier> token1 = Token<RMDelegationTokenIdentifier> token1 =
ProtoUtils.convertFromProtoFormat(delegationToken, null); ProtoUtils.convertFromProtoFormat(delegationToken, null);
RMDelegationTokenIdentifier dtId1 = token1.decodeIdentifier(); RMDelegationTokenIdentifier dtId1 = token1.decodeIdentifier();

View File

@ -59,7 +59,6 @@
import org.apache.hadoop.yarn.api.records.Container; import org.apache.hadoop.yarn.api.records.Container;
import org.apache.hadoop.yarn.api.records.ContainerId; import org.apache.hadoop.yarn.api.records.ContainerId;
import org.apache.hadoop.yarn.api.records.ContainerLaunchContext; import org.apache.hadoop.yarn.api.records.ContainerLaunchContext;
import org.apache.hadoop.yarn.api.records.ContainerToken;
import org.apache.hadoop.yarn.api.records.LocalResource; import org.apache.hadoop.yarn.api.records.LocalResource;
import org.apache.hadoop.yarn.api.records.Resource; import org.apache.hadoop.yarn.api.records.Resource;
import org.apache.hadoop.yarn.api.records.ResourceRequest; import org.apache.hadoop.yarn.api.records.ResourceRequest;
@ -153,7 +152,8 @@ private void testAuthenticatedUser() throws IOException,
final ContainerId containerID = allocatedContainer.getId(); final ContainerId containerID = allocatedContainer.getId();
UserGroupInformation authenticatedUser = UserGroupInformation UserGroupInformation authenticatedUser = UserGroupInformation
.createRemoteUser(containerID.toString()); .createRemoteUser(containerID.toString());
ContainerToken containerToken = allocatedContainer.getContainerToken(); org.apache.hadoop.yarn.api.records.Token containerToken =
allocatedContainer.getContainerToken();
Token<ContainerTokenIdentifier> token = new Token<ContainerTokenIdentifier>( Token<ContainerTokenIdentifier> token = new Token<ContainerTokenIdentifier>(
containerToken.getIdentifier().array(), containerToken.getPassword() containerToken.getIdentifier().array(), containerToken.getPassword()
.array(), new Text(containerToken.getKind()), new Text( .array(), new Text(containerToken.getKind()), new Text(
@ -212,7 +212,8 @@ private void testMaliceUser() throws IOException, InterruptedException,
// Now talk to the NM for launching the container with modified resource // Now talk to the NM for launching the container with modified resource
ContainerToken containerToken = allocatedContainer.getContainerToken(); org.apache.hadoop.yarn.api.records.Token containerToken =
allocatedContainer.getContainerToken();
ContainerTokenIdentifier originalContainerTokenId = ContainerTokenIdentifier originalContainerTokenId =
BuilderUtils.newContainerTokenIdentifier(containerToken); BuilderUtils.newContainerTokenIdentifier(containerToken);
@ -327,7 +328,8 @@ private void testExpiredTokens() throws IOException, InterruptedException,
// Now talk to the NM for launching the container with modified containerID // Now talk to the NM for launching the container with modified containerID
final ContainerId containerID = allocatedContainer.getId(); final ContainerId containerID = allocatedContainer.getId();
ContainerToken containerToken = allocatedContainer.getContainerToken(); org.apache.hadoop.yarn.api.records.Token containerToken =
allocatedContainer.getContainerToken();
final ContainerTokenIdentifier tokenId = final ContainerTokenIdentifier tokenId =
BuilderUtils.newContainerTokenIdentifier(containerToken); BuilderUtils.newContainerTokenIdentifier(containerToken);