azkaban-uncached

bug fix: removing old projects wasn't working because 1) versions

3/18/2013 3:23:58 PM

Details

diff --git a/src/java/azkaban/execapp/FlowRunnerManager.java b/src/java/azkaban/execapp/FlowRunnerManager.java
index c45475f..127f3ff 100644
--- a/src/java/azkaban/execapp/FlowRunnerManager.java
+++ b/src/java/azkaban/execapp/FlowRunnerManager.java
@@ -136,7 +136,7 @@ public class FlowRunnerManager implements EventListener {
 					String fileName = new File(project.getAbsolutePath()).getName();
 					int projectId = Integer.parseInt(fileName.split("\\.")[0]);
 					int versionNum = Integer.parseInt(fileName.split("\\.")[1]);
-					ProjectVersion version = new ProjectVersion(projectId, versionNum);
+					ProjectVersion version = new ProjectVersion(projectId, versionNum, project);
 					allProjects.put(new Pair<Integer, Integer>(projectId, versionNum), version);
 				}
 				catch (Exception e) {
@@ -223,6 +223,7 @@ public class FlowRunnerManager implements EventListener {
 						if (currentTime - OLD_PROJECT_DIR_INTERVAL_MS > lastOldProjectCleanTime) {
 							logger.info("Cleaning old projects");
 							cleanOlderProjects();
+							
 							lastOldProjectCleanTime = currentTime;
 						}
 						
@@ -324,6 +325,7 @@ public class FlowRunnerManager implements EventListener {
 						try {
 							logger.info("Removing old unused installed project " + version.getProjectId() + ":" + version.getVersion());
 							version.deleteDirectory();
+							installedProjects.remove(new Pair<Integer, Integer>(version.getProjectId(), version.getVersion()));
 						} catch (IOException e) {
 							e.printStackTrace();
 						}
diff --git a/src/java/azkaban/execapp/JobRunner.java b/src/java/azkaban/execapp/JobRunner.java
index 3c61f53..f49e144 100644
--- a/src/java/azkaban/execapp/JobRunner.java
+++ b/src/java/azkaban/execapp/JobRunner.java
@@ -279,9 +279,10 @@ public class JobRunner extends EventHandler implements Runnable {
 		try {
 			job.run();
 		} catch (Exception e) {
+			e.printStackTrace();
 			node.setStatus(Status.FAILED);
 			logError("Job run failed!");
-			logError(e.getMessage());
+			logError(e.getMessage() + e.getCause());
 			return;
 		}
 
diff --git a/src/java/azkaban/execapp/ProjectVersion.java b/src/java/azkaban/execapp/ProjectVersion.java
index 7a9adac..18e6e58 100644
--- a/src/java/azkaban/execapp/ProjectVersion.java
+++ b/src/java/azkaban/execapp/ProjectVersion.java
@@ -23,6 +23,12 @@ public class ProjectVersion implements Comparable<ProjectVersion> {
 		this.projectId = projectId;
 		this.version = version;
 	}
+	
+	public ProjectVersion(int projectId, int version, File installedDir) {
+		this.projectId = projectId;
+		this.version = version;
+		this.installedDir = installedDir;
+	}
 
 	public int getProjectId() {
 		return projectId;
@@ -77,6 +83,7 @@ public class ProjectVersion implements Comparable<ProjectVersion> {
 	}
 	
 	public synchronized void deleteDirectory() throws IOException {
+		System.out.println("Deleting old unused project versin " + installedDir);
 		if (installedDir != null && installedDir.exists()) {
 			FileUtils.deleteDirectory(installedDir);
 		}