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.

Reply via email to