[
https://issues.apache.org/jira/browse/POOL-230?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13462344#comment-13462344
]
jerrybi commented on POOL-230:
------------------------------
I am sure everytime after I use the connection, I close it (release it to the
pool)
the blocked threads or related Exceptions:
1.
"http-8093-96" daemon prio=10 tid=0x000000004106c800 nid=0x64f4 in
Object.wait() [0x00007f57fc4c2000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000000e7389990> (a
org.apache.commons.pool.impl.GenericObjectPool$Latch)
at
org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:1112)
- locked <0x00000000e7389990> (a
org.apache.commons.pool.impl.GenericObjectPool$Latch)
at
org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:106)
at
org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
at
com.netease.backend.db.cloudadmin.sysdb.dao.impl.DBPoolDbcpImpl.getConn(DBPoolDbcpImpl.java:46)
at
com.netease.backend.db.cloudadmin.sysdb.dao.ConnectionManager.startTransaction(ConnectionManager.java:29)
at
com.netease.backend.db.cloudadmin.sysdb.dao.impl.DBAccessImpl.getProductDdbList(DBAccessImpl.java:872)
at
com.netease.backend.db.cloudadmin.logicaltier.handler.impl.SysStatusHandlerImpl.getProductDdbList(SysStatusHandlerImpl.java:194)
at
com.netease.backend.db.cloudadmin.logicaltier.handler.impl.CmdHandlerImpl.getProductDdbList(CmdHandlerImpl.java:168)
at
com.netease.backend.db.cloudadmin.logicaltier.handler.impl.CmdHandler.proc(CmdHandler.java:183)
at
com.netease.backend.db.cloudadmin.front.control.RequestAndResponseHandler.getResponseWrapper(RequestAndResponseHandler.java:99)
at
com.netease.backend.db.cloudadmin.front.control.RequestAndResponseHandler.handleResult(RequestAndResponseHandler.java:52)
at
com.netease.backend.db.cloudadmin.front.control.WebAdminController.doGet(WebAdminController.java:35)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)
2.
"QueueCapacityLimitedThreadPool-1-thread-9" daemon prio=10
tid=0x00000000411f7000 nid=0x6086 waiting on condition [0x00007f580ca79000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000000e63391e8> (a
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(Unknown Source)
at
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(Unknown
Source)
at java.util.concurrent.ArrayBlockingQueue.take(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
3.
"CachedDaemonThreadPool-1-thread-18" daemon prio=10 tid=0x0000000041097000
nid=0x6052 waiting on condition [0x00007f580cb7a000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000000e63064b8> (a
java.util.concurrent.SynchronousQueue$TransferStack)
at java.util.concurrent.locks.LockSupport.park(Unknown Source)
at
java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(Unknown Source)
at java.util.concurrent.SynchronousQueue$TransferStack.transfer(Unknown
Source)
at java.util.concurrent.SynchronousQueue.take(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
4.
org.apache.commons.dbcp.SQLNestedException: Cannot get a connection, pool error
Timeout waiting for idle object
at
org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:114)
at
org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
at
com.netease.backend.db.cloudadmin.sysdb.dao.impl.DBPoolDbcpImpl.getConn(DBPoolDbcpImpl.java:46)
at
com.netease.backend.db.cloudadmin.sysdb.dao.ConnectionManager.getConnection(ConnectionManager.java:90)
at
com.netease.backend.db.cloudadmin.sysdb.dao.impl.DBAccessImpl.getBackupCount(DBAccessImpl.java:1975)
at
com.netease.backend.db.cloudadmin.logicaltier.handler.impl.ResultCountHandlerImpl.getProductBackupCount(ResultCountHandlerImpl.java:103)
at
com.netease.backend.db.cloudadmin.logicaltier.handler.impl.CmdHandlerImpl.getProductBackupCount(CmdHandlerImpl.java:296)
at
com.netease.backend.db.cloudadmin.logicaltier.handler.impl.CmdHandler.proc(CmdHandler.java:241)
at
com.netease.backend.db.cloudadmin.front.control.RequestAndResponseHandler.getResponseWrapper(RequestAndResponseHandler.java:99)
at
com.netease.backend.db.cloudadmin.front.control.RequestAndResponseHandler.handleResult(RequestAndResponseHandler.java:52)
at
com.netease.backend.db.cloudadmin.front.control.WebAdminController.doGet(WebAdminController.java:35)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)
Caused by: java.util.NoSuchElementException: Timeout waiting for idle object
at
org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:1134)
at
org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:106)
... 24 more
QueueCapacityLimitedThreadPool-1-thread-9, CachedDaemonThreadPool-1-thread-18
wait on Database Operation
when Database Operation returns (either success or exception ) they will be
notified.
getConnection() blocks so the threads wait forever
after getConnection() timesout, throws Exception 4
> waiting on <0x00000000e7440168> (a
> org.apache.commons.pool.impl.GenericObjectPool$Latch)
> ----------------------------------------------------------------------------------------
>
> Key: POOL-230
> URL: https://issues.apache.org/jira/browse/POOL-230
> Project: Commons Pool
> Issue Type: Bug
> Affects Versions: 1.5.4
> Environment: tomcat using dbcp
> Reporter: jerrybi
>
> "Thread-20" daemon prio=10 tid=0x00007f5810214000 nid=0x5f7b in Object.wait()
> [0x00007f581527c000]
> java.lang.Thread.State: TIMED_WAITING (on object monitor)
> at java.lang.Object.wait(Native Method)
> - waiting on <0x00000000e7440168> (a
> org.apache.commons.pool.impl.GenericObjectPool$Latch)
> at
> org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:1112)
> - locked <0x00000000e7440168> (a
> org.apache.commons.pool.impl.GenericObjectPool$Latch)
> at
> org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:106)
> at
> org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
> it seems that the problem bellow still exits.
> https://issues.apache.org/jira/browse/POOL-149
> I am using commons-dbcp-1.3 and commons-pool-1.5.4
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira