YARN-7511. NPE in ContainerLocalizer when localization failed for running container. Contributed by Tao Yang
(cherry picked from commit 83798f15f8
)
This commit is contained in:
parent
45ec3e18e3
commit
0a3a878428
|
@ -138,6 +138,10 @@ public class ResourceSet {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void resourceLocalizationFailed(LocalResourceRequest request) {
|
public void resourceLocalizationFailed(LocalResourceRequest request) {
|
||||||
|
// Skip null request when localization failed for running container
|
||||||
|
if (request == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
pendingResources.remove(request);
|
pendingResources.remove(request);
|
||||||
resourcesFailedToBeLocalized.add(request);
|
resourcesFailedToBeLocalized.add(request);
|
||||||
}
|
}
|
||||||
|
|
|
@ -378,6 +378,27 @@ public class TestContainer {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
public void testLocalizationFailureWhileRunning()
|
||||||
|
throws Exception {
|
||||||
|
WrappedContainer wc = null;
|
||||||
|
try {
|
||||||
|
wc = new WrappedContainer(6, 314159265358979L, 4344, "yak");
|
||||||
|
wc.initContainer();
|
||||||
|
wc.localizeResources();
|
||||||
|
wc.launchContainer();
|
||||||
|
reset(wc.localizerBus);
|
||||||
|
assertEquals(ContainerState.RUNNING, wc.c.getContainerState());
|
||||||
|
// Now in RUNNING, handle ContainerResourceFailedEvent, cause NPE before
|
||||||
|
wc.handleContainerResourceFailedEvent();
|
||||||
|
} finally {
|
||||||
|
if (wc != null) {
|
||||||
|
wc.finished();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@SuppressWarnings("unchecked") // mocked generic
|
@SuppressWarnings("unchecked") // mocked generic
|
||||||
public void testCleanupOnKillRequest() throws Exception {
|
public void testCleanupOnKillRequest() throws Exception {
|
||||||
|
@ -1132,6 +1153,11 @@ public class TestContainer {
|
||||||
drainDispatcherEvents();
|
drainDispatcherEvents();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void handleContainerResourceFailedEvent() {
|
||||||
|
c.handle(new ContainerResourceFailedEvent(cId, null, null));
|
||||||
|
drainDispatcherEvents();
|
||||||
|
}
|
||||||
|
|
||||||
// Localize resources
|
// Localize resources
|
||||||
// Skip some resources so as to consider them failed
|
// Skip some resources so as to consider them failed
|
||||||
public Map<Path, List<String>> doLocalizeResources(
|
public Map<Path, List<String>> doLocalizeResources(
|
||||||
|
|
Loading…
Reference in New Issue