You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@falcon.apache.org by pa...@apache.org on 2018/08/09 10:32:42 UTC

falcon git commit: FALCON-2341 Entity SLA Alert publishing wrong results into DB

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


FALCON-2341 Entity SLA Alert publishing wrong results into DB

Author: Amit Khanna <am...@inmobi.com>

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 <am...@inmobi.com>
Authored: Thu Aug 9 16:02:37 2018 +0530
Committer: pallavi-rao <pa...@inmobi.com>
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: "