YARN-7849. TestMiniYarnClusterNodeUtilization#testUpdateNodeUtilization fails due to heartbeat sync error. Contributed by Botong Huang

This commit is contained in:
Jason Lowe 2018-02-05 17:16:04 -06:00
parent 33e6cdbd16
commit 60656bceca
2 changed files with 5 additions and 20 deletions

View File

@ -653,9 +653,8 @@ protected NodeStatus getSimulatedNodeStatus(NodeStatus currentStatus) {
if(nodeStatus == null) {
return currentStatus;
} else {
// Increment response ID, the RMNodeStatusEvent will not get recorded
// for a duplicate heartbeat
nodeStatus.setResponseId(nodeStatus.getResponseId() + 1);
// Use the same responseId for the custom node status
nodeStatus.setResponseId(currentStatus.getResponseId());
return nodeStatus;
}
}

View File

@ -32,9 +32,6 @@
import org.apache.hadoop.yarn.conf.YarnConfiguration;
import org.apache.hadoop.yarn.exceptions.YarnException;
import org.apache.hadoop.yarn.server.MiniYARNCluster.CustomNodeManager;
import org.apache.hadoop.yarn.server.api.ResourceTracker;
import org.apache.hadoop.yarn.server.api.ServerRMProxy;
import org.apache.hadoop.yarn.server.api.protocolrecords.NodeHeartbeatRequest;
import org.apache.hadoop.yarn.server.api.records.NodeHealthStatus;
import org.apache.hadoop.yarn.server.api.records.NodeStatus;
import org.apache.hadoop.yarn.server.nodemanager.NodeStatusUpdater;
@ -87,8 +84,7 @@ public void setup() {
assertFalse("RM never turned active", -1 == cluster.getActiveRMIndex());
nm = (CustomNodeManager)cluster.getNodeManager(0);
int responseId = 1;
nodeStatus = createNodeStatus(nm.getNMContext().getNodeId(), responseId,
nodeStatus = createNodeStatus(nm.getNMContext().getNodeId(), 0,
CONTAINER_PMEM_1, CONTAINER_VMEM_1, CONTAINER_CPU_1,
NODE_PMEM_1, NODE_VMEM_1, NODE_CPU_1);
nm.setNodeStatus(nodeStatus);
@ -105,23 +101,14 @@ public void testUpdateNodeUtilization()
assertTrue("NMs fail to connect to the RM",
cluster.waitForNodeManagersToConnect(10000));
// Simulate heartbeat using NodeStatus fixture
NodeHeartbeatRequest request =
NodeHeartbeatRequest.newInstance(nodeStatus, null, null, null);
ResourceTracker tracker =
ServerRMProxy.createRMProxy(conf, ResourceTracker.class);
tracker.nodeHeartbeat(request);
// Give the heartbeat time to propagate to the RM
verifySimulatedUtilization();
// Alter utilization
int responseId = 10;
nodeStatus = createNodeStatus(nm.getNMContext().getNodeId(), responseId,
nodeStatus = createNodeStatus(nm.getNMContext().getNodeId(), 0,
CONTAINER_PMEM_2, CONTAINER_VMEM_2, CONTAINER_CPU_2,
NODE_PMEM_2, NODE_VMEM_2, NODE_CPU_2);
nm.setNodeStatus(nodeStatus);
tracker.nodeHeartbeat(request);
// Give the heartbeat time to propagate to the RM
verifySimulatedUtilization();
@ -145,8 +132,7 @@ public void testMockNodeStatusHeartbeat()
verifySimulatedUtilization();
// Alter utilization
int responseId = 20;
nodeStatus = createNodeStatus(nm.getNMContext().getNodeId(), responseId,
nodeStatus = createNodeStatus(nm.getNMContext().getNodeId(), 0,
CONTAINER_PMEM_2, CONTAINER_VMEM_2, CONTAINER_CPU_2,
NODE_PMEM_2, NODE_VMEM_2, NODE_CPU_2);
nm.setNodeStatus(nodeStatus);