[ https://issues.apache.org/jira/browse/OPENJPA-1899?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12973235#action_12973235 ]
Rick Curtis commented on OPENJPA-1899: -------------------------------------- Robert - I ran with your provided example this morning with 2.1.x and here is the result that I'm seeing: C:\dev\jpa\tmp\evictproblem\bin>c:\java6-sun\bin\java.exe -cp ..\conf;..\classes;..\lib\jdbcdrivers\mysql-connector-java-3.1.13-bin.jar;..\lib\openjpa2.0.1\openjpa-all-2.1.0-SNAPSHOT.jar com.foo.bar.app.EvictTest In order to run this test, you must configure the remote commit provider setting for SJVM. 58 evictproblem INFO [main] openjpa.Runtime - Starting OpenJPA 2.1.0-SNAPSHOT 139 evictproblem INFO [main] openjpa.jdbc.JDBC - Using dictionary class "org.apache.openjpa.jdbc.sql.MySQLDictionary". 770 evictproblem INFO [main] openjpa.Runtime - The Entity "com.foo.bar.models.Contact" was enhanced at level "2", but the current level of enhancement is "961,774". 774 evictproblem INFO [main] openjpa.Runtime - A down level Entity was detected and logged. Please enable RUNTIME trace to see all down level Entities. The address from first find is: This is the original street address The address from second find is: This is the original street address The address before rollback is: This is a new street address The address after rollback is: This is the original street address The address from third find is: This is the original street address Thanks, Rick > Evict from L2 of a object causes secondary objects to never be loaded in graph > ------------------------------------------------------------------------------ > > Key: OPENJPA-1899 > URL: https://issues.apache.org/jira/browse/OPENJPA-1899 > Project: OpenJPA > Issue Type: Bug > Components: kernel > Affects Versions: 2.0.0, 2.0.1 > Environment: N/A > Reporter: Robert Krier > Priority: Blocker > Attachments: evictproblem.zip, evictproblem.zip, > OPENJPA-1899.test.patch > > > I have a simple example. A customer has a reference to an address and a > (primary) contact (an extension of person). Find the customer, get the > contact and evict it from L2. Now find the customer again using a new entity > manager. Begin a Tx and change the address of the contact and then call > Customer.getPrimaryContact() (this is important) Rollback the Tx. Now find > the customer again using another new EntityManager and call > Customer.getPrimaryContact().getAddress(). The address associated with the > contact is Null and not the original address as expected. The same scenario > works fine under OpenJPA 1.2.2. > The reason this is a big problem for us is we use L2 caching in our > application and the application is clustered. The same problem occurs if > different nodes in the cluster operate on the same objects. In a cluster > "evict" is not directly called, but the RemoteCommitProvider will evict the > L2 and create the same problem. > I have attached example code to reproduce the problem using a single JVM and > calling Evict. I also have another example where you can deploy the code on > two nodes in a cluster and see the problem occurs that way as well. Each > example contains Unix shell scripts and Windows cmd files as well. Each are > paired for JPA 1.0 and JPA 2.0. Again, the problem only occurs under JPA 2.0. > This is a block for us. We cannot ship our product with this type of problem > as it means objects and their graph can be corrupted. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.