Details
diff --git a/azkaban-exec-server/src/main/java/azkaban/execapp/AzkabanExecutorServer.java b/azkaban-exec-server/src/main/java/azkaban/execapp/AzkabanExecutorServer.java
index 72281da..dbe3178 100644
--- a/azkaban-exec-server/src/main/java/azkaban/execapp/AzkabanExecutorServer.java
+++ b/azkaban-exec-server/src/main/java/azkaban/execapp/AzkabanExecutorServer.java
@@ -339,14 +339,13 @@ public class AzkabanExecutorServer {
}
/**
- * Load a custom class, which is provided by a configuration
- * CUSTOM_JMX_ATTRIBUTE_PROCESSOR_PROPERTY.
+ * Load a custom class, which is provided by a configuration CUSTOM_JMX_ATTRIBUTE_PROCESSOR_PROPERTY.
*
- * This method will try to instantiate an instance of this custom class and
- * with given properties as the argument in the constructor.
+ * This method will try to instantiate an instance of this custom class and with given properties
+ * as the argument in the constructor.
*
- * Basically the custom class must have a constructor that takes an argument
- * with type Properties.
+ * Basically the custom class must have a constructor that takes an argument with type
+ * Properties.
*/
private void loadCustomJMXAttributeProcessor(final Props props) {
final String jmxAttributeEmitter =
@@ -495,9 +494,8 @@ public class AzkabanExecutorServer {
}
/**
- * Shutdown the server.
- * - performs a safe shutdown. Waits for completion of current tasks
- * - spawns a shutdown thread and returns immediately.
+ * Shutdown the server. - performs a safe shutdown. Waits for completion of current tasks - spawns
+ * a shutdown thread and returns immediately.
*/
public void shutdown() {
logger.warn("Shutting down AzkabanExecutorServer...");
@@ -513,12 +511,9 @@ public class AzkabanExecutorServer {
}
/**
- * (internal API)
- * Note: This should be run in a separate thread.
+ * (internal API) Note: This should be run in a separate thread.
*
- * Shutdown the server. (blocking call)
- * - waits for jobs to finish
- * - doesn't accept any new jobs
+ * Shutdown the server. (blocking call) - waits for jobs to finish - doesn't accept any new jobs
*/
private void shutdownInternal() {
getFlowRunnerManager().shutdown();
diff --git a/azkaban-exec-server/src/main/java/azkaban/execapp/event/JobCallbackManager.java b/azkaban-exec-server/src/main/java/azkaban/execapp/event/JobCallbackManager.java
index 7771b39..30f96ce 100644
--- a/azkaban-exec-server/src/main/java/azkaban/execapp/event/JobCallbackManager.java
+++ b/azkaban-exec-server/src/main/java/azkaban/execapp/event/JobCallbackManager.java
@@ -30,14 +30,13 @@ import org.apache.log4j.Logger;
/**
* Responsible processing job callback properties on job status change events.
*
- * When job callback properties are specified, they will be converted to HTTP
- * calls to execute. The HTTP requests will be made in asynchronous mode so the
- * caller to the handleEvent method will not be block. In addition, the HTTP
- * calls will be configured to time appropriately for connection request,
- * creating connection, and socket timeout.
+ * When job callback properties are specified, they will be converted to HTTP calls to execute. The
+ * HTTP requests will be made in asynchronous mode so the caller to the handleEvent method will not
+ * be block. In addition, the HTTP calls will be configured to time appropriately for connection
+ * request, creating connection, and socket timeout.
*
- * The HTTP request and response will be logged out the job's log for debugging
- * and traceability purpose.
+ * The HTTP request and response will be logged out the job's log for debugging and traceability
+ * purpose.
*
* @author hluu
*/
diff --git a/azkaban-exec-server/src/main/java/azkaban/execapp/event/JobCallbackRequestMaker.java b/azkaban-exec-server/src/main/java/azkaban/execapp/event/JobCallbackRequestMaker.java
index aa9e0b9..0fb42f7 100644
--- a/azkaban-exec-server/src/main/java/azkaban/execapp/event/JobCallbackRequestMaker.java
+++ b/azkaban-exec-server/src/main/java/azkaban/execapp/event/JobCallbackRequestMaker.java
@@ -36,8 +36,8 @@ import org.apache.log4j.Logger;
/**
* Responsible for making the job callback HTTP requests.
*
- * One of the requirements is to log out the request information and response
- * using the given logger, which should be the job logger.
+ * One of the requirements is to log out the request information and response using the given
+ * logger, which should be the job logger.
*
* @author hluu
*/
@@ -175,8 +175,7 @@ public class JobCallbackRequestMaker {
}
/**
- * Response handler for logging job callback response using the given logger
- * instance
+ * Response handler for logging job callback response using the given logger instance
*
* @author hluu
*/
diff --git a/azkaban-exec-server/src/main/java/azkaban/execapp/event/JobCallbackUtil.java b/azkaban-exec-server/src/main/java/azkaban/execapp/event/JobCallbackUtil.java
index 9d74d72..f6db5bc 100644
--- a/azkaban-exec-server/src/main/java/azkaban/execapp/event/JobCallbackUtil.java
+++ b/azkaban-exec-server/src/main/java/azkaban/execapp/event/JobCallbackUtil.java
@@ -56,8 +56,7 @@ public class JobCallbackUtil {
}
/**
- * Use to quickly determine if there is a job callback related property in the
- * Props.
+ * Use to quickly determine if there is a job callback related property in the Props.
*
* @return true if there is job callback related property
*/
@@ -96,8 +95,8 @@ public class JobCallbackUtil {
}
/**
- * This method is responsible for parsing job call URL properties and convert
- * them into a list of HttpRequestBase, which callers can use to execute.
+ * This method is responsible for parsing job call URL properties and convert them into a list of
+ * HttpRequestBase, which callers can use to execute.
*
* In addition to parsing, it will also replace the tokens with actual values.
*
@@ -226,8 +225,7 @@ public class JobCallbackUtil {
}
/**
- * This method takes the job context info. and put the values into a map with
- * keys as the tokens.
+ * This method takes the job context info. and put the values into a map with keys as the tokens.
*
* @return Map<String,String>
*/
@@ -267,8 +265,8 @@ public class JobCallbackUtil {
}
/**
- * Replace the supported tokens in the URL with values in the contextInfo.
- * This will also make sure the values are HTTP encoded.
+ * Replace the supported tokens in the URL with values in the contextInfo. This will also make
+ * sure the values are HTTP encoded.
*
* @param withEncoding - whether the token values will be HTTP encoded
* @return String - value with tokens replaced with values
diff --git a/azkaban-exec-server/src/main/java/azkaban/execapp/FlowRunner.java b/azkaban-exec-server/src/main/java/azkaban/execapp/FlowRunner.java
index 097fccb..ef460ff 100644
--- a/azkaban-exec-server/src/main/java/azkaban/execapp/FlowRunner.java
+++ b/azkaban-exec-server/src/main/java/azkaban/execapp/FlowRunner.java
@@ -422,7 +422,8 @@ public class FlowRunner extends EventHandler implements Runnable {
// If a job is seen as failed or killed due to failing SLA, then we set the parent flow to
// FAILED_FINISHING
- if (node.getStatus() == Status.FAILED || (node.getStatus() == Status.KILLED && node.isKilledBySLA())) {
+ if (node.getStatus() == Status.FAILED || (node.getStatus() == Status.KILLED && node
+ .isKilledBySLA())) {
// The job cannot be retried or has run out of retry attempts. We will
// fail the job and its flow now.
if (!retryJobIfPossible(node)) {
@@ -1091,6 +1092,10 @@ public class FlowRunner extends EventHandler implements Runnable {
return this.execId;
}
+ public Set<JobRunner> getActiveJobRunners() {
+ return ImmutableSet.copyOf(this.activeJobRunners);
+ }
+
private class JobRunnerEventListener implements EventListener {
public JobRunnerEventListener() {
@@ -1119,7 +1124,7 @@ public class FlowRunner extends EventHandler implements Runnable {
}
FlowRunner.this.finishedNodes.add(node);
- activeJobRunners.remove(runner);
+ FlowRunner.this.activeJobRunners.remove(runner);
node.getParentFlow().setUpdateTime(System.currentTimeMillis());
interrupt();
fireEventListeners(event);
@@ -1134,8 +1139,4 @@ public class FlowRunner extends EventHandler implements Runnable {
}
}
}
-
- public Set<JobRunner> getActiveJobRunners() {
- return ImmutableSet.copyOf(this.activeJobRunners);
- }
}
diff --git a/azkaban-exec-server/src/main/java/azkaban/execapp/FlowRunnerManager.java b/azkaban-exec-server/src/main/java/azkaban/execapp/FlowRunnerManager.java
index d835c76..cdea09b 100644
--- a/azkaban-exec-server/src/main/java/azkaban/execapp/FlowRunnerManager.java
+++ b/azkaban-exec-server/src/main/java/azkaban/execapp/FlowRunnerManager.java
@@ -68,23 +68,20 @@ import org.apache.log4j.Logger;
/**
* Execution manager for the server side execution.
*
- * When a flow is submitted to FlowRunnerManager, it is the
- * {@link Status.PREPARING} status. When a flow is about to be executed by
- * FlowRunner, its status is updated to {@link Status.RUNNING}
+ * When a flow is submitted to FlowRunnerManager, it is the {@link Status.PREPARING} status. When a
+ * flow is about to be executed by FlowRunner, its status is updated to {@link Status.RUNNING}
*
* Two main data structures are used in this class to maintain flows.
*
- * runningFlows: this is used as a bookkeeping for submitted flows in
- * FlowRunnerManager. It has nothing to do with the executor service that is
- * used to execute the flows. This bookkeeping is used at the time of canceling
- * or killing a flow. The flows in this data structure is removed in the
- * handleEvent method.
+ * runningFlows: this is used as a bookkeeping for submitted flows in FlowRunnerManager. It has
+ * nothing to do with the executor service that is used to execute the flows. This bookkeeping is
+ * used at the time of canceling or killing a flow. The flows in this data structure is removed in
+ * the handleEvent method.
*
- * submittedFlows: this is used to keep track the execution of the flows, so it
- * has the mapping between a Future<?> and an execution id. This would allow us
- * to find out the execution ids of the flows that are in the Status.PREPARING
- * status. The entries in this map is removed once the flow execution is
- * completed.
+ * submittedFlows: this is used to keep track the execution of the flows, so it has the mapping
+ * between a Future<?> and an execution id. This would allow us to find out the execution ids of the
+ * flows that are in the Status.PREPARING status. The entries in this map is removed once the flow
+ * execution is completed.
*/
public class FlowRunnerManager implements EventListener,
ThreadPoolExecutingListener {
@@ -206,15 +203,16 @@ public class FlowRunnerManager implements EventListener,
}
/**
- * Setting the gid bit on the execution directory forces all files/directories created within
- * the directory to be a part of the group associated with the azkaban process. Then, when users
+ * Setting the gid bit on the execution directory forces all files/directories created within the
+ * directory to be a part of the group associated with the azkaban process. Then, when users
* create their own files, the azkaban cleanup thread can properly remove them.
*
- * Java does not provide a standard library api for setting the gid bit because the gid bit
- * is system dependent, so the only way to set this bit is to start a new process and run
- * the shell command "chmod g+s " + execution directory name.
+ * Java does not provide a standard library api for setting the gid bit because the gid bit is
+ * system dependent, so the only way to set this bit is to start a new process and run the shell
+ * command "chmod g+s " + execution directory name.
*
- * Note that this should work on most Linux distributions and MacOS, but will not work on Windows.
+ * Note that this should work on most Linux distributions and MacOS, but will not work on
+ * Windows.
*/
private void setgidPermissionOnExecutionDirectory() throws IOException {
logger.info("Creating subprocess to run shell command: chmod g+s "
@@ -743,8 +741,8 @@ public class FlowRunnerManager implements EventListener,
}
/**
- * This attempts shuts down the flow runner immediately (unsafe).
- * This doesn't wait for jobs to finish but interrupts all threads.
+ * This attempts shuts down the flow runner immediately (unsafe). This doesn't wait for jobs to
+ * finish but interrupts all threads.
*/
public void shutdownNow() {
logger.warn("Shutting down FlowRunnerManager now...");
diff --git a/azkaban-exec-server/src/main/java/azkaban/execapp/jmx/JmxJobMBeanManager.java b/azkaban-exec-server/src/main/java/azkaban/execapp/jmx/JmxJobMBeanManager.java
index 9fdd7a8..461c4b1 100644
--- a/azkaban-exec-server/src/main/java/azkaban/execapp/jmx/JmxJobMBeanManager.java
+++ b/azkaban-exec-server/src/main/java/azkaban/execapp/jmx/JmxJobMBeanManager.java
@@ -13,8 +13,8 @@ import java.util.concurrent.atomic.AtomicInteger;
import org.apache.log4j.Logger;
/**
- * Responsible keeping track of job related MBean attributes through listening
- * to job related events.
+ * Responsible keeping track of job related MBean attributes through listening to job related
+ * events.
*
* @author hluu
*/
diff --git a/azkaban-exec-server/src/main/java/azkaban/execapp/metric/NumFailedFlowMetric.java b/azkaban-exec-server/src/main/java/azkaban/execapp/metric/NumFailedFlowMetric.java
index ee5d491..6116583 100644
--- a/azkaban-exec-server/src/main/java/azkaban/execapp/metric/NumFailedFlowMetric.java
+++ b/azkaban-exec-server/src/main/java/azkaban/execapp/metric/NumFailedFlowMetric.java
@@ -41,8 +41,7 @@ public class NumFailedFlowMetric extends TimeBasedReportingMetric<Integer> imple
}
/**
- * Listen for events to maintain correct value of number of failed flows
- * {@inheritDoc}
+ * Listen for events to maintain correct value of number of failed flows {@inheritDoc}
*
* @see azkaban.event.EventListener#handleEvent(azkaban.event.Event)
*/
diff --git a/azkaban-exec-server/src/main/java/azkaban/execapp/metric/NumFailedJobMetric.java b/azkaban-exec-server/src/main/java/azkaban/execapp/metric/NumFailedJobMetric.java
index e2599b2..b069b0b 100644
--- a/azkaban-exec-server/src/main/java/azkaban/execapp/metric/NumFailedJobMetric.java
+++ b/azkaban-exec-server/src/main/java/azkaban/execapp/metric/NumFailedJobMetric.java
@@ -39,8 +39,7 @@ public class NumFailedJobMetric extends TimeBasedReportingMetric<Integer> implem
}
/**
- * Listen for events to maintain correct value of number of failed jobs
- * {@inheritDoc}
+ * Listen for events to maintain correct value of number of failed jobs {@inheritDoc}
*
* @see azkaban.event.EventListener#handleEvent(azkaban.event.Event)
*/
diff --git a/azkaban-exec-server/src/main/java/azkaban/execapp/metric/NumQueuedFlowMetric.java b/azkaban-exec-server/src/main/java/azkaban/execapp/metric/NumQueuedFlowMetric.java
index ccc447c..e3888b8 100644
--- a/azkaban-exec-server/src/main/java/azkaban/execapp/metric/NumQueuedFlowMetric.java
+++ b/azkaban-exec-server/src/main/java/azkaban/execapp/metric/NumQueuedFlowMetric.java
@@ -45,8 +45,7 @@ public class NumQueuedFlowMetric extends TimeBasedReportingMetric<Integer> {
}
/**
- * Update value using flow manager
- * {@inheritDoc}
+ * Update value using flow manager {@inheritDoc}
*
* @see azkaban.metric.TimeBasedReportingMetric#preTrackingEventMethod()
*/
diff --git a/azkaban-exec-server/src/main/java/azkaban/execapp/metric/NumRunningFlowMetric.java b/azkaban-exec-server/src/main/java/azkaban/execapp/metric/NumRunningFlowMetric.java
index 4317abd..01e82f2 100644
--- a/azkaban-exec-server/src/main/java/azkaban/execapp/metric/NumRunningFlowMetric.java
+++ b/azkaban-exec-server/src/main/java/azkaban/execapp/metric/NumRunningFlowMetric.java
@@ -45,8 +45,7 @@ public class NumRunningFlowMetric extends TimeBasedReportingMetric<Integer> {
}
/**
- * Update value using flow manager
- * {@inheritDoc}
+ * Update value using flow manager {@inheritDoc}
*
* @see azkaban.metric.TimeBasedReportingMetric#preTrackingEventMethod()
*/
diff --git a/azkaban-exec-server/src/main/java/azkaban/execapp/metric/NumRunningJobMetric.java b/azkaban-exec-server/src/main/java/azkaban/execapp/metric/NumRunningJobMetric.java
index f20d8d9..5be6b68 100644
--- a/azkaban-exec-server/src/main/java/azkaban/execapp/metric/NumRunningJobMetric.java
+++ b/azkaban-exec-server/src/main/java/azkaban/execapp/metric/NumRunningJobMetric.java
@@ -43,8 +43,7 @@ public class NumRunningJobMetric extends TimeBasedReportingMetric<Integer> imple
}
/**
- * Listen for events to maintain correct value of number of running jobs
- * {@inheritDoc}
+ * Listen for events to maintain correct value of number of running jobs {@inheritDoc}
*
* @see azkaban.event.EventListener#handleEvent(azkaban.event.Event)
*/
diff --git a/azkaban-exec-server/src/main/java/azkaban/execapp/ServerStatisticsServlet.java b/azkaban-exec-server/src/main/java/azkaban/execapp/ServerStatisticsServlet.java
index 11ab6e3..82835a7 100644
--- a/azkaban-exec-server/src/main/java/azkaban/execapp/ServerStatisticsServlet.java
+++ b/azkaban-exec-server/src/main/java/azkaban/execapp/ServerStatisticsServlet.java
@@ -183,8 +183,8 @@ public class ServerStatisticsServlet extends HttpServlet {
}
/**
- * call the data providers to fill the returning data container for statistics data.
- * This function refreshes the static cached copy of data in case if necessary.
+ * call the data providers to fill the returning data container for statistics data. This function
+ * refreshes the static cached copy of data in case if necessary.
*/
protected synchronized void populateStatistics(final boolean noCache) {
//check again before starting the work.
diff --git a/azkaban-exec-server/src/main/java/azkaban/execapp/StatsServlet.java b/azkaban-exec-server/src/main/java/azkaban/execapp/StatsServlet.java
index b5bd2b6..1fa7b3f 100644
--- a/azkaban-exec-server/src/main/java/azkaban/execapp/StatsServlet.java
+++ b/azkaban-exec-server/src/main/java/azkaban/execapp/StatsServlet.java
@@ -41,8 +41,8 @@ import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
/**
- * Servlet to communicate with Azkaban exec server This servlet get requests
- * from stats servlet in Azkaban Web server
+ * Servlet to communicate with Azkaban exec server This servlet get requests from stats servlet in
+ * Azkaban Web server
*/
public class StatsServlet extends HttpServlet implements ConnectorParams {
@@ -104,8 +104,7 @@ public class StatsServlet extends HttpServlet implements ConnectorParams {
}
/**
- * enable or disable metric Manager A disable will also purge all data from
- * all metric emitters
+ * enable or disable metric Manager A disable will also purge all data from all metric emitters
*/
private void handleChangeManagerStatusRequest(final HttpServletRequest req,
final Map<String, Object> ret, final boolean enableMetricManager) {
diff --git a/azkaban-exec-server/src/main/java/azkaban/execapp/TriggerManager.java b/azkaban-exec-server/src/main/java/azkaban/execapp/TriggerManager.java
index 14a5911..eebcb5c 100644
--- a/azkaban-exec-server/src/main/java/azkaban/execapp/TriggerManager.java
+++ b/azkaban-exec-server/src/main/java/azkaban/execapp/TriggerManager.java
@@ -16,8 +16,8 @@
package azkaban.execapp;
-import azkaban.execapp.action.KillJobAction;
import azkaban.execapp.action.KillExecutionAction;
+import azkaban.execapp.action.KillJobAction;
import azkaban.sla.SlaOption;
import azkaban.trigger.Condition;
import azkaban.trigger.ConditionChecker;
@@ -69,7 +69,7 @@ public class TriggerManager {
action = new KillExecutionAction(SlaOption.ACTION_CANCEL_FLOW, execId);
break;
case SlaOption.ACTION_KILL_JOB:
- String jobId = (String)sla.getInfo().get(SlaOption.INFO_JOB_NAME);
+ final String jobId = (String) sla.getInfo().get(SlaOption.INFO_JOB_NAME);
action = new KillJobAction(SlaOption.ACTION_KILL_JOB, execId, jobId);
break;
default:
diff --git a/azkaban-exec-server/src/test/java/azkaban/execapp/event/BlockingStatusTest.java b/azkaban-exec-server/src/test/java/azkaban/execapp/event/BlockingStatusTest.java
index 9ffc496..55cb9f6 100644
--- a/azkaban-exec-server/src/test/java/azkaban/execapp/event/BlockingStatusTest.java
+++ b/azkaban-exec-server/src/test/java/azkaban/execapp/event/BlockingStatusTest.java
@@ -24,8 +24,8 @@ import org.junit.Test;
public class BlockingStatusTest {
/**
- * TODO: Ignore this test at present since travis in Github can not always pass this test.
- * We will modify the below code to make travis pass in future.
+ * TODO: Ignore this test at present since travis in Github can not always pass this test. We will
+ * modify the below code to make travis pass in future.
*/
@Ignore
@Test
@@ -44,8 +44,8 @@ public class BlockingStatusTest {
}
/**
- * TODO: Ignore this test at present since travis in Github can not always pass this test.
- * We will modify the below code to make travis pass in future.
+ * TODO: Ignore this test at present since travis in Github can not always pass this test. We will
+ * modify the below code to make travis pass in future.
*/
@Ignore
@Test
@@ -65,8 +65,8 @@ public class BlockingStatusTest {
}
/**
- * TODO: Ignore this test at present since travis in Github can not always pass this test.
- * We will modify the below code to make travis pass in future.
+ * TODO: Ignore this test at present since travis in Github can not always pass this test. We will
+ * modify the below code to make travis pass in future.
*/
@Ignore
@Test
@@ -89,8 +89,8 @@ public class BlockingStatusTest {
}
/**
- * TODO: Ignore this test at present since travis in Github can not always pass this test.
- * We will modify the below code to make travis pass in future.
+ * TODO: Ignore this test at present since travis in Github can not always pass this test. We will
+ * modify the below code to make travis pass in future.
*/
@Ignore
@Test
diff --git a/azkaban-exec-server/src/test/java/azkaban/execapp/FlowRunnerPipelineTest.java b/azkaban-exec-server/src/test/java/azkaban/execapp/FlowRunnerPipelineTest.java
index eeca50d..83897d5 100644
--- a/azkaban-exec-server/src/test/java/azkaban/execapp/FlowRunnerPipelineTest.java
+++ b/azkaban-exec-server/src/test/java/azkaban/execapp/FlowRunnerPipelineTest.java
@@ -48,23 +48,12 @@ import org.junit.Ignore;
import org.junit.Test;
/**
- * Flows in this test:
- * joba
- * jobb
- * joba1
- * jobc->joba
- * jobd->joba
- * jobe->jobb,jobc,jobd
- * jobf->jobe,joba1
+ * Flows in this test: joba jobb joba1 jobc->joba jobd->joba jobe->jobb,jobc,jobd jobf->jobe,joba1
*
- * jobb = innerFlow
- * innerJobA
- * innerJobB->innerJobA
- * innerJobC->innerJobB
+ * jobb = innerFlow innerJobA innerJobB->innerJobA innerJobC->innerJobB
* innerFlow->innerJobB,innerJobC
*
- * jobd=innerFlow2
- * innerFlow2->innerJobA
+ * jobd=innerFlow2 innerFlow2->innerJobA
*
* @author rpark
*/
diff --git a/azkaban-exec-server/src/test/java/azkaban/execapp/FlowRunnerPropertyResolutionTest.java b/azkaban-exec-server/src/test/java/azkaban/execapp/FlowRunnerPropertyResolutionTest.java
index 19b16b1..50e0eae 100644
--- a/azkaban-exec-server/src/test/java/azkaban/execapp/FlowRunnerPropertyResolutionTest.java
+++ b/azkaban-exec-server/src/test/java/azkaban/execapp/FlowRunnerPropertyResolutionTest.java
@@ -45,23 +45,17 @@ import org.junit.Test;
/**
* Test the property resolution of jobs in a flow.
*
- * The tests are contained in execpropstest, and should be resolved in the
- * following fashion, where the later props take precedence over the previous
- * ones.
+ * The tests are contained in execpropstest, and should be resolved in the following fashion, where
+ * the later props take precedence over the previous ones.
*
- * 1. Global props (set in the FlowRunner)
- * 2. Shared job props (depends on job directory)
- * 3. Flow Override properties
- * 4. Previous job outputs to the embedded flow (Only if contained in embedded flow)
- * 5. Embedded flow properties (Only if contained in embedded flow)
- * 6. Previous job outputs (if exists)
- * 7. Job Props
+ * 1. Global props (set in the FlowRunner) 2. Shared job props (depends on job directory) 3. Flow
+ * Override properties 4. Previous job outputs to the embedded flow (Only if contained in embedded
+ * flow) 5. Embedded flow properties (Only if contained in embedded flow) 6. Previous job outputs
+ * (if exists) 7. Job Props
*
- * The test contains the following structure:
- * job2 -> innerFlow (job1 -> job4 ) -> job3
+ * The test contains the following structure: job2 -> innerFlow (job1 -> job4 ) -> job3
*
- * job2 and 4 are in nested directories so should have different shared
- * properties than other jobs.
+ * job2 and 4 are in nested directories so should have different shared properties than other jobs.
*/
public class FlowRunnerPropertyResolutionTest {
diff --git a/azkaban-exec-server/src/test/java/azkaban/execapp/FlowRunnerTest.java b/azkaban-exec-server/src/test/java/azkaban/execapp/FlowRunnerTest.java
index dc573bd..0f4fe82 100644
--- a/azkaban-exec-server/src/test/java/azkaban/execapp/FlowRunnerTest.java
+++ b/azkaban-exec-server/src/test/java/azkaban/execapp/FlowRunnerTest.java
@@ -58,7 +58,7 @@ public class FlowRunnerTest extends FlowRunnerTestBase {
@Mock
private ProjectLoader fakeProjectLoader;
-
+
@Mock
private ExecutorLoader loader;
diff --git a/azkaban-exec-server/src/test/java/azkaban/execapp/FlowRunnerTestUtil.java b/azkaban-exec-server/src/test/java/azkaban/execapp/FlowRunnerTestUtil.java
index 84486ac..512064b 100644
--- a/azkaban-exec-server/src/test/java/azkaban/execapp/FlowRunnerTestUtil.java
+++ b/azkaban-exec-server/src/test/java/azkaban/execapp/FlowRunnerTestUtil.java
@@ -30,8 +30,8 @@ import org.apache.log4j.Logger;
class FlowRunnerTestUtil {
/**
- * Initialize the project with the flow definitions stored in the given source directory.
- * Also copy the source directory to the working directory.
+ * Initialize the project with the flow definitions stored in the given source directory. Also
+ * copy the source directory to the working directory.
*
* @param project project to initialize
* @param sourceDir the source dir