Return-Path: Delivered-To: apmail-openjpa-dev-archive@www.apache.org Received: (qmail 50067 invoked from network); 5 Aug 2009 01:52:32 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 5 Aug 2009 01:52:32 -0000 Received: (qmail 31224 invoked by uid 500); 5 Aug 2009 01:52:39 -0000 Delivered-To: apmail-openjpa-dev-archive@openjpa.apache.org Received: (qmail 31147 invoked by uid 500); 5 Aug 2009 01:52:39 -0000 Mailing-List: contact dev-help@openjpa.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@openjpa.apache.org Delivered-To: mailing list dev@openjpa.apache.org Received: (qmail 31137 invoked by uid 99); 5 Aug 2009 01:52:39 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 05 Aug 2009 01:52:39 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.140] (HELO brutus.apache.org) (140.211.11.140) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 05 Aug 2009 01:52:36 +0000 Received: from brutus (localhost [127.0.0.1]) by brutus.apache.org (Postfix) with ESMTP id C9EC6234C044 for ; Tue, 4 Aug 2009 18:52:14 -0700 (PDT) Message-ID: <767186586.1249437134812.JavaMail.jira@brutus> Date: Tue, 4 Aug 2009 18:52:14 -0700 (PDT) From: "Pinaki Poddar (JIRA)" To: dev@openjpa.apache.org Subject: [jira] Commented: (OPENJPA-1163) Data consistency issues while modifying collections. In-Reply-To: <1590610513.1247067194839.JavaMail.jira@brutus> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 X-Virus-Checked: Checked by ClamAV on apache.org [ https://issues.apache.org/jira/browse/OPENJPA-1163?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12739308#action_12739308 ] Pinaki Poddar commented on OPENJPA-1163: ---------------------------------------- Hi Ravi/Mike, As you have analyzed the issue, do you think 1. is this earlier value of autoOff considered a defect? Or a behavior that we must retain with a Compatibility option? If it is ony a defect that was not exposed till this issue then there may not be a strong case for a compatibility option. If it not a defect and we need to retain both the old value and the new value, then instead of adding a separate compatibility option, consider autooff as one more configurable option of ProxyManager. ProxyManager already have few boolean configurable properties so this new choice will fit neatly (also the patch footprint will reduce). If this issue is not a defect then the default value should remain as before. But documentation should explain when the configuration should be switched. If this issue is a defect then the default value should flip. But documentation should explain how the configuration could be switched to backward compatible behavior > Data consistency issues while modifying collections. > ---------------------------------------------------- > > Key: OPENJPA-1163 > URL: https://issues.apache.org/jira/browse/OPENJPA-1163 > Project: OpenJPA > Issue Type: Bug > Components: kernel > Environment: openJPA trunk. Derby DB. > Reporter: Ravi P Palacherla > Assignee: Ravi P Palacherla > Attachments: OPENJPA-1163_trunk.patch > > Original Estimate: 0h > Remaining Estimate: 0h > > 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. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.