[hibernate-issues] [Hibernate-JIRA] Commented: (HHH-2218) java.util.ConcurrentModificationException at org.hibernate.pretty.Printer.toString(Printer.java:90)

Aleksei Kachanov (JIRA) noreply at atlassian.com
Thu Jul 12 13:56:52 EDT 2007


    [ http://opensource.atlassian.com/projects/hibernate/browse/HHH-2218?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_27470 ] 

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.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the hibernate-issues mailing list