[ https://issues.apache.org/jira/browse/CAMEL-21432?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17900092#comment-17900092 ]
Abhi Ashok commented on CAMEL-21432: ------------------------------------ Hi Nicholas, Calus - Thanks again for the fix. We have volume tested the fix using 4.4.5-SNAPSHOT and it appears to have resolved the issue. No long running "RUNNABLE' thread s noticed. > multicast function executes for ever. Thread is RUNNABLE for ever. Issue > appears with multicast operating on SimpleLRUCache > ----------------------------------------------------------------------------------------------------------------------------- > > Key: CAMEL-21432 > URL: https://issues.apache.org/jira/browse/CAMEL-21432 > Project: Camel > Issue Type: Bug > Components: came-core > Affects Versions: 4.4.3 > Environment: | > ||Virtual Machine: |OpenJDK 64-Bit Server VM version 17.0.13+11-LTS| > ||Vendor: |Red Hat, Inc.| > | > > Processing Application Thread: IBM MQ Consumer. > Camel Version: 4.4.3 > Reporter: Abhi Ashok > Assignee: Nicolas Filotto > Priority: Minor > Fix For: 4.4.5, 4.8.2, 4.9.0 > > Attachments: image-2024-11-11-14-31-06-831.png > > > 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) -- This message was sent by Atlassian Jira (v8.20.10#820010)