[ https://issues.apache.org/jira/browse/POOL-326?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16916200#comment-16916200 ]
Gary Gregory commented on POOL-326: ----------------------------------- [~psteitz] May you please copy the performance code you are using in {{org.apache.commons.pool2.performance}}? It seems like a good idea to keep this code in the main repo. > Threading issue, NullPointerException and IllegalStateException in > GenericKeyedObjectPool > ----------------------------------------------------------------------------------------- > > Key: POOL-326 > URL: https://issues.apache.org/jira/browse/POOL-326 > Project: Commons Pool > Issue Type: Bug > Affects Versions: 2.4.2 > Reporter: Chris Allison > Priority: Major > Fix For: 2.6.1 > > Attachments: ObjectPoolIssue.java, pool-326.patch > > > I'll included a test to help reproduce this issue. Take a look at the > embedded comments as it's extremely difficult to reproduce. I've seen the > provided test show the failure on more than one PC so I believe it will show > the problem. > Example stack trace for error on return: > java.util.concurrent.ExecutionException: java.lang.NullPointerException > at java.util.concurrent.FutureTask.report(FutureTask.java:122) > at java.util.concurrent.FutureTask.get(FutureTask.java:192) > at threading_pool.ObjectPoolIssue.run(ObjectPoolIssue.java:63) > at threading_pool.ObjectPoolIssue.main(ObjectPoolIssue.java:23) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:498) > at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147) > Caused by: java.lang.NullPointerException > at > org.apache.commons.pool2.impl.GenericKeyedObjectPool.returnObject(GenericKeyedObjectPool.java:474) > at threading_pool.ObjectPoolIssue$Task.call(ObjectPoolIssue.java:112) > at java.util.concurrent.FutureTask.run(FutureTask.java:266) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) > at java.lang.Thread.run(Thread.java:745) > Example stack trace for error on borrow: > java.util.concurrent.ExecutionException: java.lang.NullPointerException > at java.util.concurrent.FutureTask.report(FutureTask.java:122) > at java.util.concurrent.FutureTask.get(FutureTask.java:192) > at threading_pool.ObjectPoolIssue.run(ObjectPoolIssue.java:63) > at threading_pool.ObjectPoolIssue.main(ObjectPoolIssue.java:23) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:498) > at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147) > Caused by: java.lang.NullPointerException > at > org.apache.commons.pool2.impl.GenericKeyedObjectPool.deregister(GenericKeyedObjectPool.java:1146) > at > org.apache.commons.pool2.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:438) > at > org.apache.commons.pool2.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:279) > at threading_pool.ObjectPoolIssue$Task.call(ObjectPoolIssue.java:108) > at java.util.concurrent.FutureTask.run(FutureTask.java:266) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) > at java.lang.Thread.run(Thread.java:745) -- This message was sent by Atlassian Jira (v8.3.2#803003)