Hi there! I’m running into a weird issue regarding some timeouts when uninstalling a CamelContext in Karaf 4.2.0. Due to the fact that i’m not entirely sure if this is a Camel or Karaf issue, but the exception is thrown from inside Karaf i’m going to try it here first.
I am installing a Camel Context in Karaf using a blueprint.xml. Say a route in this context has a syntax error in it, and when it’s still running i’m trying to uninstall the bundle in Karaf. The result is correct, i get the inflight message from Camel with the note saying it’s going to timeout in 5 minutes (300 seconds): [Camel (context-1) thread #1 - ShutdownTask] Waiting as there are still 3 inflight and pending exchanges to complete, timeout in 295 seconds. Inflights per route: [route-3 = 1, route-2 = 1, route-1 = 1] [Camel (context-1) thread #1 - ShutdownTask] There are 2 inflight exchanges: InflightExchange: [exchangeId=ID-mac-local-1527969270260-1-1, fromRouteId=route-1, routeId=route-2, nodeId=split2, elapsed=0, duration=71634] InflightExchange: [exchangeId=ID-mac-local-1527969270260-1-3, fromRouteId=route-1, routeId=route-3, nodeId=to6, elapsed=0, duration=71634] But after exactly one minute (consistently) the graceful shutdown procedure of camel is interrupted and the following appears in the logs: WARN [Blueprint Event Dispatcher: 1] Timeout occurred during graceful shutdown. Forcing the routes to be shutdown now. Notice: some resources may still be running as graceful shutdown did not complete successfully. WARN [pipe-bundle:uninstall 110] Listener timed out, will be ignored java.util.concurrent.TimeoutException: null at java.util.concurrent.AbstractExecutorService.doInvokeAny(AbstractExecutorService.java:184) ~[?:?] at java.util.concurrent.AbstractExecutorService.invokeAny(AbstractExecutorService.java:225) ~[?:?] at org.apache.aries.blueprint.utils.threading.ScheduledExecutorServiceWrapper$4.call(ScheduledExecutorServiceWrapper.java:182) ~[45:org.apache.aries.blueprint.core:1.9.0] at org.apache.aries.blueprint.utils.threading.ScheduledExecutorServiceWrapper$15.call(ScheduledExecutorServiceWrapper.java:443) ~[45:org.apache.aries.blueprint.core:1.9.0] at org.apache.aries.blueprint.utils.threading.RWLock.runReadOperation(RWLock.java:33) ~[45:org.apache.aries.blueprint.core:1.9.0] at org.apache.aries.blueprint.utils.threading.ScheduledExecutorServiceWrapper.runUnlessShutdown(ScheduledExecutorServiceWrapper.java:440) ~[45:org.apache.aries.blueprint.core:1.9.0] at org.apache.aries.blueprint.utils.threading.ScheduledExecutorServiceWrapper.invokeAny(ScheduledExecutorServiceWrapper.java:177) ~[45:org.apache.aries.blueprint.core:1.9.0] at org.apache.aries.blueprint.container.BlueprintEventDispatcher.callListener(BlueprintEventDispatcher.java:188) [45:org.apache.aries.blueprint.core:1.9.0] at org.apache.aries.blueprint.container.BlueprintEventDispatcher.callListeners(BlueprintEventDispatcher.java:178) [45:org.apache.aries.blueprint.core:1.9.0] at org.apache.aries.blueprint.container.BlueprintEventDispatcher.blueprintEvent(BlueprintEventDispatcher.java:133) [45:org.apache.aries.blueprint.core:1.9.0] at org.apache.aries.blueprint.container.BlueprintContainerImpl.destroy(BlueprintContainerImpl.java:888) [45:org.apache.aries.blueprint.core:1.9.0] at org.apache.aries.blueprint.container.BlueprintExtender$3.run(BlueprintExtender.java:324) [45:org.apache.aries.blueprint.core:1.9.0] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:?] at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:?] at org.apache.aries.blueprint.container.BlueprintExtender.destroyContainer(BlueprintExtender.java:345) [45:org.apache.aries.blueprint.core:1.9.0] at org.apache.aries.blueprint.container.BlueprintExtender.modifiedBundle(BlueprintExtender.java:237) [45:org.apache.aries.blueprint.core:1.9.0] at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.customizerModified(BundleHookBundleTracker.java:500) [45:org.apache.aries.blueprint.core:1.9.0] at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.customizerModified(BundleHookBundleTracker.java:433) [45:org.apache.aries.blueprint.core:1.9.0] at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$AbstractTracked.track(BundleHookBundleTracker.java:725) [45:org.apache.aries.blueprint.core:1.9.0] at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.bundleChanged(BundleHookBundleTracker.java:463) [45:org.apache.aries.blueprint.core:1.9.0] at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$BundleEventHook.event(BundleHookBundleTracker.java:422) [45:org.apache.aries.blueprint.core:1.9.0] at org.apache.felix.framework.util.SecureAction.invokeBundleEventHook(SecureAction.java:1179) [?:?] at org.apache.felix.framework.EventDispatcher.createWhitelistFromHooks(EventDispatcher.java:730) [?:?] at org.apache.felix.framework.EventDispatcher.fireBundleEvent(EventDispatcher.java:485) [?:?] at org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:4579) [?:?] at org.apache.felix.framework.Felix.stopBundle(Felix.java:2626) [?:?] at org.apache.felix.framework.Felix.uninstallBundle(Felix.java:2750) [?:?] at org.apache.felix.framework.BundleImpl.uninstall(BundleImpl.java:1055) [?:?] at org.apache.karaf.bundle.command.Uninstall.executeOnBundle(Uninstall.java:34) [15:org.apache.karaf.bundle.core:4.2.0] at org.apache.karaf.bundle.command.BundlesCommand.doExecute(BundlesCommand.java:65) [15:org.apache.karaf.bundle.core:4.2.0] at org.apache.karaf.bundle.command.BundlesCommand.execute(BundlesCommand.java:55) [15:org.apache.karaf.bundle.core:4.2.0] at org.apache.karaf.shell.impl.action.command.ActionCommand.execute(ActionCommand.java:84) [33:org.apache.karaf.shell.core:4.2.0] at org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:68) [33:org.apache.karaf.shell.core:4.2.0] at org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:86) [33:org.apache.karaf.shell.core:4.2.0] at org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:571) [33:org.apache.karaf.shell.core:4.2.0] at org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:497) [33:org.apache.karaf.shell.core:4.2.0] at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:386) [33:org.apache.karaf.shell.core:4.2.0] at org.apache.felix.gogo.runtime.Pipe.doCall(Pipe.java:417) [33:org.apache.karaf.shell.core:4.2.0] at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:229) [33:org.apache.karaf.shell.core:4.2.0] at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:59) [33:org.apache.karaf.shell.core:4.2.0] at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:?] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:?] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:?] at java.lang.Thread.run(Thread.java:745) [?:?] 21:56:12.711 WARN [Camel (context-1) thread #1 - ShutdownTask] Interrupted while waiting during graceful shutdown, will force shutdown now. I’m curious to why this exception occurs after exactly one minute, and the Camel Graceful Shutdown Timeout as specified is interrupted. I reproduced this on a clean Karaf 4.2.0 build with only the Camel feature installed to run the Camel Context. Any insight on why this might be happening? — Greetings, - Joery