You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2020/06/09 13:31:36 UTC

[camel] branch master updated: camel-health - Fix duplicate checks in mp-fault due to cdi proxy classes causing equalus to not work with distinct.

This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/master by this push:
     new 12ce4a8  camel-health - Fix duplicate checks in mp-fault due to cdi proxy classes causing equalus to not work with distinct.
12ce4a8 is described below

commit 12ce4a85b86e6413b7066fbc64db6094a068f5c2
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Tue Jun 9 15:31:09 2020 +0200

    camel-health - Fix duplicate checks in mp-fault due to cdi proxy classes causing equalus to not work with distinct.
---
 .../microprofile/health/AbstractCamelMicroProfileHealthCheck.java   | 6 ++++--
 .../camel/microprofile/health/CamelMicroProfileLivenessCheck.java   | 5 +++++
 .../camel/microprofile/health/CamelMicroProfileReadinessCheck.java  | 5 +++++
 .../src/main/java/org/apache/camel/health/HealthCheckHelper.java    | 1 +
 .../main/java/org/apache/camel/impl/health/AbstractHealthCheck.java | 6 +++---
 5 files changed, 18 insertions(+), 5 deletions(-)

diff --git a/components/camel-microprofile-health/src/main/java/org/apache/camel/microprofile/health/AbstractCamelMicroProfileHealthCheck.java b/components/camel-microprofile-health/src/main/java/org/apache/camel/microprofile/health/AbstractCamelMicroProfileHealthCheck.java
index bddb3e6..d76b6dc 100644
--- a/components/camel-microprofile-health/src/main/java/org/apache/camel/microprofile/health/AbstractCamelMicroProfileHealthCheck.java
+++ b/components/camel-microprofile-health/src/main/java/org/apache/camel/microprofile/health/AbstractCamelMicroProfileHealthCheck.java
@@ -40,6 +40,8 @@ public abstract class AbstractCamelMicroProfileHealthCheck implements HealthChec
     @Inject
     protected CamelContext camelContext;
 
+    protected abstract boolean acceptHealthCheck(AbstractHealthCheck check);
+
     @Override
     public HealthCheckResponse call() {
         final HealthCheckResponseBuilder builder = HealthCheckResponse.builder();
@@ -51,8 +53,8 @@ public abstract class AbstractCamelMicroProfileHealthCheck implements HealthChec
                     (HealthCheckFilter) check ->
                             // skip context as we have our own context check
                             check.getId().equals("context")
-                                    // or that its either supposed to be only a liveness or readiness and the Camel health check is not
-                                    || (isLiveness() && !check.isLiveness() || isReadiness() && !check.isReadiness()));
+                            // or if not accepted
+                            || check instanceof AbstractHealthCheck && !acceptHealthCheck((AbstractHealthCheck) check));
 
             for (Result result : results) {
                 Map<String, Object> details = result.getDetails();
diff --git a/components/camel-microprofile-health/src/main/java/org/apache/camel/microprofile/health/CamelMicroProfileLivenessCheck.java b/components/camel-microprofile-health/src/main/java/org/apache/camel/microprofile/health/CamelMicroProfileLivenessCheck.java
index 4a8d23a..95335d8 100644
--- a/components/camel-microprofile-health/src/main/java/org/apache/camel/microprofile/health/CamelMicroProfileLivenessCheck.java
+++ b/components/camel-microprofile-health/src/main/java/org/apache/camel/microprofile/health/CamelMicroProfileLivenessCheck.java
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.microprofile.health;
 
+import org.apache.camel.impl.health.AbstractHealthCheck;
 import org.eclipse.microprofile.health.Liveness;
 
 /**
@@ -28,6 +29,10 @@ public class CamelMicroProfileLivenessCheck extends AbstractCamelMicroProfileHea
         return false;
     }
 
+    protected boolean acceptHealthCheck(AbstractHealthCheck check) {
+        return check.isLiveness();
+    }
+
     @Override
     String getHealthCheckName() {
         return "camel-liveness-checks";
diff --git a/components/camel-microprofile-health/src/main/java/org/apache/camel/microprofile/health/CamelMicroProfileReadinessCheck.java b/components/camel-microprofile-health/src/main/java/org/apache/camel/microprofile/health/CamelMicroProfileReadinessCheck.java
index c02ee98..7c1514a 100644
--- a/components/camel-microprofile-health/src/main/java/org/apache/camel/microprofile/health/CamelMicroProfileReadinessCheck.java
+++ b/components/camel-microprofile-health/src/main/java/org/apache/camel/microprofile/health/CamelMicroProfileReadinessCheck.java
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.microprofile.health;
 
+import org.apache.camel.impl.health.AbstractHealthCheck;
 import org.eclipse.microprofile.health.Readiness;
 
 /**
@@ -28,6 +29,10 @@ public class CamelMicroProfileReadinessCheck extends AbstractCamelMicroProfileHe
         return false;
     }
 
+    protected boolean acceptHealthCheck(AbstractHealthCheck check) {
+        return check.isReadiness();
+    }
+
     @Override
     String getHealthCheckName() {
         return "camel-readiness-checks";
diff --git a/core/camel-api/src/main/java/org/apache/camel/health/HealthCheckHelper.java b/core/camel-api/src/main/java/org/apache/camel/health/HealthCheckHelper.java
index f81e8dd..ed98d21 100644
--- a/core/camel-api/src/main/java/org/apache/camel/health/HealthCheckHelper.java
+++ b/core/camel-api/src/main/java/org/apache/camel/health/HealthCheckHelper.java
@@ -119,6 +119,7 @@ public final class HealthCheckHelper {
                     .flatMap(Collection::stream)
                     .filter(check -> !filter.test(check))
                     .sorted(Comparator.comparingInt(HealthCheck::getOrder))
+                    .distinct()
                     .map(check -> check.call(optionsSupplier.apply(check)))
                     .collect(Collectors.toList());
         } else {
diff --git a/core/camel-health/src/main/java/org/apache/camel/impl/health/AbstractHealthCheck.java b/core/camel-health/src/main/java/org/apache/camel/impl/health/AbstractHealthCheck.java
index 679a0cb..8738f0f 100644
--- a/core/camel-health/src/main/java/org/apache/camel/impl/health/AbstractHealthCheck.java
+++ b/core/camel-health/src/main/java/org/apache/camel/impl/health/AbstractHealthCheck.java
@@ -211,13 +211,13 @@ public abstract class AbstractHealthCheck implements HealthCheck {
         if (this == o) {
             return true;
         }
-        if (o == null || getClass() != o.getClass()) {
+        if (!(o instanceof AbstractHealthCheck)) {
             return false;
         }
 
-        AbstractHealthCheck check = (AbstractHealthCheck) o;
+        AbstractHealthCheck that = (AbstractHealthCheck) o;
 
-        return id != null ? id.equals(check.id) : check.id == null;
+        return id.equals(that.id);
     }
 
     @Override