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.lockingservice.zookeeper.MusicLockingService;
import org.onap.music.main.MusicUtil;
import org.onap.music.main.ResultType;
-import org.onap.music.service.impl.MusicZKCore;
import org.onap.music.main.MusicCore;
import com.datastax.driver.core.ConsistencyLevel;
private static EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(MusicUtil.class);
private String cassandrHost;
- private String zookeeperHost;
public String getCassandraStatus(String consistency) {
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.getMessage(),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.getMessage(),AppMessages.UNKNOWNERROR, ErrorSeverity.ERROR, ErrorTypes.UNKNOWN);
- }
+ rs = MusicCore.nonKeyRelatedPut(pQuery, ConsistencyLevel.ONE.toString());
return rs != null && rs.getResult().toLowerCase().contains("success");
}
- public String getZookeeperStatus() {
-
- String host = MusicUtil.getMyZkHost();
- logger.info(EELFLoggerDelegate.applicationLogger, "Getting Status for Zookeeper Host: " + host);
- try {
- MusicLockingService lockingService = MusicZKCore.getLockingServiceHandle();
- // additionally need to call the ZK to create,aquire and delete lock
- } catch (MusicLockingException e) {
- logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(), AppMessages.LOCKINGERROR,
- ErrorTypes.CONNECTIONERROR, ErrorSeverity.CRITICAL);
- return "INACTIVE";
- }
-
- logger.info(EELFLoggerDelegate.applicationLogger, "Zookeeper is Active and Running");
- return "ACTIVE";
-
- }
-
public String getCassandrHost() {
return cassandrHost;
}
this.cassandrHost = cassandrHost;
}
- public String getZookeeperHost() {
- return zookeeperHost;
- }
-
- public void setZookeeperHost(String zookeeperHost) {
- this.zookeeperHost = zookeeperHost;
- }
-
-}
+}
\ No newline at end of file