[richfaces-issues] [JBoss JIRA] Updated: (RF-3631) ConcurrentModificationException during session serialization

Stanimir Stamenkov (JIRA) jira-events at lists.jboss.org
Wed Jun 4 07:35:22 EDT 2008


     [ http://jira.jboss.com/jira/browse/RF-3631?page=all ]

Stanimir Stamenkov updated RF-3631:
-----------------------------------

    Attachment: test-cluster-session.ear

Deploy into the the 'all' server configuration ($JBOSS_HOME/server/all/deploy), then navigate to <http://server/cluster-session/test.seam>.  Open the same page in 10-20 windows - by Ctrl+clicking the "Test" heading link in Firefox, for example.  Watch the JBoss server console for a ConcurentModificationException error - give it enough time to happen (e.g. 5 minutes).  Here's full stack trace of the exception I get with this example:

12:31:28,687 ERROR [JBossCacheService] externalizeSession(): exception occurred externalizing session SessionBasedClusteredSession[id: 2682B8A2A5A776CF13C4D86E33218059 lastAccessedTime: 1212571888609 version: 289 lastOutdated: 0]
java.util.ConcurrentModificationException
        at org.apache.commons.collections.map.AbstractLinkedMap$LinkIterator.nextEntry(AbstractLinkedMap.java:555)
        at org.apache.commons.collections.map.AbstractLinkedMap$LinkMapIterator.next(AbstractLinkedMap.java:367)
        at org.apache.commons.collections.map.AbstractHashedMap.doWriteObject(AbstractHashedMap.java:1179)
        at org.apache.commons.collections.map.LRUMap.doWriteObject(LRUMap.java:380)
        at org.apache.commons.collections.map.LRUMap.writeObject(LRUMap.java:364)
        at sun.reflect.GeneratedMethodAccessor96.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:917)
        at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1339)
        at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1290)
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079)
        at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:302)
        at org.apache.commons.collections.map.AbstractHashedMap.doWriteObject(AbstractHashedMap.java:1180)
        at org.apache.commons.collections.map.LRUMap.doWriteObject(LRUMap.java:380)
        at org.apache.commons.collections.map.LRUMap.writeObject(LRUMap.java:364)
        at sun.reflect.GeneratedMethodAccessor96.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:917)
        at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1339)
        at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1290)
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079)
        at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:302)
        at java.util.concurrent.ConcurrentHashMap.writeObject(ConcurrentHashMap.java:1380)
        at sun.reflect.GeneratedMethodAccessor122.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:917)
        at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1339)
        at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1290)
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079)
        at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:302)
        at org.jboss.web.tomcat.service.session.SessionBasedClusteredSession.writeExternal(SessionBasedClusteredSession.java:175)
        at org.jboss.web.tomcat.service.session.JBossCacheService.externalizeSession(JBossCacheService.java:1027)
        at org.jboss.web.tomcat.service.session.JBossCacheService.putSession(JBossCacheService.java:316)
        at org.jboss.web.tomcat.service.session.JBossCacheClusteredSession.processSessionRepl(JBossCacheClusteredSession.java:121)
        at org.jboss.web.tomcat.service.session.JBossCacheManager.processSessionRepl(JBossCacheManager.java:1097)
        at org.jboss.web.tomcat.service.session.JBossCacheManager.storeSession(JBossCacheManager.java:652)
        at org.jboss.web.tomcat.service.session.InstantSnapshotManager.snapshot(InstantSnapshotManager.java:49)
        at org.jboss.web.tomcat.service.session.ClusteredSessionValve.invoke(ClusteredSessionValve.java:98)
        at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
        at java.lang.Thread.run(Thread.java:595)

> ConcurrentModificationException during session serialization
> ------------------------------------------------------------
>
>                 Key: RF-3631
>                 URL: http://jira.jboss.com/jira/browse/RF-3631
>             Project: RichFaces
>          Issue Type: Bug
>    Affects Versions: 3.2.0, 3.1.5
>         Environment: JBboss 4.2.2.GA
> Seam 2.0.2.SP1
> JDK 1.5.0_15
> Windows XP Pro SP2
>            Reporter: Stanimir Stamenkov
>         Attachments: test-cluster-session.ear
>
>
> Concurrent requests cause java.util.ConcurrentModificationException during session serialization in cluster environment.
> I've initially posted this issue to the RichFaces users forum, but then posted to the Clustering/JBoss, too:
> http://www.jboss.com/index.html?module=bb&op=viewtopic&t=136590
> where I've got feedback I'm on the right track my problem is probably caused by the RichFaces (Ajax4Jsf) library.  Basically the web session gets modified while it is been serialized when concurrent requests are made.  bstansberry at jboss.com have written:
> "The session management layer does not prevent concurrent access to the session. The session's internal data structures can deal with concurrency (e.g. the attribute map is a ConcurrentHashMap) but if the objects you'll store in it are going to be accessed concurrently, they'll need to be thread safe or have access to them synchronized."
> I've prepared minimal test case (I'm about to attach) demonstrating the problem.  I've tried it with both RichFaces 3.1.5.GA (part of Seam 2.0.2.SP1) and RichFaces 3.2.0.SR1 (which I'm using with my application).

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the richfaces-issues mailing list