azkaban-uncached

Details

diff --git a/src/java/azkaban/executor/ExecutorManager.java b/src/java/azkaban/executor/ExecutorManager.java
index 7314b21..6d4715f 100644
--- a/src/java/azkaban/executor/ExecutorManager.java
+++ b/src/java/azkaban/executor/ExecutorManager.java
@@ -61,6 +61,7 @@ public class ExecutorManager {
 	private ExecutorMailer mailer;
 	private ExecutingManagerUpdaterThread executingManager;
 	
+	private static final long DEFAULT_EXECUTION_LOGS_RETENTION_MS = 3*4*7*24*60*60*1000l;
 	private long lastCleanerThreadCheckTime = -1;
 	
 	private long lastThreadCheckTime = -1;
@@ -74,8 +75,9 @@ public class ExecutorManager {
 		mailer = new ExecutorMailer(props);
 		executingManager = new ExecutingManagerUpdaterThread();
 		executingManager.start();
-		
-		cleanerThread = new CleanerThread();
+
+		long executionLogsRetentionMs = props.getLong("azkaban.execution.logs.retention.ms", DEFAULT_EXECUTION_LOGS_RETENTION_MS);
+		cleanerThread = new CleanerThread(executionLogsRetentionMs);
 		cleanerThread.start();
 	}
 	
@@ -790,14 +792,17 @@ public class ExecutorManager {
 	 */
 	private class CleanerThread extends Thread {
 		// log file retention is 1 month.
-		private static final long EXECUTION_LOGS_RETENTION_MS = 3*4*7*24*60*60*1000;
+		
 		// check every day
 		private static final long CLEANER_THREAD_WAIT_INTERVAL_MS = 24*60*60*1000;
 		
+		private final long executionLogsRetentionMs;
+		
 		private boolean shutdown = false;
 		private long lastLogCleanTime = -1;
 		
-		public CleanerThread() {
+		public CleanerThread(long executionLogsRetentionMs) {
+			this.executionLogsRetentionMs = executionLogsRetentionMs;
 			this.setName("AzkabanWebServer-Cleaner-Thread");
 		}
 		
@@ -831,8 +836,9 @@ public class ExecutorManager {
 
 		private void cleanExecutionLogs() {
 			logger.info("Cleaning old logs from execution_logs");
-			logger.info("Cleaning old log files before " + DateTime.now() + " or in milliseconds: " + DateTime.now().getMillis());
-			cleanOldExecutionLogs(DateTime.now().getMillis() - EXECUTION_LOGS_RETENTION_MS);
+			long cutoff = DateTime.now().getMillis() - executionLogsRetentionMs;
+			logger.info("Cleaning old log files before " + new DateTime(cutoff).toString());
+			cleanOldExecutionLogs(DateTime.now().getMillis() - executionLogsRetentionMs);
 		}
 	}
 }
diff --git a/src/java/azkaban/webapp/servlet/velocity/executionspage.vm b/src/java/azkaban/webapp/servlet/velocity/executionspage.vm
index c51cf52..6f14afd 100644
--- a/src/java/azkaban/webapp/servlet/velocity/executionspage.vm
+++ b/src/java/azkaban/webapp/servlet/velocity/executionspage.vm
@@ -54,6 +54,7 @@
 							<th>Flow</th>
 							<th>Project</th>
 							<th class="user">User</th>
+							<th class="user">Proxy User</th>
 							<th class="date">Start Time</th>
 							<th class="date">End Time</th>
 							<th class="elapse">Elapsed</th>
@@ -73,6 +74,7 @@
 								<a href="${context}/manager?project=$vmutils.getProjectName(${flow.projectId})">$vmutils.getProjectName(${flow.projectId})</a>
 							</td>
 							<td>${flow.submitUser}</td>
+							<td>${flow.proxyUsers}</td>
 							<td>$utils.formatDate(${flow.startTime})</td>
 							<td>$utils.formatDate(${flow.endTime})</td>
 							<td>$utils.formatDuration(${flow.startTime}, ${flow.endTime})</td>
@@ -95,6 +97,7 @@
 							<th>Flow</th>
 							<th>Project</th>
 							<th class="user">User</th>
+							<th class="user">Proxy User</th>
 							<th class="date">Start Time</th>
 							<th class="date">End Time</th>
 							<th class="elapse">Elapsed</th>
@@ -114,6 +117,7 @@
 								<a href="${context}/manager?project=$vmutils.getProjectName(${flow.projectId})">$vmutils.getProjectName(${flow.projectId})</a>
 							</td>
 							<td>${flow.submitUser}</td>
+							<td>${flow.proxyUsers}</td>
 							<td>$utils.formatDate(${flow.startTime})</td>
 							<td>$utils.formatDate(${flow.endTime})</td>
 							<td>$utils.formatDuration(${flow.startTime}, ${flow.endTime})</td>