Improve the error raised by too much contention on a sequence/identity.
-----------------------------------------------------------------------
Key: DERBY-5426
URL: https://issues.apache.org/jira/browse/DERBY-5426
Project: Derby
Issue Type: Improvement
Components: SQL
Affects Versions: 10.8.2.1, 10.9.0.0
Reporter: Rick Hillegas
Currently, when there is too much contention on a sequence/identity, Derby
raises an error saying so. There are two properties which the user can adjust
in order to reduce the risk of this error:
derby.locks.waitTimeout
derby.language.sequence.preallocator
It would be good to point the user at these knobs. The following change would
improve this error reporting:
1) Raise a lock timeout SQLException
2) Chain a "too much contention" SQLException (X0Y84) to the lock timeout.
3) Make the "too much contention" exception suggest that the user adjust the
properties mentioned above.
To make the code easier to understand, the exception raising could replace the
loop exit inside the following "if" block in
SequenceUpdater.getCurrentValueAndAdvance():
if (
(_lockTimeoutInMillis >= 0L) &&
( (System.currentTimeMillis() - startTime.longValue()) >
_lockTimeoutInMillis )
)
{
break;
}
This approach was recommended by the discussion on DERBY-5423.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira