On Mon, Aug 26, 2019 at 6:29 PM Phil Steitz <phil.ste...@gmail.com> wrote:
> > > On 8/26/19 3:23 PM, ggreg...@apache.org wrote: > > This is an automated email from the ASF dual-hosted git repository. > > > > ggregory 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 41f4e41 [POOL-374] > org.apache.commons.pool2.impl.GenericKeyedObjectPool.returnObject(K, T) > should throw IllegalStateException instead of NullPointerException when a > key is not found in the pool map. > > 41f4e41 is described below > > > > commit 41f4e410b3e7dc34b294ac9941721073bf5e5271 > > Author: Gary Gregory <gardgreg...@gmail.com> > > AuthorDate: Mon Aug 26 18:23:20 2019 -0400 > > > > [POOL-374] > > > org.apache.commons.pool2.impl.GenericKeyedObjectPool.returnObject(K, T) > > should throw IllegalStateException instead of NullPointerException > when > > a key is not found in the pool map. > > --- > > src/changes/changes.xml | 7 > ++++++- > > .../apache/commons/pool2/impl/GenericKeyedObjectPool.java | 5 +++++ > > .../commons/pool2/impl/TestGenericKeyedObjectPool.java | 12 > ++++++++++-- > > 3 files changed, 21 insertions(+), 3 deletions(-) > > > > diff --git a/src/changes/changes.xml b/src/changes/changes.xml > > index 929d1d9..89b89a5 100644 > > --- a/src/changes/changes.xml > > +++ b/src/changes/changes.xml > > @@ -43,7 +43,12 @@ The <action> type attribute can be > add,update,fix,remove. > > <title>Apache Commons Pool Release Notes</title> > > </properties> > > <body> > > - <release version="2.7.0" date="2019-MM-DD" description="This is a > feature release (Java 8)."> > > + <release version="2.7.1" date="2019-MM-DD" description="This is a > maintenance release (Java 8)."> > > + <action dev="ggregory" issue="POOL-374" type="fix" due-to="Gary > Gregory, Phil Steitz"> > > + > org.apache.commons.pool2.impl.GenericKeyedObjectPool.returnObject(K, T) > should throw IllegalStateException instead of NullPointerException when a > key is not found in the pool map. > > + </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"> > > Update from Java 7 to Java 8. > > </action> > > 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 b3fc96f..7a282f1 100644 > > --- > a/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java > > +++ > b/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java > > @@ -447,6 +447,11 @@ public class GenericKeyedObjectPool<K, T> extends > BaseGenericObjectPool<T> > > > > final ObjectDeque<T> objectDeque = poolMap.get(key); > > > > + if (objectDeque == null) { > > + throw new IllegalStateException( > > + "Returned object not currently part of this pool"); > > Might be better to say it is the key that is not found, e.g. > > "Key not found" or "No keyed pool found under the given key" or > something like that. The problem is with the key, not the returning > object identity. > OK, the ISE message is now "No keyed pool found under the given key". TY, Gary > > Phil > > + } > > + > > final PooledObject<T> p = objectDeque.getAllObjects().get(new > IdentityWrapper<>(obj)); > > > > if (p == null) { > > diff --git > a/src/test/java/org/apache/commons/pool2/impl/TestGenericKeyedObjectPool.java > b/src/test/java/org/apache/commons/pool2/impl/TestGenericKeyedObjectPool.java > > index 7b5b5ac..f148bc0 100644 > > --- > a/src/test/java/org/apache/commons/pool2/impl/TestGenericKeyedObjectPool.java > > +++ > b/src/test/java/org/apache/commons/pool2/impl/TestGenericKeyedObjectPool.java > > @@ -195,6 +195,13 @@ public class TestGenericKeyedObjectPool extends > TestKeyedObjectPool { > > assertEquals(2,gkoPool.getNumIdle("B")); > > } > > > > + @Test(expected = IllegalStateException.class) > > + public void testReturnObjectThrowsIllegalStateException() { > > + try (final GenericKeyedObjectPool<String, String> pool = new > GenericKeyedObjectPool<>(new SimpleFactory<String>())) { > > + pool.returnObject("Foo", "Bar"); > > + } > > + } > > + > > @Test(timeout=60000) > > public void testMaxIdle() throws Exception { > > gkoPool.setMaxTotalPerKey(100); > > @@ -1069,7 +1076,7 @@ public class TestGenericKeyedObjectPool extends > TestKeyedObjectPool { > > final int numThreads = 40; > > final int maxTotal = 40; > > > > - final GenericKeyedObjectPoolConfig config = new > GenericKeyedObjectPoolConfig(); > > + final GenericKeyedObjectPoolConfig<String> config = new > GenericKeyedObjectPoolConfig<String>(); > > config.setMaxTotalPerKey(maxTotal); > > config.setFairness(true); > > config.setLifo(false); > > @@ -1086,7 +1093,7 @@ public class TestGenericKeyedObjectPool extends > TestKeyedObjectPool { > > // Start and park threads waiting to borrow objects > > final TestThread[] threads = new TestThread[numThreads]; > > for(int i=0;i<numThreads;i++) { > > - threads[i] = new TestThread(gkoPool, 1, 0, 2000, false, "0" > + String.valueOf(i % maxTotal), "0"); > > + threads[i] = new TestThread<String>(gkoPool, 1, 0, 2000, > false, "0" + String.valueOf(i % maxTotal), "0"); > > final Thread t = new Thread(threads[i]); > > t.start(); > > // Short delay to ensure threads start in correct order > > @@ -2371,6 +2378,7 @@ public class TestGenericKeyedObjectPool extends > TestKeyedObjectPool { > > return new DefaultPooledObject<>(value); > > } > > } > > + > > } > > > > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org > For additional commands, e-mail: dev-h...@commons.apache.org > >