Details
-
Type:
Bug
-
Status:
Resolved
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: 6.1.15.rc4
-
Fix Version/s: 6.1.15.rc5
-
Component/s: Bayeux
-
Labels:None
-
Number of attachments :
Description
Found one Java-level deadlock:
=============================
"9105104@qtp-13120210-43":
waiting to lock monitor 0x08d88cd4 (object 0x89b0b9e8, a org.mortbay.cometd.continuation.ContinuationClient),
which is held by "24854782@qtp-13120210-52"
"24854782@qtp-13120210-52":
waiting to lock monitor 0x08d88d14 (object 0x89be7f58, a org.mortbay.cometd.ChannelImpl),
which is held by "9105104@qtp-13120210-43"
Java stack information for the threads listed above:
===================================================
"9105104@qtp-13120210-43":
at org.mortbay.cometd.ClientImpl.doDelivery(ClientImpl.java:125)
- waiting to lock <0x89b0b9e8> (a org.mortbay.cometd.continuation.ContinuationClient)
at org.mortbay.cometd.ChannelImpl.doDelivery(ChannelImpl.java:358)
at org.mortbay.cometd.ChannelImpl.doDelivery(ChannelImpl.java:382)
at org.mortbay.cometd.ChannelImpl.doDelivery(ChannelImpl.java:382)
at org.mortbay.cometd.AbstractBayeux.doPublish(AbstractBayeux.java:437)
at org.mortbay.cometd.ChannelImpl.publish(ChannelImpl.java:169)
at com.chess.live.AbstractService.send(AbstractService.java:286)
at com.chess.live.AbstractService.send(AbstractService.java:239)
at com.chess.live.demo.DemoChatService.leave(DemoChatService.java:200)
at com.chess.live.AbstractService.removeUser(AbstractService.java:213)
at com.chess.live.AbstractService$ServiceSubscriptionListener.unsubscribed(AbstractService.java:338)
at org.mortbay.cometd.ChannelImpl.unsubscribe(ChannelImpl.java:278) - locked <0x89be7f58> (a org.mortbay.cometd.ChannelImpl)
at org.mortbay.cometd.ClientImpl.unsubscribeAll(ClientImpl.java:385)
at org.mortbay.cometd.AbstractBayeux.removeClient(AbstractBayeux.java:502)
at org.mortbay.cometd.ClientImpl.remove(ClientImpl.java:262) - locked <0x89de7b70> (a org.mortbay.cometd.continuation.ContinuationClient)
at org.mortbay.cometd.continuation.ContinuationClient.remove(ContinuationClient.java:156) - locked <0x89de7b70> (a org.mortbay.cometd.continuation.ContinuationClient)
at org.mortbay.cometd.AbstractBayeux$DisconnectHandler.handle(AbstractBayeux.java:1070)
at org.mortbay.cometd.AbstractBayeux.handle(AbstractBayeux.java:271)
at org.mortbay.cometd.continuation.ContinuationCometdServlet.service(ContinuationCometdServlet.java:133)
at org.mortbay.cometd.AbstractCometdServlet.service(AbstractCometdServlet.java:238)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:502)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:380)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:417)
at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:324)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:535)
at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:880)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:747)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:520)
"24854782@qtp-13120210-52":
at org.mortbay.cometd.ChannelImpl.unsubscribe(ChannelImpl.java:275) - waiting to lock <0x89be7f58> (a org.mortbay.cometd.ChannelImpl)
at org.mortbay.cometd.ClientImpl.unsubscribeAll(ClientImpl.java:385)
at org.mortbay.cometd.AbstractBayeux.removeClient(AbstractBayeux.java:502)
at org.mortbay.cometd.ClientImpl.remove(ClientImpl.java:262) - locked <0x89b0b9e8> (a org.mortbay.cometd.continuation.ContinuationClient)
at org.mortbay.cometd.continuation.ContinuationClient.remove(ContinuationClient.java:156) - locked <0x89b0b9e8> (a org.mortbay.cometd.continuation.ContinuationClient)
at org.mortbay.cometd.AbstractBayeux$DisconnectHandler.handle(AbstractBayeux.java:1070)
at org.mortbay.cometd.AbstractBayeux.handle(AbstractBayeux.java:271)
at org.mortbay.cometd.continuation.ContinuationCometdServlet.service(ContinuationCometdServlet.java:133)
at org.mortbay.cometd.AbstractCometdServlet.service(AbstractCometdServlet.java:238)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:502)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:380)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:417)
at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:324)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:535)
at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:880)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:747)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:520)
Found 1 deadlock.
Issue Links
- duplicates
-
JETTY-920
Deadlock while disconnecting Client
-
the remove Client is done outside of the client sync block