[ https://issues.apache.org/jira/browse/POOL-411?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17741156#comment-17741156 ]
Phil Steitz commented on POOL-411: ---------------------------------- If I make the following changes to testConcurrentBorrowAnd clear, the test fails about one in three times against the code in master now (as of 108735e2e262bad80f1f18abe9feae93b5db0624) # Reduce threadCount and taskCount to 2 # Increase borrow and clear cycles to 5000 # Eliminate Thread.yields > NPE when deregistering key at end of borrow > ------------------------------------------- > > Key: POOL-411 > URL: https://issues.apache.org/jira/browse/POOL-411 > Project: Commons Pool > Issue Type: Task > Affects Versions: 2.11.1 > Reporter: Richard Eckart de Castilho > Priority: Major > Fix For: 2.12.0 > > > There is a potential for an NPE happening in the finally block of > borrowObject: > {noformat} > Caused by: java.lang.NullPointerException: Cannot invoke > "org.apache.commons.pool2.impl.GenericKeyedObjectPool$ObjectDeque.getNumInterested()" > because "objectDeque" is null > at > org.apache.commons.pool2.impl.GenericKeyedObjectPool.deregister(GenericKeyedObjectPool.java:821) > at > org.apache.commons.pool2.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:507) > at > org.apache.commons.pool2.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:350) > > {noformat} > From reading the code, it seems this could happen e.g. if a pool is > concurrently cleared while a borrow is in progress. > Not sure what a proper solution here would be. Maybe deregister should > silently do nothing if poolMap.get(k) returns null? -- This message was sent by Atlassian Jira (v8.20.10#820010)