NPE in StandardSession.endAccess()
----------------------------------
Key: JBAS-4060
URL:
http://jira.jboss.com/jira/browse/JBAS-4060
Project: JBoss Application Server
Issue Type: Bug
Security Level: Public (Everyone can see)
Components: Web (Tomcat) service
Reporter: Brian Stansberry
Assigned To: Remy Maucherat
Fix For: JBossAS-4.2.0.CR1
In the jbossweb embedded in Branch_4_2, there is a race between a webapp undeployment and
the cleanup of the last Request(s) the app handled that can lead to an NPE in
StandardSession. Following server side logging from
org.jboss.test.classloader.leak.test.ClassloaderLeakUnitTestCase shows the issue:
2007-02-04 15:15:11,283 INFO [WEBAPP] WEBAPP is here
2007-02-04 15:15:11,673 DEBUG [org.jboss.deployment.MainDeployer] Undeploying
file:/C:/dev/jboss/jboss-4.2/testsuite/output/lib/classloader-leak-in-war.war,
isShutdown=false
2007-02-04 15:15:11,673 DEBUG [org.jboss.system.ServiceController] stopping service:
jboss.web.deployment:war=classloader-leak-in-war.war,id=1522768662
2007-02-04 15:15:11,673 DEBUG [org.jboss.system.ServiceController] stopping dependent
services for: jboss.web.deployment:war=classloader-leak-in-war.war,id=1522768662 dependent
services are: []
2007-02-04 15:15:11,673 DEBUG [org.jboss.web.WebModule] Stopping
jboss.web.deployment:war=classloader-leak-in-war.war,id=1522768662
2007-02-04 15:15:11,673 INFO [org.jboss.web.tomcat.service.TomcatDeployer] undeploy,
ctxPath=/classloader-leak, warUrl=.../tmp/deploy/tmp12161classloader-leak-in-war-exp.war/
2007-02-04 15:15:11,689 ERROR [org.apache.coyote.http11.Http11Processor] Error processing
request
java.lang.NullPointerException
at org.apache.catalina.session.StandardSession.endAccess(StandardSession.java:638)
at org.apache.catalina.connector.Request.recycle(Request.java:419)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:239)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:624)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445)
at java.lang.Thread.run(Thread.java:595)
The test
1) executes a web request against a JSP (JSP does the first INFO logging above)
2) executes an RMIAdaptor request telling the AS to undeploy the webapp
Apparently, the recycle processing from the web request is still ongoing as the webapp is
being undeployed. Looks like the undeployment's StandardManager.stop() -->
StandardSession.recycle() is nulling out the StandardSession.accessCount field. This
leads to the NPE in Request.recycle() --> StandardSession.endAccess().
The test class executes several different tests like this, deploying different wars/ears.
The wars all use the same context-root. It seems that after this failure happens on one
test, the next test deploys its war OK, but the first web request gets a 503. So it seems
the NPE has some lasting effect on the server. There is no server-side logging explaining
the 503.
--
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