This is an automated email from the ASF dual-hosted git repository.

dimuthuupe pushed a commit to branch staging
in repository https://gitbox.apache.org/repos/asf/airavata.git


The following commit(s) were added to refs/heads/staging by this push:
     new b7b0842  Adding an expiration time for email monitoring
b7b0842 is described below

commit b7b08422d2bacbcfdf2dd9256a780e279481427c
Author: Dimuthu Wannipurage <dimuthu.wannipur...@datasprouts.com>
AuthorDate: Sun Nov 25 16:43:09 2018 +0530

    Adding an expiration time for email monitoring
---
 .../templates/email-monitor/airavata-server.properties.j2     |  6 +++++-
 .../org/apache/airavata/monitor/email/EmailBasedMonitor.java  | 11 ++++++++++-
 .../src/main/resources/airavata-server.properties             |  4 ++++
 .../resources/email-monitor/conf/airavata-server.properties   |  6 +++++-
 4 files changed, 24 insertions(+), 3 deletions(-)

diff --git 
a/dev-tools/ansible/roles/job_monitor/templates/email-monitor/airavata-server.properties.j2
 
b/dev-tools/ansible/roles/job_monitor/templates/email-monitor/airavata-server.properties.j2
index 6c606c3..1bf7abf 100644
--- 
a/dev-tools/ansible/roles/job_monitor/templates/email-monitor/airavata-server.properties.j2
+++ 
b/dev-tools/ansible/roles/job_monitor/templates/email-monitor/airavata-server.properties.j2
@@ -29,4 +29,8 @@ email.based.monitoring.period=10000
 #These properties will be used to published parsed email messages to job 
monitor queue
 job.monitor.broker.url={{ job_monitor_broker_url }}
 job.monitor.broker.topic={{ job_monitor_broker_topic }}
-job.monitor.broker.publisher.id={{ email_job_monitor_broker_publisher }}
\ No newline at end of file
+job.monitor.broker.publisher.id={{ email_job_monitor_broker_publisher }}
+
+zookeeper.server.connection={{ zookeeper_connection_url }}
+zookeeper.timeout=30000
+email.expiration.minutes=60
\ No newline at end of file
diff --git 
a/modules/job-monitor/email-monitor/src/main/java/org/apache/airavata/monitor/email/EmailBasedMonitor.java
 
b/modules/job-monitor/email-monitor/src/main/java/org/apache/airavata/monitor/email/EmailBasedMonitor.java
index 5f5a526..10e8877 100644
--- 
a/modules/job-monitor/email-monitor/src/main/java/org/apache/airavata/monitor/email/EmailBasedMonitor.java
+++ 
b/modules/job-monitor/email-monitor/src/main/java/org/apache/airavata/monitor/email/EmailBasedMonitor.java
@@ -61,6 +61,7 @@ public class EmailBasedMonitor extends AbstractMonitor 
implements Runnable {
     private Map<String, ResourceJobManagerType> addressMap = new HashMap<>();
     private Message[] flushUnseenMessages;
     private Map<ResourceJobManagerType, ResourceConfig> resourceConfigs = new 
HashMap<>();
+    private long emailExpirationTimeMinutes;
 
 
     public EmailBasedMonitor() throws Exception {
@@ -75,6 +76,7 @@ public class EmailBasedMonitor extends AbstractMonitor 
implements Runnable {
         password = ServerSettings.getEmailBasedMonitorPassword();
         storeProtocol = ServerSettings.getEmailBasedMonitorStoreProtocol();
         folderName = ServerSettings.getEmailBasedMonitorFolderName();
+        emailExpirationTimeMinutes = 
Long.parseLong(ServerSettings.getSetting("email.expiration.minutes"));
         if (!(storeProtocol.equals(IMAPS) || storeProtocol.equals(POP3))) {
             throw new AiravataException("Unsupported store protocol , expected 
" +
                     IMAPS + " or " + POP3 + " but found " + storeProtocol);
@@ -239,7 +241,14 @@ public class EmailBasedMonitor extends AbstractMonitor 
implements Runnable {
                 processedMessages.add(message);
             } catch (Exception e) {
                 log.error("Error in submitting job status to queue", e);
-                unreadMessages.add(message);
+                if ((System.currentTimeMillis() - 
message.getReceivedDate().getTime()) > emailExpirationTimeMinutes * 60 * 1000) {
+                    log.warn("Marking job status email as read as it was 
expired");
+                    processedMessages.add(message);
+                } else {
+                    log.warn("Keeping job status email as unread untill it is 
expired in " + emailExpirationTimeMinutes +
+                            " minutes. Email received time " + 
message.getReceivedDate());
+                    unreadMessages.add(message);
+                }
             }
         }
         if (!processedMessages.isEmpty()) {
diff --git 
a/modules/job-monitor/email-monitor/src/main/resources/airavata-server.properties
 
b/modules/job-monitor/email-monitor/src/main/resources/airavata-server.properties
index e45b65c..dcd0521 100644
--- 
a/modules/job-monitor/email-monitor/src/main/resources/airavata-server.properties
+++ 
b/modules/job-monitor/email-monitor/src/main/resources/airavata-server.properties
@@ -30,3 +30,7 @@ email.based.monitoring.period=10000
 job.monitor.broker.url=192.168.99.103:9092
 job.monitor.broker.topic=parsed-data
 job.monitor.broker.publisher.id=EmailBasedProducer
+
+zookeeper.server.connection=localhost:2181
+zookeeper.timeout=30000
+email.expiration.minutes=60
\ No newline at end of file
diff --git 
a/modules/job-monitor/job-monitor-distribution/src/main/resources/email-monitor/conf/airavata-server.properties
 
b/modules/job-monitor/job-monitor-distribution/src/main/resources/email-monitor/conf/airavata-server.properties
index 92669be..8c32e86 100644
--- 
a/modules/job-monitor/job-monitor-distribution/src/main/resources/email-monitor/conf/airavata-server.properties
+++ 
b/modules/job-monitor/job-monitor-distribution/src/main/resources/email-monitor/conf/airavata-server.properties
@@ -29,4 +29,8 @@ email.based.monitoring.period=10000
 #These properties will be used to published parsed email messages to job 
monitor queue
 job.monitor.broker.url=CHANGEME
 job.monitor.broker.topic=parsed-data
-job.monitor.broker.publisher.id=EmailBasedProducer
\ No newline at end of file
+job.monitor.broker.publisher.id=EmailBasedProducer
+
+zookeeper.server.connection=localhost:2181
+zookeeper.timeout=30000
+email.expiration.minutes=60
\ No newline at end of file

Reply via email to