azkaban-uncached

Details

diff --git a/src/java/azkaban/utils/LogSummary.java b/src/java/azkaban/utils/LogSummary.java
index 708e3bd..181442f 100644
--- a/src/java/azkaban/utils/LogSummary.java
+++ b/src/java/azkaban/utils/LogSummary.java
@@ -9,33 +9,55 @@ public class LogSummary {
 	private String[] statTableHeaders = null;
 	private List<String[]> statTableData = new ArrayList<String[]>();
 	
+	private String[] summaryTableHeaders = null;
+	private List<String[]> summaryTableData = new ArrayList<String[]>();
+	
 	public LogSummary(LogData log) {
 		if (log != null) {
 			parseLogData(log.getData());
 		}
 	}
 	
-	public String[] getStatTableHeaders() {
-		return statTableHeaders;
-	}
-
-	public List<String[]> getStatTableData() {
-		return statTableData;
-	}
-
 	private void parseLogData(String data) {
 		data = data.replaceAll(".*? - ", "");
 		String[] lines = data.split("\n");
 		
+		parseJobSummary(lines);
+		parseJobStats(lines);
+	}
+
+	private void parseJobSummary(String[] lines) {
+		int jobSummaryStartIndex = -1;
+		for (int i = 0; i < lines.length; i++) {
+			if (lines[i].startsWith("HadoopVersion")) {
+				jobSummaryStartIndex = i;
+				break;
+			}
+		}
+		
+		if (jobSummaryStartIndex != -1) {
+			String headerLine = lines[jobSummaryStartIndex];
+			summaryTableHeaders = headerLine.split("\t");
+			
+			int tableRowIndex = jobSummaryStartIndex + 1;
+			String line;
+			while (!(line = lines[tableRowIndex]).equals("")) {
+				summaryTableData.add(line.split("\t"));
+				tableRowIndex++;
+			}
+		}
+	}
+	
+	private void parseJobStats(String[] lines) {
 		int jobStatsStartIndex = -1;
 		for (int i = 0; i < lines.length; i++) {
 			if (lines[i].startsWith("Job Stats (time in seconds):")) {
 				jobStatsStartIndex = i+1;
+				break;
 			}
 		}
 		
 		if (jobStatsStartIndex != -1) {
-			
 			String headerLine = lines[jobStatsStartIndex];
 			statTableHeaders = headerLine.split("\t");
 			
@@ -47,4 +69,20 @@ public class LogSummary {
 			}
 		}
 	}
+	
+	public String[] getStatTableHeaders() {
+		return statTableHeaders;
+	}
+
+	public List<String[]> getStatTableData() {
+		return statTableData;
+	}
+
+	public String[] getSummaryTableHeaders() {
+		return summaryTableHeaders;
+	}
+
+	public List<String[]> getSummaryTableData() {
+		return summaryTableData;
+	}
 }
diff --git a/src/java/azkaban/webapp/servlet/ExecutorServlet.java b/src/java/azkaban/webapp/servlet/ExecutorServlet.java
index 7355adf..bfceaf7 100644
--- a/src/java/azkaban/webapp/servlet/ExecutorServlet.java
+++ b/src/java/azkaban/webapp/servlet/ExecutorServlet.java
@@ -515,7 +515,10 @@ public class ExecutorServlet extends LoginAbstractAzkabanServlet {
 			
 			int attempt = this.getIntParam(req, "attempt", node.getAttempt());
 			LogData data = executorManager.getExecutionJobLog(exFlow, jobId, 0, Integer.MAX_VALUE, attempt);
+			
 			LogSummary summary = new LogSummary(data);
+			ret.put("summaryTableHeaders", summary.getSummaryTableHeaders());
+			ret.put("summaryTableData", summary.getSummaryTableData());
 			ret.put("statTableHeaders", summary.getStatTableHeaders());
 			ret.put("statTableData", summary.getStatTableData());
 		} catch (ExecutorManagerException e) {
diff --git a/src/java/azkaban/webapp/servlet/velocity/jobsummarypage.vm b/src/java/azkaban/webapp/servlet/velocity/jobsummarypage.vm
index 24f99ce..ce11145 100644
--- a/src/java/azkaban/webapp/servlet/velocity/jobsummarypage.vm
+++ b/src/java/azkaban/webapp/servlet/velocity/jobsummarypage.vm
@@ -75,13 +75,26 @@
 			</div>
 
 			<div id="jobSummaryView" class="summaryView">
-				<div class="summaryHeader"><div class="summaryButtonRow"><div id="updateSummaryBtn" class="btn7">Refresh</div></div></div>
-				<table>
-					<thead id="summaryHeader">
-					</thead>
-					<tbody id="summaryBody">
-					</tbody>
-				</table>
+				<br/>
+				<p>Job Summary
+					<table>
+						<thead id="summaryHeader">
+						</thead>
+						<tbody id="summaryBody">
+						</tbody>
+					</table>
+				</p>
+				
+				<br/>
+				
+				<p>Job Stats
+					<table>
+						<thead id="statsHeader">
+						</thead>
+						<tbody id="statsBody">
+						</tbody>
+					</table>
+				</p>
 			</div>
 #end
 
diff --git a/src/web/js/azkaban.jobsummary.view.js b/src/web/js/azkaban.jobsummary.view.js
index a67636f..99a832e 100644
--- a/src/web/js/azkaban.jobsummary.view.js
+++ b/src/web/js/azkaban.jobsummary.view.js
@@ -45,15 +45,16 @@ azkaban.JobSummaryView = Backbone.View.extend({
 					console.log(data.error);
 				}
 				else {
-					self.renderStatTable(data.statTableHeaders, data.statTableData);
+					self.renderTable(data.summaryTableHeaders, data.summaryTableData, "summary");
+					self.renderTable(data.statTableHeaders, data.statTableData, "stats");
 				}
 			}
 		});
 	},
-	renderStatTable: function(headers, data) {
+	renderTable: function(headers, data, prefix) {
 		if (headers) {
 			// Add table headers
-			var summaryHeader = $("#summaryHeader");
+			var header = $("#" + prefix + "Header");
 			var tr = document.createElement("tr");
 			var i;
 			for (i = 0; i < headers.length; i++) {
@@ -61,10 +62,10 @@ azkaban.JobSummaryView = Backbone.View.extend({
 				$(th).text(headers[i]);
 				$(tr).append(th);
 			}
-			summaryHeader.append(tr);
+			header.append(tr);
 			
 			// Add table body
-			var summaryBody = $("#summaryBody");
+			var body = $("#" + prefix + "Body");
 			for (i = 0; i < data.length; i++) {
 				tr = document.createElement("tr");
 				var row = data[i];
@@ -73,7 +74,7 @@ azkaban.JobSummaryView = Backbone.View.extend({
 					$(td).text(row[j]);
 					$(tr).append(td);
 				}
-				summaryBody.append(tr);
+				body.append(tr);
 			}
 		}
 	}