Contention in ApplicationContext
--------------------------------
Key: JBWEB-75
URL:
http://jira.jboss.com/jira/browse/JBWEB-75
Project: JBoss Web
Issue Type: Bug
Security Level: Public (Everyone can see)
Environment: JBoss 4.0.5, Linux, Java 5
Reporter: Phillip Thurmond
Assigned To: Mladen Turk
I'm seeing some contention inside Tomcat on ApplicationContext.getAttribute() when I
run performance tests using a Seam application. With a load of 200 threads, I often see
over 150 "waiting to lock" messages on the attributes object. It looks like
this contention has already been fixed in Tomcat 6 using the Java 5 concurrent objects.
I also posted to the Tomcat development list about this issue, but Remy did not want to
fix it because he didn't want to introduce any new dependencies into the project. I
think this is important to fix if we expect users to deploy Seam on 4.0.5.
Example thread dump:
"http-10.68.0.196-8080-301" daemon prio=1 tid=0x0000002b51e425b0 nid=0x78a5
waiting for monitor entry [0x000000005b86c000..0x000000005b86cdb0]
at
org.apache.catalina.core.ApplicationContext.getAttribute(ApplicationContext.java:175)
- waiting to lock <0x0000002aabd633b0> (a java.util.HashMap)
at
org.apache.catalina.core.ApplicationContextFacade.getAttribute(ApplicationContextFacade.java:315)
at
org.apache.myfaces.context.servlet.ApplicationMap.getAttribute(ApplicationMap.java:41)
at
org.apache.myfaces.context.servlet.AbstractAttributeMap.get(AbstractAttributeMap.java:87)
at
org.jboss.seam.contexts.FacesApplicationContext.get(FacesApplicationContext.java:47)
at org.jboss.seam.Component.forName(Component.java:1588)
at org.jboss.seam.Component.getInstance(Component.java:1636)
at org.jboss.seam.Component.getInstance(Component.java:1631)
at org.jboss.seam.Component.getInstance(Component.java:1608)
at org.jboss.seam.Component.getInstance(Component.java:1603)
at org.jboss.seam.core.Events.instance(Events.java:158)
at
org.jboss.seam.jsf.AbstractSeamPhaseListener.afterPhase(AbstractSeamPhaseListener.java:139)
at org.jboss.seam.jsf.SeamPhaseListener.afterPhase(SeamPhaseListener.java:69)
--
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