[ 
https://issues.apache.org/activemq/browse/SMXCOMP-567?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gert Vanthienen resolved SMXCOMP-567.
-------------------------------------

    Resolution: Fixed

Fixed in http://svn.apache.org/viewvc?view=rev&revision=784190 for trunk
and backported to 3.2.x branch in 
http://svn.apache.org/viewvc?view=rev&revision=784191

> ConcurrentModificationException when running servicemix-camel routes under 
> high load
> ------------------------------------------------------------------------------------
>
>                 Key: SMXCOMP-567
>                 URL: https://issues.apache.org/activemq/browse/SMXCOMP-567
>             Project: ServiceMix Components
>          Issue Type: Bug
>          Components: servicemix-camel
>    Affects Versions: 3.2.3, servicemix-camel-2009.01
>            Reporter: Gert Vanthienen
>            Assignee: Gert Vanthienen
>             Fix For: 3.2.4, servicemix-camel-2009.02
>
>
> When running some kinds of Routes (e.g. using Camel threads(), seda queues, 
> aggregator, ...), the JbiExchange/JbiMessage can outlive the time that the 
> Camel endpoint needs for handling the underlying 
> MessageExchange/NormalizedMessage.  Under high load this can result in 
> ConcurrentModificationExceptions like
> {noformat}
> java.util.ConcurrentModificationException
>       at java.util.HashMap$HashIterator.nextEntry(HashMap.java:793)
>       at java.util.HashMap$KeyIterator.next(HashMap.java:828)
>       at 
> java.util.Collections$UnmodifiableCollection$1next(Collections.java:1010)
>       at 
> org.apache.servicemix.camel.JbiMessage.populateInitialHeaders(JbiMessatge.java:136)
>       at 
> org.apache.camel.impl.DefaultMessage.createHeaders(DefaultMessage.java:92)
>       at 
> org.apache.camel.impl.DefaultMessage.getHeaders(DefaultMessatge.java:69)
>       at org.apache.camel.impl.MessageSupport.copyFrom(MessageSupport.java:99)
>       at 
> org.apache.camel.processor.Pipeline.createNextExchange(Pipeline.java:185)
>       at org.apache.camel.processor.Pipeline$1.done(Pipeline.java:140)
>       at 
> org.apache.camel.processor.DeadLetterChannel$1.done(DeadLetterChannel.java:191)
>       at 
> org.apache.camel.management.InstrumentationProcessor$1.done(InstrumentationProcessor.java:74)
>       at 
> org.apache.servicemix.camel.CamelConsumerEndpoint.process(CamelConsumerEndpoint.java:74)
>       at 
> org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:600)
>       at 
> org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:571)
>       at 
> org.apache.servicemix.common.AsyncBaseLifeCycle.onMessageExchange(AsyncBaseLifeCycle.java:510)
>       at 
> org.apache.servicemix.common.SyncLifeCycleWrapper.onMessageExchange(SyncLifeCycleWrapper.java:60)
>       at 
> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:623)
>       at 
> org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:172)
>       at 
> org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:168)
>       at 
> org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>       at java.lang.Thread.run(Thread.java:619)
> {noformat}
> or
> {noformat}
> java.util.ConcurrentModificationException
>       at java.util.HashMap$HashIterator.nextEntry(HashMap.java:793)
>       at java.util.HashMap$EntryIterator.next(HashMap.java:834)
>       at java.util.HashMap$EntryIterator.next(HashMap.java:832)
>       at java.util.AbstractMap.toString(AbstractMap.java:485)
>       at java.lang.String.valueOf(String.java:2827)
>       at java.lang.Stringbuilder.append(StringBuilder.java:115)
>       at 
> org.apache.servicem.jbi.messaging.NormalizedMessageImpl.toString(NormalizedMessageImpl.java:225)
>       at java.lang.String.valueOf(String.java:2827)
>       at java.lang.StringBuilder.append(StringBuilder.java:115)
>       at org.apache.servicemix.camel.JbiMessage.toString(JbiMessage.java:48)
>       at java.lang.String.valueOf(String.java:2827)
>       at java.lang.StringBuilder.append(StringBuider.java:115)
>       at 
> org.apache.camel.NoTypeConversionAvailableException.<init>(NoTypeConversionAvailableException.java:29)
>       at 
> org.apache.camel.impl.converter.DefaultTypeConverter.converTo(DefaultTypeConverter.java:117)
>       at 
> org.apache.camel.impl.converter.DefaultTypeConverter.converTo(DefaultTypeconverter.java:65)
>       at org.apache.camel.impl.MessageSupport.getBody(MessageSupport.java:69)
>       at org.apache.camel.impl.MessageSupport.getBody(MessageSupport.java:51)
>       at 
> org.apache.camel.component.log.LogFormatter.getBodyAsString(LogFormatter.java:182)
>       at 
> org.apache.camel.component.log.LogFormatter.format(LogFormatter.java:74)
>       at org.apache.camel.processor.Logger.logMessage(Logger.java:234)
>       at org.apache.camel.processor.Logger.process(Logger.java:73)
>       at 
> org.apache.camel.impl.ProcessorEndpoint.onExchange(ProcessorEndpoint.java:92)
>       at 
> org.apache.camel.impl.ProcessorEndpoint$1.process(ProcessorEndpoint.java:66)
>       at 
> org.apache.camel.impl.converter.AsyncProcessorTypeConverter$ProcessorToAsyncProcessorBridge.process(AsyncProcessorTypeConverter.java:43)
>       at 
> org.apache.camel.processor.SendProcessor.process(SendProcessor.java:84)
>       at 
> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:68)
>       at 
> org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:178)
>       at 
> org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:132)
>       at org.apache.camel.processor.Pipeline.process(Pipeline.java:115)
>       at org.apache.camel.processor.Pipeline.process(Pipeline.java:89)
>       at 
> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:68)
>       at 
> org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:52)
>       at 
> org.apache.camel.component.seda.SedaConsumer.run(SedaConsumer.java:69)
>       at java.lang.Thread.run(Thread.java:619)
> {noformat}

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to