[
http://opensource.atlassian.com/projects/hibernate/browse/HHH-2218?page=c...
]
Aleksei Kachanov commented on HHH-2218:
---------------------------------------
We have reproduced this bug.
Let's imagine that we have toString overridden in the entity that contains lazy-inited
property or collection. And in toString we access that property or set to display full
object state.
AbstractFlushingEventListener.flushEverythingToExecutions calls Printer passing
persistenceContext.getEntitiesByKey().values().iterator() as a parameter, Printer
sequentially calls toString for each entity, but when it calls this particular toString
lazy initialization occurs and iterator changes. So we have
java.util.ConcurrentModificationException.
So it seems that the problem can be solved by making a copy of iterator before collection
iteration in Printer implementation.
We using hibernate-3.2.4.sp1 on tomcat-5.5.15
java.util.ConcurrentModificationException at
org.hibernate.pretty.Printer.toString(Printer.java:90)
---------------------------------------------------------------------------------------------------
Key: HHH-2218
URL:
http://opensource.atlassian.com/projects/hibernate/browse/HHH-2218
Project: Hibernate3
Issue Type: Bug
Components: core
Affects Versions: 3.1.3
Environment: Hibernate 3.1.3, spring 2.1.8 on Jboss 4.0.2 with Oracle 10g
Reporter: rm
Similar issues have been logged since May 2005 and have been marked as 'Fixed' by
Gavin especially for Session.toString() related cases. However, I am also facing similar
issues in Printer.toString()...
The saving grace is that when I set the debug level to INFO, the problem goes away...
Am copy/pasting the relevent stacktrace...I have also debugged this on eclipse and the
exact location is the call to "new Printer(....)" in
AbstractFlushingEventListener.java
java.util.ConcurrentModificationException
10:07:28,421 INFO [STDOUT] at
java.util.HashMap$HashIterator.nextEntry(HashMap.java:787)
10:07:28,421 INFO [STDOUT] at java.util.HashMap$ValueIterator.next(HashMap.java:817)
10:07:28,421 INFO [STDOUT] at org.hibernate.pretty.Printer.toString(Printer.java:90)
10:07:28,421 INFO [STDOUT] at
org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:97)
10:07:28,421 INFO [STDOUT] at
org.hibernate.event.def.DefaultAutoFlushEventListener.onAutoFlush(DefaultAutoFlushEventListener.java:35)
10:07:28,421 INFO [STDOUT] at
org.hibernate.impl.SessionImpl.autoFlushIfRequired(SessionImpl.java:954)
10:07:28,421 INFO [STDOUT] at
org.hibernate.impl.SessionImpl.list(SessionImpl.java:1099)
10:07:28,421 INFO [STDOUT] at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
PS: This is my first attempt at logging issues at JIRA. Kindly point out any deficiencies
or irregularities in this attempt.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://opensource.atlassian.com/projects/hibernate/secure/Administrators....
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira