MAPREDUCE-3345. Fixed a race condition in ResourceManager that was causing TestContainerManagerSecurity to fail sometimes. Contributed by Hitesh Shah.

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1199144 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Vinod Kumar Vavilapalli 2011-11-08 07:55:51 +00:00
parent 9fe9f42c8f
commit 80cc8e9486
3 changed files with 30 additions and 20 deletions

View File

@ -89,6 +89,9 @@ Release 0.23.1 - Unreleased
MAPREDUCE-3342. Fixed JobHistoryServer to also show the job's queue MAPREDUCE-3342. Fixed JobHistoryServer to also show the job's queue
name. (Jonathan Eagles via vinodkv) name. (Jonathan Eagles via vinodkv)
MAPREDUCE-3345. Fixed a race condition in ResourceManager that was causing
TestContainerManagerSecurity to fail sometimes. (Hitesh Shah via vinodkv)
Release 0.23.0 - 2011-11-01 Release 0.23.0 - 2011-11-01
INCOMPATIBLE CHANGES INCOMPATIBLE CHANGES

View File

@ -595,8 +595,13 @@ public class RMAppAttemptImpl implements RMAppAttempt {
AM_CONTAINER_PRIORITY, "*", appAttempt.submissionContext AM_CONTAINER_PRIORITY, "*", appAttempt.submissionContext
.getAMContainerSpec().getResource(), 1); .getAMContainerSpec().getResource(), 1);
appAttempt.scheduler.allocate(appAttempt.applicationAttemptId, Allocation amContainerAllocation =
Collections.singletonList(request), EMPTY_CONTAINER_RELEASE_LIST); appAttempt.scheduler.allocate(appAttempt.applicationAttemptId,
Collections.singletonList(request), EMPTY_CONTAINER_RELEASE_LIST);
if (amContainerAllocation != null
&& amContainerAllocation.getContainers() != null) {
assert(amContainerAllocation.getContainers().size() == 0);
}
} }
} }

View File

@ -236,28 +236,30 @@ public class FifoScheduler implements ResourceScheduler {
RMContainerEventType.RELEASED); RMContainerEventType.RELEASED);
} }
if (!ask.isEmpty()) { synchronized (application) {
LOG.debug("allocate: pre-update" + if (!ask.isEmpty()) {
" applicationId=" + applicationAttemptId + LOG.debug("allocate: pre-update" +
" application=" + application); " applicationId=" + applicationAttemptId +
application.showRequests(); " application=" + application);
application.showRequests();
// Update application requests // Update application requests
application.updateResourceRequests(ask); application.updateResourceRequests(ask);
LOG.debug("allocate: post-update" + LOG.debug("allocate: post-update" +
" applicationId=" + applicationAttemptId + " applicationId=" + applicationAttemptId +
" application=" + application); " application=" + application);
application.showRequests(); application.showRequests();
LOG.debug("allocate:" + LOG.debug("allocate:" +
" applicationId=" + applicationAttemptId + " applicationId=" + applicationAttemptId +
" #ask=" + ask.size()); " #ask=" + ask.size());
}
return new Allocation(
application.pullNewlyAllocatedContainers(),
application.getHeadroom());
} }
return new Allocation(
application.pullNewlyAllocatedContainers(),
application.getHeadroom());
} }
private SchedulerApp getApplication( private SchedulerApp getApplication(