Author: bobby Date: Thu Apr 26 18:27:05 2012 New Revision: 1331012 URL: http://svn.apache.org/viewvc?rev=1331012&view=rev Log: MAPREDUCE-4169. Container Logs appear in unsorted order (Jonathan Eagles via bobby)
Modified: hadoop/common/trunk/hadoop-mapreduce-project/CHANGES.txt hadoop/common/trunk/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/logaggregation/AggregatedLogFormat.java hadoop/common/trunk/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/ContainerLogsPage.java Modified: hadoop/common/trunk/hadoop-mapreduce-project/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-mapreduce-project/CHANGES.txt?rev=1331012&r1=1331011&r2=1331012&view=diff ============================================================================== --- hadoop/common/trunk/hadoop-mapreduce-project/CHANGES.txt (original) +++ hadoop/common/trunk/hadoop-mapreduce-project/CHANGES.txt Thu Apr 26 18:27:05 2012 @@ -412,6 +412,9 @@ Release 0.23.3 - UNRELEASED MAPREDUCE-3613. web service calls header contains 2 content types (tgraves) + MAPREDUCE-4169. Container Logs appear in unsorted order (Jonathan Eagles + via bobby) + Release 0.23.2 - UNRELEASED INCOMPATIBLE CHANGES Modified: hadoop/common/trunk/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/logaggregation/AggregatedLogFormat.java URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/logaggregation/AggregatedLogFormat.java?rev=1331012&r1=1331011&r2=1331012&view=diff ============================================================================== --- hadoop/common/trunk/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/logaggregation/AggregatedLogFormat.java (original) +++ hadoop/common/trunk/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/logaggregation/AggregatedLogFormat.java Thu Apr 26 18:27:05 2012 @@ -29,6 +29,9 @@ import java.io.InputStreamReader; import java.io.IOException; import java.io.Writer; import java.security.PrivilegedExceptionAction; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; import java.util.EnumSet; import java.util.HashMap; import java.util.List; @@ -112,8 +115,11 @@ public class AggregatedLogFormat { // the entire k-v format public LogValue(List<String> rootLogDirs, ContainerId containerId) { - this.rootLogDirs = rootLogDirs; + this.rootLogDirs = new ArrayList<String>(rootLogDirs); this.containerId = containerId; + + // Ensure logs are processed in lexical order + Collections.sort(this.rootLogDirs); } public void write(DataOutputStream out) throws IOException { @@ -131,7 +137,10 @@ public class AggregatedLogFormat { continue; // ContainerDir may have been deleted by the user. } - for (File logFile : containerLogDir.listFiles()) { + // Write out log files in lexical order + File[] logFiles = containerLogDir.listFiles(); + Arrays.sort(logFiles); + for (File logFile : logFiles) { // Write the logFile Type out.writeUTF(logFile.getName()); Modified: hadoop/common/trunk/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/ContainerLogsPage.java URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/ContainerLogsPage.java?rev=1331012&r1=1331011&r2=1331012&view=diff ============================================================================== --- hadoop/common/trunk/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/ContainerLogsPage.java (original) +++ hadoop/common/trunk/hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/ContainerLogsPage.java Thu Apr 26 18:27:05 2012 @@ -30,6 +30,8 @@ import java.io.FileReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; import java.util.EnumSet; import java.util.List; @@ -269,12 +271,15 @@ public class ContainerLogsPage extends N } } } else { - // Just print out the log-types + // Print out log types in lexical order List<File> containerLogsDirs = getContainerLogDirs(containerId, dirsHandler); + Collections.sort(containerLogsDirs); boolean foundLogFile = false; for (File containerLogsDir : containerLogsDirs) { - for (File logFile : containerLogsDir.listFiles()) { + File[] logFiles = containerLogsDir.listFiles(); + Arrays.sort(logFiles); + for (File logFile : logFiles) { foundLogFile = true; html.p() .a(url("containerlogs", $(CONTAINER_ID), $(APP_OWNER),