[ http://issues.apache.org/jira/browse/GERONIMO-2079?page=all ] David Jencks reopened GERONIMO-2079: ------------------------------------
kevan pointed out that although the fix makes operationMap work, it leaves all the other fields in an indeterminate state. We need something better. My first thought was to initialize everything in the constructor or readObject method. This won't work because in general the target container won't be deployed when a proxy as part of an ejb ref is deserialized. There's no way around this, since the target might be in an app that hasn't started or even been installed/deployed yet. My current thought is to try to put all the info into a data object which is put into a volatile field. Comments and suggestions very welcome. > 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 > > 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
