YARN-8346. Upgrading to 3.1 kills running containers with error 'Opportunistic container queue is full'. Contributed by Jason Lowe.
(cherry picked from commit 4cc0c9b0ba
)
This commit is contained in:
parent
05d905f586
commit
67842c56fe
|
@ -286,7 +286,7 @@ public class ContainerTokenIdentifier extends TokenIdentifier {
|
|||
*/
|
||||
public ContainerType getContainerType(){
|
||||
if (!proto.hasContainerType()) {
|
||||
return null;
|
||||
return ContainerType.TASK;
|
||||
}
|
||||
return convertFromProtoFormat(proto.getContainerType());
|
||||
}
|
||||
|
@ -297,7 +297,7 @@ public class ContainerTokenIdentifier extends TokenIdentifier {
|
|||
*/
|
||||
public ExecutionType getExecutionType(){
|
||||
if (!proto.hasExecutionType()) {
|
||||
return null;
|
||||
return ExecutionType.GUARANTEED;
|
||||
}
|
||||
return convertFromProtoFormat(proto.getExecutionType());
|
||||
}
|
||||
|
|
|
@ -36,6 +36,7 @@ import org.apache.hadoop.yarn.api.records.Priority;
|
|||
import org.apache.hadoop.yarn.api.records.Resource;
|
||||
import org.apache.hadoop.yarn.conf.YarnConfiguration;
|
||||
import org.apache.hadoop.yarn.nodelabels.CommonNodeLabelsManager;
|
||||
import org.apache.hadoop.yarn.proto.YarnSecurityTokenProtos.ContainerTokenIdentifierProto;
|
||||
import org.apache.hadoop.yarn.proto.YarnSecurityTokenProtos.YARNDelegationTokenIdentifierProto;
|
||||
import org.apache.hadoop.yarn.security.client.ClientToAMTokenIdentifier;
|
||||
import org.apache.hadoop.yarn.security.client.RMDelegationTokenIdentifier;
|
||||
|
@ -139,6 +140,30 @@ public class TestYARNTokenIdentifier {
|
|||
anotherToken.getClientName(), clientName);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testContainerTokenIdentifierProtoMissingFields()
|
||||
throws IOException {
|
||||
ContainerTokenIdentifierProto.Builder builder =
|
||||
ContainerTokenIdentifierProto.newBuilder();
|
||||
ContainerTokenIdentifierProto proto = builder.build();
|
||||
Assert.assertFalse(proto.hasContainerType());
|
||||
Assert.assertFalse(proto.hasExecutionType());
|
||||
Assert.assertFalse(proto.hasNodeLabelExpression());
|
||||
|
||||
byte[] tokenData = proto.toByteArray();
|
||||
DataInputBuffer dib = new DataInputBuffer();
|
||||
dib.reset(tokenData, tokenData.length);
|
||||
ContainerTokenIdentifier tid = new ContainerTokenIdentifier();
|
||||
tid.readFields(dib);
|
||||
|
||||
Assert.assertEquals("container type",
|
||||
ContainerType.TASK, tid.getContainerType());
|
||||
Assert.assertEquals("execution type",
|
||||
ExecutionType.GUARANTEED, tid.getExecutionType());
|
||||
Assert.assertEquals("node label expression",
|
||||
CommonNodeLabelsManager.NO_LABEL, tid.getNodeLabelExpression());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testContainerTokenIdentifier() throws IOException {
|
||||
ContainerId containerID = ContainerId.newContainerId(
|
||||
|
|
Loading…
Reference in New Issue