Details
Description
multicast function used in a Camel Route never returns back occasionally.
Route Code snippet:
from(getProcessMessageURI())
.routeId(getSourceId() + ".businessRoute")
.autoStartup(this.getConfigValue(getRouteAutoStartup()))
.transacted(this.getPropagationRequiredPolicy())
.setHeader("DESTINATION_URI").simple(this.getConfigValue(getOutputQueue()))
.process(new InputMessageProcessor(this.getConfigValue(getOutputQueue())))
.bean(new JTEConfigReader(getConfigXml()), "addJTEConfig(${body})")
.bean(DMUtilityProcessor.class) exchange
.bean(TranslatorExchangeController.class)
.removeHeaders("JMS*")
.multicast()
.to(directOutput(), directPersist());
Thread dump shows that the Processing Thread remains in RUNNABLE state.
All Stuck instance of Threaddump shows access to SimpleLRUCache$OperationContext.close, where it gets stuck.
Thread Dump:
Name: Camel (camelContext) thread #11 - JmsConsumer[IFM.RTR.IFM.ITE.BFM.AKNKRAW.EXPRESS]
State: RUNNABLE
Total blocked: 13,338 Total waited: 13,968
Stack trace:
org.apache.camel.support.cache.SimpleLRUCache$OperationContext.close(SimpleLRUCache.java:318)
org.apache.camel.support.cache.SimpleLRUCache.putIfAbsent(SimpleLRUCache.java:125)
org.apache.camel.processor.MulticastProcessor.wrapInErrorHandler(MulticastProcessor.java:1074)
org.apache.camel.processor.MulticastProcessor.createProcessorExchangePair(MulticastProcessor.java:1023)
org.apache.camel.processor.MulticastProcessor.createProcessorExchangePairs(MulticastProcessor.java:990)
org.apache.camel.processor.MulticastProcessor.doProcess(MulticastProcessor.java:324)
org.apache.camel.processor.MulticastProcessor.process(MulticastProcessor.java:316)
org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryTask.doRun(RedeliveryErrorHandler.java:840)
org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryTask.run(RedeliveryErrorHandler.java:746)
org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.executeFromQueue(DefaultReactiveExecutor.java:240)
org.apache.camel.impl.engine.DefaultReactiveExecutor.executeFromQueue(DefaultReactiveExecutor.java:77)
org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.await(DefaultAsyncProcessorAwaitManager.java:95)
org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:84)
org.apache.camel.processor.errorhandler.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:200)
org.apache.camel.impl.engine.CamelInternalProcessor.processTransacted(CamelInternalProcessor.java:397)
org.apache.camel.impl.engine.CamelInternalProcessor.process(CamelInternalProcessor.java:327)
org.apache.camel.processor.Pipeline$PipelineTask.run(Pipeline.java:102)
org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.executeFromQueue(DefaultReactiveExecutor.java:240)
org.apache.camel.impl.engine.DefaultReactiveExecutor.executeFromQueue(DefaultReactiveExecutor.java:77)
org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.await(DefaultAsyncProcessorAwaitManager.java:95)
org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:84)
org.apache.camel.spring.spi.TransactionErrorHandler.processByErrorHandler(TransactionErrorHandler.java:244)
org.apache.camel.spring.spi.TransactionErrorHandler.process(TransactionErrorHandler.java:119)
org.apache.camel.spring.spi.TransactionErrorHandler.process(TransactionErrorHandler.java:132)
org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryTask.doRun(RedeliveryErrorHandler.java:840)
org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryTask.run(RedeliveryErrorHandler.java:746)
org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.executeFromQueue(DefaultReactiveExecutor.java:240)
org.apache.camel.impl.engine.DefaultReactiveExecutor.executeFromQueue(DefaultReactiveExecutor.java:77)
org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.await(DefaultAsyncProcessorAwaitManager.java:95)
org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:84)
org.apache.camel.spring.spi.TransactionErrorHandler.processByErrorHandler(TransactionErrorHandler.java:244)
org.apache.camel.spring.spi.TransactionErrorHandler$1.doInTransactionWithoutResult(TransactionErrorHandler.java:207)
org.springframework.transaction.support.TransactionCallbackWithoutResult.doInTransaction(TransactionCallbackWithoutResult.java:36)
org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140)
org.apache.camel.spring.spi.TransactionErrorHandler.doInTransactionTemplate(TransactionErrorHandler.java:200)
org.apache.camel.spring.spi.TransactionErrorHandler.processInTransaction(TransactionErrorHandler.java:155)
org.apache.camel.spring.spi.TransactionErrorHandler.process(TransactionErrorHandler.java:123)
org.apache.camel.spring.spi.TransactionErrorHandler.process(TransactionErrorHandler.java:132)
org.apache.camel.impl.engine.CamelInternalProcessor.processNonTransacted(CamelInternalProcessor.java:354)
org.apache.camel.impl.engine.CamelInternalProcessor.process(CamelInternalProcessor.java:330)
org.apache.camel.processor.Pipeline$PipelineTask.run(Pipeline.java:102)
org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.doRun(DefaultReactiveExecutor.java:199)
org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.executeReactiveWork(DefaultReactiveExecutor.java:189)
org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.tryExecuteReactiveWork(DefaultReactiveExecutor.java:166)
org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)
org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:59)
org.apache.camel.processor.Pipeline.process(Pipeline.java:163)
org.apache.camel.impl.engine.CamelInternalProcessor.processNonTransacted(CamelInternalProcessor.java:354)
org.apache.camel.impl.engine.CamelInternalProcessor.process(CamelInternalProcessor.java:330)
org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:82)
org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:32)
org.apache.camel.component.jms.EndpointMessageListener.onMessage(EndpointMessageListener.java:132)
org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:783)
org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:741)
org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:719)
org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:333)
org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:246)
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1257)
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1247)
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:1140)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
java.lang.Thread.run(Thread.java:840)
Attachments
Attachments
Issue Links
- relates to
-
CAMEL-20835 OOM using RecipientList
- Resolved
- links to