openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Chris Watts (JIRA)" <>
Subject [jira] [Commented] (OPENJPA-2461) throws PessimisticLockException instead of LockTimeoutException
Date Mon, 02 Dec 2013 14:39:35 GMT


Chris Watts commented on OPENJPA-2461:

In PessimisticLockManager.lockRow
catch (SQLException se) {
	LockException e = new LockException(sm.getPersistenceCapable(), timeout, level);
	e.setFatal(dict.isFatalException(StoreException.LOCK, se) 
			|| level >= MixedLockLevels.LOCK_PESSIMISTIC_READ);
	throw e;
Should be:
e.setFatal(dict.isFatalException(StoreException.LOCK, se) || (level >= MixedLockLevels.LOCK_PESSIMISTIC_READ
&& timeout != 0 && timeTaken < timeout));

> throws PessimisticLockException instead of LockTimeoutException
> ---------------------------------------------------------------
>                 Key: OPENJPA-2461
>                 URL:
>             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

View raw message