/** * Check to see if an AllocateRequest exists in the Map for the specified sub * cluster. If not found, create a new one, copy the value of responseId and * progress from the orignialAMRequest, save it in the specified Map and * return the new instance. If found, just return the old instance. */ private static AllocateRequest findOrCreateAllocateRequestForSubCluster( SubClusterId subClusterId, AllocateRequest originalAMRequest, Map<SubClusterId, AllocateRequest> requestMap) { AllocateRequest newRequest = null; if (requestMap.containsKey(subClusterId)) { newRequest = requestMap.get(subClusterId); } else { newRequest = createAllocateRequest(); newRequest.setResponseId(originalAMRequest.getResponseId()); newRequest.setProgress(originalAMRequest.getProgress()); requestMap.put(subClusterId, newRequest); } return newRequest; }
@Override public AllocateResponse allocate(AllocateRequest request) throws YarnException, IOException { AllocateResponse response = AllocateResponse.newInstance( request.getResponseId(), Collections.<ContainerStatus>emptyList(), Collections.<Container>emptyList(), Collections.<NodeReport>emptyList(), Resource.newInstance(512000, 1024), null, 10, null, Collections.<NMToken>emptyList()); response.setCollectorInfo(collectorInfo); return response; } }
+ request.getResponseId() + " when we are expecting " + this.lastAllocateResponse.getResponseId()); request.getResponseId()) == this.lastAllocateResponse .getResponseId()) { } else if (request.getResponseId() != this.lastAllocateResponse .getResponseId()) { throw new InvalidApplicationMasterRequestException( AMRMClientUtils.assembleInvalidResponseIdExceptionMessage(attemptId, this.lastAllocateResponse.getResponseId(), request.getResponseId()));
@Override public AllocateResponse allocate(AllocateRequest request) throws YarnException, IOException { Assert.assertEquals("response ID mismatch", responseId, request.getResponseId()); ++responseId; org.apache.hadoop.yarn.api.records.Token yarnToken = null; if (amToken != null) { yarnToken = org.apache.hadoop.yarn.api.records.Token.newInstance( amToken.getIdentifier(), amToken.getKind().toString(), amToken.getPassword(), amToken.getService().toString()); } AllocateResponse response = AllocateResponse.newInstance(responseId, Collections.<ContainerStatus>emptyList(), Collections.<Container>emptyList(), Collections.<NodeReport>emptyList(), Resources.none(), null, 1, null, Collections.<NMToken>emptyList(), yarnToken, Collections.<UpdatedContainer>emptyList()); response.setApplicationPriority(Priority.newInstance(0)); return response; } }
@Test public void testAllcoateRequestWithoutIncrease() { AllocateRequest r = AllocateRequest.newInstance(123, 0f, null, null, null, null); // serde AllocateRequestProto p = ((AllocateRequestPBImpl) r).getProto(); r = new AllocateRequestPBImpl(p); // check value Assert.assertEquals(123, r.getResponseId()); Assert.assertEquals(0, r.getIncreaseRequests().size()); } }
@Override public AllocateResponse allocate(AllocateRequest request) throws YarnException, IOException { lastAsk = request.getAskList(); for (ResourceRequest req : lastAsk) { if (ResourceRequest.ANY.equals(req.getResourceName())) { Priority priority = req.getPriority(); if (priority.equals(RMContainerAllocator.PRIORITY_MAP)) { lastAnyAskMap = req.getNumContainers(); } else if (priority.equals(RMContainerAllocator.PRIORITY_REDUCE)){ lastAnyAskReduce = req.getNumContainers(); } } } AllocateResponse response = AllocateResponse.newInstance( request.getResponseId(), containersToComplete, containersToAllocate, Collections.<NodeReport>emptyList(), Resource.newInstance(512000, 1024), null, 10, null, Collections.<NMToken>emptyList()); // RM will always ensure that a default priority is sent to AM response.setApplicationPriority(Priority.newInstance(0)); containersToComplete.clear(); containersToAllocate.clear(); return response; }
@Test public void testAllcoateRequestWithIncrease() { List<ContainerResourceIncreaseRequest> incRequests = new ArrayList<ContainerResourceIncreaseRequest>(); for (int i = 0; i < 3; i++) { incRequests.add(ContainerResourceIncreaseRequest.newInstance(null, Resource.newInstance(0, i))); } AllocateRequest r = AllocateRequest.newInstance(123, 0f, null, null, null, incRequests); // serde AllocateRequestProto p = ((AllocateRequestPBImpl) r).getProto(); r = new AllocateRequestPBImpl(p); // check value Assert.assertEquals(123, r.getResponseId()); Assert.assertEquals(incRequests.size(), r.getIncreaseRequests().size()); for (int i = 0; i < incRequests.size(); i++) { Assert.assertEquals(r.getIncreaseRequests().get(i).getCapability() .getVirtualCores(), incRequests.get(i).getCapability() .getVirtualCores()); } }
@Override public AllocateResponse allocate(AllocateRequest request) throws YarnException, IOException { if (this.failover) { this.failover = false; throw new ApplicationMasterNotRegisteredException("Mock RM restarted"); } if (this.responseIdReset != -1) { String errorMessage = AMRMClientUtils.assembleInvalidResponseIdExceptionMessage(null, this.responseIdReset, request.getResponseId()); this.responseIdReset = -1; throw new InvalidApplicationMasterRequestException(errorMessage); } this.lastAsk = request.getAskList(); this.lastRelease = request.getReleaseList(); this.lastBlacklistAdditions = request.getResourceBlacklistRequest().getBlacklistAdditions(); this.lastBlacklistRemovals = request.getResourceBlacklistRequest().getBlacklistRemovals(); return AllocateResponse.newInstance(request.getResponseId() + 1, null, null, new ArrayList<NodeReport>(), Resource.newInstance(0, 0), null, 0, null, null); }
request.getResponseId()) == lastResponse.getResponseId()) { } else if (request.getResponseId() != lastResponse.getResponseId()) { throw new InvalidApplicationMasterRequestException(AMRMClientUtils .assembleInvalidResponseIdExceptionMessage(appAttemptId, lastResponse.getResponseId(), request.getResponseId()));
if ((request.getResponseId() + 1) == lastResponse.getResponseId()) { } else if (request.getResponseId() + 1 < lastResponse.getResponseId()) { String message = "Invalid responseId in AllocateRequest from application attempt: "
if ((request.getResponseId() + 1) == lastResponse.getResponseId()) { } else if (request.getResponseId() + 1 < lastResponse.getResponseId()) { String message = "Invalid responseId in AllocateRequest from application attempt: "