OpenJPA
  1. OpenJPA
  2. OPENJPA-1550

When batchLimit=-1 or >1 and an exception is caused, the params and failedObject are missing from the resultant exception.

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Minor Minor
    • Resolution: Fixed
    • Affects Version/s: 1.2.2, 1.3.0, 2.0.0-beta2
    • Fix Version/s: 1.2.3, 1.3.0, 2.0.0, 2.1.0
    • Component/s: jdbc
    • Labels:
      None
    • Patch Info:
      Patch Available

      Description

      Exception reporting is different depending on the value of batchLimit. To describe and demonstration this problem, lets take the following Entitiy:

      @Entity
      public class Ent1

      { @Id private int pk; private String name; ..... }

      As a test, lets assume that we have an Ent1 with pk=200 already defined in the DB and our test will attempt to create and persist another Ent1 with pk=200 (i.e. a duplicate key). In so doing we get the following exception as indicated by the batchLimit settings:

      batchLimit=0 or batchLimit=1
      Caused by: <openjpa-1.2.2-SNAPSHOT-r422266:889769M nonfatal store error> org.apache.openjpa.persistence.EntityExistsException: The statement was aborted because it would have caused a duplicate key value in a unique or primary key constraint or unique index identified by 'SQL100301111328870' defined on 'ENT1'.

      {prepstmnt 33038075 INSERT INTO Ent1 (pk, name) VALUES (?, ?) [params=(int) 200, (String) twohundred]}

      [code=20000, state=23505]
      FailedObject: siemens75007.Ent1@19d0e0b

      when batchLimit=-1 or >1
      Caused by: <openjpa-1.2.2-SNAPSHOT-r422266:889769M nonfatal store error> org.apache.openjpa.persistence.EntityExistsException: The statement was aborted because it would have caused a duplicate key value in a unique or primary key constraint or unique index identified by 'SQL100301111328870' defined on 'ENT1'.
      FailedObject: prepstmnt 33038075 INSERT INTO Ent1 (pk, name) VALUES (?, ?) [org.apache.openjpa.jdbc.kernel.JDBCStoreManager$CancelPreparedStatement]

      Notice that when batchLimit=[0,1], the exception lists the prepared statement used along with the params which caused the failure, as well as the 'FailedObject'. Furthermore, calling 'getFailedObject' on the resultant exception will give the caller the entity which caused the failure. In contrast, when batchLimit=-1 or a value greater than 1, we can see that the exception message is missing the prepared statement info, however, it is presented in the 'FailedObject'. The params are also missing from the prepared statement. A call to 'getFailedObject' on the resultant exception will NOT give the caller the entity which caused the exception.

      1. OPENJPA-1550v2.diff.txt
        4 kB
        Heath Thomann
      2. OPENJPA-1550-trunk-testcase.patch.txt
        29 kB
        Heath Thomann
      3. OPENJPA-1550-trunk.patch
        13 kB
        Donald Woods
      4. OPENJPA-1550-13x-v2.diff.txt
        4 kB
        Heath Thomann
      5. OPENJPA-1550-13x-testcase.patch.txt
        27 kB
        Heath Thomann
      6. OPENJPA-1550-13x.patch
        13 kB
        Donald Woods
      7. OPENJPA-1550.diff.txt
        29 kB
        Heath Thomann

        Activity

        Donald Woods made changes -
        Status Resolved [ 5 ] Closed [ 6 ]
        Michael Dick made changes -
        Status In Progress [ 3 ] Resolved [ 5 ]
        Fix Version/s 2.1.0 [ 12314542 ]
        Resolution Fixed [ 1 ]
        Heath Thomann made changes -
        Attachment OPENJPA-1550-trunk-testcase.patch.txt [ 12439117 ]
        Heath Thomann made changes -
        Attachment OPENJPA-1550v2.diff.txt [ 12439718 ]
        Attachment OPENJPA-1550-13x-v2.diff.txt [ 12439719 ]
        Attachment OPENJPA-1550-trunk-testcase.patch.txt [ 12439720 ]
        Donald Woods made changes -
        Status Reopened [ 4 ] In Progress [ 3 ]
        Heath Thomann made changes -
        Attachment OPENJPA-1550-13x-testcase.patch.txt [ 12439116 ]
        Attachment OPENJPA-1550-trunk-testcase.patch.txt [ 12439117 ]
        Heath Thomann made changes -
        Attachment OPENJPA-1550.diff.txt [ 12437968 ]
        Heath Thomann made changes -
        Attachment OPENJPA-1550.diff.txt [ 12438943 ]
        Donald Woods made changes -
        Fix Version/s 1.2.3 [ 12314517 ]
        Donald Woods made changes -
        Resolution Fixed [ 1 ]
        Status Resolved [ 5 ] Reopened [ 4 ]
        Donald Woods made changes -
        Status Open [ 1 ] Resolved [ 5 ]
        Fix Version/s 1.2.3 [ 12314517 ]
        Resolution Fixed [ 1 ]
        Donald Woods made changes -
        Attachment OPENJPA-1550-trunk.patch [ 12438328 ]
        Donald Woods made changes -
        Attachment OPENJPA-1550-13x.patch [ 12438323 ]
        Donald Woods made changes -
        Assignee Heath Thomann [ jpaheath ] Donald Woods [ drwoods ]
        Donald Woods made changes -
        Fix Version/s 1.2.3 [ 12314517 ]
        Fix Version/s 1.3.0 [ 12313326 ]
        Fix Version/s 2.0.0 [ 12314019 ]
        Affects Version/s 2.0.0-beta2 [ 12314802 ]
        Affects Version/s 1.3.0 [ 12313326 ]
        Heath Thomann made changes -
        Field Original Value New Value
        Attachment OPENJPA-1550.diff.txt [ 12437968 ]
        Heath Thomann created issue -

          People

          • Assignee:
            Donald Woods
            Reporter:
            Heath Thomann
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development