[ 
https://issues.apache.org/jira/browse/POOL-326?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16915885#comment-16915885
 ] 

Phil Steitz commented on POOL-326:
----------------------------------

Here is stack trace of the NPE

 
{noformat}
[java] java.lang.NullPointerException
[java] at 
org.apache.commons.pool2.impl.GenericKeyedObjectPool.returnObject(GenericKeyedObjectPool.java:450)
[java] at org.apache.commons.performance.pool.PoolClientThread.execute(Unknown 
Source)
[java] at org.apache.commons.performance.ClientThread.run(Unknown Source)
[java] at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
[java] at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[java] at java.lang.Thread.run(Thread.java:748)
{noformat}
 

This is running against the 2.7.0 release jar.  The GKOP line is in 
returnObject, when dereferencing the ObjectDeque returned by the poolMap 
lookup.  The commons performance code is a forked version of what is in the 
sandbox repo.  PoolClientThreads just generate random (Integer) keys, borrow 
objects under those keys and then return them.  The factory adds make, destroy 
and validate latency.

 

> 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)

Reply via email to