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

(cherry picked from commit 60656bceca)
This commit is contained in:
Jason Lowe 2018-02-05 17:16:04 -06:00
parent 35247cca87
commit 07f779483c
2 changed files with 5 additions and 20 deletions

View File

@ -652,9 +652,8 @@ public class MiniYARNCluster extends CompositeService {
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.api.records.ResourceUtilization;
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 class TestMiniYarnClusterNodeUtilization {
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 class TestMiniYarnClusterNodeUtilization {
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 class TestMiniYarnClusterNodeUtilization {
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);