diff options
Diffstat (limited to 'catalog-be/src/main/java/org/openecomp/sdc/be/catalog/impl/DmaapProducerHealth.java')
-rw-r--r-- | catalog-be/src/main/java/org/openecomp/sdc/be/catalog/impl/DmaapProducerHealth.java | 151 |
1 files changed, 76 insertions, 75 deletions
diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/catalog/impl/DmaapProducerHealth.java b/catalog-be/src/main/java/org/openecomp/sdc/be/catalog/impl/DmaapProducerHealth.java index b62df86b4b..4000be39b3 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/catalog/impl/DmaapProducerHealth.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/catalog/impl/DmaapProducerHealth.java @@ -17,9 +17,15 @@ * limitations under the License. * ============LICENSE_END========================================================= */ - package org.openecomp.sdc.be.catalog.impl; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicBoolean; +import javax.annotation.PostConstruct; +import javax.annotation.PreDestroy; import org.openecomp.sdc.be.config.BeEcompErrorManager; import org.openecomp.sdc.be.config.ConfigurationManager; import org.openecomp.sdc.be.config.DmaapProducerConfiguration; @@ -28,75 +34,37 @@ import org.openecomp.sdc.common.api.HealthCheckInfo; import org.openecomp.sdc.common.log.wrappers.Logger; import org.springframework.stereotype.Component; -import javax.annotation.PostConstruct; -import javax.annotation.PreDestroy; -import java.util.concurrent.Executors; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.ScheduledFuture; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicBoolean; - @Component("dmaapProducerHealth") public class DmaapProducerHealth { - private static final String DMAAP_HEALTH_LOG_CONTEXT = "dmaapProducer.healthcheck"; private static final String DMAAP_HEALTH_CHECK_STR = "dmaapProducerHealthCheck"; private static final Logger log = Logger.getLogger(DmaapProducerHealth.class.getName()); private static final Logger logHealth = Logger.getLogger(DMAAP_HEALTH_LOG_CONTEXT); + private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); private HealthCheckInfo healthCheckInfo = DmaapProducerHealth.HealthCheckInfoResult.UNAVAILABLE.getHealthCheckInfo(); private long healthCheckReadTimeout = 20; private long reconnectInterval = 5; - private HealthCheckScheduledTask healthCheckScheduledTask = null ; - private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); + private HealthCheckScheduledTask healthCheckScheduledTask = null; private ScheduledFuture<?> scheduledFuture = null; - private DmaapProducerConfiguration configuration = null ; - + private DmaapProducerConfiguration configuration = null; private volatile AtomicBoolean lastHealthState = new AtomicBoolean(false); private volatile AtomicBoolean reportedHealthState = null; - public enum HealthCheckInfoResult { - OK(new HealthCheckInfo(Constants.HC_COMPONENT_DMAAP_PRODUCER, HealthCheckInfo.HealthCheckStatus.UP, null, DmaapStatusDescription.OK.getDescription())), - UNAVAILABLE(new HealthCheckInfo(Constants.HC_COMPONENT_DMAAP_PRODUCER, HealthCheckInfo.HealthCheckStatus.DOWN, null, DmaapStatusDescription.UNAVAILABLE.getDescription())), - DOWN(new HealthCheckInfo(Constants.HC_COMPONENT_DMAAP_PRODUCER, HealthCheckInfo.HealthCheckStatus.DOWN, null, DmaapStatusDescription.DOWN.getDescription())); - - private HealthCheckInfo healthCheckInfo; - HealthCheckInfoResult(HealthCheckInfo healthCheckInfo) { - this.healthCheckInfo = healthCheckInfo; - } - public HealthCheckInfo getHealthCheckInfo() { - return healthCheckInfo; - } - } - - public enum DmaapStatusDescription { - OK("OK"), UNAVAILABLE("DmaapProducer is not available"),DOWN("DOWN"), NOT_CONFIGURED("DmaapProducer configuration is missing/wrong "); - - private String desc; - DmaapStatusDescription(String desc) { - this.desc = desc; - } - public String getDescription() { - return desc; - } - - } - @PostConstruct public DmaapProducerHealth init() { log.trace("Enter init method of DmaapProducer health"); - synchronized (DmaapProducerHealth.class){ + synchronized (DmaapProducerHealth.class) { this.configuration = ConfigurationManager.getConfigurationManager().getConfiguration().getDmaapProducerConfiguration(); - Integer pollingInterval = configuration.getPollingInterval(); - if (pollingInterval != null && pollingInterval!=0) { + if (pollingInterval != null && pollingInterval != 0) { reconnectInterval = pollingInterval; } Integer healthCheckReadTimeoutConfig = configuration.getTimeoutMs(); if (healthCheckReadTimeoutConfig != null) { this.healthCheckReadTimeout = healthCheckReadTimeoutConfig; } - this.healthCheckScheduledTask = new HealthCheckScheduledTask( configuration ); //what is the representation? csv? delimiter? json or other + this.healthCheckScheduledTask = new HealthCheckScheduledTask(configuration); //what is the representation? csv? delimiter? json or other startHealthCheckTask(true); } log.trace("Exit init method of DistributionEngineClusterHealth"); @@ -120,75 +88,108 @@ public class DmaapProducerHealth { * @param startTask */ private void startHealthCheckTask(boolean startTask) { - synchronized (DmaapProducerHealth.class){ + synchronized (DmaapProducerHealth.class) { if (startTask && this.scheduledFuture == null) { - this.scheduledFuture = this.scheduler.scheduleAtFixedRate(this.healthCheckScheduledTask , 0, reconnectInterval, TimeUnit.SECONDS); + this.scheduledFuture = this.scheduler.scheduleAtFixedRate(this.healthCheckScheduledTask, 0, reconnectInterval, TimeUnit.SECONDS); } } } - void report(Boolean isUp){ - if (reportedHealthState == null) + void report(Boolean isUp) { + if (reportedHealthState == null) { reportedHealthState = new AtomicBoolean(isUp); + } reportedHealthState.set(isUp); } - public HealthCheckInfo getHealthCheckInfo() { return healthCheckInfo; } + public enum HealthCheckInfoResult { + // @formatter:off + OK(new HealthCheckInfo(Constants.HC_COMPONENT_DMAAP_PRODUCER, HealthCheckInfo.HealthCheckStatus.UP, null, DmaapStatusDescription.OK.getDescription())), + UNAVAILABLE(new HealthCheckInfo(Constants.HC_COMPONENT_DMAAP_PRODUCER, HealthCheckInfo.HealthCheckStatus.DOWN, null, DmaapStatusDescription.UNAVAILABLE.getDescription())), + DOWN(new HealthCheckInfo(Constants.HC_COMPONENT_DMAAP_PRODUCER, HealthCheckInfo.HealthCheckStatus.DOWN, null, DmaapStatusDescription.DOWN.getDescription())); + // @formatter:on + + private HealthCheckInfo healthCheckInfo; + + HealthCheckInfoResult(HealthCheckInfo healthCheckInfo) { + this.healthCheckInfo = healthCheckInfo; + } + + public HealthCheckInfo getHealthCheckInfo() { + return healthCheckInfo; + } + } + + public enum DmaapStatusDescription { + // @formatter:off + OK("OK"), + UNAVAILABLE("DmaapProducer is not available"), + DOWN("DOWN"), + NOT_CONFIGURED("DmaapProducer configuration is missing/wrong "); + // @formatter:on + + private String desc; + + DmaapStatusDescription(String desc) { + this.desc = desc; + } + + public String getDescription() { + return desc; + } + + } + /** * Health Check Task Scheduler - infinite check. */ public class HealthCheckScheduledTask implements Runnable { - private final DmaapProducerConfiguration config; + private static final int TIMEOUT = 8192; + private final DmaapProducerConfiguration config; - HealthCheckScheduledTask(final DmaapProducerConfiguration config){ + HealthCheckScheduledTask(final DmaapProducerConfiguration config) { this.config = config; } + @Override public void run() { logHealth.trace("Executing Dmaap Health Check Task - Start"); boolean prevIsReachable; boolean reachable; //first try simple ping - try{ - if ( reportedHealthState != null ){ + try { + if (reportedHealthState != null) { reachable = reportedHealthState.get(); + } else { + reachable = false; } - else{ - reachable = false; - } - prevIsReachable = lastHealthState.getAndSet( reachable ); + prevIsReachable = lastHealthState.getAndSet(reachable); healthCheckInfo = reachable ? HealthCheckInfoResult.OK.healthCheckInfo : HealthCheckInfoResult.DOWN.healthCheckInfo; - } - catch( Exception e ){ - log.debug("{} - cannot check connectivity -> {}",DMAAP_HEALTH_CHECK_STR, e ); + } catch (Exception e) { + log.debug("{} - cannot check connectivity -> {}", DMAAP_HEALTH_CHECK_STR, e); prevIsReachable = lastHealthState.getAndSet(false); healthCheckInfo = HealthCheckInfoResult.UNAVAILABLE.healthCheckInfo; } - if (prevIsReachable != lastHealthState.get()) - logAlarm( lastHealthState.get() ); + if (prevIsReachable != lastHealthState.get()) { + logAlarm(lastHealthState.get()); + } } - - - private void logAlarm(boolean lastHealthState) { - try{ - if ( lastHealthState ) { - BeEcompErrorManager.getInstance().logDmaapHealthCheckRecovery( DMAAP_HEALTH_CHECK_STR ); + try { + if (lastHealthState) { + BeEcompErrorManager.getInstance().logDmaapHealthCheckRecovery(DMAAP_HEALTH_CHECK_STR); } else { - BeEcompErrorManager.getInstance().logDmaapHealthCheckError( DMAAP_HEALTH_CHECK_STR ); + BeEcompErrorManager.getInstance().logDmaapHealthCheckError(DMAAP_HEALTH_CHECK_STR); } - }catch( Exception e ){ - log.debug("cannot logAlarm -> {}" ,e ); + } catch (Exception e) { + log.debug("cannot logAlarm -> {}", e); } } - } - - } |