YARN-7203. Add container ExecutionType into ContainerReport. (Botong Huang via asuresh)

This commit is contained in:
Arun Suresh 2017-09-18 15:49:31 -07:00
parent 3cf3540f19
commit 56ef5279c1
5 changed files with 49 additions and 1 deletions

View File

@ -52,6 +52,18 @@ public abstract class ContainerReport {
long creationTime, long finishTime, String diagnosticInfo, String logUrl, long creationTime, long finishTime, String diagnosticInfo, String logUrl,
int containerExitStatus, ContainerState containerState, int containerExitStatus, ContainerState containerState,
String nodeHttpAddress) { String nodeHttpAddress) {
return newInstance(containerId, allocatedResource, assignedNode, priority,
creationTime, finishTime, diagnosticInfo, logUrl, containerExitStatus,
containerState, nodeHttpAddress, ExecutionType.GUARANTEED);
}
@Private
@Unstable
public static ContainerReport newInstance(ContainerId containerId,
Resource allocatedResource, NodeId assignedNode, Priority priority,
long creationTime, long finishTime, String diagnosticInfo, String logUrl,
int containerExitStatus, ContainerState containerState,
String nodeHttpAddress, ExecutionType executionType) {
ContainerReport report = Records.newRecord(ContainerReport.class); ContainerReport report = Records.newRecord(ContainerReport.class);
report.setContainerId(containerId); report.setContainerId(containerId);
report.setAllocatedResource(allocatedResource); report.setAllocatedResource(allocatedResource);
@ -64,6 +76,7 @@ public abstract class ContainerReport {
report.setContainerExitStatus(containerExitStatus); report.setContainerExitStatus(containerExitStatus);
report.setContainerState(containerState); report.setContainerState(containerState);
report.setNodeHttpAddress(nodeHttpAddress); report.setNodeHttpAddress(nodeHttpAddress);
report.setExecutionType(executionType);
return report; return report;
} }
@ -209,4 +222,17 @@ public abstract class ContainerReport {
@Private @Private
@Unstable @Unstable
public abstract void setNodeHttpAddress(String nodeHttpAddress); public abstract void setNodeHttpAddress(String nodeHttpAddress);
/**
* Get the execution type of the container.
*
* @return the execution type of the container
*/
@Public
@Unstable
public abstract ExecutionType getExecutionType();
@Private
@Unstable
public abstract void setExecutionType(ExecutionType executionType);
} }

View File

@ -137,6 +137,7 @@ message ContainerReportProto {
optional int32 container_exit_status = 9; optional int32 container_exit_status = 9;
optional ContainerStateProto container_state = 10; optional ContainerStateProto container_state = 10;
optional string node_http_address = 11; optional string node_http_address = 11;
optional ExecutionTypeProto executionType = 12 [default = GUARANTEED];
} }
enum YarnApplicationStateProto { enum YarnApplicationStateProto {

View File

@ -601,6 +601,7 @@ public class TestYarnClient {
Assert.assertEquals(report.getContainerId().toString(), Assert.assertEquals(report.getContainerId().toString(),
(ContainerId.newContainerId(expectedReports.get(0) (ContainerId.newContainerId(expectedReports.get(0)
.getCurrentApplicationAttemptId(), 3)).toString()); .getCurrentApplicationAttemptId(), 3)).toString());
Assert.assertNotNull(report.getExecutionType());
client.stop(); client.stop();
} }

View File

@ -21,6 +21,7 @@ package org.apache.hadoop.yarn.api.records.impl.pb;
import org.apache.hadoop.yarn.api.records.ContainerId; import org.apache.hadoop.yarn.api.records.ContainerId;
import org.apache.hadoop.yarn.api.records.ContainerReport; import org.apache.hadoop.yarn.api.records.ContainerReport;
import org.apache.hadoop.yarn.api.records.ContainerState; import org.apache.hadoop.yarn.api.records.ContainerState;
import org.apache.hadoop.yarn.api.records.ExecutionType;
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;
@ -355,4 +356,23 @@ public class ContainerReportPBImpl extends ContainerReport {
} }
builder.setNodeHttpAddress(nodeHttpAddress); builder.setNodeHttpAddress(nodeHttpAddress);
} }
@Override
public ExecutionType getExecutionType() {
ContainerReportProtoOrBuilder p = viaProto ? proto : builder;
if (!p.hasExecutionType()) {
return ExecutionType.GUARANTEED; // default value
}
return ProtoUtils.convertFromProtoFormat(p.getExecutionType());
}
@Override
public void setExecutionType(ExecutionType executionType) {
maybeInitBuilder();
if (executionType == null) {
builder.clearExecutionType();
return;
}
builder.setExecutionType(ProtoUtils.convertToProtoFormat(executionType));
}
} }

View File

@ -756,7 +756,7 @@ public class RMContainerImpl implements RMContainer {
this.getAllocatedSchedulerKey().getPriority(), this.getCreationTime(), this.getAllocatedSchedulerKey().getPriority(), this.getCreationTime(),
this.getFinishTime(), this.getDiagnosticsInfo(), this.getLogURL(), this.getFinishTime(), this.getDiagnosticsInfo(), this.getLogURL(),
this.getContainerExitStatus(), this.getContainerState(), this.getContainerExitStatus(), this.getContainerState(),
this.getNodeHttpAddress()); this.getNodeHttpAddress(), this.getExecutionType());
} finally { } finally {
this.readLock.unlock(); this.readLock.unlock();
} }