OpenJPA
  1. OpenJPA
  2. OPENJPA-1163

Data consistency issues while modifying collections.

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 1.1.1, 2.0.0-M3
    • Component/s: kernel
    • Labels:
      None
    • Environment:
      openJPA trunk. Derby DB.
    • Patch Info:
      Patch Available

      Description

      There are data consistency issues when modifying more number of elements in a collection Vs less number of elements.

      Following is a detailed explanation about the issue with example:

      • Entity A has a collection of Entities AItems with cascade ALL.
      • Test case :
        Clear all the data inside tables representing Entity A and AItems.
        Create 3 entity managers em1,em2 and em3.

      em1.begin()
      create A on em1 with id "1"
      add 10 elements of AItems (id's from 0-9) to the created A(id 1).
      persist A.
      em1.commit()

      em1.begin()
      merge A ( created in the previous step)
      Remove 3 elements of AItems from the merged A.
      Add 3 elements of AItems ( id's 10,11,12) to the merged A (id 1).

      With out committing em1

      em2.begin()
      query database to fetch A and construct object result2 of entity A.
      Add 3 elements of AItems ( id's 13,14,15) to fetched A ( result2)

      em2.commit ()
      em1.commit()

      em3.begin()
      query database to check the size of AItems that are related to A ( id 1)
      em3.commit()

      The result on em3's query for AItems related to A, returns 13 as expected.
      13 ( Initial 10 - em1's 3 + em1's 3 + em2's 3).

      When the same test case is repeated with removing and adding 10 elements instead of 3 as before then I get wrong results.

      Add initial 10 AItems (id's 0-9) for A.
      commit()

      em1 will remove 10 AItems from the collection of A.
      em1 will add 10 AItems (id's 10-19) to collection of A.

      em2 will add 10 AItems (id's 20-29) to collection of A.

      Commit em2.
      Commit em1.

      Then instead of 20 elements ( Initial 10 - em1's 10 + em1's 10 + em2's 10), I see only 10 elements.

      The 10 elements that I see are from em1's added AItems ( id's 10-19).

      I think the cause of the issue is that, when more number of elements (compared to initial element count of collection) in a collection are modified then collection tracking is disabled and openJPA tries to do the following:
      – Delete every thing from the collection
      – Insert data back to collection.
      While Inserting the data back it does not consider adding the dirty records ( em2's 10 added elements ) because the collection tracking is disabled.

      1. OPENJPA-1163_trunk.patch
        32 kB
        Ravi P Palacherla

        Issue Links

          Activity

          Ravi P Palacherla created issue -
          Ravi P Palacherla made changes -
          Field Original Value New Value
          Attachment OPENJPA-1163_trunk.patch [ 12412880 ]
          Donald Woods made changes -
          Fix Version/s 2.0.0 [ 12314019 ]
          Patch Info [Patch Available]
          Component/s kernel [ 12311302 ]
          Ravi P Palacherla made changes -
          Attachment OPENJPA-1163_trunk_V1.patch [ 12414486 ]
          Ravi P Palacherla made changes -
          Attachment OPENJPA-1163_trunk.patch [ 12415303 ]
          Ravi P Palacherla made changes -
          Attachment OPENJPA-1163_trunk.patch [ 12415375 ]
          Ravi P Palacherla made changes -
          Attachment OPENJPA-1163_trunk.patch [ 12415303 ]
          Ravi P Palacherla made changes -
          Attachment OPENJPA-1163_trunk.patch [ 12412880 ]
          Ravi P Palacherla made changes -
          Attachment OPENJPA-1163_trunk_V1.patch [ 12414486 ]
          Michael Dick made changes -
          Original Estimate 0h [ 0 ]
          Remaining Estimate 0h [ 0 ]
          Fix Version/s 2.0.0 [ 12314019 ]
          Affects Version/s 2.0.0 [ 12314019 ]
          Michael Dick made changes -
          Status Open [ 1 ] Resolved [ 5 ]
          Resolution Fixed [ 1 ]
          Donald Woods made changes -
          Link This issue relates to OPENJPA-1223 [ OPENJPA-1223 ]
          David Ezzio made changes -
          Fix Version/s 1.1.1 [ 12313177 ]
          Donald Woods made changes -
          Fix Version/s 2.0.0-M3 [ 12314148 ]
          Donald Woods made changes -
          Status Resolved [ 5 ] Closed [ 6 ]

            People

            • Assignee:
              Ravi P Palacherla
              Reporter:
              Ravi P Palacherla
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development