Uploaded image for project: 'Derby'
  1. Derby
  2. DERBY-5426

Improve the error raised by too much contention on a sequence/identity.

Attach filesAttach ScreenshotVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 10.8.2.2, 10.9.1.0
    • 10.8.2.2, 10.9.1.0
    • SQL
    • None
    • Blocker
    • Newcomer

    Description

      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.

      Attachments

        Issue Links

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            rhillegas Richard N. Hillegas
            rhillegas Richard N. Hillegas
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment