/** * Process resource update on a node. */ public synchronized void updateNodeResource(RMNode nm, ResourceOption resourceOption) { SchedulerNode node = getSchedulerNode(nm.getNodeID()); Resource newResource = resourceOption.getResource(); Resource oldResource = node.getTotalResource(); if(!oldResource.equals(newResource)) { // Log resource change LOG.info("Update resource on node: " + node.getNodeName() + " from: " + oldResource + ", to: " + newResource); nodes.remove(nm.getNodeID()); updateMaximumAllocation(node, false); // update resource to node node.setTotalResource(newResource); nodes.put(nm.getNodeID(), (N)node); updateMaximumAllocation(node, true); // update resource to clusterResource Resources.subtractFrom(clusterResource, oldResource); Resources.addTo(clusterResource, newResource); } else { // Log resource change LOG.warn("Update resource on node: " + node.getNodeName() + " with the same resource: " + newResource); } }
/** * Process resource update on a node. */ public synchronized void updateNodeResource(RMNode nm, ResourceOption resourceOption) { SchedulerNode node = getSchedulerNode(nm.getNodeID()); Resource newResource = resourceOption.getResource(); Resource oldResource = node.getTotalResource(); if(!oldResource.equals(newResource)) { // Log resource change LOG.info("Update resource on node: " + node.getNodeName() + " from: " + oldResource + ", to: " + newResource); nodes.remove(nm.getNodeID()); updateMaximumAllocation(node, false); // update resource to node node.setTotalResource(newResource); nodes.put(nm.getNodeID(), (N)node); updateMaximumAllocation(node, true); // update resource to clusterResource Resources.subtractFrom(clusterResource, oldResource); Resources.addTo(clusterResource, newResource); } else { // Log resource change LOG.warn("Update resource on node: " + node.getNodeName() + " with the same resource: " + newResource); } }
/** * Process resource update on a node. */ public void updateNodeResource(RMNode nm, ResourceOption resourceOption) { try { writeLock.lock(); SchedulerNode node = getSchedulerNode(nm.getNodeID()); Resource newResource = resourceOption.getResource(); Resource oldResource = node.getTotalResource(); if (!oldResource.equals(newResource)) { // Notify NodeLabelsManager about this change rmContext.getNodeLabelManager().updateNodeResource(nm.getNodeID(), newResource); // Log resource change LOG.info("Update resource on node: " + node.getNodeName() + " from: " + oldResource + ", to: " + newResource); nodeTracker.removeNode(nm.getNodeID()); // update resource to node node.updateTotalResource(newResource); nodeTracker.addNode((N) node); } else{ // Log resource change LOG.warn("Update resource on node: " + node.getNodeName() + " with the same resource: " + newResource); } } finally { writeLock.unlock(); } }
/** * Sanity check increase/decrease request, and return * SchedulerContainerResourceChangeRequest according to given * UpdateContainerRequest. * * <pre> * - Returns non-null value means validation succeeded * - Throw exception when any other error happens * </pre> */ private SchedContainerChangeRequest createSchedContainerChangeRequest( UpdateContainerRequest request, boolean increase) throws YarnException { ContainerId containerId = request.getContainerId(); RMContainer rmContainer = getRMContainer(containerId); if (null == rmContainer) { String msg = "Failed to get rmContainer for " + (increase ? "increase" : "decrease") + " request, with container-id=" + containerId; throw new InvalidResourceRequestException(msg); } SchedulerNode schedulerNode = getSchedulerNode(rmContainer.getAllocatedNode()); return new SchedContainerChangeRequest( this.rmContext, schedulerNode, rmContainer, request.getCapability()); }
" in state: " + rmContainer.getState() + " event:" + event); getSchedulerNode(rmContainer.getNodeId()).releaseContainer( rmContainer.getContainerId(), false);
private void completeOustandingUpdatesWhichAreReserved( RMContainer rmContainer, ContainerStatus containerStatus, RMContainerEventType event) { N schedulerNode = getSchedulerNode(rmContainer.getNodeId()); if (schedulerNode != null && schedulerNode.getReservedContainer() != null) { RMContainer resContainer = schedulerNode.getReservedContainer(); if (resContainer.getReservedSchedulerKey() != null) { ContainerId containerToUpdate = resContainer .getReservedSchedulerKey().getContainerToUpdate(); if (containerToUpdate != null && containerToUpdate.equals(containerStatus.getContainerId())) { completedContainerInternal(resContainer, ContainerStatus.newInstance(resContainer.getContainerId(), containerStatus.getState(), containerStatus .getDiagnostics(), containerStatus.getExitStatus()), event); } } } }
Assert.assertNotNull(context.getRMNodes().get(nodeId1)); Assert.assertTrue(scheduler.getSchedulerNode(nodeId1).getRMNode() == context.getRMNodes().get(nodeId1)); Assert.assertEquals(context.getRMNodes().get(nodeId1). Assert.assertTrue(scheduler.getSchedulerNode(nodeId1).getRMNode() == context.getRMNodes().get(nodeId1));
SchedulerNode schedulerNode1 = scheduler.getSchedulerNode(nm1.getNodeId());
SchedulerNode schedulerNode1 = scheduler.getSchedulerNode(nm1.getNodeId()); assertTrue( "SchedulerNode#toString is not in expected format",
SchedulerNode schedulerNode1 = scheduler.getSchedulerNode(nm1.getNodeId());
SchedulerNode schedulerNode1 = scheduler.getSchedulerNode(nm1.getNodeId()); assertTrue( "SchedulerNode#toString is not in expected format",