[
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.