[ 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.  [EMAIL 
> PROTECTED] 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

        
_______________________________________________
richfaces-issues mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/richfaces-issues

Reply via email to