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

Bastien Meert updated CAMEL-13403:
----------------------------------
    Summary: Default allowUseOriginalMessage="false" prevent clearing 
inflightRepository using jms with transferExchange="true"  (was: Default 
allowUseOriginalMessage="false" prevent inflightRepository using jms with 
transferExchange="true")

> Default allowUseOriginalMessage="false" prevent clearing inflightRepository 
> using jms with transferExchange="true"
> ------------------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-13403
>                 URL: https://issues.apache.org/jira/browse/CAMEL-13403
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-jms
>            Reporter: Bastien Meert
>            Priority: Minor
>         Attachments: JmsInOutTransferExchangeInflightRepositoryFlushTest.java
>
>
> When using transferExchange="true" in a JMS consumer (assuming producer also 
> did), camel is breaking the match between key and exchange in 
> inflightRepository if allowUseOriginalMessage="true" is not set in camel 
> context.
> This can lead to java heap space out of memory because camel is not able to 
> clear the inflightRepository from old Exchange.
> Identified behaviour :
>  # Camel receive the JMS message
>  ## If allowUseOriginalMessage=true : parse JMS message to build Exchange 
> instance
>  ## If not : generate a new Instance
>  # Camel add the Exchange to inflightRepository
>  # On accessing the ExchangeBody, if it was not parsed  yet camel rebuild the 
> Exchange but do not change the key(exchangeId) in the inflightRepository
>  # When the route process is over the message is not disposed if the key has 
> been changed in the Exchange but not inflightRepository
>  # Sooner or later the heap space if full and application crash.
> The problem appeared in 2.18.0 and is present up until 2.23.1 (tested with 
> attached test case). Release note of 2.18.0 says :
> "Optimize Camel to only enable AllowUseOriginalMessage if in use by error 
> handler or OnCompletion<[http://camel.apache.org/oncompletion.html]>. End 
> user who manually access the original message using the Java API must 
> configure AllowUseOriginalMessage=true."
> Problem is transferExchange="true" case also needs 
> allowUseOriginalMessage="true" even if the not accessing original message by 
> Java API an other way.
> Easy work around : set allowUseOriginalMessage="true" in camel context 
> configuration



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

Reply via email to