You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Claus Ibsen (Jira)" <ji...@apache.org> on 2024/05/15 13:54:00 UTC

[jira] [Commented] (CAMEL-20493) camel-core: concurrency issue copying headers

    [ https://issues.apache.org/jira/browse/CAMEL-20493?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17846641#comment-17846641 ] 

Claus Ibsen commented on CAMEL-20493:
-------------------------------------

Today on main branch
{code}
[ERROR] Tests run: 2, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 1.191 s <<< FAILURE! -- in org.apache.camel.component.jms.JmsProducerConcurrentWithReplyTest
[ERROR] org.apache.camel.component.jms.JmsProducerConcurrentWithReplyTest.testConcurrentProducers -- Time elapsed: 0.139 s <<< ERROR!
java.util.concurrent.ExecutionException: org.apache.camel.CamelExecutionException: Exception occurred during execution on the exchange: Exchange[CF23C35CE9BBF3D-000000000000025A]
	at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122)
	at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:205)
	at org.apache.camel.component.jms.JmsProducerConcurrentWithReplyTest.doSendMessages(JmsProducerConcurrentWithReplyTest.java:86)
	at org.apache.camel.component.jms.JmsProducerConcurrentWithReplyTest.testConcurrentProducers(JmsProducerConcurrentWithReplyTest.java:68)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at java.base/java.util.concurrent.RecursiveAction.exec(RecursiveAction.java:194)
	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373)
	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182)
	at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655)
	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622)
	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165)
Caused by: org.apache.camel.CamelExecutionException: Exception occurred during execution on the exchange: Exchange[CF23C35CE9BBF3D-000000000000025A]
	at org.apache.camel.CamelExecutionException.wrapCamelExecutionException(CamelExecutionException.java:45)
	at org.apache.camel.support.ExchangeHelper.extractResultBody(ExchangeHelper.java:677)
	at org.apache.camel.impl.engine.DefaultProducerTemplate.extractResultBody(DefaultProducerTemplate.java:591)
	at org.apache.camel.impl.engine.DefaultProducerTemplate.extractResultBody(DefaultProducerTemplate.java:587)
	at org.apache.camel.impl.engine.DefaultProducerTemplate.requestBody(DefaultProducerTemplate.java:414)
	at org.apache.camel.component.jms.JmsProducerConcurrentWithReplyTest.lambda$doSendMessages$0(JmsProducerConcurrentWithReplyTest.java:79)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
	at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.util.ConcurrentModificationException
	at java.base/java.util.TreeMap$PrivateEntryIterator.nextEntry(TreeMap.java:1486)
	at java.base/java.util.TreeMap$EntryIterator.next(TreeMap.java:1522)
	at java.base/java.util.TreeMap$EntryIterator.next(TreeMap.java:1517)
	at java.base/java.util.TreeMap.buildFromSorted(TreeMap.java:2879)
	at java.base/java.util.TreeMap.buildFromSorted(TreeMap.java:2871)
	at java.base/java.util.TreeMap.buildFromSorted(TreeMap.java:2903)
	at java.base/java.util.TreeMap.buildFromSorted(TreeMap.java:2871)
	at java.base/java.util.TreeMap.buildFromSorted(TreeMap.java:2828)
	at java.base/java.util.TreeMap.putAll(TreeMap.java:319)
	at org.apache.camel.support.MessageSupport.copyFromWithNewBody(MessageSupport.java:226)
	at org.apache.camel.support.processor.ConvertBodyProcessor.process(ConvertBodyProcessor.java:129)
	at org.apache.camel.impl.engine.SharedCamelInternalProcessor$InternalCallback.done(SharedCamelInternalProcessor.java:216)
	at org.apache.camel.AsyncCallback.run(AsyncCallback.java:44)
	at org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.doRun(DefaultReactiveExecutor.java:199)
	at org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.executeReactiveWork(DefaultReactiveExecutor.java:189)
	at org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.tryExecuteReactiveWork(DefaultReactiveExecutor.java:166)
	at org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)
	at org.apache.camel.impl.engine.DefaultReactiveExecutor.schedule(DefaultReactiveExecutor.java:54)
	at org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask.run(RedeliveryErrorHandler.java:421)
	at org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask.done(RedeliveryErrorHandler.java:392)
	at org.apache.camel.component.jms.reply.ReplyManagerSupport.processReply(ReplyManagerSupport.java:222)
	at org.apache.camel.component.jms.reply.TemporaryQueueReplyHandler.onReply(TemporaryQueueReplyHandler.java:54)
	at org.apache.camel.component.jms.reply.TemporaryQueueReplyManager.handleReplyMessage(TemporaryQueueReplyManager.java:85)
	at org.apache.camel.component.jms.reply.ReplyManagerSupport.onMessage(ReplyManagerSupport.java:165)
	at org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:783)
	at org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:741)
	at org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:719)
	at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:333)
	at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:270)
	at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1257)
	at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1247)
	at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:1140)
	... 1 more
{code}

> camel-core: concurrency issue copying headers
> ---------------------------------------------
>
>                 Key: CAMEL-20493
>                 URL: https://issues.apache.org/jira/browse/CAMEL-20493
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-core
>    Affects Versions: 4.0.3, 4.4.0, 4.5.0
>            Reporter: Otavio Rodolfo Piske
>            Assignee: Otavio Rodolfo Piske
>            Priority: Major
>             Fix For: 4.x
>
>         Attachments: concurrency-issue.txt
>
>
> It looks like under some rare circumstances the copy of message headers can suffer from concurrency issues. 
> Please look at the attached log, extracted from an execution of the test JmsProducerConcurrentWithReplyTest. 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)