[ 
https://issues.apache.org/jira/browse/OPENJPA-2330?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Rick Curtis updated OPENJPA-2330:
---------------------------------

    Attachment: openjpa-2330.jar

Please try to test fix that I've attached here. This fix is based off trunk, 
and it should work on 2.2.x, but let me know if it doesn't work. You can either 
lay this class on top of your existing openjpa jar, or you can preprend it to 
your classpath. Let me know how it goes.

Your other option is to pull the patch out of the jar, and build your own fix 
based off your version of OpenJPA.
                
> Stackoverflow due to endless recursive calls
> --------------------------------------------
>
>                 Key: OPENJPA-2330
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-2330
>             Project: OpenJPA
>          Issue Type: Bug
>    Affects Versions: 2.2.0, 2.2.1
>            Reporter: Guillaume Chauvet
>            Assignee: Rick Curtis
>            Priority: Critical
>         Attachments: openjpa-2330.jar, OPENJPA-2330.zip
>
>
> We wish to report another bug that generates a memory overflow resulting in 
> an infinite recursive loop. Here are two stacktraces apparently from the same 
> bug:
> First stacktrace sample :
> ================================================
> Exception in thread "AWT-EventQueue-0" java.lang.StackOverflowError
>       at java.util.LinkedHashMap$KeyIterator.<init>(LinkedHashMap.java:383)
>       at java.util.LinkedHashMap$KeyIterator.<init>(LinkedHashMap.java:383)
>       at java.util.LinkedHashMap.newKeyIterator(LinkedHashMap.java:396)
>       at java.util.HashMap$KeySet.iterator(HashMap.java:874)
>       at java.util.HashSet.iterator(HashSet.java:153)
>       at 
> org.apache.openjpa.util.java$util$LinkedHashSet$proxy.iterator(Unknown Source)
>       at java.util.AbstractCollection.toArray(AbstractCollection.java:120)
>       at 
> org.apache.openjpa.persistence.OpenJPAPersistenceUtil.isLoadedCollection(OpenJPAPersistenceUtil.java:240)
>       at 
> org.apache.openjpa.persistence.OpenJPAPersistenceUtil.isLoadedField(OpenJPAPersistenceUtil.java:212)
>       at 
> org.apache.openjpa.persistence.OpenJPAPersistenceUtil.isLoaded(OpenJPAPersistenceUtil.java:161)
>       at 
> org.apache.openjpa.persistence.OpenJPAPersistenceUtil.isLoadedArray(OpenJPAPersistenceUtil.java:265)
>       at 
> org.apache.openjpa.persistence.OpenJPAPersistenceUtil.isLoadedCollection(OpenJPAPersistenceUtil.java:242)
>       at 
> org.apache.openjpa.persistence.OpenJPAPersistenceUtil.isLoadedField(OpenJPAPersistenceUtil.java:212)
>       at 
> org.apache.openjpa.persistence.OpenJPAPersistenceUtil.isLoaded(OpenJPAPersistenceUtil.java:161)
>       at 
> org.apache.openjpa.persistence.OpenJPAPersistenceUtil.isLoadedField(OpenJPAPersistenceUtil.java:223)
>       at 
> org.apache.openjpa.persistence.OpenJPAPersistenceUtil.isLoaded(OpenJPAPersistenceUtil.java:161)
>       at 
> org.apache.openjpa.persistence.OpenJPAPersistenceUtil.isLoadedField(OpenJPAPersistenceUtil.java:223)
>       at 
> org.apache.openjpa.persistence.OpenJPAPersistenceUtil.isLoaded(OpenJPAPersistenceUtil.java:161)
>       at 
> org.apache.openjpa.persistence.OpenJPAPersistenceUtil.isLoadedArray(OpenJPAPersistenceUtil.java:265)
>       at 
> org.apache.openjpa.persistence.OpenJPAPersistenceUtil.isLoadedCollection(OpenJPAPersistenceUtil.java:242)
>       at 
> org.apache.openjpa.persistence.OpenJPAPersistenceUtil.isLoadedField(OpenJPAPersistenceUtil.java:212)
>       at 
> org.apache.openjpa.persistence.OpenJPAPersistenceUtil.isLoaded(OpenJPAPersistenceUtil.java:161)
>       at 
> org.apache.openjpa.persistence.OpenJPAPersistenceUtil.isLoadedField(OpenJPAPersistenceUtil.java:223)
>       at 
> org.apache.openjpa.persistence.OpenJPAPersistenceUtil.isLoaded(OpenJPAPersistenceUtil.java:161)
> [...]
> Second stacktrace sample :
> ================================================
> Exception in thread "AWT-EventQueue-0" java.lang.StackOverflowError
>       at java.util.HashMap$EntrySet.size(HashMap.java:963)
>       at 
> org.apache.openjpa.util.ProxyMaps$ProxyEntrySetImpl.size(ProxyMaps.java:255)
>       at java.util.AbstractCollection.toArray(AbstractCollection.java:119)
>       at 
> org.apache.openjpa.persistence.OpenJPAPersistenceUtil.isLoadedMap(OpenJPAPersistenceUtil.java:288)
>       at 
> org.apache.openjpa.persistence.OpenJPAPersistenceUtil.isLoadedField(OpenJPAPersistenceUtil.java:215)
>       at 
> org.apache.openjpa.persistence.OpenJPAPersistenceUtil.isLoaded(OpenJPAPersistenceUtil.java:161)
>       at 
> org.apache.openjpa.persistence.OpenJPAPersistenceUtil.isLoadedArray(OpenJPAPersistenceUtil.java:265)
>       at 
> org.apache.openjpa.persistence.OpenJPAPersistenceUtil.isLoadedCollection(OpenJPAPersistenceUtil.java:242)
>       at 
> org.apache.openjpa.persistence.OpenJPAPersistenceUtil.isLoadedField(OpenJPAPersistenceUtil.java:212)
>       at 
> org.apache.openjpa.persistence.OpenJPAPersistenceUtil.isLoaded(OpenJPAPersistenceUtil.java:161)
>       at 
> org.apache.openjpa.persistence.OpenJPAPersistenceUtil.isLoadedArray(OpenJPAPersistenceUtil.java:265)
>       at 
> org.apache.openjpa.persistence.OpenJPAPersistenceUtil.isLoadedCollection(OpenJPAPersistenceUtil.java:242)
>       at 
> org.apache.openjpa.persistence.OpenJPAPersistenceUtil.isLoadedField(OpenJPAPersistenceUtil.java:212)
>       at 
> org.apache.openjpa.persistence.OpenJPAPersistenceUtil.isLoaded(OpenJPAPersistenceUtil.java:161)
>       at 
> org.apache.openjpa.persistence.OpenJPAPersistenceUtil.isLoadedField(OpenJPAPersistenceUtil.java:223)
>       at 
> org.apache.openjpa.persistence.OpenJPAPersistenceUtil.isLoaded(OpenJPAPersistenceUtil.java:161)
>       at 
> org.apache.openjpa.persistence.OpenJPAPersistenceUtil.isLoadedField(OpenJPAPersistenceUtil.java:223)
>       at 
> org.apache.openjpa.persistence.OpenJPAPersistenceUtil.isLoaded(OpenJPAPersistenceUtil.java:161)
> [...]

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to