azkaban-developers

Details

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);