diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/amrmproxy/FederationInterceptor.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/amrmproxy/FederationInterceptor.java index ffe47f4..55a3ae0 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/amrmproxy/FederationInterceptor.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/amrmproxy/FederationInterceptor.java @@ -551,30 +551,33 @@ private SubClusterId getSubClusterForNode(String nodeName) { } } - if (request.getResourceBlacklistRequest() != null && !isNullOrEmpty( - request.getResourceBlacklistRequest().getBlacklistAdditions())) { - for (String resourceName : request.getResourceBlacklistRequest() - .getBlacklistAdditions()) { - SubClusterId subClusterId = getSubClusterForNode(resourceName); - if (subClusterId != null) { - AllocateRequest newRequest = findOrCreateAllocateRequestForSubCluster( - subClusterId, request, requestMap); - newRequest.getResourceBlacklistRequest().getBlacklistAdditions() - .add(resourceName); + if (request.getResourceBlacklistRequest() != null) { + if (!isNullOrEmpty( + request.getResourceBlacklistRequest().getBlacklistAdditions())) { + for (String resourceName : request.getResourceBlacklistRequest() + .getBlacklistAdditions()) { + SubClusterId subClusterId = getSubClusterForNode(resourceName); + if (subClusterId != null) { + AllocateRequest newRequest = + findOrCreateAllocateRequestForSubCluster(subClusterId, request, + requestMap); + newRequest.getResourceBlacklistRequest().getBlacklistAdditions() + .add(resourceName); + } } } - } - - if (request.getResourceBlacklistRequest() != null && !isNullOrEmpty( - request.getResourceBlacklistRequest().getBlacklistRemovals())) { - for (String resourceName : request.getResourceBlacklistRequest() - .getBlacklistRemovals()) { - SubClusterId subClusterId = getSubClusterForNode(resourceName); - if (subClusterId != null) { - AllocateRequest newRequest = findOrCreateAllocateRequestForSubCluster( - subClusterId, request, requestMap); - newRequest.getResourceBlacklistRequest().getBlacklistRemovals() - .add(resourceName); + if (!isNullOrEmpty( + request.getResourceBlacklistRequest().getBlacklistRemovals())) { + for (String resourceName : request.getResourceBlacklistRequest() + .getBlacklistRemovals()) { + SubClusterId subClusterId = getSubClusterForNode(resourceName); + if (subClusterId != null) { + AllocateRequest newRequest = + findOrCreateAllocateRequestForSubCluster(subClusterId, request, + requestMap); + newRequest.getResourceBlacklistRequest().getBlacklistRemovals() + .add(resourceName); + } } } } @@ -907,13 +910,8 @@ private void mergeAllocateResponse(AllocateResponse homeResponse, } } - if (!isNullOrEmpty(otherResponse.getNMTokens())) { - if (!isNullOrEmpty(homeResponse.getNMTokens())) { - homeResponse.getNMTokens().addAll(otherResponse.getNMTokens()); - } else { - homeResponse.setNMTokens(otherResponse.getNMTokens()); - } - } + homeResponse.setNumClusterNodes( + homeResponse.getNumClusterNodes() + otherResponse.getNumClusterNodes()); PreemptionMessage homePreempMessage = homeResponse.getPreemptionMessage(); PreemptionMessage otherPreempMessage = otherResponse.getPreemptionMessage(); @@ -946,6 +944,31 @@ private void mergeAllocateResponse(AllocateResponse homeResponse, spar1.getContainers().addAll(spar2.getContainers()); } } + + if (!isNullOrEmpty(otherResponse.getNMTokens())) { + if (!isNullOrEmpty(homeResponse.getNMTokens())) { + homeResponse.getNMTokens().addAll(otherResponse.getNMTokens()); + } else { + homeResponse.setNMTokens(otherResponse.getNMTokens()); + } + } + + if (!isNullOrEmpty(otherResponse.getUpdatedContainers())) { + if (!isNullOrEmpty(homeResponse.getUpdatedContainers())) { + homeResponse.getUpdatedContainers() + .addAll(otherResponse.getUpdatedContainers()); + } else { + homeResponse.setUpdatedContainers(otherResponse.getUpdatedContainers()); + } + } + + if (!isNullOrEmpty(otherResponse.getUpdateErrors())) { + if (!isNullOrEmpty(homeResponse.getUpdateErrors())) { + homeResponse.getUpdateErrors().addAll(otherResponse.getUpdateErrors()); + } else { + homeResponse.setUpdateErrors(otherResponse.getUpdateErrors()); + } + } } /**