Re: [jetty-users] [Jetty 8] Deadlock in JDBCSessionManager

2014-01-14 Thread Stefan Magnus Landrø
Thanks! Great!


2014/1/13 Jan Bartel j...@intalio.com

 Stefan,

 As part of some changes for the mongo session manager, the sync block
 was removed from JDBCSessionManager.invalidateSession(String) in
 jetty-9:


 https://git.eclipse.org/c/jetty/org.eclipse.jetty.project.git/diff/jetty-server/src/main/java/org/eclipse/jetty/server/session/JDBCSessionManager.java?id=092c53b335c6ca8aa49a20698faf008d0469dbf4


 cheers
 Jan

 On 14 January 2014 00:03, Stefan Magnus Landrø stefan.lan...@gmail.com
 wrote:
  Hi there,
 
  We're currently experiencing a deadlock in the JDBCSessionManager in
 latest
  jetty 8.
 
  There lots of synchronization code, which in addition to cause this
  deadlock, also performs really slow, since there are lots of synchronized
  blocks around jdbc calls.
 
  Has this been fixed in jetty 9?
 
  Anyone else seen this?
 
  Stefan
 
  --
 
  Found one Java-level deadlock:
  =
  qtp235217511-3361:
waiting to lock monitor 0x0992e268 (object 0xc4f29a38,
 a
  org.eclipse.jetty.server.session.JDBCSessionManager),
which is held by qtp235217511-136
  qtp235217511-136:
waiting to lock monitor 0x09e027e8 (object 0xc4e3aaa8,
 a
  java.util.HashSet),
which is held by qtp235217511-128
  qtp235217511-128:
waiting to lock monitor 0x0992e268 (object 0xc4f29a38,
 a
  org.eclipse.jetty.server.session.JDBCSessionManager),
which is held by qtp235217511-136
 
  Java stack information for the threads listed above:
  ===
  qtp235217511-3361:
  at
 
 org.eclipse.jetty.server.session.JDBCSessionManager.getSession(JDBCSessionManager.java:459)
  - waiting to lock 0xc4f29a38 (a
  no.posten.dpost.jetty.config.DpostJDBCSessionManager)
  at
 
 org.eclipse.jetty.server.session.JDBCSessionManager.getSession(JDBCSessionManager.java:75)
  at
 
 org.eclipse.jetty.server.session.AbstractSessionManager.getHttpSession(AbstractSessionManager.java:312)
  at
 
 org.eclipse.jetty.server.session.SessionHandler.checkRequestedSessionId(SessionHandler.java:279)
  at
 
 org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:159)
  at
 
 org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
  at
 
 org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
  at
 
 org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154)
  at
 
 org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
  at org.eclipse.jetty.server.Server.handle(Server.java:370)
  at
 
 org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:494)
  at
 
 org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:971)
  at
 
 org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1033)
  at
 org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:644)
  at
  org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
  at
 
 org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
  at
 
 org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:667)
  at
 
 org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
  at
 
 org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
  at
 
 org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
  at java.lang.Thread.run(Thread.java:744)
 
  qtp235217511-136:
  at
 
 org.eclipse.jetty.server.session.JDBCSessionIdManager.removeSession(JDBCSessionIdManager.java:409)
  - waiting to lock 0xc4e3aaa8 (a java.util.HashSet)
  at
 
 org.eclipse.jetty.server.session.JDBCSessionManager.loadSession(JDBCSessionManager.java:870)
  at
 
 org.eclipse.jetty.server.session.JDBCSessionManager.getSession(JDBCSessionManager.java:482)
  - locked 0xc4f29a38 (a
  no.posten.dpost.jetty.config.DpostJDBCSessionManager)
  at
 
 org.eclipse.jetty.server.session.JDBCSessionManager.getSession(JDBCSessionManager.java:75)
  at
 
 org.eclipse.jetty.server.session.AbstractSessionManager.getHttpSession(AbstractSessionManager.java:312)
  at
 
 org.eclipse.jetty.server.session.SessionHandler.checkRequestedSessionId(SessionHandler.java:279)
  at
 
 org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:159)
  at
 
 org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
  at
 
 org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
  at
 
 

[jetty-users] [jetty-9.1.0] Scheduler thread hang cause connections leak

2014-01-14 Thread Zen Zhong
Hi,

I found there's connections leak in jetty. Environment: CentOS 6 x86_64,
JDK 7u25 x86_64, jetty-9.1.0.

When alive connections were growing, I got several stack trace:
jstack at 16:04
Scheduler-225690927 prio=10 tid=0x7fcd682cc800 nid=0x5002 runnable
[0x7fcdb1a0c000]
   java.lang.Thread.State: RUNNABLE
at sun.nio.ch.FileDispatcherImpl.read0(Native Method)
at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:39)
at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:225)
at sun.nio.ch.IOUtil.read(IOUtil.java:198)
at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:375)
- locked 0x000609e0cb98 (a java.lang.Object)
at
org.eclipse.jetty.io.ChannelEndPoint.fill(ChannelEndPoint.java:136)
at
org.eclipse.jetty.server.HttpInputOverHTTP.nextContent(HttpInputOverHTTP.java:104)
at
org.eclipse.jetty.server.HttpInputOverHTTP.nextContent(HttpInputOverHTTP.java:30)
at
org.eclipse.jetty.server.HttpInput.getNextContent(HttpInput.java:110)
at org.eclipse.jetty.server.HttpInput.consumeAll(HttpInput.java:245)
- locked 0x000608f9bd20 (a
org.eclipse.jetty.server.HttpInputOverHTTP)
at
org.eclipse.jetty.server.HttpConnection.completed(HttpConnection.java:327)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:401)
at org.eclipse.jetty.server.HttpChannel.run(HttpChannel.java:238)
at
org.eclipse.jetty.server.handler.ContextHandler.handle(ContextHandler.java:1159)
at
org.eclipse.jetty.server.HttpChannelState.complete(HttpChannelState.java:440)
at
org.eclipse.jetty.server.AsyncContextState.complete(AsyncContextState.java:92)
at
my.web.async.BasicAsyncListener.onTimeout(BasicAsyncListener.java:34)
at
org.eclipse.jetty.server.HttpChannelState.expired(HttpChannelState.java:396)
at
org.eclipse.jetty.server.HttpChannelState$AsyncTimeout.run(HttpChannelState.java:699)
at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at
java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178)
at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:724)
   Locked ownable synchronizers:
- 0x0005b0043ad0 (a
java.util.concurrent.ThreadPoolExecutor$Worker)

jstack at 16:12
Scheduler-225690927 prio=10 tid=0x7fcd682cc800 nid=0x5002 runnable
[0x7fcdb1a0c000]
   java.lang.Thread.State: RUNNABLE
at sun.nio.ch.NativeThread.current(Native Method)
at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:321)
- locked 0x000609e0cbc8 (a java.lang.Object)
- locked 0x000609e0cb98 (a java.lang.Object)
at
org.eclipse.jetty.io.ChannelEndPoint.fill(ChannelEndPoint.java:136)
at
org.eclipse.jetty.server.HttpInputOverHTTP.nextContent(HttpInputOverHTTP.java:104)
at
org.eclipse.jetty.server.HttpInputOverHTTP.nextContent(HttpInputOverHTTP.java:30)
at
org.eclipse.jetty.server.HttpInput.getNextContent(HttpInput.java:110)
at org.eclipse.jetty.server.HttpInput.consumeAll(HttpInput.java:245)
- locked 0x000608f9bd20 (a
org.eclipse.jetty.server.HttpInputOverHTTP)
at
org.eclipse.jetty.server.HttpConnection.completed(HttpConnection.java:327)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:401)
at org.eclipse.jetty.server.HttpChannel.run(HttpChannel.java:238)
at
org.eclipse.jetty.server.handler.ContextHandler.handle(ContextHandler.java:1159)
at
org.eclipse.jetty.server.HttpChannelState.complete(HttpChannelState.java:440)
at
org.eclipse.jetty.server.AsyncContextState.complete(AsyncContextState.java:92)
at
my.web.async.BasicAsyncListener.onTimeout(BasicAsyncListener.java:34)
at
org.eclipse.jetty.server.HttpChannelState.expired(HttpChannelState.java:396)
at
org.eclipse.jetty.server.HttpChannelState$AsyncTimeout.run(HttpChannelState.java:699)
at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at
java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178)
at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292)
at