[ 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