YARN-4984. LogAggregationService shouldn't swallow exception in handling createAppDir() which cause thread leak. (Junping Du via wangda)
This commit is contained in:
parent
e61d431275
commit
7bd418e48c
|
@ -376,6 +376,9 @@ public class LogAggregationService extends AbstractService implements
|
|||
} else {
|
||||
appDirException = (YarnRuntimeException)e;
|
||||
}
|
||||
appLogAggregators.remove(appId);
|
||||
closeFileSystems(userUgi);
|
||||
throw appDirException;
|
||||
}
|
||||
|
||||
// TODO Get the user configuration for the list of containers that need log
|
||||
|
@ -393,10 +396,6 @@ public class LogAggregationService extends AbstractService implements
|
|||
}
|
||||
};
|
||||
this.threadPool.execute(aggregatorWrapper);
|
||||
|
||||
if (appDirException != null) {
|
||||
throw appDirException;
|
||||
}
|
||||
}
|
||||
|
||||
protected void closeFileSystems(final UserGroupInformation userUgi) {
|
||||
|
|
|
@ -777,8 +777,8 @@ public class TestLogAggregationService extends BaseContainerManagerTest {
|
|||
|
||||
dispatcher.await();
|
||||
ApplicationEvent expectedEvents[] = new ApplicationEvent[]{
|
||||
new ApplicationEvent(appId,
|
||||
ApplicationEventType.APPLICATION_LOG_HANDLING_FAILED)
|
||||
new ApplicationEvent(appId,
|
||||
ApplicationEventType.APPLICATION_LOG_HANDLING_FAILED)
|
||||
};
|
||||
checkEvents(appEventHandler, expectedEvents, false,
|
||||
"getType", "getApplicationID", "getDiagnostic");
|
||||
|
@ -794,10 +794,15 @@ public class TestLogAggregationService extends BaseContainerManagerTest {
|
|||
|
||||
logAggregationService.stop();
|
||||
assertEquals(0, logAggregationService.getNumAggregators());
|
||||
verify(spyDelSrvc).delete(eq(user), any(Path.class),
|
||||
// local log dir shouldn't be deleted given log aggregation cannot
|
||||
// continue due to aggregated log dir creation failure on remoteFS.
|
||||
verify(spyDelSrvc, never()).delete(eq(user), any(Path.class),
|
||||
Mockito.<Path>anyVararg());
|
||||
verify(logAggregationService).closeFileSystems(
|
||||
any(UserGroupInformation.class));
|
||||
// make sure local log dir is not deleted in case log aggregation
|
||||
// service cannot be initiated.
|
||||
assertTrue(appLogDir.exists());
|
||||
}
|
||||
|
||||
private void writeContainerLogs(File appLogDir, ContainerId containerId,
|
||||
|
|
Loading…
Reference in New Issue