[jira] Updated: (GERONIMO-3363) ArrayList thread safe problem in OpenJPA

2007-08-03 Thread Donald Woods (JIRA)

 [ 
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

2007-08-02 Thread Donald Woods (JIRA)

 [ 
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

2007-07-30 Thread Donald Woods (JIRA)

 [ 
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

2007-07-30 Thread Prasad Kashyap (JIRA)

 [ 
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