YARN-8861. executorLock is misleading in ContainerLaunch. Contributed by Chandni Singh

This commit is contained in:
Jason Lowe 2018-10-11 10:54:57 -05:00
parent ee816f1fd7
commit e787d65a08

View File

@ -135,7 +135,7 @@ public class ContainerLaunch implements Callable<Integer> {
protected final LocalDirsHandlerService dirsHandler;
private final Lock containerExecLock = new ReentrantLock();
private final Lock launchLock = new ReentrantLock();
public ContainerLaunch(Context context, Configuration configuration,
Dispatcher dispatcher, ContainerExecutor exec, Application app,
@ -485,11 +485,11 @@ protected int launchContainer(ContainerStartContext ctx)
throws IOException, ConfigurationException {
int launchPrep = prepareForLaunch(ctx);
if (launchPrep == 0) {
containerExecLock.lock();
launchLock.lock();
try {
return exec.launchContainer(ctx);
} finally {
containerExecLock.unlock();
launchLock.unlock();
}
}
return launchPrep;
@ -499,18 +499,18 @@ protected int relaunchContainer(ContainerStartContext ctx)
throws IOException, ConfigurationException {
int launchPrep = prepareForLaunch(ctx);
if (launchPrep == 0) {
containerExecLock.lock();
launchLock.lock();
try {
return exec.relaunchContainer(ctx);
} finally {
containerExecLock.unlock();
launchLock.unlock();
}
}
return launchPrep;
}
void reapContainer() throws IOException {
containerExecLock.lock();
launchLock.lock();
try {
// Reap the container
boolean result = exec.reapContainer(
@ -524,7 +524,7 @@ void reapContainer() throws IOException {
}
cleanupContainerFiles(getContainerWorkDir());
} finally {
containerExecLock.unlock();
launchLock.unlock();
}
}