[ https://issues.apache.org/jira/browse/POOL-356?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Mark Struberg resolved POOL-356. -------------------------------- Resolution: Fixed > deadlock if borrowObject gets called to fast and maxIdle is 0 > ------------------------------------------------------------- > > Key: POOL-356 > URL: https://issues.apache.org/jira/browse/POOL-356 > Project: Commons Pool > Issue Type: Bug > Affects Versions: 2.6.0 > Reporter: Mark Struberg > Assignee: Mark Struberg > Priority: Major > Fix For: 2.6.1 > > > I figured this while creating a unit test for OpenJPA. But also did see this > in real production with commons-dbcp2. See DBCP-513 for more info. > See this comment for a precise explanation what happens > https://issues.apache.org/jira/browse/DBCP-513?focusedCommentId=16660545&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-16660545 > The problem is basically that the logic to immediately destroy a pool object > does not notify the DeLinkedQueue: > {code} > if (isClosed() || maxIdleSave > -1 && maxIdleSave <= > idleObjects.size()) { > try { > destroy(p); > {code} > But the borrowObject code is locking on that condition... > {code} > if (borrowMaxWaitMillis < 0) { > p = idleObjects.takeFirst(); > } > {code} -- This message was sent by Atlassian JIRA (v7.6.3#76005)