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