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

Benjamin Truitt commented on CAMEL-6144:
----------------------------------------

[~krsmes] - I think the problem is that this issue's description reports two 
separate (but related) problems, by its own admission: "Listing two problems 
here. "

I suggest creating a separate issue for the problem that you've pointed out 
still seems to exist.

> Optimistic Locking Required for JdbcAggregationRepository in order for Camel 
> Aggregation to work in a Clustered environment
> ---------------------------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-6144
>                 URL: https://issues.apache.org/jira/browse/CAMEL-6144
>             Project: Camel
>          Issue Type: Improvement
>          Components: camel-sql
>    Affects Versions: 2.9.2
>         Environment: Camel Aggregation in more than one server each of them 
> using JDBCAggregationRepository and using a common DB table to store 
> aggregated exchanges.
>            Reporter: Shivakumar
>            Assignee: Claus Ibsen
>             Fix For: 2.12.0
>
>
> Listing two problems here. And a solution that is needed to fix these 
> problems.
> 1) A Race condition leading to below ConstraintViolationException when two 
> Camel Aggregator's trying to insert into the AGGREGATION DB table for same 
> correlationkey(ID). 
> "org.hibernate.exception.ConstraintViolationException: ORA-00001: unique 
> constraint (USLDB_UAT2.AGGREGATION_PK) violated
> at 
> org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:74)
> at 
> org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49)
> at 
> org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125)
> at 
> org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110)
> at 
> org.hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler.continueInvocation(AbstractStatementProxyHandler.java:129)
> at 
> org.hibernate.engine.jdbc.internal.proxy.AbstractProxyHandler.invoke(AbstractProxyHandler.java:81)
> at $Proxy171.executeUpdate(Unknown Source)
> at 
> org.springframework.jdbc.core.support.AbstractLobCreatingPreparedStatementCallback.doInPreparedStatement(AbstractLobCreatingPreparedStatementCallback.java:73)
> at 
> org.springframework.jdbc.core.support.AbstractLobCreatingPreparedStatementCallback.doInPreparedStatement(AbstractLobCreatingPreparedStatementCallback.java:1)
> at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:587)
> at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:615)
> at 
> org.apache.camel.processor.aggregate.jdbc.JdbcAggregationRepository$1.doInTransaction(JdbcAggregationRepository.java:137)
> at 
> org.apache.camel.processor.aggregate.jdbc.JdbcAggregationRepository$1.doInTransaction(JdbcAggregationRepository.java:113)
> at 
> org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:130)
> at 
> org.apache.camel.processor.aggregate.jdbc.JdbcAggregationRepository.add(JdbcAggregationRepository.java:113)
> at 
> org.apache.camel.processor.aggregate.AggregateProcessor.doAggregation(AggregateProcessor.java:260)
> at 
> org.apache.camel.processor.aggregate.AggregateProcessor.process(AggregateProcessor.java:197)
> at 
> org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(As..."
> 2) A similar Race condition happens when more than one Camel Aggregator(s) 
> tries to update a row in the AGGREGATION table. This problem does not lead 
> into any exceptions. But it leads into missing exchanges. Because both the 
> Aggregator's are trying to update the same row in the AGGREGATION table, But 
> one update is overwritten by other update, thus losing an exchange.
> SOLUTION:
> ==========
> Optimistic locking should be enabled / applied  for JdbcAggregationRepository 
> to handle this race condition.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to