Repository: falcon
Updated Branches:
  refs/heads/master 00a2b3a95 -> 470e5e9f5


FALCON-2341 Entity SLA Alert publishing wrong results into DB

Author: Amit Khanna <[email protected]>

Reviewers: @pallavi-rao

Closes #415 from amitkhanna1806/apache-falcon and squashes the following 
commits:

f61fd66cf [Amit Khanna] SLA High should be true if TAG_CRITICAL
10a989c57 [Amit Khanna] FALCON-2341 Entity SLA Alert publishing wrong results 
into DB


Project: http://git-wip-us.apache.org/repos/asf/falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/falcon/commit/470e5e9f
Tree: http://git-wip-us.apache.org/repos/asf/falcon/tree/470e5e9f
Diff: http://git-wip-us.apache.org/repos/asf/falcon/diff/470e5e9f

Branch: refs/heads/master
Commit: 470e5e9f5de9ba1b6149dec60e87d3a04270eda3
Parents: 00a2b3a
Author: Amit Khanna <[email protected]>
Authored: Thu Aug 9 16:02:37 2018 +0530
Committer: pallavi-rao <[email protected]>
Committed: Thu Aug 9 16:02:37 2018 +0530

----------------------------------------------------------------------
 .../apache/falcon/persistence/EntitySLAAlertBean.java   |  4 ++--
 .../apache/falcon/jdbc/MonitoringJdbcStateStore.java    | 12 ++++++++++++
 .../apache/falcon/service/EntitySLAAlertService.java    |  5 +++--
 .../falcon/service/EntitySLAMonitoringService.java      |  8 ++++----
 4 files changed, 21 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/falcon/blob/470e5e9f/common/src/main/java/org/apache/falcon/persistence/EntitySLAAlertBean.java
----------------------------------------------------------------------
diff --git 
a/common/src/main/java/org/apache/falcon/persistence/EntitySLAAlertBean.java 
b/common/src/main/java/org/apache/falcon/persistence/EntitySLAAlertBean.java
index 6482e8c..b0ce279 100644
--- a/common/src/main/java/org/apache/falcon/persistence/EntitySLAAlertBean.java
+++ b/common/src/main/java/org/apache/falcon/persistence/EntitySLAAlertBean.java
@@ -101,11 +101,11 @@ public class EntitySLAAlertBean {
     private Boolean slaHighAlertSent;
 
     public Date getNominalTime() {
-        return new Date(nominalTime.getTime());
+        return nominalTime;
     }
 
     public void setNominalTime(Date nominalTime) {
-        this.nominalTime = new Date(nominalTime.getTime());
+        this.nominalTime = nominalTime;
     }
 
     public String getId() {

http://git-wip-us.apache.org/repos/asf/falcon/blob/470e5e9f/prism/src/main/java/org/apache/falcon/jdbc/MonitoringJdbcStateStore.java
----------------------------------------------------------------------
diff --git 
a/prism/src/main/java/org/apache/falcon/jdbc/MonitoringJdbcStateStore.java 
b/prism/src/main/java/org/apache/falcon/jdbc/MonitoringJdbcStateStore.java
index 51eac94..8d50862 100644
--- a/prism/src/main/java/org/apache/falcon/jdbc/MonitoringJdbcStateStore.java
+++ b/prism/src/main/java/org/apache/falcon/jdbc/MonitoringJdbcStateStore.java
@@ -263,6 +263,9 @@ public class MonitoringJdbcStateStore {
 
     public void putSLAAlertInstance(String entityName, String cluster, String 
entityType, Date nominalTime,
                                     Boolean isSLALowMissed, Boolean 
isSLAHighMissed) throws FalconException{
+        if(isSLAAlertInstancePresent(entityName, cluster, entityType, 
nominalTime)){
+            return;
+        }
         EntityManager entityManager = getEntityManager();
         EntitySLAAlertBean entitySLAAlertBean = new EntitySLAAlertBean();
         entitySLAAlertBean.setEntityName(entityName);
@@ -313,4 +316,13 @@ public class MonitoringJdbcStateStore {
         entityManager.getTransaction().begin();
     }
 
+    public boolean isSLAAlertInstancePresent(String entityName, String 
cluster, String entityType, Date nominalTime){
+        try{
+            getEntityAlertInstance(entityName, cluster, nominalTime, 
entityType);
+            return true;
+        } catch (Exception NoResultException){
+            return false;
+        }
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/falcon/blob/470e5e9f/prism/src/main/java/org/apache/falcon/service/EntitySLAAlertService.java
----------------------------------------------------------------------
diff --git 
a/prism/src/main/java/org/apache/falcon/service/EntitySLAAlertService.java 
b/prism/src/main/java/org/apache/falcon/service/EntitySLAAlertService.java
index 2f19e6b..edf626b 100644
--- a/prism/src/main/java/org/apache/falcon/service/EntitySLAAlertService.java
+++ b/prism/src/main/java/org/apache/falcon/service/EntitySLAAlertService.java
@@ -144,9 +144,10 @@ public final class EntitySLAAlertService implements 
FalconService, EntitySLAList
                 } else if 
(schedulableEntityInstance.getTags().contains(EntitySLAMonitoringService.get().TAG_CRITICAL)){
                     if 
(entityType.equalsIgnoreCase(EntityType.PROCESS.name())){
                         store.putSLAAlertInstance(entityName, clusterName, 
entityType,
-                                nominalTime, true, false);
+                                nominalTime, true, true);
+                    } else {
+                        store.updateSLAAlertInstance(entityName, clusterName, 
nominalTime, entityType);
                     }
-                    store.updateSLAAlertInstance(entityName, clusterName, 
nominalTime, entityType);
                     LOG.info("Entity :{} EntityType : {} Cluster: {} Nominal 
Time: {} missed SLAHigh", entityName,
                             entityType, clusterName , nominalTime);
                     highSLAMissed(entityName, clusterName, 
EntityType.getEnum(entityType), nominalTime);

http://git-wip-us.apache.org/repos/asf/falcon/blob/470e5e9f/prism/src/main/java/org/apache/falcon/service/EntitySLAMonitoringService.java
----------------------------------------------------------------------
diff --git 
a/prism/src/main/java/org/apache/falcon/service/EntitySLAMonitoringService.java 
b/prism/src/main/java/org/apache/falcon/service/EntitySLAMonitoringService.java
index 8b3dbe4..279cab8 100644
--- 
a/prism/src/main/java/org/apache/falcon/service/EntitySLAMonitoringService.java
+++ 
b/prism/src/main/java/org/apache/falcon/service/EntitySLAMonitoringService.java
@@ -452,7 +452,7 @@ public final class EntitySLAMonitoringService implements 
ConfigurationChangeList
         Entity entity = EntityUtil.getEntity(entityType, entityName);
         authenticateUser(entity);
         try {
-            if (entityType.equalsIgnoreCase(EntityType.PROCESS.toString())){
+            if (entity.getEntityType() == EntityType.PROCESS){
                 LOG.trace("Checking instance availability status for 
entity:{}, cluster:{}, "
                         + "instanceTime:{}", entity.getName(), clusterName, 
nominalTime, entityType);
                 AbstractWorkflowEngine wfEngine = 
WorkflowEngineFactory.getWorkflowEngine();
@@ -470,7 +470,7 @@ public final class EntitySLAMonitoringService implements 
ConfigurationChangeList
                 }
                 return false;
             }
-            if (entityType.equalsIgnoreCase(EntityType.FEED.toString())){
+            if (entity.getEntityType() == EntityType.FEED){
                 LOG.trace("Checking instance availability status for feed:{}, 
cluster:{}, instanceTime:{}",
                         entity.getName(), clusterName, nominalTime);
 
@@ -567,7 +567,7 @@ public final class EntitySLAMonitoringService implements 
ConfigurationChangeList
         }
         Entity entity = EntityUtil.getEntity(entityType, entityName);
 
-        if (entityType.equals(EntityType.FEED.toString())) {
+        if (entity.getEntityType() == EntityType.FEED) {
             Sla sla = FeedHelper.getSLA(clusterName, (Feed) entity);
 
             if (sla != null) {
@@ -640,7 +640,7 @@ public final class EntitySLAMonitoringService implements 
ConfigurationChangeList
 
     @VisibleForTesting
     Date getInitialStartTime(Entity entity, String clusterName, String 
entityType) throws FalconException {
-        if (entityType.equals(EntityType.FEED.toString())){
+        if (entity.getEntityType() == EntityType.FEED){
             Sla sla = FeedHelper.getSLA(clusterName, (Feed) entity);
             if (sla == null) {
                 throw new IllegalStateException("InitialStartTime can not be 
determined as the feed: "

Reply via email to