YARN-6221. Entities missing from ATS when summary log file info got returned to the ATS before the domain log. Contributed by Xiaomin Zhang

This commit is contained in:
Szilard Nemeth 2021-07-31 14:54:51 +02:00
parent 7a8b6265c6
commit e4df745c13
2 changed files with 27 additions and 1 deletions

View File

@ -774,10 +774,11 @@ public class EntityGroupFSTimelineStore extends CompositeService
LogInfo log;
if (isDomainLog) {
log = new DomainLogInfo(attemptDirName, filename, owner);
summaryLogs.add(0, log);
} else {
log = new EntityLogInfo(attemptDirName, filename, owner);
summaryLogs.add(log);
}
summaryLogs.add(log);
}
private synchronized void addDetailLog(String attemptDirName,

View File

@ -224,6 +224,31 @@ public class TestEntityGroupFSTimelineStore extends TimelineStoreTestUtils {
}
}
@Test
public void testAppLogsDomainLogLastlyScanned() throws Exception {
EntityGroupFSTimelineStore.AppLogs appLogs =
store.new AppLogs(mainTestAppId, mainTestAppDirPath,
AppState.COMPLETED);
Path attemptDirPath = new Path(new Path(testActiveDirPath,
mainTestAppId.toString()),
getAttemptDirName(mainTestAppId));
//Delete the domain log from AppDirPath so first scan won't find it
fs.delete(new Path(attemptDirPath, TEST_DOMAIN_LOG_FILE_NAME), false);
appLogs.scanForLogs();
List<LogInfo> summaryLogs = appLogs.getSummaryLogs();
assertEquals(1, summaryLogs.size());
assertEquals(TEST_SUMMARY_LOG_FILE_NAME, summaryLogs.get(0).getFilename());
//Generate the domain log
FSDataOutputStream out = fs.create(
new Path(attemptDirPath, TEST_DOMAIN_LOG_FILE_NAME));
out.close();
appLogs.scanForLogs();
assertEquals(2, summaryLogs.size());
assertEquals(TEST_DOMAIN_LOG_FILE_NAME, summaryLogs.get(0).getFilename());
}
@Test
public void testMoveToDone() throws Exception {
EntityGroupFSTimelineStore.AppLogs appLogs =