Uploaded image for project: 'Commons Pool'
  1. Commons Pool
  2. POOL-326

Threading issue, NullPointerException and IllegalStateException in GenericKeyedObjectPool

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 2.4.2
    • Fix Version/s: 2.6.1
    • Labels:
      None

      Description

      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)

        Attachments

        1. pool-326.patch
          2 kB
          Phil Steitz
        2. ObjectPoolIssue.java
          5 kB
          Chris Allison

          Issue Links

            Activity

              People

              • Assignee:
                Unassigned
                Reporter:
                csallison Chris Allison
              • Votes:
                0 Vote for this issue
                Watchers:
                4 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: