[
https://issues.apache.org/jira/browse/OAK-3924?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15121175#comment-15121175
]
Tomek Rękawek edited comment on OAK-3924 at 1/28/16 10:38 AM:
--------------------------------------------------------------
I tested the current patch on H2, Derby, MySQL and Postgres. Without the
autocommit, the Derby version hangs (other passes all tests). With the
autocommit all engines passes all tests.
{{update()}} method will now throw an IllegalArgumentException if there are
multiple documents with the same id.
The patch contains one more change: the BatchUpdateException are now caught and
handled properly (they contain a list of successfully executed statements).
This was necessary to make the tests work on MySQL and seems like a good idea
in general.
was (Author: tomek.rekawek):
I tested the current patch on H2, Derby, MySQL and Postgres. Without the
autocommit, the Derby version hangs (other passes all tests). With the
autocommit all engines passes all tests.
{{update()}} method will now throw an IllegalArgumentException if there are
multiple documents with the same id.
> Fix database-level row deadlock during bulk updates in RDB
> ----------------------------------------------------------
>
> Key: OAK-3924
> URL: https://issues.apache.org/jira/browse/OAK-3924
> Project: Jackrabbit Oak
> Issue Type: Sub-task
> Components: rdbmk
> Reporter: Tomek Rękawek
> Priority: Critical
> Fix For: 1.4
>
> Attachments: OAK-3924.patch
>
>
> It seems that the new bulk createOrUpdate() implementation in RDB is prone
> for the deadlocks. It isn't a bug in the Oak code, but rather something
> related to the database implementations. The bug can be observed if we have
> multiple simultaneous bulk updates and some of the rows repeat among them.
> The attached patch contains an unit test {{testConcurrentWithConflict}}
> presenting the issue.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)