I've tested with versions 2.10.3 and 2.11.0. This is just a short example that can reproduce described problem. You can put anything else in the splitter, it will not be reached.
Reducing unnecessary code showed that example worked if "seda" was replaced with "direct" or "maximumRedeliveries" removed, so I guess problem is somehow related to that. Here is stack trace after it got stucked (I've paused the thread): Daemon Thread [Camel (camel-1) thread #0 - seda://queue1] (Suspended) DefaultCamelContext.getErrorHandlerExecutorService() line: 1321 DeadLetterChannel(RedeliveryErrorHandler).doStart() line: 1131 DeadLetterChannel(ChildServiceSupport).start(boolean) line: 41 DeadLetterChannel(ChildServiceSupport).start() line: 28 ServiceHelper.startService(Service) line: 64 ServiceHelper.startService(Object) line: 54 ServiceHelper.startServices(Object...) line: 75 RouteContextProcessor(DelegateAsyncProcessor).doStart() line: 78 RouteContextProcessor(ServiceSupport).start() line: 61 ServiceHelper.startService(Service) line: 64 ServiceHelper.startService(Object) line: 54 ServiceHelper.startServices(Object...) line: 75 UnitOfWorkProcessor(DelegateAsyncProcessor).doStart() line: 78 UnitOfWorkProcessor.doStart() line: 88 UnitOfWorkProcessor(ServiceSupport).start() line: 61 ServiceHelper.startService(Service) line: 64 ServiceHelper.startService(Object) line: 54 ServiceHelper.startServices(Object...) line: 75 Splitter(MulticastProcessor).createErrorHandler(RouteContext, Exchange, Processor) line: 876 Splitter(MulticastProcessor).createProcessorExchangePair(int, Processor, Exchange, RouteContext) line: 833 Splitter$1$1.next() line: 178 Splitter$1$1.next() line: 133 Splitter.createProcessorExchangePairsList(Exchange, Object) line: 195 Splitter.createProcessorExchangePairs(Exchange) line: 113 Splitter(MulticastProcessor).process(Exchange, AsyncCallback) line: 206 Splitter.process(Exchange, AsyncCallback) line: 98 AsyncProcessorHelper.process(AsyncProcessor, Exchange, AsyncCallback) line: 73 BacklogTracerInterceptor(DelegateAsyncProcessor).processNext(Exchange, AsyncCallback) line: 99 BacklogTracerInterceptor(DelegateAsyncProcessor).process(Exchange, AsyncCallback) line: 90 BacklogTracerInterceptor.process(Exchange, AsyncCallback) line: 84 AsyncProcessorHelper.process(AsyncProcessor, Exchange, AsyncCallback) line: 73 TraceInterceptor(DelegateAsyncProcessor).processNext(Exchange, AsyncCallback) line: 99 TraceInterceptor(DelegateAsyncProcessor).process(Exchange, AsyncCallback) line: 90 TraceInterceptor.process(Exchange, AsyncCallback) line: 163 AsyncProcessorHelper.process(AsyncProcessor, Exchange, AsyncCallback) line: 73 DeadLetterChannel(RedeliveryErrorHandler).processErrorHandler(Exchange, AsyncCallback, RedeliveryErrorHandler$RedeliveryData) line: 390 DeadLetterChannel(RedeliveryErrorHandler).process(Exchange, AsyncCallback) line: 273 RouteContextProcessor.processNext(Exchange, AsyncCallback) line: 46 RouteContextProcessor(DelegateAsyncProcessor).process(Exchange, AsyncCallback) line: 90 DefaultChannel.process(Exchange, AsyncCallback) line: 335 AsyncProcessorHelper.process(AsyncProcessor, Exchange, AsyncCallback) line: 73 Pipeline.process(Exchange, Exchange, AsyncCallback, Iterator<Processor>, AsyncProcessor) line: 117 Pipeline.process(Exchange, AsyncCallback) line: 80 RouteContextProcessor.processNext(Exchange, AsyncCallback) line: 46 RouteContextProcessor(DelegateAsyncProcessor).process(Exchange, AsyncCallback) line: 90 UnitOfWorkProcessor.processAsync(Exchange, AsyncCallback, UnitOfWork) line: 150 UnitOfWorkProcessor.process(Exchange, AsyncCallback) line: 117 RouteInflightRepositoryProcessor.processNext(Exchange, AsyncCallback) line: 48 RouteInflightRepositoryProcessor(DelegateAsyncProcessor).process(Exchange, AsyncCallback) line: 90 AsyncProcessorHelper.process(AsyncProcessor, Exchange, AsyncCallback) line: 73 InstrumentationProcessor(DelegateAsyncProcessor).processNext(Exchange, AsyncCallback) line: 99 InstrumentationProcessor(DelegateAsyncProcessor).process(Exchange, AsyncCallback) line: 90 InstrumentationProcessor.process(Exchange, AsyncCallback) line: 72 AsyncProcessorHelper.process(AsyncProcessor, Exchange, AsyncCallback) line: 73 SedaConsumer.sendToConsumers(Exchange) line: 275 SedaConsumer.doRun() line: 183 SedaConsumer.run() line: 139 RejectableThreadPoolExecutor(ThreadPoolExecutor).runWorker(ThreadPoolExecutor$Worker) line: 1110 ThreadPoolExecutor$Worker.run() line: 603 Thread.run() line: 636 -- View this message in context: http://camel.465427.n5.nabble.com/Graceful-shutdown-not-working-tp5733697p5733763.html Sent from the Camel - Users mailing list archive at Nabble.com.