[jira] Updated: (GERONIMO-3363) ArrayList thread safe problem in OpenJPA
[ https://issues.apache.org/jira/browse/GERONIMO-3363?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Donald Woods updated GERONIMO-3363: --- Affects Version/s: (was: 2.0-M7) 2.0 ArrayList thread safe problem in OpenJPA Key: GERONIMO-3363 URL: https://issues.apache.org/jira/browse/GERONIMO-3363 Project: Geronimo Issue Type: Bug Security Level: public(Regular issues) Components: persistence Affects Versions: 2.0 Reporter: YunFeng Ma Assignee: Donald Woods Fix For: 2.0.x When running stress testing using DayTrader with JPA mode, got a lot of ArrayList thread safe problem. The thread safe problem happened in org.apache.openjpa.kernel.AbstractBrokerFactory.syncWithManagedTransaction, but this method has the following comments: // we don't need to synchronize on brokers or guard against multiple // threads using the same trans since one JTA transaction can never // be active on multiple concurrent threads. Collection brokers = (Collection) _transactional.get(trans); if (brokers == null) { brokers = new ArrayList(2); _transactional.put(trans, brokers); trans.registerSynchronization(new RemoveTransactionSync(trans)); } brokers.add(broker); Does this mean that it's Geronimo which causes the thread safe problem? The exception stack: java.rmi.RemoteException: The bean encountered a non-application exception.; nested exception is: javax.ejb.EJBException: TradeBean.getClosedOrders - error at org.apache.openejb.core.transaction.TransactionPolicy.throwExceptionToServer(TransactionPolicy.java:211) at org.apache.openejb.core.transaction.TxRequired.handleSystemException(TxRequired.java:106) at org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:210) at org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:165) at org.apache.openejb.core.ivm.EjbObjectProxyHandler.businessMethod(EjbObjectProxyHandler.java:211) at org.apache.openejb.core.ivm.EjbObjectProxyHandler._invoke(EjbObjectProxyHandler.java:65) at org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:232) at org.apache.openejb.util.proxy.Jdk13InvocationHandler.invoke(Jdk13InvocationHandler.java:49) at $Proxy109.getClosedOrders(Unknown Source) at org.apache.geronimo.samples.daytrader.TradeAction.getClosedOrders(TradeAction.java:276) at org.apache.geronimo.samples.daytrader.web.OrdersAlertFilter.doFilter(OrdersAlertFilter.java:76) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.geronimo.tomcat.valve.DefaultSubjectValve.invoke(DefaultSubjectValve.java:56) at org.apache.geronimo.tomcat.GeronimoStandardContext$SystemMethodValve.invoke(GeronimoStandardContext.java:351) at org.apache.geronimo.tomcat.valve.GeronimoBeforeAfterValve.invoke(GeronimoBeforeAfterValve.java:47) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Thread.java:801) Caused by: javax.ejb.EJBException: TradeBean.getClosedOrders - error at org.apache.geronimo.samples.daytrader.TradeJPA.getClosedOrders(TradeJPA.java:491) at sun.reflect.GeneratedMethodAccessor324.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:615) at
[jira] Updated: (GERONIMO-3363) ArrayList thread safe problem in OpenJPA
[ https://issues.apache.org/jira/browse/GERONIMO-3363?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Donald Woods updated GERONIMO-3363: --- Priority: Major (was: Blocker) Patch Info: [Patch Available] ArrayList thread safe problem in OpenJPA Key: GERONIMO-3363 URL: https://issues.apache.org/jira/browse/GERONIMO-3363 Project: Geronimo Issue Type: Bug Security Level: public(Regular issues) Components: persistence Affects Versions: 2.0-M7 Reporter: YunFeng Ma Fix For: 2.0.x When running stress testing using DayTrader with JPA mode, got a lot of ArrayList thread safe problem. The thread safe problem happened in org.apache.openjpa.kernel.AbstractBrokerFactory.syncWithManagedTransaction, but this method has the following comments: // we don't need to synchronize on brokers or guard against multiple // threads using the same trans since one JTA transaction can never // be active on multiple concurrent threads. Collection brokers = (Collection) _transactional.get(trans); if (brokers == null) { brokers = new ArrayList(2); _transactional.put(trans, brokers); trans.registerSynchronization(new RemoveTransactionSync(trans)); } brokers.add(broker); Does this mean that it's Geronimo which causes the thread safe problem? The exception stack: java.rmi.RemoteException: The bean encountered a non-application exception.; nested exception is: javax.ejb.EJBException: TradeBean.getClosedOrders - error at org.apache.openejb.core.transaction.TransactionPolicy.throwExceptionToServer(TransactionPolicy.java:211) at org.apache.openejb.core.transaction.TxRequired.handleSystemException(TxRequired.java:106) at org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:210) at org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:165) at org.apache.openejb.core.ivm.EjbObjectProxyHandler.businessMethod(EjbObjectProxyHandler.java:211) at org.apache.openejb.core.ivm.EjbObjectProxyHandler._invoke(EjbObjectProxyHandler.java:65) at org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:232) at org.apache.openejb.util.proxy.Jdk13InvocationHandler.invoke(Jdk13InvocationHandler.java:49) at $Proxy109.getClosedOrders(Unknown Source) at org.apache.geronimo.samples.daytrader.TradeAction.getClosedOrders(TradeAction.java:276) at org.apache.geronimo.samples.daytrader.web.OrdersAlertFilter.doFilter(OrdersAlertFilter.java:76) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.geronimo.tomcat.valve.DefaultSubjectValve.invoke(DefaultSubjectValve.java:56) at org.apache.geronimo.tomcat.GeronimoStandardContext$SystemMethodValve.invoke(GeronimoStandardContext.java:351) at org.apache.geronimo.tomcat.valve.GeronimoBeforeAfterValve.invoke(GeronimoBeforeAfterValve.java:47) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Thread.java:801) Caused by: javax.ejb.EJBException: TradeBean.getClosedOrders - error at org.apache.geronimo.samples.daytrader.TradeJPA.getClosedOrders(TradeJPA.java:491) at sun.reflect.GeneratedMethodAccessor324.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:615) at org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext .java:146)
[jira] Updated: (GERONIMO-3363) ArrayList thread safe problem in OpenJPA
[ https://issues.apache.org/jira/browse/GERONIMO-3363?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Donald Woods updated GERONIMO-3363: --- Priority: Blocker (was: Major) Fix Version/s: (was: 2.0-M7) 2.0 ArrayList thread safe problem in OpenJPA Key: GERONIMO-3363 URL: https://issues.apache.org/jira/browse/GERONIMO-3363 Project: Geronimo Issue Type: Bug Security Level: public(Regular issues) Components: persistence Affects Versions: 2.0-M7 Reporter: YunFeng Ma Priority: Blocker Fix For: 2.0 When running stress testing using DayTrader with JPA mode, got a lot of ArrayList thread safe problem. The thread safe problem happened in org.apache.openjpa.kernel.AbstractBrokerFactory.syncWithManagedTransaction, but this method has the following comments: // we don't need to synchronize on brokers or guard against multiple // threads using the same trans since one JTA transaction can never // be active on multiple concurrent threads. Collection brokers = (Collection) _transactional.get(trans); if (brokers == null) { brokers = new ArrayList(2); _transactional.put(trans, brokers); trans.registerSynchronization(new RemoveTransactionSync(trans)); } brokers.add(broker); Does this mean that it's Geronimo which causes the thread safe problem? The exception stack: java.rmi.RemoteException: The bean encountered a non-application exception.; nested exception is: javax.ejb.EJBException: TradeBean.getClosedOrders - error at org.apache.openejb.core.transaction.TransactionPolicy.throwExceptionToServer(TransactionPolicy.java:211) at org.apache.openejb.core.transaction.TxRequired.handleSystemException(TxRequired.java:106) at org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:210) at org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:165) at org.apache.openejb.core.ivm.EjbObjectProxyHandler.businessMethod(EjbObjectProxyHandler.java:211) at org.apache.openejb.core.ivm.EjbObjectProxyHandler._invoke(EjbObjectProxyHandler.java:65) at org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:232) at org.apache.openejb.util.proxy.Jdk13InvocationHandler.invoke(Jdk13InvocationHandler.java:49) at $Proxy109.getClosedOrders(Unknown Source) at org.apache.geronimo.samples.daytrader.TradeAction.getClosedOrders(TradeAction.java:276) at org.apache.geronimo.samples.daytrader.web.OrdersAlertFilter.doFilter(OrdersAlertFilter.java:76) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.geronimo.tomcat.valve.DefaultSubjectValve.invoke(DefaultSubjectValve.java:56) at org.apache.geronimo.tomcat.GeronimoStandardContext$SystemMethodValve.invoke(GeronimoStandardContext.java:351) at org.apache.geronimo.tomcat.valve.GeronimoBeforeAfterValve.invoke(GeronimoBeforeAfterValve.java:47) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Thread.java:801) Caused by: javax.ejb.EJBException: TradeBean.getClosedOrders - error at org.apache.geronimo.samples.daytrader.TradeJPA.getClosedOrders(TradeJPA.java:491) at sun.reflect.GeneratedMethodAccessor324.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:615) at
[jira] Updated: (GERONIMO-3363) ArrayList thread safe problem in OpenJPA
[ https://issues.apache.org/jira/browse/GERONIMO-3363?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Prasad Kashyap updated GERONIMO-3363: - Fix Version/s: (was: 2.0) 2.0.x ArrayList thread safe problem in OpenJPA Key: GERONIMO-3363 URL: https://issues.apache.org/jira/browse/GERONIMO-3363 Project: Geronimo Issue Type: Bug Security Level: public(Regular issues) Components: persistence Affects Versions: 2.0-M7 Reporter: YunFeng Ma Priority: Blocker Fix For: 2.0.x When running stress testing using DayTrader with JPA mode, got a lot of ArrayList thread safe problem. The thread safe problem happened in org.apache.openjpa.kernel.AbstractBrokerFactory.syncWithManagedTransaction, but this method has the following comments: // we don't need to synchronize on brokers or guard against multiple // threads using the same trans since one JTA transaction can never // be active on multiple concurrent threads. Collection brokers = (Collection) _transactional.get(trans); if (brokers == null) { brokers = new ArrayList(2); _transactional.put(trans, brokers); trans.registerSynchronization(new RemoveTransactionSync(trans)); } brokers.add(broker); Does this mean that it's Geronimo which causes the thread safe problem? The exception stack: java.rmi.RemoteException: The bean encountered a non-application exception.; nested exception is: javax.ejb.EJBException: TradeBean.getClosedOrders - error at org.apache.openejb.core.transaction.TransactionPolicy.throwExceptionToServer(TransactionPolicy.java:211) at org.apache.openejb.core.transaction.TxRequired.handleSystemException(TxRequired.java:106) at org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:210) at org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:165) at org.apache.openejb.core.ivm.EjbObjectProxyHandler.businessMethod(EjbObjectProxyHandler.java:211) at org.apache.openejb.core.ivm.EjbObjectProxyHandler._invoke(EjbObjectProxyHandler.java:65) at org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:232) at org.apache.openejb.util.proxy.Jdk13InvocationHandler.invoke(Jdk13InvocationHandler.java:49) at $Proxy109.getClosedOrders(Unknown Source) at org.apache.geronimo.samples.daytrader.TradeAction.getClosedOrders(TradeAction.java:276) at org.apache.geronimo.samples.daytrader.web.OrdersAlertFilter.doFilter(OrdersAlertFilter.java:76) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.geronimo.tomcat.valve.DefaultSubjectValve.invoke(DefaultSubjectValve.java:56) at org.apache.geronimo.tomcat.GeronimoStandardContext$SystemMethodValve.invoke(GeronimoStandardContext.java:351) at org.apache.geronimo.tomcat.valve.GeronimoBeforeAfterValve.invoke(GeronimoBeforeAfterValve.java:47) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Thread.java:801) Caused by: javax.ejb.EJBException: TradeBean.getClosedOrders - error at org.apache.geronimo.samples.daytrader.TradeJPA.getClosedOrders(TradeJPA.java:491) at sun.reflect.GeneratedMethodAccessor324.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:615) at