azkaban-uncached

Details

diff --git a/src/java/azkaban/webapp/servlet/ProjectManagerServlet.java b/src/java/azkaban/webapp/servlet/ProjectManagerServlet.java
index 0bbe2ba..ab3fee0 100644
--- a/src/java/azkaban/webapp/servlet/ProjectManagerServlet.java
+++ b/src/java/azkaban/webapp/servlet/ProjectManagerServlet.java
@@ -1088,7 +1088,11 @@ public class ProjectManagerServlet extends LoginAbstractAzkabanServlet {
 				projectManager.uploadProject(project, archiveFile, type, user);
 			} catch (Exception e) {
 				logger.info("Installation Failed.", e);
-				setErrorMessageInCookie(resp, "Installation Failed.\n" + e.getMessage());
+				String error = e.getMessage();
+				if (error.length() > 512) {
+					error = error.substring(0, 512) + "\nToo many errors to display.\n";
+				}
+				setErrorMessageInCookie(resp, "Installation Failed.\n" + error);
 			}
 			finally {
 				if (tempDir.exists()) {
diff --git a/src/java/azkaban/webapp/servlet/velocity/projectpage.vm b/src/java/azkaban/webapp/servlet/velocity/projectpage.vm
index 46499a2..723dc91 100644
--- a/src/java/azkaban/webapp/servlet/velocity/projectpage.vm
+++ b/src/java/azkaban/webapp/servlet/velocity/projectpage.vm
@@ -43,12 +43,12 @@
 
 			<div class="content">
 #if($errorMsg)
-				<div class="box-error-message">$errorMsg</div>
+				<div class="box-error-message"><pre>$errorMsg</pre></div>
 #else
 #if($error_message != "null")
-				<div class="box-error-message">$error_message</div>
+				<div class="box-error-message"><pre>$error_message</pre></div>
 #elseif($success_message != "null")
-				<div class="box-success-message">$success_message</div>
+				<div class="box-success-message"><pre>$success_message</pre></div>
 #end
 
 				<div id="all-jobs-content">
diff --git a/src/web/js/azkaban.exflow.view.js b/src/web/js/azkaban.exflow.view.js
index e3365fa..10cf818 100644
--- a/src/web/js/azkaban.exflow.view.js
+++ b/src/web/js/azkaban.exflow.view.js
@@ -262,29 +262,30 @@ azkaban.ExecutionListView = Backbone.View.extend({
 		for (var i = 0; i < nodes.length; ++i) {
 			var node = nodes[i];
 			if (node.startTime > -1) {
-				var row = document.getElementById(node.id + "-row");
+				var nodeId = node.id.replace(".", "\\\\.");
+				var row = document.getElementById(nodeId + "-row");
 				if (!row) {
 					this.addNodeRow(node);
 				}
 				
-				var div = $("#" + node.id + "-status-div");
+				var div = $("#" + nodeId + "-status-div");
 				div.text(statusStringMap[node.status]);
 				$(div).attr("class", "status " + node.status);
 				
 				var startdate = new Date(node.startTime);
-				$("#" + node.id + "-start").text(getDateFormat(startdate));
+				$("#" + nodeId + "-start").text(getDateFormat(startdate));
 				
 				var endTime = node.endTime;
 				if (node.endTime == -1) {
-					$("#" + node.id + "-end").text("-");
+					$("#" + nodeId + "-end").text("-");
 					endTime = node.startTime + 1;
 				}
 				else {
 					var enddate = new Date(node.endTime);
-					$("#" + node.id + "-end").text(getDateFormat(enddate));
+					$("#" + nodeId + "-end").text(getDateFormat(enddate));
 				}
 				
-				var progressBar = $("#" + node.id + "-progressbar");
+				var progressBar = $("#" + nodeId + "-progressbar");
 				for (var j = 0; j < statusList.length; ++j) {
 					var status = statusList[j];
 					progressBar.removeClass(status);
@@ -293,10 +294,10 @@ azkaban.ExecutionListView = Backbone.View.extend({
 
 				if (node.endTime == -1) {
 //					$("#" + node.id + "-elapse").text("0 sec");
-					$("#" + node.id + "-elapse").text(getDuration(node.startTime, (new Date()).getTime()));					
+					$("#" + nodeId + "-elapse").text(getDuration(node.startTime, (new Date()).getTime()));					
 				}
 				else {
-					$("#" + node.id + "-elapse").text(getDuration(node.startTime, node.endTime));
+					$("#" + nodeId + "-elapse").text(getDuration(node.startTime, node.endTime));
 				}
 			}
 		}