Repository: airavata Updated Branches: refs/heads/master 8139a8d8d -> ad95ca466
Fixed email monitoring issues Project: http://git-wip-us.apache.org/repos/asf/airavata/repo Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/ad95ca46 Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/ad95ca46 Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/ad95ca46 Branch: refs/heads/master Commit: ad95ca466eac15527e2031d1eb43fa7db5725311 Parents: 8139a8d Author: Shameera Rathanyaka <[email protected]> Authored: Fri Sep 18 10:40:49 2015 -0400 Committer: Shameera Rathanyaka <[email protected]> Committed: Fri Sep 18 10:40:49 2015 -0400 ---------------------------------------------------------------------- .../gfac/monitor/email/EmailBasedMonitor.java | 42 ++++++++++++++------ 1 file changed, 30 insertions(+), 12 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/airavata/blob/ad95ca46/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/EmailBasedMonitor.java ---------------------------------------------------------------------- diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/EmailBasedMonitor.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/EmailBasedMonitor.java index 3f5718e..facba34 100644 --- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/EmailBasedMonitor.java +++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/monitor/email/EmailBasedMonitor.java @@ -77,6 +77,7 @@ public class EmailBasedMonitor implements JobMonitor, Runnable{ private Date monitorStartDate; private Map<ResourceJobManagerType, EmailParser> emailParserMap = new HashMap<ResourceJobManagerType, EmailParser>(); private Map<String, ResourceJobManagerType> addressMap = new HashMap<>(); + private Message[] flushUnseenMessages; public EmailBasedMonitor(Map<ResourceJobManagerType, ResourceConfig> resourceConfigs) throws AiravataException { @@ -176,14 +177,29 @@ public class EmailBasedMonitor implements JobMonitor, Runnable{ } log.info("[EJM]: Retrieving unseen emails"); emailFolder.open(Folder.READ_WRITE); - Message[] searchMessages = emailFolder.search(unseenBefore); - if (searchMessages == null || searchMessages.length == 0) { - log.info("[EJM]: No new email messages"); - } else { - log.info("[EJM]: " + searchMessages.length + " new email/s received"); + if (emailFolder.isOpen()) { + // flush if any message left in flushUnseenMessage + if (flushUnseenMessages != null && flushUnseenMessages.length > 0) { + try { + emailFolder.setFlags(flushUnseenMessages, new Flags(Flags.Flag.SEEN), false); + flushUnseenMessages = null; + } catch (MessagingException e) { + if (!store.isConnected()) { + store.connect(); + emailFolder.setFlags(flushUnseenMessages, new Flags(Flags.Flag.SEEN), false); + flushUnseenMessages = null; + } + } + } + Message[] searchMessages = emailFolder.search(unseenBefore); + if (searchMessages == null || searchMessages.length == 0) { + log.info("[EJM]: No new email messages"); + } else { + log.info("[EJM]: " + searchMessages.length + " new email/s received"); + } + processMessages(searchMessages); + emailFolder.close(false); } - processMessages(searchMessages); - emailFolder.close(false); } } catch (MessagingException e) { log.error("[EJM]: Couldn't connect to the store ", e); @@ -258,11 +274,13 @@ public class EmailBasedMonitor implements JobMonitor, Runnable{ try { emailFolder.setFlags(unseenMessages, new Flags(Flags.Flag.SEEN), false); } catch (MessagingException e) { - if (!store.isConnected()) { - store.connect(); - emailFolder.setFlags(unseenMessages, new Flags(Flags.Flag.SEEN), false); - - } + if (!store.isConnected()) { + store.connect(); + emailFolder.setFlags(unseenMessages, new Flags(Flags.Flag.SEEN), false); + flushUnseenMessages = unseenMessages; // anyway we need to push this update. + } else { + flushUnseenMessages = unseenMessages; // anyway we need to push this update. + } } } }
