[
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)