[
https://issues.apache.org/jira/browse/OPENJPA-2461?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13836550#comment-13836550
]
Chris Watts commented on OPENJPA-2461:
--------------------------------------
In PessimisticLockManager.lockRow
{code:java}
catch (SQLException se) {
LockException e = new LockException(sm.getPersistenceCapable(),
timeout, level);
e.setCause(se);
e.setFatal(dict.isFatalException(StoreException.LOCK, se)
|| level >= MixedLockLevels.LOCK_PESSIMISTIC_READ);
throw e;
}{code}
Should be:
{code:java}
e.setFatal(dict.isFatalException(StoreException.LOCK, se) || (level >=
MixedLockLevels.LOCK_PESSIMISTIC_READ && timeout != 0 && timeTaken < timeout));
{code}
> throws PessimisticLockException instead of LockTimeoutException
> ---------------------------------------------------------------
>
> Key: OPENJPA-2461
> URL: https://issues.apache.org/jira/browse/OPENJPA-2461
> Project: OpenJPA
> Issue Type: Bug
> Components: jdbc
> Affects Versions: 2.2.2
> Environment: derby 10.10
> Reporter: Chris Watts
>
> When javax.persistence.lock.timeout is set to zero or the lock takes longer
> than specified then LockTimeoutException should be thrown, however
> PessimisticLockException is thrown.
> From the spec:
> The length of time in milliseconds the persistence provider should wait to
> obtain a lock on the database tables may be specified using the
> javax.persistence.lock.timeout property. If the time it takes to obtain a
> lock exceeds the value of this property, a LockTimeoutException will be
> thrown, but the current transaction will not be marked for rollback. If this
> property is set to 0, the persistence provider should throw a
> LockTimeoutException if it cannot immediately obtain a lock.
--
This message was sent by Atlassian JIRA
(v6.1#6144)