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

kobe valiant updated OPENJPA-551:
---------------------------------

    Description: 
There's StackOverflowError after EntityManager.persist many times, say about 
1500 times

Here's part of stack trace:

Exception in thread "Timer-0" java.lang.StackOverflowError
        at java.security.AccessController.doPrivileged(Native Method)
        at 
org.apache.openjpa.enhance.Reflection.getDeclaredField(Reflection.java:201)
        at org.apache.openjpa.enhance.Reflection.findField(Reflection.java:180)
        at 
org.apache.openjpa.enhance.com$tailenet$songstat$domain$Record$pcsubclass.pcProvideField(Unknown
 Source)
        at 
org.apache.openjpa.kernel.StateManagerImpl.provideField(StateManagerImpl.java:2978)
        at 
org.apache.openjpa.kernel.SaveFieldManager.isFieldEqual(SaveFieldManager.java:185)
        at 
org.apache.openjpa.kernel.StateManagerImpl.dirtyCheck(StateManagerImpl.java:807)
        at 
org.apache.openjpa.kernel.BrokerImpl$ManagedCache.dirtyCheck(BrokerImpl.java:4621)
        at 
org.apache.openjpa.kernel.BrokerImpl$ManagedCache.access$000(BrokerImpl.java:4361)
        at 
org.apache.openjpa.kernel.BrokerImpl.hasTransactionalObjects(BrokerImpl.java:3740)
        at org.apache.openjpa.kernel.BrokerImpl.setDirty(BrokerImpl.java:3857)
        at 
org.apache.openjpa.kernel.StateManagerImpl.dirty(StateManagerImpl.java:1572)
        at 
org.apache.openjpa.kernel.StateManagerImpl.dirty(StateManagerImpl.java:1485)
        at 
org.apache.openjpa.kernel.StateManagerImpl.dirtyCheck(StateManagerImpl.java:808)
        at 
org.apache.openjpa.kernel.BrokerImpl$ManagedCache.dirtyCheck(BrokerImpl.java:4621)
        at 
org.apache.openjpa.kernel.BrokerImpl$ManagedCache.access$000(BrokerImpl.java:4361)
        at 
org.apache.openjpa.kernel.BrokerImpl.hasTransactionalObjects(BrokerImpl.java:3740)
        at org.apache.openjpa.kernel.BrokerImpl.setDirty(BrokerImpl.java:3857)
        at 
org.apache.openjpa.kernel.StateManagerImpl.dirty(StateManagerImpl.java:1572)
        at 
org.apache.openjpa.kernel.StateManagerImpl.dirty(StateManagerImpl.java:1485)
        at 
org.apache.openjpa.kernel.StateManagerImpl.dirtyCheck(StateManagerImpl.java:808)
        at 
org.apache.openjpa.kernel.BrokerImpl$ManagedCache.dirtyCheck(BrokerImpl.java:4621)
        at 
org.apache.openjpa.kernel.BrokerImpl$ManagedCache.access$000(BrokerImpl.java:4361)
        at 
org.apache.openjpa.kernel.BrokerImpl.hasTransactionalObjects(BrokerImpl.java:3740)
        at org.apache.openjpa.kernel.BrokerImpl.setDirty(BrokerImpl.java:3857)
        at 
org.apache.openjpa.kernel.StateManagerImpl.dirty(StateManagerImpl.java:1572)
        at 
org.apache.openjpa.kernel.StateManagerImpl.dirty(StateManagerImpl.java:1485)
        at 
org.apache.openjpa.kernel.StateManagerImpl.dirtyCheck(StateManagerImpl.java:808)
        at 
org.apache.openjpa.kernel.BrokerImpl$ManagedCache.dirtyCheck(BrokerImpl.java:4621)
        at 
org.apache.openjpa.kernel.BrokerImpl$ManagedCache.access$000(BrokerImpl.java:4361)
        at 
org.apache.openjpa.kernel.BrokerImpl.hasTransactionalObjects(BrokerImpl.java:3740)
        at org.apache.openjpa.kernel.BrokerImpl.setDirty(BrokerImpl.java:3857)
        at 
org.apache.openjpa.kernel.StateManagerImpl.dirty(StateManagerImpl.java:1572)
        at 
org.apache.openjpa.kernel.StateManagerImpl.dirty(StateManagerImpl.java:1485)
        at 
org.apache.openjpa.kernel.StateManagerImpl.dirtyCheck(StateManagerImpl.java:808)
        at 
org.apache.openjpa.kernel.BrokerImpl$ManagedCache.dirtyCheck(BrokerImpl.java:4621)
        at 
org.apache.openjpa.kernel.BrokerImpl$ManagedCache.access$000(BrokerImpl.java:4361)
        at 
org.apache.openjpa.kernel.BrokerImpl.hasTransactionalObjects(BrokerImpl.java:3740)
        at org.apache.openjpa.kernel.BrokerImpl.setDirty(BrokerImpl.java:3857)
        at 
org.apache.openjpa.kernel.StateManagerImpl.dirty(StateManagerImpl.java:1572)
        at 
org.apache.openjpa.kernel.StateManagerImpl.dirty(StateManagerImpl.java:1485)
        at 
org.apache.openjpa.kernel.StateManagerImpl.dirtyCheck(StateManagerImpl.java:808)
        at 
org.apache.openjpa.kernel.BrokerImpl$ManagedCache.dirtyCheck(BrokerImpl.java:4621)
        at 
org.apache.openjpa.kernel.BrokerImpl$ManagedCache.access$000(BrokerImpl.java:4361)
        at 
org.apache.openjpa.kernel.BrokerImpl.hasTransactionalObjects(BrokerImpl.java:3740)
        at org.apache.openjpa.kernel.BrokerImpl.setDirty(BrokerImpl.java:3857)
        at 
org.apache.openjpa.kernel.StateManagerImpl.dirty(StateManagerImpl.java:1572)
        at 
org.apache.openjpa.kernel.StateManagerImpl.dirty(StateManagerImpl.java:1485)
        at 
org.apache.openjpa.kernel.StateManagerImpl.dirtyCheck(StateManagerImpl.java:808)
        at 
org.apache.openjpa.kernel.BrokerImpl$ManagedCache.dirtyCheck(BrokerImpl.java:4621)
        at 
org.apache.openjpa.kernel.BrokerImpl$ManagedCache.access$000(BrokerImpl.java:4361)
        at 
org.apache.openjpa.kernel.BrokerImpl.hasTransactionalObjects(BrokerImpl.java:3740)

  was:
I don't have any idea why and when it happens.
Here's part of stack trace:

Exception in thread "Timer-0" java.lang.StackOverflowError
        at java.security.AccessController.doPrivileged(Native Method)
        at 
org.apache.openjpa.enhance.Reflection.getDeclaredField(Reflection.java:201)
        at org.apache.openjpa.enhance.Reflection.findField(Reflection.java:180)
        at 
org.apache.openjpa.enhance.com$tailenet$songstat$domain$Record$pcsubclass.pcProvideField(Unknown
 Source)
        at 
org.apache.openjpa.kernel.StateManagerImpl.provideField(StateManagerImpl.java:2978)
        at 
org.apache.openjpa.kernel.SaveFieldManager.isFieldEqual(SaveFieldManager.java:185)
        at 
org.apache.openjpa.kernel.StateManagerImpl.dirtyCheck(StateManagerImpl.java:807)
        at 
org.apache.openjpa.kernel.BrokerImpl$ManagedCache.dirtyCheck(BrokerImpl.java:4621)
        at 
org.apache.openjpa.kernel.BrokerImpl$ManagedCache.access$000(BrokerImpl.java:4361)
        at 
org.apache.openjpa.kernel.BrokerImpl.hasTransactionalObjects(BrokerImpl.java:3740)
        at org.apache.openjpa.kernel.BrokerImpl.setDirty(BrokerImpl.java:3857)
        at 
org.apache.openjpa.kernel.StateManagerImpl.dirty(StateManagerImpl.java:1572)
        at 
org.apache.openjpa.kernel.StateManagerImpl.dirty(StateManagerImpl.java:1485)
        at 
org.apache.openjpa.kernel.StateManagerImpl.dirtyCheck(StateManagerImpl.java:808)
        at 
org.apache.openjpa.kernel.BrokerImpl$ManagedCache.dirtyCheck(BrokerImpl.java:4621)
        at 
org.apache.openjpa.kernel.BrokerImpl$ManagedCache.access$000(BrokerImpl.java:4361)
        at 
org.apache.openjpa.kernel.BrokerImpl.hasTransactionalObjects(BrokerImpl.java:3740)
        at org.apache.openjpa.kernel.BrokerImpl.setDirty(BrokerImpl.java:3857)
        at 
org.apache.openjpa.kernel.StateManagerImpl.dirty(StateManagerImpl.java:1572)
        at 
org.apache.openjpa.kernel.StateManagerImpl.dirty(StateManagerImpl.java:1485)
        at 
org.apache.openjpa.kernel.StateManagerImpl.dirtyCheck(StateManagerImpl.java:808)
        at 
org.apache.openjpa.kernel.BrokerImpl$ManagedCache.dirtyCheck(BrokerImpl.java:4621)
        at 
org.apache.openjpa.kernel.BrokerImpl$ManagedCache.access$000(BrokerImpl.java:4361)
        at 
org.apache.openjpa.kernel.BrokerImpl.hasTransactionalObjects(BrokerImpl.java:3740)
        at org.apache.openjpa.kernel.BrokerImpl.setDirty(BrokerImpl.java:3857)
        at 
org.apache.openjpa.kernel.StateManagerImpl.dirty(StateManagerImpl.java:1572)
        at 
org.apache.openjpa.kernel.StateManagerImpl.dirty(StateManagerImpl.java:1485)
        at 
org.apache.openjpa.kernel.StateManagerImpl.dirtyCheck(StateManagerImpl.java:808)
        at 
org.apache.openjpa.kernel.BrokerImpl$ManagedCache.dirtyCheck(BrokerImpl.java:4621)
        at 
org.apache.openjpa.kernel.BrokerImpl$ManagedCache.access$000(BrokerImpl.java:4361)
        at 
org.apache.openjpa.kernel.BrokerImpl.hasTransactionalObjects(BrokerImpl.java:3740)
        at org.apache.openjpa.kernel.BrokerImpl.setDirty(BrokerImpl.java:3857)
        at 
org.apache.openjpa.kernel.StateManagerImpl.dirty(StateManagerImpl.java:1572)
        at 
org.apache.openjpa.kernel.StateManagerImpl.dirty(StateManagerImpl.java:1485)
        at 
org.apache.openjpa.kernel.StateManagerImpl.dirtyCheck(StateManagerImpl.java:808)
        at 
org.apache.openjpa.kernel.BrokerImpl$ManagedCache.dirtyCheck(BrokerImpl.java:4621)
        at 
org.apache.openjpa.kernel.BrokerImpl$ManagedCache.access$000(BrokerImpl.java:4361)
        at 
org.apache.openjpa.kernel.BrokerImpl.hasTransactionalObjects(BrokerImpl.java:3740)
        at org.apache.openjpa.kernel.BrokerImpl.setDirty(BrokerImpl.java:3857)
        at 
org.apache.openjpa.kernel.StateManagerImpl.dirty(StateManagerImpl.java:1572)
        at 
org.apache.openjpa.kernel.StateManagerImpl.dirty(StateManagerImpl.java:1485)
        at 
org.apache.openjpa.kernel.StateManagerImpl.dirtyCheck(StateManagerImpl.java:808)
        at 
org.apache.openjpa.kernel.BrokerImpl$ManagedCache.dirtyCheck(BrokerImpl.java:4621)
        at 
org.apache.openjpa.kernel.BrokerImpl$ManagedCache.access$000(BrokerImpl.java:4361)
        at 
org.apache.openjpa.kernel.BrokerImpl.hasTransactionalObjects(BrokerImpl.java:3740)
        at org.apache.openjpa.kernel.BrokerImpl.setDirty(BrokerImpl.java:3857)
        at 
org.apache.openjpa.kernel.StateManagerImpl.dirty(StateManagerImpl.java:1572)
        at 
org.apache.openjpa.kernel.StateManagerImpl.dirty(StateManagerImpl.java:1485)
        at 
org.apache.openjpa.kernel.StateManagerImpl.dirtyCheck(StateManagerImpl.java:808)
        at 
org.apache.openjpa.kernel.BrokerImpl$ManagedCache.dirtyCheck(BrokerImpl.java:4621)
        at 
org.apache.openjpa.kernel.BrokerImpl$ManagedCache.access$000(BrokerImpl.java:4361)
        at 
org.apache.openjpa.kernel.BrokerImpl.hasTransactionalObjects(BrokerImpl.java:3740)

        Summary: Exception in thread "Timer-0" java.lang.StackOverflowError 
after persist many times  (was: Exception in thread "Timer-0" 
java.lang.StackOverflowError)

> Exception in thread "Timer-0" java.lang.StackOverflowError after persist many 
> times
> -----------------------------------------------------------------------------------
>
>                 Key: OPENJPA-551
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-551
>             Project: OpenJPA
>          Issue Type: Bug
>    Affects Versions: 1.0.2
>         Environment: windows xp
>            Reporter: kobe valiant
>            Priority: Blocker
>
> There's StackOverflowError after EntityManager.persist many times, say about 
> 1500 times
> Here's part of stack trace:
> Exception in thread "Timer-0" java.lang.StackOverflowError
>       at java.security.AccessController.doPrivileged(Native Method)
>       at 
> org.apache.openjpa.enhance.Reflection.getDeclaredField(Reflection.java:201)
>       at org.apache.openjpa.enhance.Reflection.findField(Reflection.java:180)
>       at 
> org.apache.openjpa.enhance.com$tailenet$songstat$domain$Record$pcsubclass.pcProvideField(Unknown
>  Source)
>       at 
> org.apache.openjpa.kernel.StateManagerImpl.provideField(StateManagerImpl.java:2978)
>       at 
> org.apache.openjpa.kernel.SaveFieldManager.isFieldEqual(SaveFieldManager.java:185)
>       at 
> org.apache.openjpa.kernel.StateManagerImpl.dirtyCheck(StateManagerImpl.java:807)
>       at 
> org.apache.openjpa.kernel.BrokerImpl$ManagedCache.dirtyCheck(BrokerImpl.java:4621)
>       at 
> org.apache.openjpa.kernel.BrokerImpl$ManagedCache.access$000(BrokerImpl.java:4361)
>       at 
> org.apache.openjpa.kernel.BrokerImpl.hasTransactionalObjects(BrokerImpl.java:3740)
>       at org.apache.openjpa.kernel.BrokerImpl.setDirty(BrokerImpl.java:3857)
>       at 
> org.apache.openjpa.kernel.StateManagerImpl.dirty(StateManagerImpl.java:1572)
>       at 
> org.apache.openjpa.kernel.StateManagerImpl.dirty(StateManagerImpl.java:1485)
>       at 
> org.apache.openjpa.kernel.StateManagerImpl.dirtyCheck(StateManagerImpl.java:808)
>       at 
> org.apache.openjpa.kernel.BrokerImpl$ManagedCache.dirtyCheck(BrokerImpl.java:4621)
>       at 
> org.apache.openjpa.kernel.BrokerImpl$ManagedCache.access$000(BrokerImpl.java:4361)
>       at 
> org.apache.openjpa.kernel.BrokerImpl.hasTransactionalObjects(BrokerImpl.java:3740)
>       at org.apache.openjpa.kernel.BrokerImpl.setDirty(BrokerImpl.java:3857)
>       at 
> org.apache.openjpa.kernel.StateManagerImpl.dirty(StateManagerImpl.java:1572)
>       at 
> org.apache.openjpa.kernel.StateManagerImpl.dirty(StateManagerImpl.java:1485)
>       at 
> org.apache.openjpa.kernel.StateManagerImpl.dirtyCheck(StateManagerImpl.java:808)
>       at 
> org.apache.openjpa.kernel.BrokerImpl$ManagedCache.dirtyCheck(BrokerImpl.java:4621)
>       at 
> org.apache.openjpa.kernel.BrokerImpl$ManagedCache.access$000(BrokerImpl.java:4361)
>       at 
> org.apache.openjpa.kernel.BrokerImpl.hasTransactionalObjects(BrokerImpl.java:3740)
>       at org.apache.openjpa.kernel.BrokerImpl.setDirty(BrokerImpl.java:3857)
>       at 
> org.apache.openjpa.kernel.StateManagerImpl.dirty(StateManagerImpl.java:1572)
>       at 
> org.apache.openjpa.kernel.StateManagerImpl.dirty(StateManagerImpl.java:1485)
>       at 
> org.apache.openjpa.kernel.StateManagerImpl.dirtyCheck(StateManagerImpl.java:808)
>       at 
> org.apache.openjpa.kernel.BrokerImpl$ManagedCache.dirtyCheck(BrokerImpl.java:4621)
>       at 
> org.apache.openjpa.kernel.BrokerImpl$ManagedCache.access$000(BrokerImpl.java:4361)
>       at 
> org.apache.openjpa.kernel.BrokerImpl.hasTransactionalObjects(BrokerImpl.java:3740)
>       at org.apache.openjpa.kernel.BrokerImpl.setDirty(BrokerImpl.java:3857)
>       at 
> org.apache.openjpa.kernel.StateManagerImpl.dirty(StateManagerImpl.java:1572)
>       at 
> org.apache.openjpa.kernel.StateManagerImpl.dirty(StateManagerImpl.java:1485)
>       at 
> org.apache.openjpa.kernel.StateManagerImpl.dirtyCheck(StateManagerImpl.java:808)
>       at 
> org.apache.openjpa.kernel.BrokerImpl$ManagedCache.dirtyCheck(BrokerImpl.java:4621)
>       at 
> org.apache.openjpa.kernel.BrokerImpl$ManagedCache.access$000(BrokerImpl.java:4361)
>       at 
> org.apache.openjpa.kernel.BrokerImpl.hasTransactionalObjects(BrokerImpl.java:3740)
>       at org.apache.openjpa.kernel.BrokerImpl.setDirty(BrokerImpl.java:3857)
>       at 
> org.apache.openjpa.kernel.StateManagerImpl.dirty(StateManagerImpl.java:1572)
>       at 
> org.apache.openjpa.kernel.StateManagerImpl.dirty(StateManagerImpl.java:1485)
>       at 
> org.apache.openjpa.kernel.StateManagerImpl.dirtyCheck(StateManagerImpl.java:808)
>       at 
> org.apache.openjpa.kernel.BrokerImpl$ManagedCache.dirtyCheck(BrokerImpl.java:4621)
>       at 
> org.apache.openjpa.kernel.BrokerImpl$ManagedCache.access$000(BrokerImpl.java:4361)
>       at 
> org.apache.openjpa.kernel.BrokerImpl.hasTransactionalObjects(BrokerImpl.java:3740)
>       at org.apache.openjpa.kernel.BrokerImpl.setDirty(BrokerImpl.java:3857)
>       at 
> org.apache.openjpa.kernel.StateManagerImpl.dirty(StateManagerImpl.java:1572)
>       at 
> org.apache.openjpa.kernel.StateManagerImpl.dirty(StateManagerImpl.java:1485)
>       at 
> org.apache.openjpa.kernel.StateManagerImpl.dirtyCheck(StateManagerImpl.java:808)
>       at 
> org.apache.openjpa.kernel.BrokerImpl$ManagedCache.dirtyCheck(BrokerImpl.java:4621)
>       at 
> org.apache.openjpa.kernel.BrokerImpl$ManagedCache.access$000(BrokerImpl.java:4361)
>       at 
> org.apache.openjpa.kernel.BrokerImpl.hasTransactionalObjects(BrokerImpl.java:3740)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to