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>