camel-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "TEIKITEETINI-VAYSSE Loic (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CAMEL-11223) camel-jpa doesn't handle exclusive locks for concurrent consumers when setting consumeDelete to false
Date Wed, 03 May 2017 14:15:04 GMT

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

TEIKITEETINI-VAYSSE Loic commented on CAMEL-11223:
--------------------------------------------------

My test data :
{quote}TRUNCATE TABLE CAMEL.TOTO;
TRUNCATE TABLE CAMEL.TOTO_CONSUMED;
BEGIN
  FOR i IN 1..10 LOOP
      INSERT INTO CAMEL.TOTO VALUES ('Toto' || i, 0);
  END LOOP;
  COMMIT;
END;

SELECT * FROM CAMEL.TOTO_CONSUMED;{quote}

> camel-jpa doesn't handle exclusive locks for concurrent consumers when setting consumeDelete
to false
> -----------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-11223
>                 URL: https://issues.apache.org/jira/browse/CAMEL-11223
>             Project: Camel
>          Issue Type: Improvement
>          Components: camel-jpa
>    Affects Versions: 2.18.3
>         Environment: Java JDK  1.8.0_121
> Spring 4 (reproduced with Spring Boot 1.5.3)
> RedHat RHEL 7.1 x86_64
> Oracle 11G
>            Reporter: TEIKITEETINI-VAYSSE Loic
>         Attachments: jira-camel-11223.zip
>
>
> Deploying 4 instances of the same app containing a camel-jpa consumer polling on the
same database, I noticed that several servers can consume the same entities.
> The polling is currently done as follow :
> # Poll without lock on the `maxResult` first rows
> # On each row :
> ## Apply a lock _select ... for update (NOWAIT)_
> ## Consume entity
> ## Release the lock (commit)
> ## New Transaction
> ## Process exchange
> ## End Transaction
> What can happen with several instances of the consuming on the same database is :
> # {color:green}Server 1 polls the 10 first rows{color}
> # {color:red}Server 2 polls the same 10 first rows{color}
> # {color:green}Server 1 locks row 1 for update and consume it{color}
> # {color:red}Server 2 locks row 1 for update as the previous lock is already released
and consumes it{color}
> This demand is related to my previous post on the user forum : http://camel.465427.n5.nabble.com/JPA-consumer-component-is-not-handling-multiple-server-concurrent-polling-td5797937.html



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Mime
View raw message