private List<ResourceRequest> cloneAsks() { List<ResourceRequest> askList = new ArrayList<ResourceRequest>(ask.size()); for(ResourceRequest r : ask) { // create a copy of ResourceRequest as we might change it while the // RPC layer is using it to send info across askList.add(ResourceRequest.clone(r)); } return askList; }
public ResourceRequest cloneResourceRequest(ResourceRequest request) { ResourceRequest newRequest = ResourceRequest.clone(request); newRequest.setNumContainers(1); return newRequest; }
private static List<ResourceRequest> cloneResourceRequests( List<ResourceRequest> reqs) { List<ResourceRequest> cloneReqs = new ArrayList<>(); for (ResourceRequest req : reqs) { cloneReqs.add(ResourceRequest.clone(req)); } return cloneReqs; }
private void updateResourceRequest(ResourceRequest request) { request.setNumContainers(request.getNumContainers() - 1); // Note this for next interaction with ResourceManager ask.remove(request); // clone to ensure the RM doesn't manipulate the same obj ask.add(ResourceRequest.clone(request)); if(LOG.isDebugEnabled()) { LOG.debug("updateResourceRequest:" + " application=" + applicationId + " request=" + request); } }
private synchronized void addResourceRequest( SchedulerRequestKey schedulerKey, Map<String, ResourceRequest> requests, String resourceName, Resource capability) { ResourceRequest request = requests.get(resourceName); if (request == null) { request = org.apache.hadoop.yarn.server.utils.BuilderUtils.newResourceRequest( schedulerKey.getPriority(), resourceName, capability, 1); requests.put(resourceName, request); } else { request.setNumContainers(request.getNumContainers() + 1); } if (request.getNodeLabelExpression() == null) { request.setNodeLabelExpression(RMNodeLabelsManager.NO_LABEL); } // Note this down for next interaction with ResourceManager ask.remove(request); // clone to ensure the RM doesn't manipulate the same obj ask.add(ResourceRequest.clone(request)); if (LOG.isDebugEnabled()) { LOG.debug("addResourceRequest: applicationId=" + applicationId.getId() + " priority=" + schedulerKey.getPriority().getPriority() + " resourceName=" + resourceName + " capability=" + capability + " numContainers=" + request.getNumContainers() + " #asks=" + ask.size()); } }
@SuppressWarnings("deprecation") @Test public void testRMAppSubmitAMContainerResourceRequest() throws Exception { asContext.setResource(Resources.createResource(1024)); asContext.setAMContainerResourceRequests(null); ResourceRequest req = ResourceRequest.newInstance(Priority.newInstance(0), ResourceRequest.ANY, Resources.createResource(1025), 1, true); req.setNodeLabelExpression(RMNodeLabelsManager.NO_LABEL); asContext.setAMContainerResourceRequest(ResourceRequest.clone(req)); // getAMContainerResourceRequests uses a singleton list of // getAMContainerResourceRequest Assert.assertEquals(req, asContext.getAMContainerResourceRequest()); Assert.assertEquals(req, asContext.getAMContainerResourceRequests().get(0)); Assert.assertEquals(1, asContext.getAMContainerResourceRequests().size()); RMApp app = testRMAppSubmit(); // setAMContainerResourceRequest has priority over setResource Assert.assertEquals(Collections.singletonList(req), app.getAMResourceRequests()); }