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.
+                   }
             }
         }
     }

Reply via email to