|
@@ -31,6 +31,7 @@ import static org.mockito.Mockito.mock;
|
|
|
import static org.mockito.Mockito.never;
|
|
|
import static org.mockito.Mockito.reset;
|
|
|
import static org.mockito.Mockito.spy;
|
|
|
+import static org.mockito.Mockito.times;
|
|
|
import static org.mockito.Mockito.verify;
|
|
|
import static org.mockito.Mockito.when;
|
|
|
|
|
@@ -280,6 +281,41 @@ public class TestLogAggregationService extends BaseContainerManagerTest {
|
|
|
verifyLocalFileDeletion(logAggregationService);
|
|
|
}
|
|
|
|
|
|
+ /* Test to verify fix for YARN-3793 */
|
|
|
+ @Test
|
|
|
+ public void testNoLogsUploadedOnAppFinish() throws Exception {
|
|
|
+ this.delSrvc = new DeletionService(createContainerExecutor());
|
|
|
+ delSrvc = spy(delSrvc);
|
|
|
+ this.delSrvc.init(conf);
|
|
|
+ this.conf.set(YarnConfiguration.NM_LOG_DIRS, localLogDir.getAbsolutePath());
|
|
|
+ this.conf.set(YarnConfiguration.NM_REMOTE_APP_LOG_DIR,
|
|
|
+ this.remoteRootLogDir.getAbsolutePath());
|
|
|
+
|
|
|
+ LogAggregationService logAggregationService = new LogAggregationService(
|
|
|
+ dispatcher, this.context, this.delSrvc, super.dirsHandler);
|
|
|
+ logAggregationService.init(this.conf);
|
|
|
+ logAggregationService.start();
|
|
|
+
|
|
|
+ ApplicationId app = BuilderUtils.newApplicationId(1234, 1);
|
|
|
+ File appLogDir = new File(localLogDir, ConverterUtils.toString(app));
|
|
|
+ appLogDir.mkdir();
|
|
|
+ LogAggregationContext context =
|
|
|
+ LogAggregationContext.newInstance("HOST*", "sys*");
|
|
|
+ logAggregationService.handle(new LogHandlerAppStartedEvent(app, this.user,
|
|
|
+ null, ContainerLogsRetentionPolicy.ALL_CONTAINERS, this.acls, context));
|
|
|
+
|
|
|
+ ApplicationAttemptId appAttemptId =
|
|
|
+ BuilderUtils.newApplicationAttemptId(app, 1);
|
|
|
+ ContainerId cont = BuilderUtils.newContainerId(appAttemptId, 1);
|
|
|
+ writeContainerLogs(appLogDir, cont, new String[] { "stdout",
|
|
|
+ "stderr", "syslog" });
|
|
|
+ logAggregationService.handle(new LogHandlerContainerFinishedEvent(cont, 0));
|
|
|
+ logAggregationService.handle(new LogHandlerAppFinishedEvent(app));
|
|
|
+ logAggregationService.stop();
|
|
|
+ delSrvc.stop();
|
|
|
+ // Aggregated logs should not be deleted if not uploaded.
|
|
|
+ verify(delSrvc, times(0)).delete(user, null);
|
|
|
+ }
|
|
|
|
|
|
@Test
|
|
|
public void testNoContainerOnNode() throws Exception {
|