diff --git a/azkaban-exec-server/src/main/java/azkaban/execapp/JobRunner.java b/azkaban-exec-server/src/main/java/azkaban/execapp/JobRunner.java
index 13af90a..1373f91 100644
--- a/azkaban-exec-server/src/main/java/azkaban/execapp/JobRunner.java
+++ b/azkaban-exec-server/src/main/java/azkaban/execapp/JobRunner.java
@@ -584,13 +584,9 @@ public class JobRunner extends EventHandler implements Runnable {
// Start the node.
this.node.setStartTime(System.currentTimeMillis());
Status finalStatus = this.node.getStatus();
+ uploadExecutableNode();
if (!errorFound && !isKilled()) {
fireEvent(Event.create(this, Type.JOB_STARTED, new EventData(this.node)));
- try {
- this.loader.uploadExecutableNode(this.node, this.props);
- } catch (final ExecutorManagerException e1) {
- this.logger.error("Error writing initial node properties");
- }
final Status prepareStatus = prepareJob();
if (prepareStatus != null) {
@@ -626,6 +622,14 @@ public class JobRunner extends EventHandler implements Runnable {
writeStatus();
}
+ private void uploadExecutableNode() {
+ try {
+ this.loader.uploadExecutableNode(this.node, this.props);
+ } catch (final ExecutorManagerException e1) {
+ this.logger.error("Error writing initial node properties");
+ }
+ }
+
private Status prepareJob() throws RuntimeException {
// Check pre conditions
if (this.props == null || this.isKilled()) {
diff --git a/azkaban-exec-server/src/test/java/azkaban/execapp/JobRunnerTest.java b/azkaban-exec-server/src/test/java/azkaban/execapp/JobRunnerTest.java
index 8aec1a4..eb2ed5c 100644
--- a/azkaban-exec-server/src/test/java/azkaban/execapp/JobRunnerTest.java
+++ b/azkaban-exec-server/src/test/java/azkaban/execapp/JobRunnerTest.java
@@ -306,6 +306,7 @@ public class JobRunnerTest {
Assert.assertTrue(outputProps == null);
Assert.assertTrue(logFile.exists());
+ Assert.assertEquals(2L, (long) loader.getNodeUpdateCount("testJob"));
eventCollector.checkEventExists(Type.JOB_FINISHED);
}