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

Philippe Bouteleux commented on CAMEL-12727:
--------------------------------------------

Hi, 

I'm sorry this cannot be easily reproduced with a simple unit test as it only 
occurs under heavy workload on our perf platform of test.

The route looks like this:

from(auditQueueProperties.getAuditQueueUri()) // rabbitmq queue
 .routeId(ROUTE_NAME)
 .autoStartup(true)
 .split().method(batchUnfoldPlugin) // extract individual xml audit messages 
from the input batch
 .aggregate(simple("${header." + AUDIT_TYPE + "}"), aggregationStrategy) // 
aggregate the audit messages by appending them directly into files on disk, 
spread by type
 .optimisticLocking() // as exclusive pessimistic locking is directly managed 
by the file system for each individual file instead of a less efficient global 
lock.
 .completionSize(stagingAreaProperties.getCompletionSize())
 .completionInterval(stagingAreaProperties.getCompletionInterval())
 // copy each completed file to another location
 .process(ex -> 
stagingArea.push(ex.getIn().getHeader(TRANSACTION_TYPE).toString(), 
ex.getIn().getHeader(AUDIT_DATA_PATH).toString(), ex.getIn().getBody()))
 .end();

The custom aggregation strategy implements CompletionAwareAggregationStrategy 
and TimeoutAwareAggregationStrategy to save each incoming message by appending 
it to the correct file by type, date etc... protected by a FileLock and retries 
on OverlappingFileLockException.

We are currently in the process to downgrade from our current version 2.20.1 to 
version 2.19.5 to validate our assumption on the issue but we are facing other 
incompatibility problems doing so that needs to be fixed/circumvented.

> java.util.ConcurrentModificationException at 
> org.apache.camel.impl.DefaultExchange.createProperties(DefaultExchange.java:550)
>  in 2.20.1
> ---------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-12727
>                 URL: https://issues.apache.org/jira/browse/CAMEL-12727
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-core
>    Affects Versions: 2.20.0
>         Environment: Camel 2.20.1.
> The exception occurs within a aggregation processor using a custom 
> aggregation strategy and optimistic locking.
>            Reporter: Philippe Bouteleux
>            Priority: Major
>         Attachments: dih-error.queue_2 (1).txt
>
>
> A concurrent access exception occurs during our load tests while consuming 
> messages from a rabbitmq queue.
> The call stack embedded below shows that the issue is related to an 
> "optimization" which was introduced in 
> https://issues.apache.org/jira/browse/CAMEL-11330 to replace a 
> ConcurrentHashMap with a regular one from version 2.19.5 to 2.20.0 onward.
> The faulty code is still present in latest 2.22.0.
>  
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to