Return-Path: Delivered-To: apmail-geronimo-dev-archive@www.apache.org Received: (qmail 77391 invoked from network); 6 Jun 2006 22:04:37 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 6 Jun 2006 22:04:37 -0000 Received: (qmail 3427 invoked by uid 500); 6 Jun 2006 22:04:35 -0000 Delivered-To: apmail-geronimo-dev-archive@geronimo.apache.org Received: (qmail 3302 invoked by uid 500); 6 Jun 2006 22:04:34 -0000 Mailing-List: contact dev-help@geronimo.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: Reply-To: dev@geronimo.apache.org List-Id: Delivered-To: mailing list dev@geronimo.apache.org Received: (qmail 3291 invoked by uid 99); 6 Jun 2006 22:04:34 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 06 Jun 2006 15:04:34 -0700 X-ASF-Spam-Status: No, hits=0.0 required=10.0 tests= X-Spam-Check-By: apache.org Received: from [209.237.227.198] (HELO brutus.apache.org) (209.237.227.198) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 06 Jun 2006 15:04:31 -0700 Received: from brutus (localhost [127.0.0.1]) by brutus.apache.org (Postfix) with ESMTP id 8D2857142A1 for ; Tue, 6 Jun 2006 22:03:30 +0000 (GMT) Message-ID: <19856858.1149631410575.JavaMail.jira@brutus> Date: Tue, 6 Jun 2006 22:03:30 +0000 (GMT+00:00) From: "David Jencks (JIRA)" To: dev@geronimo.apache.org Subject: [jira] Updated: (GERONIMO-2079) No methodProxy in EJBInvocation at startup under heavy load In-Reply-To: <7216236.1149286470726.JavaMail.jira@brutus> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N [ http://issues.apache.org/jira/browse/GERONIMO-2079?page=all ] David Jencks updated GERONIMO-2079: ----------------------------------- Attachment: GERONIMO-2079.failed1.patch My attempts to fix this so far haven't worked. I've attached a patch of my latest failing effort and rolled the code back to its state before my first failed fix. I believe the problem is that the actual race condition occurs in EJBProxyFactory rather than EJBMethodInterceptor, so a similar solution inside EJBProxyFactory might work. IIUC this change resulted in a ~20% performance decrease from 1500 page views/sec to 1200. If we can eliminate the volatile in even some circumstances it would seem worthwhile to do so. > 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: 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() > 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