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;
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, e1);
+ } 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) {
+ logger.error("Error while cleaning healthcheck record id...", e);
+ }
if (result) {
return "ACTIVE";
} else {
}
}
- 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");
}
this.cassandrHost = cassandrHost;
}
-}
+}
\ No newline at end of file