Some bug fixes and Minor Chages.
[music.git] / src / main / java / org / onap / music / eelf / healthcheck / MusicHealthCheck.java
index 079fc57..cf4b2bc 100644 (file)
@@ -26,12 +26,14 @@ package org.onap.music.eelf.healthcheck;
 
 import java.util.UUID;
 
+import org.onap.music.datastore.MusicDataStoreHandle;
 import org.onap.music.datastore.PreparedQueryObject;
 import org.onap.music.eelf.logging.EELFLoggerDelegate;
 import org.onap.music.eelf.logging.format.AppMessages;
 import org.onap.music.eelf.logging.format.ErrorSeverity;
 import org.onap.music.eelf.logging.format.ErrorTypes;
 import org.onap.music.exceptions.MusicLockingException;
+import org.onap.music.exceptions.MusicQueryException;
 import org.onap.music.exceptions.MusicServiceException;
 import org.onap.music.main.MusicUtil;
 import org.onap.music.main.ResultType;
@@ -53,24 +55,34 @@ public class MusicHealthCheck {
         logger.info(EELFLoggerDelegate.applicationLogger, "Getting Status for Cassandra");
         
         boolean result = false;
+        UUID randomUUID = UUID.randomUUID();
         try {
-            result = getAdminKeySpace(consistency);
-        } catch(Exception e) {
+            result = getAdminKeySpace(consistency, randomUUID);
+        } catch( Exception e) {
             if(e.getMessage().toLowerCase().contains("unconfigured table healthcheck")) {
                 logger.error("Error", e);
                 logger.debug("Creating table....");
-                boolean ksresult = createKeyspace();
-                if(ksresult)
-                    try {
-                        result = getAdminKeySpace(consistency);
-                    } catch (MusicServiceException e1) {
-                      logger.error(EELFLoggerDelegate.errorLogger, e1, AppMessages.UNKNOWNERROR, ErrorSeverity.ERROR, ErrorTypes.UNKNOWN);
+                try {
+                    boolean ksresult = createKeyspace();
+                    if(ksresult) {
+                        result = getAdminKeySpace(consistency, randomUUID);
                     }
+                } catch (MusicServiceException e1) {
+                    logger.error(EELFLoggerDelegate.errorLogger, e1.getMessage(), AppMessages.UNKNOWNERROR, ErrorSeverity.ERROR, ErrorTypes.UNKNOWN);
+                } catch (MusicQueryException e1) {
+                    logger.error(EELFLoggerDelegate.errorLogger, e1.getMessage(), AppMessages.UNKNOWNERROR, ErrorSeverity.ERROR, ErrorTypes.UNKNOWN,e1);
+                }
             } else {
                 logger.error("Error", e);
                 return "One or more nodes are down or not responding.";
             }
         }
+        try {
+                       cleanHealthCheckId(randomUUID);
+               } catch (MusicServiceException | MusicQueryException e) {
+                       // TODO Auto-generated catch block
+                       logger.error("Error while cleaning healthcheck record id...", e);
+               }
         if (result) {
             return "ACTIVE";
         } else {
@@ -79,24 +91,33 @@ public class MusicHealthCheck {
         }
     }
 
-    private Boolean getAdminKeySpace(String consistency) throws MusicServiceException {
+    private Boolean getAdminKeySpace(String consistency, UUID randomUUID) throws MusicServiceException,MusicQueryException {
         PreparedQueryObject pQuery = new PreparedQueryObject();
         pQuery.appendQueryString("insert into admin.healthcheck (id) values (?)");
-        pQuery.addValue(UUID.randomUUID());
-        ResultType rs = MusicCore.nonKeyRelatedPut(pQuery, consistency);
+        pQuery.addValue(randomUUID);
+        ResultType rs = null;
+        rs = MusicCore.nonKeyRelatedPut(pQuery, consistency);
         logger.info(rs.toString());
         return null != rs;
+        
     }
+
+       private void cleanHealthCheckId(UUID randomUUID) throws MusicServiceException, MusicQueryException {
+               String cleanQuery = "delete  from admin.healthcheck where id = ?";
+        PreparedQueryObject deleteQueryObject = new PreparedQueryObject();
+        deleteQueryObject.appendQueryString(cleanQuery);
+        deleteQueryObject.addValue(randomUUID);
+        MusicDataStoreHandle.getDSHandle().executePut(deleteQueryObject, "eventual");  
+        logger.info(EELFLoggerDelegate.applicationLogger, "Cassandra healthcheck responded and cleaned up.");
+       }
+    
     
-    private boolean createKeyspace() {
+    
+    private boolean createKeyspace() throws MusicServiceException,MusicQueryException {
         PreparedQueryObject pQuery = new PreparedQueryObject();
         pQuery.appendQueryString("CREATE TABLE admin.healthcheck (id uuid PRIMARY KEY)");
         ResultType rs = null ;
-        try {
-            rs = MusicCore.nonKeyRelatedPut(pQuery, ConsistencyLevel.ONE.toString());
-        } catch (MusicServiceException e) {
-            logger.error(EELFLoggerDelegate.errorLogger, e, AppMessages.UNKNOWNERROR, ErrorSeverity.ERROR, ErrorTypes.UNKNOWN);
-        }
+        rs = MusicCore.nonKeyRelatedPut(pQuery, ConsistencyLevel.ONE.toString());
         return rs != null && rs.getResult().toLowerCase().contains("success");
     }
 
@@ -108,4 +129,4 @@ public class MusicHealthCheck {
         this.cassandrHost = cassandrHost;
     }
 
-}
+}
\ No newline at end of file