[camel] branch master updated: CAMEL-15035: SupervisingRouteController - JMX management

2020-05-11 Thread davsclaus
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 34c028e  CAMEL-15035: SupervisingRouteController - JMX management
34c028e is described below

commit 34c028e1e514bffe246740e98eda321488c754a3
Author: Claus Ibsen 
AuthorDate: Mon May 11 10:52:20 2020 +0200

CAMEL-15035: SupervisingRouteController - JMX management
---
 .../src/main/java/org/apache/camel/Route.java  |  6 ++
 .../camel/spi/ManagementObjectNameStrategy.java|  2 +-
 .../apache/camel/spi/ManagementObjectStrategy.java |  2 +-
 .../camel/spi/SupervisingRouteController.java  | 17 
 .../camel/impl/engine/DefaultRouteController.java  | 12 ++-
 .../engine/DefaultSupervisingRouteController.java  | 21 -
 .../main/MainSupervisingRouteControllerTest.java   |  8 ++
 .../api/management/mbean/CamelOpenMBeanTypes.java  | 13 +++
 .../mbean/ManagedRouteControllerMBean.java |  2 +-
 .../mbean/ManagedRuntimeEndpointRegistryMBean.java |  4 +-
 .../ManagedSupervisingRouteControllerMBean.java| 13 ++-
 .../DefaultManagementObjectNameStrategy.java   | 11 ++-
 .../DefaultManagementObjectStrategy.java   | 12 ++-
 .../management/JmxManagementLifecycleStrategy.java | 15 ++--
 .../management/mbean/ManagedRouteController.java   | 22 ++---
 .../mbean/ManagedSupervisingRouteController.java   | 95 ++
 .../ManagedSupervisingRouteControllerTest.java | 14 ++--
 .../apache/camel/util/backoff/BackOffTimer.java|  5 ++
 .../camel/util/backoff/BackOffTimerTask.java   | 13 +++
 .../camel/util/backoff/BackOffTimerTest.java   | 11 ++-
 20 files changed, 257 insertions(+), 41 deletions(-)

diff --git a/core/camel-api/src/main/java/org/apache/camel/Route.java 
b/core/camel-api/src/main/java/org/apache/camel/Route.java
index 13586e6..ae4f818 100644
--- a/core/camel-api/src/main/java/org/apache/camel/Route.java
+++ b/core/camel-api/src/main/java/org/apache/camel/Route.java
@@ -180,8 +180,14 @@ public interface Route extends RuntimeConfiguration {
  */
 void setLastError(RouteError error);
 
+/**
+ * Gets the route startup order
+ */
 Integer getStartupOrder();
 
+/**
+ * Sets the route startup order
+ */
 void setStartupOrder(Integer startupOrder);
 
 /**
diff --git 
a/core/camel-api/src/main/java/org/apache/camel/spi/ManagementObjectNameStrategy.java
 
b/core/camel-api/src/main/java/org/apache/camel/spi/ManagementObjectNameStrategy.java
index 1656ff8..e6ccdd08 100644
--- 
a/core/camel-api/src/main/java/org/apache/camel/spi/ManagementObjectNameStrategy.java
+++ 
b/core/camel-api/src/main/java/org/apache/camel/spi/ManagementObjectNameStrategy.java
@@ -46,7 +46,7 @@ public interface ManagementObjectNameStrategy {
 
 ObjectName getObjectNameForCamelContext(CamelContext context) throws 
MalformedObjectNameException;
 
-ObjectName getObjectNameForRouteController(CamelContext context) throws 
MalformedObjectNameException;
+ObjectName getObjectNameForRouteController(CamelContext context, 
RouteController controller) throws MalformedObjectNameException;
 
 ObjectName getObjectNameForComponent(Component component, String name) 
throws MalformedObjectNameException;
 
diff --git 
a/core/camel-api/src/main/java/org/apache/camel/spi/ManagementObjectStrategy.java
 
b/core/camel-api/src/main/java/org/apache/camel/spi/ManagementObjectStrategy.java
index 9649519..b906d13 100644
--- 
a/core/camel-api/src/main/java/org/apache/camel/spi/ManagementObjectStrategy.java
+++ 
b/core/camel-api/src/main/java/org/apache/camel/spi/ManagementObjectStrategy.java
@@ -48,7 +48,7 @@ public interface ManagementObjectStrategy {
 Object getManagedObjectForErrorHandler(CamelContext context, Route route,
Processor errorHandler, 
ErrorHandlerFactory errorHandlerBuilder);
 
-Object getManagedObjectForRouteController(CamelContext context);
+Object getManagedObjectForRouteController(CamelContext context, 
RouteController routeController);
 
 Object getManagedObjectForRoute(CamelContext context, Route route);
 
diff --git 
a/core/camel-api/src/main/java/org/apache/camel/spi/SupervisingRouteController.java
 
b/core/camel-api/src/main/java/org/apache/camel/spi/SupervisingRouteController.java
index e0b6228..cb6e6e1 100644
--- 
a/core/camel-api/src/main/java/org/apache/camel/spi/SupervisingRouteController.java
+++ 
b/core/camel-api/src/main/java/org/apache/camel/spi/SupervisingRouteController.java
@@ -19,6 +19,7 @@ package org.apache.camel.spi;
 import java.util.Collection;
 
 import org.apache.camel.Route;
+import org.apache.camel.util.backoff.BackOffTimer;
 
 /**
  * A supervising capable {@link RouteController} that delays the startup
@@ -123,4 +124,20 @@ public interface SupervisingRouteController extends 
RouteController {
  */
   

[camel] branch master updated: CAMEL-15035: SupervisingRouteController - JMX management

2020-05-10 Thread davsclaus
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 a2f6647  CAMEL-15035: SupervisingRouteController - JMX management
a2f6647 is described below

commit a2f664737775b8e627632a5e3456eb89cd59eafc
Author: Claus Ibsen 
AuthorDate: Sun May 10 17:51:03 2020 +0200

CAMEL-15035: SupervisingRouteController - JMX management
---
 .../camel/spi/SupervisingRouteController.java  |  12 ++
 .../engine/DefaultSupervisingRouteController.java  |   7 ++
 .../ManagedSupervisingRouteControllerMBean.java|  59 +
 .../management/JmxManagementLifecycleStrategy.java |   4 +
 .../mbean/ManagedSupervisingRouteController.java   |  93 ++
 .../ManagedSupervisingRouteControllerTest.java | 137 +
 6 files changed, 312 insertions(+)

diff --git 
a/core/camel-api/src/main/java/org/apache/camel/spi/SupervisingRouteController.java
 
b/core/camel-api/src/main/java/org/apache/camel/spi/SupervisingRouteController.java
index 0e16f68..e0b6228 100644
--- 
a/core/camel-api/src/main/java/org/apache/camel/spi/SupervisingRouteController.java
+++ 
b/core/camel-api/src/main/java/org/apache/camel/spi/SupervisingRouteController.java
@@ -16,6 +16,10 @@
  */
 package org.apache.camel.spi;
 
+import java.util.Collection;
+
+import org.apache.camel.Route;
+
 /**
  * A supervising capable {@link RouteController} that delays the startup
  * of the routes after the camel context startup and takes control of starting 
the routes in a safe manner.
@@ -111,4 +115,12 @@ public interface SupervisingRouteController extends 
RouteController {
  */
 void setBackOffMultiplier(double backOffMultiplier);
 
+/**
+ * Return the list of routes that are currently under restarting by this 
controller.
+ *
+ * In other words the routes which has failed during startup and are know 
managed
+ * to be restarted.
+ */
+Collection getRestartingRoutes();
+
 }
diff --git 
a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultSupervisingRouteController.java
 
b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultSupervisingRouteController.java
index 3725145..9b7ce52 100644
--- 
a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultSupervisingRouteController.java
+++ 
b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultSupervisingRouteController.java
@@ -318,6 +318,13 @@ public class DefaultSupervisingRouteController extends 
DefaultRouteController im
 .collect(Collectors.toList());
 }
 
+@Override
+public Collection getRestartingRoutes() {
+return routeManager.routes.keySet().stream()
+.map(RouteHolder::get)
+.collect(Collectors.toList());
+}
+
 // *
 // Helpers
 // *
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
new file mode 100644
index 000..a5ca7be
--- /dev/null
+++ 
b/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedSupervisingRouteControllerMBean.java
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.api.management.mbean;
+
+import org.apache.camel.api.management.ManagedAttribute;
+
+public interface ManagedSupervisingRouteControllerMBean extends 
ManagedServiceMBean {
+
+@ManagedAttribute(description = "Whether supervising is enabled")
+boolean isEnabled();
+
+@ManagedAttribute(description = "The number of threads used by the 
scheduled thread pool that are used for restarting routes")
+int getThreadPoolSize();
+
+@ManagedAttribute(description = "Initial delay in milli seconds before the 
route controller starts")
+long getInitialDelay();
+
+@ManagedAttribute(description = "Backoff delay in millis when restarting a 
route