ari-ban / test2

0 stars 0 forks source link

WAS-ActiveMQ integration: ConnectionAdapter is not really thread safe. #16

Closed arinban closed 14 years ago

arinban commented 18 years ago

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.

[2/9/06 14:23:17:844 PST] 00000066 genericjmsra 3 [AbstractMCF]

equals

  • final: true [2/9/06 14:23:17:804 PST] 00000051 MCWrapper E J2CA0081E: Method cleanup failed while trying to execute method cleanup on

ManagedConnection

Physical Session -> nullPhysical Connection

XAQueueConnection[ClientId=null

Connected=tcp://localhost:7222, URL=tcp://localhost:7222]Super -> com.sun.genericra.outbound.ManagedConnection@2e7c1a49 from resource jms/helloQCF. Caught exception: java.util.ConcurrentModificationException at

java.util.AbstractList$Itr.checkForComodification(AbstractList.java(Inlined

Compiled Code)) at java.util.AbstractList$Itr.remove(AbstractList.java(Compiled Code)) at

com.sun.genericra.outbound.ConnectionHandle.cleanup(ConnectionHandle.java:234)

at

com.sun.genericra.outbound.ManagedConnection.cleanup(ManagedConnection.java:182)

at com.ibm.ejs.j2c.MCWrapper.cleanup(MCWrapper.java:1343) at com.ibm.ejs.j2c.poolmanager.FreePool.returnToFreePool(FreePool.java:447) at com.ibm.ejs.j2c.poolmanager.PoolManager.release(PoolManager.java:1511) at com.ibm.ejs.j2c.MCWrapper.releaseToPoolManager(MCWrapper.java:1945) at

com.ibm.ejs.j2c.LocalTransactionWrapper.afterCompletion(LocalTransactionWrapper.java:1130)

at

com.ibm.ws.LocalTransaction.LocalTranCoordImpl.informSynchronizations(LocalTranCoordImpl.java:1486)

at

com.ibm.ws.LocalTransaction.LocalTranCoordImpl.complete(LocalTranCoordImpl.java:890)

at

com.ibm.ws.LocalTransaction.LocalTranCoordImpl.complete(LocalTranCoordImpl.java:720)

at

com.ibm.ws.LocalTransaction.LocalTranCurrentImpl.complete(LocalTranCurrentImpl.java:388)

at

com.ibm.ws.LocalTransaction.LocalTranCurrentSet.complete(LocalTranCurrentSet.java:191)

at

com.ibm.ws.webservices.engine.transport.TransactionSuspender.commitLocalTransaction(TransactionSuspender.java:172)

at

ejbs.ActiveMQSessionBean.sendRecvJMSMessageMultipleSuspends(ActiveMQSessionBean.java:477)

at

ejbs.EJSLocalStatelessActiveMQSession_036382fc.sendRecvJMSMessageMultipleSuspends(EJSLocalStatelessActiveMQSession_036382fc.java:297)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at

sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java(Compiled

Code)) at

sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java(Compiled

Code)) at

sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java(Compiled

Code)) at java.lang.reflect.Method.invoke(Method.java(Compiled Code)) at

com.ibm.etools.utc.model.ReflectionMethodModel.invoke(ReflectionMethodModel.java:65)

at com.ibm.etools.utc.servlet.InvokeServlet.invoke(InvokeServlet.java:111) at com.ibm.etools.utc.servlet.InvokeServlet.doPost(InvokeServlet.java:367) at javax.servlet.http.HttpServlet.service(HttpServlet.java:763) at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) at

com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1282)

at

com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:673)

at

com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:80)

at

com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:1804)

at

com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:84)

at

com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:469)

at

com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:408)

at

com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:101)

at

com.ibm.ws.tcp.channel.impl.WorkQueueManager.requestComplete(WorkQueueManager.java:566)

at

com.ibm.ws.tcp.channel.impl.WorkQueueManager.attemptIO(WorkQueueManager.java:619)

at

com.ibm.ws.tcp.channel.impl.WorkQueueManager.workerRun(WorkQueueManager.java:952)

at

com.ibm.ws.tcp.channel.impl.WorkQueueManager$Worker.run(WorkQueueManager.java:1039)

at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1455)

Environment

Operating System: All Platform: All

Affected Versions

[0.9]

arinban commented 6 years ago
arinban commented 6 years ago

@arinban Commented

arinban commented 6 years ago

@arinban Commented @arinban Commented

arinban commented 18 years ago

@arinban Commented @arinban Commented @glassfishrobot Commented Reported by binod

arinban commented 18 years ago

@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 18 years ago

@arinban Commented @arinban Commented @glassfishrobot Commented @sivakumart said: fixed in milestone 1.6

arinban commented 18 years ago

@arinban Commented @arinban Commented @glassfishrobot Commented Was assigned to binod

arinban commented 7 years ago

@arinban Commented @arinban Commented @glassfishrobot Commented This issue was imported from java.net JIRA GENERICJMSRA-16

arinban commented 14 years ago

@arinban Commented @arinban Commented @glassfishrobot Commented Marked as fixed on Sunday, September 5th 2010, 8:21:08 pm