geronimo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dain Sundstrom (JIRA)" <...@geronimo.apache.org>
Subject [jira] Updated: (GERONIMO-2079) No methodProxy in EJBInvocation at startup under heavy load
Date Wed, 07 Jun 2006 01:16:30 GMT
     [ http://issues.apache.org/jira/browse/GERONIMO-2079?page=all ]

Dain Sundstrom updated GERONIMO-2079:
-------------------------------------

    Attachment: 2079.patch

New patch which puts all transient data in the proxy factory into a single object.  Access
to this data is controlled by a synchronized block.  A volatile could be used, but a synchronized
block is easier for people to understand and this code should not have a performance impact.
 This is because each interceptor copies the data once from the proxy factory, so the this
will only impact the first invocation on a proxy. 

I also cleaned up the initialization code in the interceptor. 

> No methodProxy in EJBInvocation at startup under heavy load
> -----------------------------------------------------------
>
>          Key: GERONIMO-2079
>          URL: http://issues.apache.org/jira/browse/GERONIMO-2079
>      Project: Geronimo
>         Type: Bug
>     Security: public(Regular issues) 
>   Components: OpenEJB
>     Versions: 1.1
>     Reporter: David Jencks
>     Assignee: David Jencks
>      Fix For: 1.2
>  Attachments: 2079.patch, GERONIMO-2079.failed1.patch
>
> After deploying daytrader, if you apply heavy load (50 threads) you get about 60 exceptions
like this:
> java.lang.NullPointerException
>         at org.openejb.proxy.EJBMethodInterceptor.createEJBInvocation(EJBMethodInterceptor.java:203)
>         at org.openejb.proxy.EJBMethodInterceptor.intercept(EJBMethodInterceptor.java:131)
>         at org.openejb.proxy.EntityEJBLocalObject$$EnhancerByCGLIB$$84c9ae5f.getDataBean(<generated>)
>         at org.apache.geronimo.samples.daytrader.web.prims.PingServlet2EntityLocal.doGet(PingServlet2EntityLocal.java:126)
>         at org.apache.geronimo.samples.daytrader.web.prims.PingServlet2EntityLocal.doPost(PingServlet2EntityLocal.java:54)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:615)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
>         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
>         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
>         at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
>         at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
>         at org.apache.geronimo.tomcat.valve.DefaultSubjectValve.invoke(DefaultSubjectValve.java:46)
>         at org.apache.geronimo.tomcat.GeronimoStandardContext$SystemMethodValve.invoke(GeronimoStandardContext.java:342)
>         at org.apache.geronimo.tomcat.valve.GeronimoBeforeAfterValve.invoke(GeronimoBeforeAfterValve.java:31)
>         at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
>         at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
>         at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
>         at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
>         at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
>         at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:667)
>         at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
>         at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
>         at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
>         at java.lang.Thread.run(Thread.java:534)                                    
                                                                         
> Looking into the code, it appears that cglib is calling EJBMethodInterceptor with a null
methodProxy.  After these startup exceptions, which appear to occur within the first 2 seconds
of load, there are no further exceptions: i ran it for 17 minutes at 1200 pages/sec.

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


Mime
View raw message