Skip to Main Content

Integration

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

StackOverflowError in commit

505924Sep 17 2007 — edited Dec 5 2007
Using TopLink 10.1.3, I'm getting a StackOverflowError on a JTA commit:

[9/17/07 11:02:54:802 EDT] 00000029 RegisteredSyn E WTRN0074E: Exception caught from before_completion synchronization operation: java.lang.StackOverflowError

at oracle.toplink.internal.helper.IdentityHashtable$Entry.clone(IdentityHashtable.java:456) at oracle.toplink.internal.helper.IdentityHashtable$Entry.clone(IdentityHashtable.java:456)
at oracle.toplink.internal.helper.IdentityHashtable$Entry.clone(IdentityHashtable.java:456)
... thousands of lines like this ...
at oracle.toplink.internal.helper.IdentityHashtable$Entry.clone(IdentityHashtable.java:456)

at oracle.toplink.internal.helper.IdentityHashtable$Entry.clone(IdentityHashtable.java:456)

at oracle.toplink.internal.helper.IdentityHashtable.clone(IdentityHashtable.java:121)

at oracle.toplink.publicinterface.UnitOfWork.commitToDatabaseWithChangeSet(UnitOfWork.java:1356)

at oracle.toplink.publicinterface.UnitOfWork.issueSQLbeforeCompletion(UnitOfWork.java:2840)

at oracle.toplink.publicinterface.UnitOfWork.issueSQLbeforeCompletion(UnitOfWork.java:2820)

at oracle.toplink.transaction.AbstractSynchronizationListener.beforeCompletion(AbstractSynchronizationListener.java:96)

at oracle.toplink.transaction.JTASynchronizationListener.beforeCompletion(JTASynchronizationListener.java:55)

at com.ibm.ws.Transaction.JTA.RegisteredSyncs.distributeBefore(RegisteredSyncs.java:240)

at com.ibm.ws.Transaction.JTA.TransactionImpl.prePrepare(TransactionImpl.java:2373)

at com.ibm.ws.Transaction.JTA.TransactionImpl.stage1CommitProcessing(TransactionImpl.java:1606)

at com.ibm.ws.Transaction.JTA.TransactionImpl.processCommit(TransactionImpl.java:1577)

at com.ibm.ws.Transaction.JTA.TransactionImpl.commit(TransactionImpl.java:1512)

at com.ibm.ws.Transaction.JTA.TranManagerImpl.commit(TranManagerImpl.java:237)

at com.ibm.ws.Transaction.JTA.TranManagerSet.commit(TranManagerSet.java:162)

at com.ibm.ws.Transaction.JTA.UserTransactionImpl.commit(UserTransactionImpl.java:285)

at com.ibm.ejs.container.UserTransactionWrapper.commit(UserTransactionWrapper.java:264)

It appears that IdentityHashtable.Entry.clone() has a recursive implementation and the hashcode of a lot of my objects is identical. I tried overwriting hashCode(), but the that doesn't help - I put a breakpoint in hashCode, the code never goes there, perhapsTopLink uses System.identityHashCode or something else.

Could the TopLink developers write a non-recursive implementation of IdentityHashtable.Entry.clone()?
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Jan 2 2008
Added on Sep 17 2007
5 comments
2,053 views