[
https://issues.apache.org/jira/browse/OPENJPA-423?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Michael Dick updated OPENJPA-423:
---------------------------------
Attachment: OPENJPA-423.patch.txt
> Deadlock victim exception getting sequence value with SQLServer
> ---------------------------------------------------------------
>
> Key: OPENJPA-423
> URL: https://issues.apache.org/jira/browse/OPENJPA-423
> Project: OpenJPA
> Issue Type: Bug
> Affects Versions: 0.9.6, 0.9.7, 1.0.0
> Reporter: Michael Dick
> Assignee: Michael Dick
> Fix For: 1.0.1, 1.1.0
>
> Attachments: OPENJPA-423.patch.txt
>
>
> Opening a JIRA issue for the following problem, originally posted to
> openjpa-dev mailing list.
> I've run into tricky issue with Sequence tables on SQLServer.
> After some time during a stress test I get this exception when trying to
> update the sequence table:
> openjpa.jdbc.SQL: Trace: <t 25198719, conn 17636058> executing prepstmnt
> 4953425 SELECT SEQUENCE_VALUE FROM OPENJPA_SEQUENCE_TABLE WHERE ID = ?
> [params=(int) 0]
> . . .
> openjpa.jdbc.SQL: Trace: <t 25198719, conn 17636058> executing prepstmnt
> 19626156 UPDATE OPENJPA_SEQUENCE_TABLE SET SEQUENCE_VALUE = ? WHERE ID = ?
> AND SEQUENCE_VALUE = ? [params=(long) 48601, (int) 0, (long) 48551]
> . . .
> java.sql.SQLException: [IBM][SQLServer JDBC Driver][SQLServer]Transaction
> (Process ID 85) was deadlocked on lock resources with another process and has
> been chosen as the deadlock victim. Rerun the transaction.
> at com.ibm.websphere.jdbc.base.BaseExceptions.createException(Unknown
> Source)
> at com.ibm.websphere.jdbc.base.BaseExceptions.getException(Unknown Source)
> . . .
> at org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeUpdate
> (DelegatingPreparedStatement.java:269)
> at
> org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator$LoggingConnection$LoggingPreparedStatement.executeUpdate(LoggingConnectionDecorator.java:856)
> I believe I'm hitting the exception because SQLServer doesn't support the FOR
> UPDATE clause. Normally the first SQL statement shown above would have locked
> the row preventing the deadlock. SQLServer does support the WITH (UPDLOCK)
> hint, but I haven't found a convenient way to isolate the change so that it
> only affects TableSequences.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.