YARN-536. Removed the unused objects ContainerStatus and ContainerStatus from Container which also don't belong to the container. Contributed by Xuan Gong.

svn merge --ignore-ancestry -c 1464271 ../../trunk/


git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/branch-2@1464272 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Vinod Kumar Vavilapalli 2013-04-04 03:43:04 +00:00
parent b36a96aea2
commit 2190ac6fd9
10 changed files with 25 additions and 129 deletions

View File

@ -11,6 +11,9 @@ Release 2.0.5-beta - UNRELEASED
YARN-440. Flatten RegisterNodeManagerResponse. (Xuan Gong via sseth) YARN-440. Flatten RegisterNodeManagerResponse. (Xuan Gong via sseth)
YARN-536. Removed the unused objects ContainerStatus and ContainerStatus from
Container which also don't belong to the container. (Xuan Gong via vinodkv)
NEW FEATURES NEW FEATURES
IMPROVEMENTS IMPROVEMENTS

View File

@ -124,18 +124,6 @@ public interface Container extends Comparable<Container> {
@Unstable @Unstable
void setPriority(Priority priority); void setPriority(Priority priority);
/**
* Get the current <code>ContainerState</code> of the container.
* @return current <code>ContainerState</code> of the container
*/
@Public
@Stable
ContainerState getState();
@Private
@Unstable
void setState(ContainerState state);
/** /**
* Get the <code>ContainerToken</code> for the container. * Get the <code>ContainerToken</code> for the container.
* @return <code>ContainerToken</code> for the container * @return <code>ContainerToken</code> for the container
@ -147,16 +135,4 @@ public interface Container extends Comparable<Container> {
@Private @Private
@Unstable @Unstable
void setContainerToken(ContainerToken containerToken); void setContainerToken(ContainerToken containerToken);
/**
* Get the <code>ContainerStatus</code> of the container.
* @return <code>ContainerStatus</code> of the container
*/
@Public
@Stable
ContainerStatus getContainerStatus();
@Private
@Unstable
void setContainerStatus(ContainerStatus containerStatus);
} }

View File

@ -21,8 +21,6 @@ package org.apache.hadoop.yarn.api.records.impl.pb;
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.ContainerState;
import org.apache.hadoop.yarn.api.records.ContainerStatus;
import org.apache.hadoop.yarn.api.records.ContainerToken; 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;
@ -31,12 +29,9 @@ import org.apache.hadoop.yarn.api.records.Resource;
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;
import org.apache.hadoop.yarn.proto.YarnProtos.ContainerStateProto;
import org.apache.hadoop.yarn.proto.YarnProtos.ContainerStatusProto;
import org.apache.hadoop.yarn.proto.YarnProtos.NodeIdProto; import org.apache.hadoop.yarn.proto.YarnProtos.NodeIdProto;
import org.apache.hadoop.yarn.proto.YarnProtos.PriorityProto; import org.apache.hadoop.yarn.proto.YarnProtos.PriorityProto;
import org.apache.hadoop.yarn.proto.YarnProtos.ResourceProto; import org.apache.hadoop.yarn.proto.YarnProtos.ResourceProto;
import org.apache.hadoop.yarn.util.ProtoUtils;
public class ContainerPBImpl extends ProtoBase<ContainerProto> implements Container { public class ContainerPBImpl extends ProtoBase<ContainerProto> implements Container {
@ -49,7 +44,6 @@ public class ContainerPBImpl extends ProtoBase<ContainerProto> implements Contai
private Resource resource = null; private Resource resource = null;
private Priority priority = null; private Priority priority = null;
private ContainerToken containerToken = null; private ContainerToken containerToken = null;
private ContainerStatus containerStatus = null;
public ContainerPBImpl() { public ContainerPBImpl() {
builder = ContainerProto.newBuilder(); builder = ContainerProto.newBuilder();
@ -94,11 +88,6 @@ public class ContainerPBImpl extends ProtoBase<ContainerProto> implements Contai
builder.getContainerToken())) { builder.getContainerToken())) {
builder.setContainerToken(convertToProtoFormat(this.containerToken)); builder.setContainerToken(convertToProtoFormat(this.containerToken));
} }
if (this.containerStatus != null
&& !((ContainerStatusPBImpl) this.containerStatus).getProto().equals(
builder.getContainerStatus())) {
builder.setContainerStatus(convertToProtoFormat(this.containerStatus));
}
} }
private void mergeLocalToProto() { private void mergeLocalToProto() {
@ -116,25 +105,6 @@ public class ContainerPBImpl extends ProtoBase<ContainerProto> implements Contai
viaProto = false; viaProto = false;
} }
@Override
public ContainerState getState() {
ContainerProtoOrBuilder p = viaProto ? proto : builder;
if (!p.hasState()) {
return null;
}
return convertFromProtoFormat(p.getState());
}
@Override
public void setState(ContainerState state) {
maybeInitBuilder();
if (state == null) {
builder.clearState();
return;
}
builder.setState(convertToProtoFormat(state));
}
@Override @Override
public ContainerId getId() { public ContainerId getId() {
ContainerProtoOrBuilder p = viaProto ? proto : builder; ContainerProtoOrBuilder p = viaProto ? proto : builder;
@ -260,35 +230,6 @@ public class ContainerPBImpl extends ProtoBase<ContainerProto> implements Contai
this.containerToken = containerToken; this.containerToken = containerToken;
} }
@Override
public ContainerStatus getContainerStatus() {
ContainerProtoOrBuilder p = viaProto ? proto : builder;
if (this.containerStatus != null) {
return this.containerStatus;
}
if (!p.hasContainerStatus()) {
return null;
}
this.containerStatus = convertFromProtoFormat(p.getContainerStatus());
return this.containerStatus;
}
@Override
public void setContainerStatus(ContainerStatus containerStatus) {
maybeInitBuilder();
if (containerStatus == null)
builder.clearContainerStatus();
this.containerStatus = containerStatus;
}
private ContainerStateProto convertToProtoFormat(ContainerState e) {
return ProtoUtils.convertToProtoFormat(e);
}
private ContainerState convertFromProtoFormat(ContainerStateProto e) {
return ProtoUtils.convertFromProtoFormat(e);
}
private ContainerIdPBImpl convertFromProtoFormat(ContainerIdProto p) { private ContainerIdPBImpl convertFromProtoFormat(ContainerIdProto p) {
return new ContainerIdPBImpl(p); return new ContainerIdPBImpl(p);
} }
@ -329,14 +270,6 @@ public class ContainerPBImpl extends ProtoBase<ContainerProto> implements Contai
return ((ContainerTokenPBImpl)t).getProto(); return ((ContainerTokenPBImpl)t).getProto();
} }
private ContainerStatusPBImpl convertFromProtoFormat(ContainerStatusProto p) {
return new ContainerStatusPBImpl(p);
}
private ContainerStatusProto convertToProtoFormat(ContainerStatus t) {
return ((ContainerStatusPBImpl)t).getProto();
}
public String toString() { public String toString() {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Container: ["); sb.append("Container: [");
@ -345,9 +278,7 @@ public class ContainerPBImpl extends ProtoBase<ContainerProto> implements Contai
sb.append("NodeHttpAddress: ").append(getNodeHttpAddress()).append(", "); sb.append("NodeHttpAddress: ").append(getNodeHttpAddress()).append(", ");
sb.append("Resource: ").append(getResource()).append(", "); sb.append("Resource: ").append(getResource()).append(", ");
sb.append("Priority: ").append(getPriority()).append(", "); sb.append("Priority: ").append(getPriority()).append(", ");
sb.append("State: ").append(getState()).append(", ");
sb.append("Token: ").append(getContainerToken()).append(", "); sb.append("Token: ").append(getContainerToken()).append(", ");
sb.append("Status: ").append(getContainerStatus());
sb.append("]"); sb.append("]");
return sb.toString(); return sb.toString();
} }
@ -357,16 +288,7 @@ public class ContainerPBImpl extends ProtoBase<ContainerProto> implements Contai
public int compareTo(Container other) { public int compareTo(Container other) {
if (this.getId().compareTo(other.getId()) == 0) { if (this.getId().compareTo(other.getId()) == 0) {
if (this.getNodeId().compareTo(other.getNodeId()) == 0) { if (this.getNodeId().compareTo(other.getNodeId()) == 0) {
if (this.getResource().compareTo(other.getResource()) == 0) {
if (this.getState().compareTo(other.getState()) == 0) {
//ContainerToken
return this.getState().compareTo(other.getState());
} else {
return this.getState().compareTo(other.getState());
}
} else {
return this.getResource().compareTo(other.getResource()); return this.getResource().compareTo(other.getResource());
}
} else { } else {
return this.getNodeId().compareTo(other.getNodeId()); return this.getNodeId().compareTo(other.getNodeId());
} }

View File

@ -67,9 +67,7 @@ message ContainerProto {
optional string node_http_address = 3; optional string node_http_address = 3;
optional ResourceProto resource = 4; optional ResourceProto resource = 4;
optional PriorityProto priority = 5; optional PriorityProto priority = 5;
optional ContainerStateProto state = 6; optional hadoop.common.TokenProto container_token = 6;
optional hadoop.common.TokenProto container_token = 7;
optional ContainerStatusProto container_status = 8;
} }
enum YarnApplicationStateProto { enum YarnApplicationStateProto {

View File

@ -608,7 +608,6 @@ public class ApplicationMaster {
+ ", containerNode=" + allocatedContainer.getNodeId().getHost() + ", containerNode=" + allocatedContainer.getNodeId().getHost()
+ ":" + allocatedContainer.getNodeId().getPort() + ":" + allocatedContainer.getNodeId().getPort()
+ ", containerNodeURI=" + allocatedContainer.getNodeHttpAddress() + ", containerNodeURI=" + allocatedContainer.getNodeHttpAddress()
+ ", containerState" + allocatedContainer.getState()
+ ", containerResourceMemory" + ", containerResourceMemory"
+ allocatedContainer.getResource().getMemory()); + allocatedContainer.getResource().getMemory());
// + ", containerToken" // + ", containerToken"

View File

@ -246,11 +246,6 @@ public class BuilderUtils {
container.setNodeHttpAddress(nodeHttpAddress); container.setNodeHttpAddress(nodeHttpAddress);
container.setResource(resource); container.setResource(resource);
container.setPriority(priority); container.setPriority(priority);
container.setState(ContainerState.NEW);
ContainerStatus containerStatus = Records.newRecord(ContainerStatus.class);
containerStatus.setContainerId(containerId);
containerStatus.setState(ContainerState.NEW);
container.setContainerStatus(containerStatus);
container.setContainerToken(containerToken); container.setContainerToken(containerToken);
return container; return container;
} }

View File

@ -288,14 +288,9 @@ public class RMContainerImpl implements RMContainer {
public void transition(RMContainerImpl container, RMContainerEvent event) { public void transition(RMContainerImpl container, RMContainerEvent event) {
RMContainerFinishedEvent finishedEvent = (RMContainerFinishedEvent) event; RMContainerFinishedEvent finishedEvent = (RMContainerFinishedEvent) event;
// Update container-status for diagnostics. Today we completely
// replace it on finish. We may just need to update diagnostics.
container.container.setContainerStatus(finishedEvent
.getRemoteContainerStatus());
// Inform AppAttempt // Inform AppAttempt
container.eventHandler.handle(new RMAppAttemptContainerFinishedEvent( container.eventHandler.handle(new RMAppAttemptContainerFinishedEvent(
container.appAttemptId, container.container.getContainerStatus())); container.appAttemptId, finishedEvent.getRemoteContainerStatus()));
} }
} }

View File

@ -26,7 +26,6 @@ import java.util.Map;
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.Container;
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.NodeHealthStatus; import org.apache.hadoop.yarn.api.records.NodeHealthStatus;
@ -71,11 +70,11 @@ public class MockNM {
this.resourceTracker = resourceTracker; this.resourceTracker = resourceTracker;
} }
public void containerStatus(Container container) throws Exception { public void containerStatus(ContainerStatus containerStatus) throws Exception {
Map<ApplicationId, List<ContainerStatus>> conts = Map<ApplicationId, List<ContainerStatus>> conts =
new HashMap<ApplicationId, List<ContainerStatus>>(); new HashMap<ApplicationId, List<ContainerStatus>>();
conts.put(container.getId().getApplicationAttemptId().getApplicationId(), conts.put(containerStatus.getContainerId().getApplicationAttemptId().getApplicationId(),
Arrays.asList(new ContainerStatus[] { container.getContainerStatus() })); Arrays.asList(new ContainerStatus[] { containerStatus }));
nodeHeartbeat(conts, true); nodeHeartbeat(conts, true);
} }

View File

@ -76,6 +76,9 @@ public class NodeManager implements ContainerManager {
final Map<ApplicationId, List<Container>> containers = final Map<ApplicationId, List<Container>> containers =
new HashMap<ApplicationId, List<Container>>(); new HashMap<ApplicationId, List<Container>>();
final Map<Container, ContainerStatus> containerStatusMap =
new HashMap<Container, ContainerStatus>();
public NodeManager(String hostName, int containerManagerPort, int httpPort, public NodeManager(String hostName, int containerManagerPort, int httpPort,
String rackName, Resource capability, String rackName, Resource capability,
ResourceTrackerService resourceTrackerService, RMContext rmContext) ResourceTrackerService resourceTrackerService, RMContext rmContext)
@ -137,7 +140,7 @@ public class NodeManager implements ContainerManager {
List<ContainerStatus> containerStatuses = new ArrayList<ContainerStatus>(); List<ContainerStatus> containerStatuses = new ArrayList<ContainerStatus>();
for (List<Container> appContainers : containers.values()) { for (List<Container> appContainers : containers.values()) {
for (Container container : appContainers) { for (Container container : appContainers) {
containerStatuses.add(container.getContainerStatus()); containerStatuses.add(containerStatusMap.get(container));
} }
} }
return containerStatuses; return containerStatuses;
@ -189,8 +192,11 @@ public class NodeManager implements ContainerManager {
null, null // DKDC - Doesn't matter null, null // DKDC - Doesn't matter
); );
ContainerStatus containerStatus =
BuilderUtils.newContainerStatus(container.getId(), ContainerState.NEW,
"", -1000);
applicationContainers.add(container); applicationContainers.add(container);
containerStatusMap.put(container, containerStatus);
Resources.subtractFrom(available, containerLaunchContext.getResource()); Resources.subtractFrom(available, containerLaunchContext.getResource());
Resources.addTo(used, containerLaunchContext.getResource()); Resources.addTo(used, containerLaunchContext.getResource());
@ -223,7 +229,9 @@ public class NodeManager implements ContainerManager {
List<Container> applicationContainers = containers.get(applicationId); List<Container> applicationContainers = containers.get(applicationId);
for (Container c : applicationContainers) { for (Container c : applicationContainers) {
if (c.getId().compareTo(containerID) == 0) { if (c.getId().compareTo(containerID) == 0) {
c.setState(ContainerState.COMPLETE); ContainerStatus containerStatus = containerStatusMap.get(c);
containerStatus.setState(ContainerState.COMPLETE);
containerStatusMap.put(c, containerStatus);
} }
} }
@ -277,8 +285,8 @@ public class NodeManager implements ContainerManager {
} }
GetContainerStatusResponse response = GetContainerStatusResponse response =
recordFactory.newRecordInstance(GetContainerStatusResponse.class); recordFactory.newRecordInstance(GetContainerStatusResponse.class);
if (container != null && container.getContainerStatus() != null) { if (container != null && containerStatusMap.get(container).getState() != null) {
response.setStatus(container.getContainerStatus()); response.setStatus(containerStatusMap.get(container));
} }
return response; return response;
} }

View File

@ -139,8 +139,9 @@ public class TestFifoScheduler {
Container c1 = allocated1.get(0); Container c1 = allocated1.get(0);
Assert.assertEquals(GB, c1.getResource().getMemory()); Assert.assertEquals(GB, c1.getResource().getMemory());
c1.setState(ContainerState.COMPLETE); ContainerStatus containerStatus = BuilderUtils.newContainerStatus(
nm1.containerStatus(c1); c1.getId(), ContainerState.COMPLETE, "", 0);
nm1.containerStatus(containerStatus);
int waitCount = 0; int waitCount = 0;
while (attempt1.getJustFinishedContainers().size() < 1 while (attempt1.getJustFinishedContainers().size() < 1
&& waitCount++ != 20) { && waitCount++ != 20) {