diff --git a/src/java/azkaban/execapp/FlowRunnerManager.java b/src/java/azkaban/execapp/FlowRunnerManager.java
index 33ba8e2..17d3ae3 100644
--- a/src/java/azkaban/execapp/FlowRunnerManager.java
+++ b/src/java/azkaban/execapp/FlowRunnerManager.java
@@ -599,8 +599,7 @@ public class FlowRunnerManager implements EventListener {
File attachmentFile = runner.getJobAttachmentFile(jobId, attempt);
if (attachmentFile == null || !attachmentFile.exists()) {
- throw new ExecutorManagerException(
- "Job attachment file doesn't exist.");
+ return null;
}
return (ArrayList<Object>) JSONUtils.parseJSONFromFile(attachmentFile);
}
diff --git a/src/java/azkaban/executor/JdbcExecutorLoader.java b/src/java/azkaban/executor/JdbcExecutorLoader.java
index fe7ce76..e756cfb 100644
--- a/src/java/azkaban/executor/JdbcExecutorLoader.java
+++ b/src/java/azkaban/executor/JdbcExecutorLoader.java
@@ -720,6 +720,9 @@ public class JdbcExecutorLoader extends AbstractJdbcLoader
new FetchExecutableJobAttachmentsHandler(),
execId,
jobId);
+ if (attachments == null) {
+ return null;
+ }
return (List<Object>) JSONUtils.parseJSONFromString(attachments);
}
catch (IOException e) {
@@ -1054,11 +1057,13 @@ public class JdbcExecutorLoader extends AbstractJdbcLoader
@SuppressWarnings("unchecked")
@Override
public String handle(ResultSet rs) throws SQLException {
- String attachmentsJson = "";
+ String attachmentsJson = null;
if (rs.next()) {
try {
byte[] attachments = rs.getBytes(1);
- attachmentsJson = GZIPUtils.unGzipString(attachments, "UTF-8");
+ if (attachments != null) {
+ attachmentsJson = GZIPUtils.unGzipString(attachments, "UTF-8");
+ }
}
catch (IOException e) {
throw new SQLException("Error decoding job attachments", e);