Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
2011.01
-
None
Description
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:
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]