azkaban-aplcache

bug fix: global property needs to be inherited to jobs bug fix:

10/12/2012 8:30:04 PM

Details

diff --git a/src/java/azkaban/executor/FlowRunnerManager.java b/src/java/azkaban/executor/FlowRunnerManager.java
index 164479c..62fdb4c 100644
--- a/src/java/azkaban/executor/FlowRunnerManager.java
+++ b/src/java/azkaban/executor/FlowRunnerManager.java
@@ -52,7 +52,8 @@ public class FlowRunnerManager {
 		this.senderAddress = props.getString("mail.sender");
 		this.clientHostname = props.getString("jetty.hostname", "localhost");
 		this.clientPortNumber = Utils.nonNull(props.getString("jetty.ssl.port"));
-
+		this.globalProps = globalProps;
+		
 		basePath = new File(props.getString("execution.directory"));
 		numThreads = props.getInt("executor.flow.threads", DEFAULT_NUM_EXECUTING_FLOWS);
 		executorService = Executors.newFixedThreadPool(numThreads);
diff --git a/src/java/azkaban/jobExecutor/AbstractProcessJob.java b/src/java/azkaban/jobExecutor/AbstractProcessJob.java
index 5f03d7f..4618b0b 100644
--- a/src/java/azkaban/jobExecutor/AbstractProcessJob.java
+++ b/src/java/azkaban/jobExecutor/AbstractProcessJob.java
@@ -63,7 +63,7 @@ public abstract class AbstractProcessJob extends AbstractJob {
         super(jobid, log);
 
         _props = props;
-        _jobPath = props.getString(JOB_FULLPATH, new File(".").getAbsolutePath());
+        _jobPath = props.getString(JOB_FULLPATH, props.getSource());
 
         _cwd = getWorkingDirectory();
         this.log = log;
@@ -120,7 +120,7 @@ public abstract class AbstractProcessJob extends AbstractJob {
 
     public String getWorkingDirectory() {
         return getProps()//.getString(WORKING_DIR, ".");
-                .getString(WORKING_DIR, new File(_jobPath).getParent());
+                .getString(WORKING_DIR, new File(_jobPath).getAbsolutePath());
     }
 
     public Props loadOutputFileProps(final File outputPropertiesFile) {
diff --git a/src/java/azkaban/jobExecutor/JavaJobRunnerMain.java b/src/java/azkaban/jobExecutor/JavaJobRunnerMain.java
index a86970d..ff24162 100644
--- a/src/java/azkaban/jobExecutor/JavaJobRunnerMain.java
+++ b/src/java/azkaban/jobExecutor/JavaJobRunnerMain.java
@@ -124,8 +124,12 @@ public class JavaJobRunnerMain {
 			try {
 				final Method generatedPropertiesMethod = _javaObject.getClass().getMethod(
 						GET_GENERATED_PROPERTIES_METHOD, new Class<?>[] {});
-				Props outputGendProps = (Props) generatedPropertiesMethod.invoke(_javaObject, new Object[] {});
-				outputGeneratedProperties(outputGendProps);
+				Object outputGendProps = generatedPropertiesMethod.invoke(_javaObject, new Object[] {});
+				final Method toPropertiesMethod = outputGendProps.getClass().getMethod("toProperties", new Class<?>[] {});
+				Properties properties = (Properties)toPropertiesMethod.invoke(outputGendProps, new Object[] {});
+
+				Props outputProps = new Props(null, properties);
+				outputGeneratedProperties(outputProps);
 			} catch (NoSuchMethodException e) {
 				_logger.info(String.format(
 						"Apparently there isn't a method[%s] on object[%s], using empty Props object instead.",
@@ -250,9 +254,11 @@ public class JavaJobRunnerMain {
 		Class<?> propsClass = null;
 		for (String propClassName : PROPS_CLASSES) {
 			propsClass = JavaJobRunnerMain.class.getClassLoader().loadClass(propClassName);
-			if (propsClass != null) {
+			if (propsClass != null && getConstructor(runningClass, String.class, propsClass) != null) {
+				//is this the props class 
 				break;
 			}
+			propsClass = null;
 		}
 
 		Object obj = null;
diff --git a/src/java/azkaban/webapp/servlet/velocity/hdfsbrowserpage.vm b/src/java/azkaban/webapp/servlet/velocity/hdfsbrowserpage.vm
index 18842d4..a0b0302 100644
--- a/src/java/azkaban/webapp/servlet/velocity/hdfsbrowserpage.vm
+++ b/src/java/azkaban/webapp/servlet/velocity/hdfsbrowserpage.vm
@@ -44,9 +44,9 @@
 					<a href="${context}/hdfs/">/</a>
 					#set($size = $paths.size() - 1)
 					#if($size >= 0)
-						#foreach($i in [0 ..$size])
-							<a href="$context/hdfs${paths.get($i)}">${segments.get($i)}</a> /
-						#end
+#foreach($i in [0 ..$size])
+<a href="$context/hdfs${paths.get($i)}">${segments.get($i)}</a><span>/</span>
+#end
 					#end
 				</div>