You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ps...@apache.org on 2019/09/26 01:05:00 UTC

[commons-pool] branch master updated: Add check to make sure keyed pool being removed is empty. Fixes POOL-326.

This is an automated email from the ASF dual-hosted git repository.

psteitz pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-pool.git


The following commit(s) were added to refs/heads/master by this push:
     new 7d03306  Add check to make sure keyed pool being removed is empty. Fixes POOL-326.
7d03306 is described below

commit 7d033060b08cedc9b54bdc1f8951a872870cdadb
Author: psteitz <ps...@apache.org>
AuthorDate: Wed Sep 25 18:04:46 2019 -0700

    Add check to make sure keyed pool being removed is empty. Fixes POOL-326.
---
 src/changes/changes.xml                                                | 3 +++
 .../java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java     | 3 ++-
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index e492893..528f265 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -53,6 +53,9 @@ The <action> type attribute can be add,update,fix,remove.
     <action dev="psteitz" issue="POOL-376" type="fix" due-to="Sazzadul Hoque, Phil Steitz">
       Fixed regression from original fix for POOL-356 which could result in NPE when destroying objects.
     </action>
+    <action dev="psteitz" issue="POOL-326" type="fix" due-to="Phil Steitz">
+      Eliminated NPE / ISE exceptions due to keyed pools being prematurely removed.
+    </action>
   </release>
   <release version="2.7.0" date="2019-07-25" description="This is a feature release (Java 8).">
     <action dev="ggregory" issue="POOL-364" type="update" due-to="Gary Gregory">
diff --git a/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java b/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
index 927a91a..6d8ec69 100644
--- a/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
+++ b/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
@@ -1170,7 +1170,8 @@ public class GenericKeyedObjectPool<K, T> extends BaseGenericObjectPool<T>
                 lock.unlock();
                 lock = keyLock.writeLock();
                 lock.lock();
-                if (objectDeque.getCreateCount().get() == 0 && objectDeque.getNumInterested().get() == 0) {
+                if (objectDeque.getCreateCount().get() == 0 && objectDeque.getNumInterested().get() == 0
+                        && objectDeque.allObjects.isEmpty()) {
                     // NOTE: Keys must always be removed from both poolMap and
                     //       poolKeyList at the same time while protected by
                     //       keyLock.writeLock()