From: Fiete Ostkamp Date: Sun, 22 Feb 2026 19:39:15 +0000 (+0100) Subject: Disable UEB health check when kafka is used X-Git-Url: https://gerrit.onap.org/r/gitweb?a=commitdiff_plain;h=refs%2Fchanges%2F50%2F143350%2F4;p=sdc.git Disable UEB health check when kafka is used - only schedule the UEB health check when kafka is not active Issue-ID: SDC-4764 Change-Id: I48f2b49c1d28dc2e2b8411cc20263457c1c3435c Signed-off-by: Fiete Ostkamp --- diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/distribution/engine/DistributionEngineClusterHealth.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/distribution/engine/DistributionEngineClusterHealth.java index 9eb0141209..cc1b92c64e 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/components/distribution/engine/DistributionEngineClusterHealth.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/distribution/engine/DistributionEngineClusterHealth.java @@ -34,6 +34,7 @@ import java.util.concurrent.atomic.AtomicBoolean; import javax.annotation.PreDestroy; import lombok.AllArgsConstructor; import lombok.Getter; +import lombok.Setter; import org.openecomp.sdc.be.config.BeEcompErrorManager; import org.openecomp.sdc.be.config.ConfigurationManager; import org.openecomp.sdc.be.config.DistributionEngineConfiguration; @@ -51,6 +52,8 @@ public class DistributionEngineClusterHealth { protected static final String UEB_HEALTH_LOG_CONTEXT = "ueb.healthcheck"; //TODO use LoggerMetric instead private static final Logger healthLogger = Logger.getLogger(UEB_HEALTH_LOG_CONTEXT); + @Setter + private boolean isKafkaActive = Boolean.parseBoolean(System.getenv().getOrDefault("USE_KAFKA", "true")); boolean lastHealthState = false; Object lockOject = new Object(); ScheduledExecutorService healthCheckScheduler = Executors.newSingleThreadScheduledExecutor(new ThreadFactory() { @@ -215,16 +218,25 @@ public class DistributionEngineClusterHealth { healthLogger.trace("Executing UEB Health Check Task - Start"); boolean healthStatus = verifyAtLeastOneEnvIsUp(); if (healthStatus) { - boolean queryUebStatus = queryUeb(); - if (queryUebStatus == lastHealthState) { + boolean queryStatus; + if (isKafkaActive) { + // When MSB (Kafka) is active, we skip legacy UEB health checks. + // The environment status (set by DistributionEngineInitTask and + // DistributionEnginePollingTask) is sufficient to determine health. + queryStatus = true; + healthLogger.trace("MSB (MSB/Kafka) is active, skipping UEB health check query"); + } else { + queryStatus = queryUeb(); + } + if (queryStatus == lastHealthState) { return; } synchronized (lockOject) { - if (queryUebStatus != lastHealthState) { + if (queryStatus != lastHealthState) { logger.trace("UEB Health State Changed to {}. Issuing alarm / recovery alarm...", healthStatus); - lastHealthState = queryUebStatus; + lastHealthState = queryStatus; logAlarm(lastHealthState); - if (queryUebStatus) { + if (queryStatus) { healthCheckInfo = HealthCheckInfoResult.OK.getHealthCheckInfo(); } else { healthCheckInfo = HealthCheckInfoResult.UNAVAILABLE.getHealthCheckInfo(); diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/components/distribution/engine/DistributionEngineClusterHealthTest.java b/catalog-be/src/test/java/org/openecomp/sdc/be/components/distribution/engine/DistributionEngineClusterHealthTest.java index 7997814a95..2ded7a76e1 100644 --- a/catalog-be/src/test/java/org/openecomp/sdc/be/components/distribution/engine/DistributionEngineClusterHealthTest.java +++ b/catalog-be/src/test/java/org/openecomp/sdc/be/components/distribution/engine/DistributionEngineClusterHealthTest.java @@ -123,6 +123,34 @@ class DistributionEngineClusterHealthTest extends BeConfDependentTest { Deencapsulation.invoke(healthCheckScheduledTask, "run"); } + @Test + void testHealthCheckScheduledTaskRunWithKafkaActive() throws Exception { + DistributionEngineClusterHealth testSubject; + Map envNamePerStatus = new HashMap<>(); + envNamePerStatus.put("mock", new AtomicBoolean(true)); + // When Kafka is active, the health check should skip UEB queries + // and report healthy based on the environment status alone + testSubject = createTestSubject(); + testSubject.setKafkaActive(true); + testSubject.startHealthCheckTask(envNamePerStatus, false); + HealthCheckScheduledTask healthCheckScheduledTask = testSubject.new HealthCheckScheduledTask(new LinkedList<>()); + // No UEB health check calls configured - should still report healthy + Deencapsulation.invoke(healthCheckScheduledTask, "run"); + } + + @Test + void testHealthCheckScheduledTaskRunWithKafkaActiveEnvDown() throws Exception { + DistributionEngineClusterHealth testSubject; + Map envNamePerStatus = new HashMap<>(); + envNamePerStatus.put("mock", new AtomicBoolean(false)); + // When Kafka is active but env is down, health check should not report UP + testSubject = createTestSubject(); + testSubject.setKafkaActive(true); + testSubject.startHealthCheckTask(envNamePerStatus, false); + HealthCheckScheduledTask healthCheckScheduledTask = testSubject.new HealthCheckScheduledTask(new LinkedList<>()); + Deencapsulation.invoke(healthCheckScheduledTask, "run"); + } + @Test void testLogAlarm() throws Exception { DistributionEngineClusterHealth testSubject;