Joined: Sun May 22, 2005 11:31 pm Posts: 1 Location: Sydney
|
I believe that I have found a problem with the toString() method on the org.hibernate.engine.PersistenceContext class.
This problem did not happen with version 2.1.8, but is happening with 3.0.4
A ConcurrentModification Exception is thrown when the instance variable "entitiesByKey" is iterated over if it contains a proxied object that has not been initialised.
I think the iteration causes the object to become initialised, which in turn changes the state of the Map and hence causes the exception.
The toString() method is being called when our Spring Hibernate Transaction Manager logs a debug message when it is about to close a Session.
Any help in this matter would be greatly appreciated.
java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextEntry(HashMap.java:782)
at java.util.HashMap$EntryIterator.next(HashMap.java:824)
at java.util.AbstractMap.toString(AbstractMap.java:586)
at java.lang.String.valueOf(String.java:2131)
at java.lang.StringBuffer.append(StringBuffer.java:370)
at org.hibernate.engine.PersistenceContext.toString(PersistenceContext.java:1007)
at java.lang.String.valueOf(String.java:2131)
at java.lang.StringBuffer.append(StringBuffer.java:370)
at org.hibernate.impl.SessionImpl.toString(SessionImpl.java:1497)
at java.lang.String.valueOf(String.java:2131)
at java.lang.StringBuffer.append(StringBuffer.java:370)
at org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:484)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:401)
at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:126)
at com.al.ark.dao.DaoTestCase.testTransaction(DaoTestCase.java:58)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:421)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:305)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:186)
|
|