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 2023/12/17 08:56:22 UTC
(camel) 01/02: CAMEL-20242: camel-core: RouteController health check to be DOWN during starting routes. Supervising route controller option to be DOWN during restarting phase.
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
commit fee9bacff67d4194bde56988259a101160aeffd4
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Sun Dec 17 09:56:00 2023 +0100
CAMEL-20242: camel-core: RouteController health check to be DOWN during starting routes. Supervising route controller option to be DOWN during restarting phase.
---
.../java/org/apache/camel/spi/RouteController.java | 14 +++++---------
.../camel/impl/engine/DefaultRouteController.java | 4 ++--
.../engine/DefaultSupervisingRouteController.java | 2 +-
.../camel/impl/engine/InternalRouteController.java | 2 +-
.../camel/impl/console/RouteControllerConsole.java | 4 ++--
.../impl/health/RouteControllerHealthCheck.java | 2 +-
.../mbean/ManagedRouteControllerMBean.java | 6 ++++++
.../ManagedSupervisingRouteControllerMBean.java | 6 ++++++
.../management/mbean/ManagedRouteController.java | 10 ++++++++++
.../mbean/ManagedSupervisingRouteController.java | 20 ++++++++++++++++++++
10 files changed, 54 insertions(+), 16 deletions(-)
diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/RouteController.java b/core/camel-api/src/main/java/org/apache/camel/spi/RouteController.java
index 7aace75c0f6..d480beac546 100644
--- a/core/camel-api/src/main/java/org/apache/camel/spi/RouteController.java
+++ b/core/camel-api/src/main/java/org/apache/camel/spi/RouteController.java
@@ -91,20 +91,16 @@ public interface RouteController extends CamelContextAware, StaticService {
void removeAllRoutes() throws Exception;
/**
- * Indicates whether current thread is starting route(s).
- * <p/>
- * This can be useful to know by {@link LifecycleStrategy} or the likes, in case they need to react differently.
- *
- * @return <tt>true</tt> if current thread is starting route(s), or <tt>false</tt> if not.
+ * Indicates whether the route controller is doing initial starting of the routes.
*/
boolean isStartingRoutes();
/**
- * Indicates if the route controller has routes that are unhealthy such as they have not yet been successfully
- * started, and if being supervised then the route can either be pending restarts or failed all restart attempts and
- * are exhausted.
+ * Indicates if the route controller has routes that are currently unhealthy such as they have not yet been
+ * successfully started, and if being supervised then the route can either be pending restarts or failed all restart
+ * attempts and are exhausted.
*/
- boolean isUnhealthyRoutes();
+ boolean hasUnhealthyRoutes();
/**
* Reloads all the routes
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultRouteController.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultRouteController.java
index fa63220eedb..4376d8332fd 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultRouteController.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultRouteController.java
@@ -109,8 +109,8 @@ public class DefaultRouteController extends ServiceSupport implements RouteContr
}
@Override
- public boolean isUnhealthyRoutes() {
- return getInternalRouteController().isUnhealthyRoutes();
+ public boolean hasUnhealthyRoutes() {
+ return getInternalRouteController().hasUnhealthyRoutes();
}
@Override
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultSupervisingRouteController.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultSupervisingRouteController.java
index 5df8119b4fc..9eaaa2b0766 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultSupervisingRouteController.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultSupervisingRouteController.java
@@ -248,7 +248,7 @@ public class DefaultSupervisingRouteController extends DefaultRouteController im
// *********************************
@Override
- public boolean isUnhealthyRoutes() {
+ public boolean hasUnhealthyRoutes() {
boolean answer = startingRoutes;
// if we have started the routes first time, but some failed and are scheduled for restart
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/InternalRouteController.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/InternalRouteController.java
index a3e49591e8e..1bc43d8e90c 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/InternalRouteController.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/InternalRouteController.java
@@ -112,7 +112,7 @@ class InternalRouteController implements RouteController {
}
@Override
- public boolean isUnhealthyRoutes() {
+ public boolean hasUnhealthyRoutes() {
return false;
}
diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/RouteControllerConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/RouteControllerConsole.java
index bb64f241393..f727cdd5e38 100644
--- a/core/camel-console/src/main/java/org/apache/camel/impl/console/RouteControllerConsole.java
+++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/RouteControllerConsole.java
@@ -67,7 +67,7 @@ public class RouteControllerConsole extends AbstractDevConsole {
.count();
sb.append(String.format("\nInitial Starting Routes: %b", src.isStartingRoutes()));
- sb.append(String.format("\nUnhealthy Routes: %b", src.isUnhealthyRoutes()));
+ sb.append(String.format("\nUnhealthy Routes: %b", src.hasUnhealthyRoutes()));
sb.append(String.format("Total Routes: %d", routes.size()));
sb.append(String.format("\nStarted Routes: %d", started));
sb.append(String.format("\nRestarting Routes: %d", src.getRestartingRoutes().size()));
@@ -181,7 +181,7 @@ public class RouteControllerConsole extends AbstractDevConsole {
root.put("controller", "SupervisingRouteController");
root.put("startingRoutes", src.isStartingRoutes());
- root.put("unhealthyRoutes", src.isUnhealthyRoutes());
+ root.put("unhealthyRoutes", src.hasUnhealthyRoutes());
root.put("totalRoutes", routes.size());
root.put("startedRoutes", started);
root.put("restartingRoutes", src.getRestartingRoutes().size());
diff --git a/core/camel-health/src/main/java/org/apache/camel/impl/health/RouteControllerHealthCheck.java b/core/camel-health/src/main/java/org/apache/camel/impl/health/RouteControllerHealthCheck.java
index 5f23eb6e6a1..b483188295b 100644
--- a/core/camel-health/src/main/java/org/apache/camel/impl/health/RouteControllerHealthCheck.java
+++ b/core/camel-health/src/main/java/org/apache/camel/impl/health/RouteControllerHealthCheck.java
@@ -52,7 +52,7 @@ public class RouteControllerHealthCheck extends AbstractHealthCheck {
RouteController rc = getCamelContext().getRouteController();
if (rc != null) {
// should only be up if there are no unhealthy routes
- up = !rc.isUnhealthyRoutes();
+ up = !rc.hasUnhealthyRoutes();
// do we have any details about why we are not up
if (!up && rc instanceof SupervisingRouteController src) {
Set<Route> routes = new TreeSet<>(Comparator.comparing(Route::getId));
diff --git a/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRouteControllerMBean.java b/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRouteControllerMBean.java
index 00246d32edb..a4ef7ded867 100644
--- a/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRouteControllerMBean.java
+++ b/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRouteControllerMBean.java
@@ -22,6 +22,12 @@ import org.apache.camel.api.management.ManagedAttribute;
public interface ManagedRouteControllerMBean extends ManagedServiceMBean {
+ @ManagedAttribute(description = "Indicates whether the route controller is doing initial starting of the routes.")
+ boolean isStartingRoutes();
+
+ @ManagedAttribute(description = "Indicates if the route controller has routes that are currently unhealthy")
+ boolean isHasUnhealthyRoutes();
+
@ManagedAttribute(description = "Controlled Routes")
Collection<String> getControlledRoutes();
diff --git a/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedSupervisingRouteControllerMBean.java b/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedSupervisingRouteControllerMBean.java
index f1131f9ac1b..b051f3a54a9 100644
--- a/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedSupervisingRouteControllerMBean.java
+++ b/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedSupervisingRouteControllerMBean.java
@@ -55,6 +55,12 @@ public interface ManagedSupervisingRouteControllerMBean extends ManagedRouteCont
@ManagedAttribute(description = "Pattern for filtering routes to be excluded as supervised")
String getExcludeRoutes();
+ @ManagedAttribute(description = "Whether to mark the route as unhealthy (down) when all restarting attempts (backoff) have failed and the route is not successfully started and the route manager is giving up.")
+ boolean isUnhealthyOnExhausted();
+
+ @ManagedAttribute(description = "Whether to mark the route as unhealthy (down) when the route failed to initially start, and is being controlled for restarting (backoff)")
+ boolean isUnhealthyOnRestarting();
+
@ManagedAttribute(description = "Number of routes controlled by the controller")
int getNumberOfControlledRoutes();
diff --git a/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedRouteController.java b/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedRouteController.java
index 0208cbe6a64..83d83ce291e 100644
--- a/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedRouteController.java
+++ b/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedRouteController.java
@@ -39,6 +39,16 @@ public class ManagedRouteController extends ManagedService implements ManagedRou
return controller;
}
+ @Override
+ public boolean isStartingRoutes() {
+ return controller.isStartingRoutes();
+ }
+
+ @Override
+ public boolean isHasUnhealthyRoutes() {
+ return controller.hasUnhealthyRoutes();
+ }
+
@Override
public Collection<String> getControlledRoutes() {
if (controller != null) {
diff --git a/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedSupervisingRouteController.java b/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedSupervisingRouteController.java
index 3779f79d55f..0b50a47abda 100644
--- a/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedSupervisingRouteController.java
+++ b/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedSupervisingRouteController.java
@@ -104,6 +104,26 @@ public class ManagedSupervisingRouteController extends ManagedService implements
return controller.getExcludeRoutes();
}
+ @Override
+ public boolean isUnhealthyOnExhausted() {
+ return controller.isUnhealthyOnExhausted();
+ }
+
+ @Override
+ public boolean isUnhealthyOnRestarting() {
+ return controller.isUnhealthyOnRestarting();
+ }
+
+ @Override
+ public boolean isStartingRoutes() {
+ return controller.isStartingRoutes();
+ }
+
+ @Override
+ public boolean isHasUnhealthyRoutes() {
+ return controller.hasUnhealthyRoutes();
+ }
+
@Override
public int getNumberOfControlledRoutes() {
return controller.getControlledRoutes().size();