Repository: camel Updated Branches: refs/heads/master 34e2c13b7 -> 72025be03
camel-hazelcast should use Camels thread pool for its background task. Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/1494988e Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/1494988e Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/1494988e Branch: refs/heads/master Commit: 1494988ef3f66f1bc7b459266e384b44066de61e Parents: 34e2c13 Author: Claus Ibsen <[email protected]> Authored: Sun Feb 19 12:46:10 2017 +0100 Committer: Claus Ibsen <[email protected]> Committed: Sun Feb 19 12:46:10 2017 +0100 ---------------------------------------------------------------------- .../hazelcast/policy/HazelcastRoutePolicy.java | 35 +++++++++++--------- 1 file changed, 20 insertions(+), 15 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/1494988e/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/policy/HazelcastRoutePolicy.java ---------------------------------------------------------------------- diff --git a/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/policy/HazelcastRoutePolicy.java b/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/policy/HazelcastRoutePolicy.java index 45bb421..1b514b2 100644 --- a/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/policy/HazelcastRoutePolicy.java +++ b/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/policy/HazelcastRoutePolicy.java @@ -19,30 +19,31 @@ package org.apache.camel.component.hazelcast.policy; import java.util.HashSet; import java.util.Set; import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; import com.hazelcast.core.HazelcastInstance; import com.hazelcast.core.IMap; +import org.apache.camel.CamelContext; +import org.apache.camel.CamelContextAware; import org.apache.camel.NonManagedService; import org.apache.camel.Route; import org.apache.camel.component.hazelcast.HazelcastUtil; import org.apache.camel.support.RoutePolicySupport; -import org.apache.camel.util.ObjectHelper; import org.apache.camel.util.StringHelper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class HazelcastRoutePolicy extends RoutePolicySupport implements NonManagedService { +public class HazelcastRoutePolicy extends RoutePolicySupport implements CamelContextAware, NonManagedService { private static final Logger LOGGER = LoggerFactory.getLogger(HazelcastRoutePolicy.class); private final boolean managedInstance; private final AtomicBoolean leader; private final Set<Route> suspendedRoutes; - private final ExecutorService executorService; + private CamelContext camelContext; + private ExecutorService executorService; private HazelcastInstance instance; private String lockMapName; private String lockKey; @@ -74,12 +75,16 @@ public class HazelcastRoutePolicy extends RoutePolicySupport implements NonManag this.locks = null; this.future = null; this.shouldStopConsumer = true; + } - this.executorService = Executors.newSingleThreadExecutor(r -> { - Thread thread = new Thread(r, "Camel RoutePolicy"); - thread.setDaemon(true); - return thread; - }); + @Override + public CamelContext getCamelContext() { + return camelContext; + } + + @Override + public void setCamelContext(CamelContext camelContext) { + this.camelContext = camelContext; } @Override @@ -106,6 +111,8 @@ public class HazelcastRoutePolicy extends RoutePolicySupport implements NonManag StringHelper.notEmpty(lockKey, "lockKey", this); StringHelper.notEmpty(lockValue, "lockValue", this); + executorService = getCamelContext().getExecutorServiceManager().newSingleThreadExecutor(this, "HazelcastRoutePolicy"); + locks = instance.getMap(lockMapName); future = executorService.submit(this::acquireLeadership); @@ -123,6 +130,8 @@ public class HazelcastRoutePolicy extends RoutePolicySupport implements NonManag instance.shutdown(); } + getCamelContext().getExecutorServiceManager().shutdownGraceful(executorService); + super.doStop(); } // ************************************************************************* @@ -269,13 +278,9 @@ public class HazelcastRoutePolicy extends RoutePolicySupport implements NonManag ); } } catch (InterruptedException e) { - if (isRunAllowed()) { - LOGGER.warn("Interrupted Exception caught", e); - } else { - LOGGER.debug("Interrupted Exception caught", e); - } + // ignore } catch (Exception e) { - LOGGER.warn("Exception caught", e); + getExceptionHandler().handleException(e); } finally { if (locked) { locks.remove(lockKey);
