[
https://issues.apache.org/jira/browse/SMXCOMP-903?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Gert Vanthienen resolved SMXCOMP-903.
-------------------------------------
Resolution: Fixed
Fixed an issue in AsyncBaseLifeCycle's prepareShutdown method (cfr.
http://svn.apache.org/viewvc?view=revision&revision=1170661) and afterwards
reused that logic to ensure all pending exchanges are done before unregistering
the subscription endpoint (cfr.
http://svn.apache.org/viewvc?view=revision&revision=1170662)
> Sending unsubscribe can leave servicemix-wsn2005 threads hanging on sendSync()
> ------------------------------------------------------------------------------
>
> Key: SMXCOMP-903
> URL: https://issues.apache.org/jira/browse/SMXCOMP-903
> Project: ServiceMix Components
> Issue Type: Bug
> Components: servicemix-wsn2005
> Affects Versions: 2011.01
> Reporter: Gert Vanthienen
> Assignee: Gert Vanthienen
> Fix For: 2011.02
>
>
> When unsubscribing from a servicemix-wsn2005 subscription, you may end up
> with threads blocked on the WSNEndpoint.process method's call to sendSync.
> This happens if the subscription endpoint gets unregistered before the actual
> unsubscribe message exchange has been handled properly. In ServiceMix 4, the
> exception will look like this:
> {noformat}
> org.apache.servicemix.nmr.core.ChannelClosedException
> at
> org.apache.servicemix.nmr.core.ChannelImpl.deliver(ChannelImpl.java:192)[81:org.apache.servicemix.nmr.core:1.4.0.fuse-00-00]
> at
> org.apache.servicemix.nmr.core.StraightThroughFlow.dispatch(StraightThroughFlow.java:55)[81:org.apache.servicemix.nmr.core:1.4.0.fuse-00-00]
> at
> org.apache.servicemix.nmr.core.FlowRegistryImpl.internalDispatch(FlowRegistryImpl.java:134)[81:org.apache.servicemix.nmr.core:1.4.0.fuse-00-00]
> at
> org.apache.servicemix.nmr.core.FlowRegistryImpl.dispatch(FlowRegistryImpl.java:117)[81:org.apache.servicemix.nmr.core:1.4.0.fuse-00-00]
> at
> org.apache.servicemix.nmr.core.ChannelImpl.dispatch(ChannelImpl.java:286)[81:org.apache.servicemix.nmr.core:1.4.0.fuse-00-00]
> at
> org.apache.servicemix.nmr.core.ChannelImpl.send(ChannelImpl.java:117)[81:org.apache.servicemix.nmr.core:1.4.0.fuse-00-00]
> at
> org.apache.servicemix.jbi.runtime.impl.DeliveryChannelImpl.send(DeliveryChannelImpl.java:178)[91:org.apache.servicemix.jbi.runtime:1.4.0.fuse-00-00]
> at
> org.apache.servicemix.common.EndpointDeliveryChannel.send(EndpointDeliveryChannel.java:89)[90:servicemix-common:2011.01.0.fuse-00-00]
> at
> org.apache.servicemix.common.endpoints.SimpleEndpoint.send(SimpleEndpoint.java:70)[90:servicemix-common:2011.01.0.fuse-00-00]
> at
> org.apache.servicemix.common.endpoints.SimpleEndpoint.done(SimpleEndpoint.java:85)[90:servicemix-common:2011.01.0.fuse-00-00]
> at
> org.apache.servicemix.http.endpoints.HttpConsumerEndpoint.process(HttpConsumerEndpoint.java:343)[157:servicemix-http:2011.01.0.fuse-00-00]
> at
> org.apache.servicemix.http.HttpBridgeServlet.service(HttpBridgeServlet.java:56)[157:servicemix-http:2011.01.0.fuse-00-00]
> at
> javax.servlet.http.HttpServlet.service(HttpServlet.java:668)[136:org.apache.geronimo.specs.geronimo-servlet_3.0_spec:1.0]
> at
> org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)[100:org.apache.servicemix.bundles.jetty:6.1.26.1-fuse]
> at
> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:401)[100:org.apache.servicemix.bundles.jetty:6.1.26.1-fuse]
> at
> org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766)[100:org.apache.servicemix.bundles.jetty:6.1.26.1-fuse]
> at
> org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)[100:org.apache.servicemix.bundles.jetty:6.1.26.1-fuse]
> at
> org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)[100:org.apache.servicemix.bundles.jetty:6.1.26.1-fuse]
> at
> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)[100:org.apache.servicemix.bundles.jetty:6.1.26.1-fuse]
> at
> org.mortbay.jetty.Server.handle(Server.java:326)[100:org.apache.servicemix.bundles.jetty:6.1.26.1-fuse]
> at
> org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)[100:org.apache.servicemix.bundles.jetty:6.1.26.1-fuse]
> at
> org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:398)[100:org.apache.servicemix.bundles.jetty:6.1.26.1-fuse]
> at
> org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410)[100:org.apache.servicemix.bundles.jetty:6.1.26.1-fuse]
> at
> org.mortbay.jetty.nio.SelectChannelConnector$RetryContinuation.run(SelectChannelConnector.java:525)[100:org.apache.servicemix.bundles.jetty:6.1.26.1-fuse]
> at
> org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)[100:org.apache.servicemix.bundles.jetty:6.1.26.1-fuse]
> {noformat}
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira