Closed arinban closed 14 years ago
@arinban Commented
@arinban Commented @arinban Commented
@arinban Commented @arinban Commented @glassfishrobot Commented Reported by binod
@arinban Commented @arinban Commented @glassfishrobot Commented binod said: Instead of using iterator, the cleanup code now uses an array to scan all the open sessions. It then closes all open sessions. So, the code should be okay now for thread safety. I will need some help to tes the WAS-ActiveMQ combination. Planning to send an e-mail to the folks who reported this.
@arinban Commented @arinban Commented @glassfishrobot Commented @sivakumart said: fixed in milestone 1.6
@arinban Commented @arinban Commented @glassfishrobot Commented Was assigned to binod
@arinban Commented @arinban Commented @glassfishrobot Commented This issue was imported from java.net JIRA GENERICJMSRA-16
@arinban Commented @arinban Commented @glassfishrobot Commented Marked as fixed on Sunday, September 5th 2010, 8:21:08 pm
The cleanup code in MC, when executed in WAS, seems to crash into a piece of code that is not really executed in Sun appserver. The code in question is not thread safe. Resulting exception trace is shown below.
equals
ManagedConnection
XAQueueConnection[ClientId=null
java.util.AbstractList$Itr.checkForComodification(AbstractList.java(Inlined
com.sun.genericra.outbound.ConnectionHandle.cleanup(ConnectionHandle.java:234)
com.sun.genericra.outbound.ManagedConnection.cleanup(ManagedConnection.java:182)
com.ibm.ejs.j2c.LocalTransactionWrapper.afterCompletion(LocalTransactionWrapper.java:1130)
com.ibm.ws.LocalTransaction.LocalTranCoordImpl.informSynchronizations(LocalTranCoordImpl.java:1486)
com.ibm.ws.LocalTransaction.LocalTranCoordImpl.complete(LocalTranCoordImpl.java:890)
com.ibm.ws.LocalTransaction.LocalTranCoordImpl.complete(LocalTranCoordImpl.java:720)
com.ibm.ws.LocalTransaction.LocalTranCurrentImpl.complete(LocalTranCurrentImpl.java:388)
com.ibm.ws.LocalTransaction.LocalTranCurrentSet.complete(LocalTranCurrentSet.java:191)
com.ibm.ws.webservices.engine.transport.TransactionSuspender.commitLocalTransaction(TransactionSuspender.java:172)
ejbs.ActiveMQSessionBean.sendRecvJMSMessageMultipleSuspends(ActiveMQSessionBean.java:477)
ejbs.EJSLocalStatelessActiveMQSession_036382fc.sendRecvJMSMessageMultipleSuspends(EJSLocalStatelessActiveMQSession_036382fc.java:297)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java(Compiled
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java(Compiled
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java(Compiled
com.ibm.etools.utc.model.ReflectionMethodModel.invoke(ReflectionMethodModel.java:65)
com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1282)
com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:673)
com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:80)
com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:1804)
com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:84)
com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:469)
com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:408)
com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:101)
com.ibm.ws.tcp.channel.impl.WorkQueueManager.requestComplete(WorkQueueManager.java:566)
com.ibm.ws.tcp.channel.impl.WorkQueueManager.attemptIO(WorkQueueManager.java:619)
com.ibm.ws.tcp.channel.impl.WorkQueueManager.workerRun(WorkQueueManager.java:952)
com.ibm.ws.tcp.channel.impl.WorkQueueManager$Worker.run(WorkQueueManager.java:1039)