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
commit a3a191f6aed8999f464e0868e4a1c8a1e79c8c7c Author: Gary Gregory <[email protected]> AuthorDate: Fri Jan 2 17:42:54 2026 -0500 Format XML --- src/changes/changes.xml | 852 ++++++++++++++++++++++++------------------------ 1 file changed, 426 insertions(+), 426 deletions(-) diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 89f63389..7a4053ca 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -1,275 +1,276 @@ <?xml version="1.0"?> <!-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - https://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - --> + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> <!-- -This file is also used by the maven-changes-plugin to generate the release notes. +This file is used by the maven-changes-plugin to generate the release notes. Useful ways of finding items to add to this file are: -1. Add items when you fix a bug or add a feature (this makes the +1. Add items when you fix a bug or add a feature (this makes the release process easy :-). -2. Do a JIRA search for tickets closed since the previous release. +2. Do a Jira search for tickets closed since the previous release. 3. Use the report generated by the maven-changelog-plugin to see all -SVN commits. TBA how to use this with SVN. +SVN commits. Set the project.properties' maven.changelog.range +property to the number of days since the last release. + To generate the release notes from this file: mvn changes:announcement-generate -Prelease-notes [-Dchanges.version=nnn] -then tweak the formatting if necessary +then tweak the formatting if necessary and commit The <action> type attribute can be add,update,fix,remove. --> -<document xmlns="http://maven.apache.org/changes/2.0.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/changes/2.0.0 https://maven.apache.org/xsd/changes-2.0.0.xsd"> +<document xmlns="http://maven.apache.org/changes/2.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/changes/2.0.0 https://maven.apache.org/xsd/changes-2.0.0.xsd"> <properties> <title>Apache Commons Pool Release Notes</title> </properties> <body> - <release version="3.0.0" date="YYYY-MM-DD" description="This is a feature and maintenance release (Java 8 or above)."> - <!-- ADD --> - <action type="add" dev="psteitz" issue="POOL-407">Add ReslientPooledObjectFactory to provide resilience against factory outages.</action> - <action type="add" dev="ggregory" issue="POOL-415" due-to="Réda Housni Alaoui, Gary Gregory, Phil Steitz">Add an option to JdkProxySource allowing to unwrap UndeclaredThrowableException #261.</action> - <action type="add" dev="ggregory" due-to="Gary Gregory">Add org.apache.commons.pool3.proxy.CglibProxySource.Builder.</action> - <action type="add" dev="ggregory" due-to="Gary Gregory">Add org.apache.commons.pool3.proxy.JdkProxySource.Builder.</action> - <action type="add" dev="ggregory" due-to="Gary Gregory">Add org.apache.commons.pool3.proxy.AbstractProxySource.</action> - <action type="add" dev="ggregory" due-to="Pratyay, Gary Gregory">Made statistics collection optional in BaseGenericObjectPool #429.</action> - <!-- FIX --> - <action type="fix" dev="ggregory" due-to="Gary Gregory">Remove -nouses directive from maven-bundle-plugin. OSGi package imports now state 'uses' definitions for package imports, this doesn't affect JPMS (from org.apache.commons:commons-parent:80).</action> - <action type="fix" dev="ggregory" due-to="Gary Gregory">Operation on the "idleHighWaterMark" shared variable in "ErodingFactor" class is not atomic [org.apache.commons.pool3.PoolUtils$ErodingFactor] At PoolUtils.java:[line 101] AT_NONATOMIC_OPERATIONS_ON_SHARED_VARIABLE.</action> - <action type="fix" dev="ggregory" due-to="shengulong, Gary Gregory" issue="POOL-422">org.apache.commons.pool3.impl.GenericObjectPool.create(Duration) duration computation doesn't match 2.x. See also PR #409 from shengulong.</action> - <action type="fix" dev="markt" due-to="Coverity Scan">Fix potential ConcurrentModificationException in EvictionTimer thread clean-up.</action> - <action type="fix" dev="markt" due-to="Coverity Scan">Fix potential ConcurrentModificationException in EvictionTimer tasks.</action> - <action type="fix" dev="ggregory" due-to="Gary Gregory">Fix Apache RAT plugin console warnings.</action> - <!-- REMOVE --> - <action dev="ggregory" type="remove">Deprecations from version 2.x have been removed.</action> - <!-- UPDATE --> - <action type="update" dev="ggregory" due-to="Gary Gregory">Bump Java from 8 to 17.</action> - <action type="update" dev="ggregory" due-to="Gary Gregory">Bump org.apache.commons:commons-parent from 58 to 93 #297, #328, #338, #341, #347, #351, #354, #361, #431, #445, #448.</action> - <action type="update" dev="ggregory" due-to="Gary Gregory">Bump org.ow2.asm:asm-util from 9.5 to 9.7.1 #252, #294, #355.</action> - <action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">Bump org.apache.commons:commons-lang3 from 3.13.0 to 3.20.0 #326, #333, #342, #415.</action> - <action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">Bump org.apache.bcel:bcel from 6.7.0 to 6.10.0 #263, #306, #327.</action> - </release> - <release version="2.12.1" date="2025-01-19" description="This is a feature and maintenance release (Java 8 or above)."> - <!-- FIX --> - <action type="fix" dev="ggregory" due-to="Gary Gregory">Use java.time.Instant precision in org.apache.commons.pool2.impl.ThrowableCallStack.Snapshot throwable message.</action> - <action type="fix" dev="ggregory" due-to="Gary Gregory">GenericObjectPool.borrowObject(Duration) doesn't obey its borrowMaxWait Duration argument when the argument is different from GenericObjectPool.getMaxWaitDuration().</action> - <action type="fix" issue="POOL-418" dev="ggregory" due-to="Gary Gregory">The maximum wait time for GenericObjectPool.borrowObject(*) may exceed expectations due to a spurious thread wakeup.</action> - <action type="fix" dev="ggregory" due-to="Gary Gregory">Javadoc is missing its Overview page.</action> - <action type="fix" dev="ggregory" due-to="Gary Gregory">Migrate site generation templates to https://maven.apache.org/xsd/xdoc-2.0.xsd.</action> - <!-- ADD --> - <!-- UPDATE --> - <action type="update" dev="ggregory" due-to="Gary Gregory">Bump org.apache.commons:commons-parent from 62 to 79.</action> - <action type="update" dev="ggregory" due-to="Gary Gregory">[test] Bump commons-lang3 from 3.13.0 to 3.19.0.</action> - <action type="update" dev="ggregory" due-to="Gary Gregory">[site] Pickup org.apache.bcel:bcel version from parent POM.</action> - <action type="update" dev="ggregory" due-to="Gary Gregory">[test] Bump org.ow2.asm:asm-util from 9.5 to 9.7.1.</action> - </release> - <release version="2.12.0" date="2023-09-30" description="This is a feature and maintenance release (Java 8 or above)."> - <!-- FIX --> - <action dev="psteitz" type="fix" issue="POOL-401"> + <release version="3.0.0" date="YYYY-MM-DD" description="This is a feature and maintenance release (Java 8 or above)."> + <!-- ADD --> + <action type="add" dev="psteitz" issue="POOL-407">Add ReslientPooledObjectFactory to provide resilience against factory outages.</action> + <action type="add" dev="ggregory" issue="POOL-415" due-to="Réda Housni Alaoui, Gary Gregory, Phil Steitz">Add an option to JdkProxySource allowing to unwrap UndeclaredThrowableException #261.</action> + <action type="add" dev="ggregory" due-to="Gary Gregory">Add org.apache.commons.pool3.proxy.CglibProxySource.Builder.</action> + <action type="add" dev="ggregory" due-to="Gary Gregory">Add org.apache.commons.pool3.proxy.JdkProxySource.Builder.</action> + <action type="add" dev="ggregory" due-to="Gary Gregory">Add org.apache.commons.pool3.proxy.AbstractProxySource.</action> + <action type="add" dev="ggregory" due-to="Pratyay, Gary Gregory">Made statistics collection optional in BaseGenericObjectPool #429.</action> + <!-- FIX --> + <action type="fix" dev="ggregory" due-to="Gary Gregory">Remove -nouses directive from maven-bundle-plugin. OSGi package imports now state 'uses' definitions for package imports, this doesn't affect JPMS (from org.apache.commons:commons-parent:80).</action> + <action type="fix" dev="ggregory" due-to="Gary Gregory">Operation on the "idleHighWaterMark" shared variable in "ErodingFactor" class is not atomic [org.apache.commons.pool3.PoolUtils$ErodingFactor] At PoolUtils.java:[line 101] AT_NONATOMIC_OPERATIONS_ON_SHARED_VARIABLE.</action> + <action type="fix" dev="ggregory" due-to="shengulong, Gary Gregory" issue="POOL-422">org.apache.commons.pool3.impl.GenericObjectPool.create(Duration) duration computation doesn't match 2.x. See also PR #409 from shengulong.</action> + <action type="fix" dev="markt" due-to="Coverity Scan">Fix potential ConcurrentModificationException in EvictionTimer thread clean-up.</action> + <action type="fix" dev="markt" due-to="Coverity Scan">Fix potential ConcurrentModificationException in EvictionTimer tasks.</action> + <action type="fix" dev="ggregory" due-to="Gary Gregory">Fix Apache RAT plugin console warnings.</action> + <!-- REMOVE --> + <action dev="ggregory" type="remove">Deprecations from version 2.x have been removed.</action> + <!-- UPDATE --> + <action type="update" dev="ggregory" due-to="Gary Gregory">Bump Java from 8 to 17.</action> + <action type="update" dev="ggregory" due-to="Gary Gregory">Bump org.apache.commons:commons-parent from 58 to 93 #297, #328, #338, #341, #347, #351, #354, #361, #431, #445, #448.</action> + <action type="update" dev="ggregory" due-to="Gary Gregory">Bump org.ow2.asm:asm-util from 9.5 to 9.7.1 #252, #294, #355.</action> + <action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">Bump org.apache.commons:commons-lang3 from 3.13.0 to 3.20.0 #326, #333, #342, #415.</action> + <action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">Bump org.apache.bcel:bcel from 6.7.0 to 6.10.0 #263, #306, #327.</action> + </release> + <release version="2.12.1" date="2025-01-19" description="This is a feature and maintenance release (Java 8 or above)."> + <!-- FIX --> + <action type="fix" dev="ggregory" due-to="Gary Gregory">Use java.time.Instant precision in org.apache.commons.pool2.impl.ThrowableCallStack.Snapshot throwable message.</action> + <action type="fix" dev="ggregory" due-to="Gary Gregory">GenericObjectPool.borrowObject(Duration) doesn't obey its borrowMaxWait Duration argument when the argument is different from GenericObjectPool.getMaxWaitDuration().</action> + <action type="fix" issue="POOL-418" dev="ggregory" due-to="Gary Gregory">The maximum wait time for GenericObjectPool.borrowObject(*) may exceed expectations due to a spurious thread wakeup.</action> + <action type="fix" dev="ggregory" due-to="Gary Gregory">Javadoc is missing its Overview page.</action> + <action type="fix" dev="ggregory" due-to="Gary Gregory">Migrate site generation templates to https://maven.apache.org/xsd/xdoc-2.0.xsd.</action> + <!-- ADD --> + <!-- UPDATE --> + <action type="update" dev="ggregory" due-to="Gary Gregory">Bump org.apache.commons:commons-parent from 62 to 79.</action> + <action type="update" dev="ggregory" due-to="Gary Gregory">[test] Bump commons-lang3 from 3.13.0 to 3.19.0.</action> + <action type="update" dev="ggregory" due-to="Gary Gregory">[site] Pickup org.apache.bcel:bcel version from parent POM.</action> + <action type="update" dev="ggregory" due-to="Gary Gregory">[test] Bump org.ow2.asm:asm-util from 9.5 to 9.7.1.</action> + </release> + <release version="2.12.0" date="2023-09-30" description="This is a feature and maintenance release (Java 8 or above)."> + <!-- FIX --> + <action dev="psteitz" type="fix" issue="POOL-401"> Ensure that capacity freed by invalidateObject is available to all keyed pools. </action> - <action dev="psteitz" type="fix" due-to="Codievilky August" issue="POOL-391"> + <action dev="psteitz" type="fix" due-to="Codievilky August" issue="POOL-391"> Ensure capacity freed by clear is made available to GKOP borrowers. </action> - <action dev="ggregory" type="fix" issue="POOL-402" due-to="Cp-John, Phil Steitz, Bruno P. Kinoshita, Gary Gregory"> + <action dev="ggregory" type="fix" issue="POOL-402" due-to="Cp-John, Phil Steitz, Bruno P. Kinoshita, Gary Gregory"> Check blockWhenExhausted in hasBorrowWaiters #116. </action> - <action dev="ggregory" type="fix" due-to="Arturo Bernal"> + <action dev="ggregory" type="fix" due-to="Arturo Bernal"> Simplify test assertion with similar call but simpler. #131. - </action> - <action dev="ggregory" type="fix" due-to="Gary Gregory" issue="POOL-269"> + </action> + <action dev="ggregory" type="fix" due-to="Gary Gregory" issue="POOL-269"> Use generic exceptions instead of java.lang.Exception. - </action> - <action dev="ggregory" type="fix" due-to="Gary Gregory" issue="POOL-405"> + </action> + <action dev="ggregory" type="fix" due-to="Gary Gregory" issue="POOL-405"> NullPointerException GenericKeyedObjectPool.invalidateObject(GenericKeyedObjectPool.java:1343). </action> - <action dev="ggregory" type="fix" due-to="Zhenyu Luo, Gary Gregory" issue="POOL-408"> + <action dev="ggregory" type="fix" due-to="Zhenyu Luo, Gary Gregory" issue="POOL-408"> A typo of KeyedPooledObjectFactory on the site and Javadoc. </action> - <action dev="ggregory" type="fix" due-to="Gary Gregory"> + <action dev="ggregory" type="fix" due-to="Gary Gregory"> Fail-fast on null input for DefaultPooledObjectInfo.DefaultPooledObjectInfo(PooledObject) with a NullPointerException. - </action> - <action dev="niallp" type="fix" due-to="Shichao Yuan, Phil Steitz, Niall Pemberton" issue="POOL-393"> + </action> + <action dev="niallp" type="fix" due-to="Shichao Yuan, Phil Steitz, Niall Pemberton" issue="POOL-393"> Improve BaseGenericObjectPool's JMX Register performance when creating many pools. </action> - <action dev="ggregory" type="fix" due-to="Réda Housni Alaoui, Gary Gregory"> + <action dev="ggregory" type="fix" due-to="Réda Housni Alaoui, Gary Gregory"> Null-guard in GenericObjectPool.use(T) like other call sites of GenericObjectPool.getPooledObject(T). </action> - <action dev="ggregory" type="fix" issue="POOL-411" due-to="Richard Eckart de Castilho, Gary Gregory"> + <action dev="ggregory" type="fix" issue="POOL-411" due-to="Richard Eckart de Castilho, Gary Gregory"> NPE when deregistering key at end of borrow. </action> - <action dev="ggregory" type="fix" due-to="Gary Gregory"> + <action dev="ggregory" type="fix" due-to="Gary Gregory"> Make private class GenericKeyedObjectPool.ObjectDeque class static. </action> - <action dev="ggregory" type="fix" due-to="Gary Gregory"> + <action dev="ggregory" type="fix" due-to="Gary Gregory"> Make private class BaseGenericObjectPool.StatsStore class static. </action> - <action type="fix" dev="ggregory" due-to="step-security-bot, Gary Gregory"> + <action type="fix" dev="ggregory" due-to="step-security-bot, Gary Gregory"> [StepSecurity] ci: Harden GitHub Actions #225. </action> - <action type="fix" dev="ggregory" due-to="Gary Gregory"> + <action type="fix" dev="ggregory" due-to="Gary Gregory"> Fix possible NPE in DefaultPooledObjectInfo.getPooledObjectToString(). </action> - <action type="fix" dev="ggregory" due-to="Gary Gregory"> + <action type="fix" dev="ggregory" due-to="Gary Gregory"> Fix possible NPE in DefaultPooledObjectInfo.getPooledObjectType(). </action> - <!-- ADD --> - <action dev="ggregory" type="add" due-to="Gary Gregory"> + <!-- ADD --> + <action dev="ggregory" type="add" due-to="Gary Gregory"> Add PooledObject.getFullDuration(). </action> - <action dev="ggregory" type="add" due-to="Vamsi Pavan Kumar Sanka, Phil Steitz, Gary Gregory"> + <action dev="ggregory" type="add" due-to="Vamsi Pavan Kumar Sanka, Phil Steitz, Gary Gregory"> Add GenericKeyedObjectPool.getKeys(). </action> - <action dev="ggregory" type="add" due-to="Gary Gregory"> + <action dev="ggregory" type="add" due-to="Gary Gregory"> Add KeyedObjectPool.getKeys(). </action> - <action dev="ggregory" type="add"> + <action dev="ggregory" type="add"> Add github/codeql-action. </action> - <action dev="ggregory" type="add"> + <action dev="ggregory" type="add"> Add BaseGenericObjectPool.Evictor.toString(). </action> - <action dev="ggregory" type="add"> + <action dev="ggregory" type="add"> BaseGenericObjectPool now implements AutoCloseable. </action> - <!-- UPDATE --> - <action dev="kinow" type="update" due-to="Dependabot, Gary Gregory"> + <!-- UPDATE --> + <action dev="kinow" type="update" due-to="Dependabot, Gary Gregory"> Bump actions/cache from 2.1.6 to 3.0.10 #117, #138, #158, #174, #178. </action> - <action dev="ggregory" type="update" due-to="Dependabot, Gary Gregory"> + <action dev="ggregory" type="update" due-to="Dependabot, Gary Gregory"> Bump actions/checkout from 2.3.4 to 3.0.2 #109, #112, #134. </action> - <action dev="kinow" type="update" due-to="Gary Gregory"> + <action dev="kinow" type="update" due-to="Gary Gregory"> Bump actions/setup-java from 2 to 3.5.1. </action> - <action dev="ggregory" type="update" due-to="Dependabot"> + <action dev="ggregory" type="update" due-to="Dependabot"> Bump spotbugs from 4.3.0 to 4.7.3 #94, #99, #106, #114, #122, #129, #137, #155, #168, #187. </action> - <action dev="ggregory" type="update" due-to="Dependabot"> + <action dev="ggregory" type="update" due-to="Dependabot"> Bump spotbugs-maven-plugin from 4.3.0 to 4.7.3.0 #102, #110, #119, #125, #128, #139, #149, #157, #161, #169, #180, #190. </action> - <action dev="ggregory" type="update" due-to="Dependabot"> + <action dev="ggregory" type="update" due-to="Dependabot"> Bump junit-bom from 5.8.0-M1 to 5.9.1 #96, #100, #103, #120, #160, #172. </action> - <action dev="ggregory" type="update" due-to="Dependabot"> + <action dev="ggregory" type="update" due-to="Dependabot"> Bump checkstyle from 8.45.1 to 9.3 #97, #104, #111, #121, #126, #132. </action> - <action dev="ggregory" type="update" due-to="Dependabot"> + <action dev="ggregory" type="update" due-to="Dependabot"> Bump maven-checkstyle-plugin from 3.1.2 to 3.2.0 #166. </action> - <action dev="ggregory" type="update" due-to="Dependabot, Gary Gregory"> + <action dev="ggregory" type="update" due-to="Dependabot, Gary Gregory"> Bump maven-pmd-plugin from 3.14.0 to 3.19.0 #101, #153, #170. </action> - <action dev="ggregory" type="update" due-to="Gary Gregory"> + <action dev="ggregory" type="update" due-to="Gary Gregory"> Bump pmd from 6.44.0 to 6.52.0. </action> - <action dev="ggregory" type="update" due-to="Dependabot"> + <action dev="ggregory" type="update" due-to="Dependabot"> Bump biz.aQute.bndlib from 5.3.0 to 6.4.1 #105, #118, #135, #151, #154, #191, #223. </action> - <action dev="kinow" type="update" due-to="Dependabot"> + <action dev="kinow" type="update" due-to="Dependabot"> Bump maven-bundle-plugin from 5.1.3 to 5.1.8 #127, #146, #148, #159, #164. </action> - <action dev="kinow" type="update" due-to="Dependabot"> + <action dev="kinow" type="update" due-to="Dependabot"> Bump maven-surefire-plugin from 3.0.0-M7 to 3.0.0-M6 #142, #152. </action> - <action dev="kinow" type="update" due-to="Dependabot"> + <action dev="kinow" type="update" due-to="Dependabot"> Bump asm-util from 9.2 to 9.5 #141, #179, #220. </action> - <action dev="ggregory" type="update" due-to="Gary Gregory, Dependabot"> + <action dev="ggregory" type="update" due-to="Gary Gregory, Dependabot"> Bump commons-parent from 52 to 58 #173, #195, #204, #222. </action> - <action dev="ggregory" type="update" due-to="Gary Gregory"> + <action dev="ggregory" type="update" due-to="Gary Gregory"> Bump japicmp-maven-plugin from 0.15.3 to 0.16.0. </action> - <action dev="ggregory" type="update" due-to="Gary Gregory"> + <action dev="ggregory" type="update" due-to="Gary Gregory"> Bump animal-sniffer-maven-plugin 1.20 to 1.21. </action> - <action dev="ggregory" type="update" due-to="Gary Gregory, Dependabot"> + <action dev="ggregory" type="update" due-to="Gary Gregory, Dependabot"> Bump Apache Commons BCEL 6.5.0 to 6.7.0 #194. </action> - <action type="update" dev="ggregory" due-to="Gary Gregory"> + <action type="update" dev="ggregory" due-to="Gary Gregory"> Bump commons-lang3 from 3.12.0 to 3.13.0. </action> - </release> - <release version="2.11.1" date="2021-08-18" description="This is a maintenance release (Java 8 or above)."> - <!-- FIX --> - <action dev="ggregory" type="fix" due-to="Gary Gregory"> + </release> + <release version="2.11.1" date="2021-08-18" description="This is a maintenance release (Java 8 or above)."> + <!-- FIX --> + <action dev="ggregory" type="fix" due-to="Gary Gregory"> Getting a PooledObject's active duration returns a negative duration when the object is borrowed but not returned. Affects: - PooledObject.getActiveDuration() - PooledObject.getActiveTime() - PooledObject.getActiveTimeMillis() </action> - <action dev="ggregory" type="fix" due-to="Gary Gregory"> + <action dev="ggregory" type="fix" due-to="Gary Gregory"> The default implementation of TrackedUse.getLastUsedInstant() uses seconds instead of milliseconds. This interface is not implemented within Apache Commons Pool but affects Apache Commons DBCP. </action> - <action dev="ggregory" type="fix" due-to="Gary Gregory"> + <action dev="ggregory" type="fix" due-to="Gary Gregory"> DefaultPooledObject.getIdleTime() drops nanoseconds on Java 9 and greater. </action> - <action dev="ggregory" type="fix" due-to="Gary Gregory"> + <action dev="ggregory" type="fix" due-to="Gary Gregory"> Fix field label in BaseGenericObjectPool toString() builder: From timeBetweenEvictionRunsMillis to durationBetweenEvictionRuns. </action> - <action dev="ggregory" type="fix" due-to="Gary Gregory"> + <action dev="ggregory" type="fix" due-to="Gary Gregory"> Fix field label in BaseObjectPoolConfig toString() builder: From maxWaitMillis to maxWaitDuration. </action> - <action dev="ggregory" type="fix" due-to="Gary Gregory"> + <action dev="ggregory" type="fix" due-to="Gary Gregory"> Fix field label in NoSuchElementException message for GenericObjectPool.borrowObject(Duration): From borrowMaxWaitMillis to borrowMaxWaitDuration. </action> - <action dev="ggregory" type="fix" due-to="Gary Gregory"> + <action dev="ggregory" type="fix" due-to="Gary Gregory"> Reimplement DefaultPooledObject.getIdleDuration() using Duration computation. </action> - <action dev="ggregory" type="fix" due-to="Gary Gregory"> + <action dev="ggregory" type="fix" due-to="Gary Gregory"> Reimplement BaseGenericObjectPool.maxBorrowWait as a Duration instead of a long. </action> - <action dev="ggregory" type="fix" due-to="Arturo Bernal"> + <action dev="ggregory" type="fix" due-to="Arturo Bernal"> Minors Changes #89. </action> - <!-- UPDATE --> - <action dev="ggregory" type="update" due-to="Dependabot"> + <!-- UPDATE --> + <action dev="ggregory" type="update" due-to="Dependabot"> Bump checkstyle from 8.45 to 8.45.1 #93. </action> - <action dev="ggregory" type="update" due-to="Dependabot"> + <action dev="ggregory" type="update" due-to="Dependabot"> Bump spotbugs from 4.2.3 to 4.3.0 and ignore new medium warnings EI_EXPOSE_REP and EI_EXPOSE_REP2. </action> - </release> - <release version="2.11.0" date="2021-08-08" description="This is a feature release (Java 8 or above)."> - <!-- FIX --> - <action dev="ggregory" type="fix" due-to="Gary Gregory"> + </release> + <release version="2.11.0" date="2021-08-08" description="This is a feature release (Java 8 or above)."> + <!-- FIX --> + <action dev="ggregory" type="fix" due-to="Gary Gregory"> Fix "[WARNING] Old version of checkstyle detected. Consider updating to >= v8.30." Update Checktyle to 8.44. </action> - <action dev="ggregory" type="fix" due-to="Gary Gregory"> + <action dev="ggregory" type="fix" due-to="Gary Gregory"> Make Duration setters use their respective default values when null. </action> - <action dev="ggregory" type="fix" due-to="Gary Gregory"> + <action dev="ggregory" type="fix" due-to="Gary Gregory"> Call swallowException(Exception) instead of printing exceptions to the console in GenericKeyedObjectPool.removeAbandoned(AbandonedConfig) and GenericObjectPool.removeAbandoned(AbandonedConfig). </action> - <action dev="ggregory" type="fix" due-to="Arturo Bernal"> + <action dev="ggregory" type="fix" due-to="Arturo Bernal"> Fix Javadoc link reference #91. </action> - <action dev="ggregory" type="fix" due-to="Arturo Bernal"> + <action dev="ggregory" type="fix" due-to="Arturo Bernal"> No need to initialize to default values. #90. </action> - <!-- ADD --> - <action dev="ggregory" type="add" due-to="Gary Gregory"> + <!-- ADD --> + <action dev="ggregory" type="add" due-to="Gary Gregory"> Track timestamps with Instants instead of longs. There is currently no increased precision on Java 8, but starting with Java 9, the JRE SystemClock precision is increased usually down to microseconds, or tenth of microseconds, depending on the OS, Hardware, and JVM implementation. Add and use: @@ -281,16 +282,16 @@ The <action> type attribute can be add,update,fix,remove. - PooledObject.getLastUsedInstant() - TrackedUse#getLastUsedInstant() </action> - <action dev="ggregory" type="add" due-to="Gary Gregory"> + <action dev="ggregory" type="add" due-to="Gary Gregory"> Add BaseObjectPoolConfig.setEvictorShutdownTimeoutDuration(Duration), deprecate setEvictorShutdownTimeoutMillis(Duration). </action> - <action dev="ggregory" type="add" due-to="Gary Gregory"> + <action dev="ggregory" type="add" due-to="Gary Gregory"> Add BaseGenericObjectPool.{get|set}MaxWaitDuration(Duration) and deprecate {get|set}MaxWaitMillis(long). </action> - <action dev="ggregory" type="add" due-to="Gary Gregory"> + <action dev="ggregory" type="add" due-to="Gary Gregory"> Add BaseObjectPoolConfig.{get|set}MaxWaitDuration(Duration) and deprecate {get|set}MaxWaitMillis(long). </action> - <action dev="ggregory" type="add" due-to="Gary Gregory"> + <action dev="ggregory" type="add" due-to="Gary Gregory"> Add and use Duration APIs instead of ints or longs. - Add and use Duration APIs in BaseGenericObjectPool: getDurationBetweenEvictionRuns(), getEvictorShutdownTimeoutDuration(), getMinEvictableIdleDuration(), getSoftMinEvictableIdleDuration(), setMaxWait(Duration), setMinEvictableIdle(Duration), setSoftMinEvictableIdle(Duration). - Add and use Duration APIs in BaseObjectPoolConfig: getDurationBetweenEvictionRuns(), getEvictorShutdownTimeoutDuration(),getMinEvictableIdleDuration(), getSoftMinEvictableIdleDuration(). @@ -300,16 +301,16 @@ The <action> type attribute can be add,update,fix,remove. - Update Javadocs. - Update toString() implementations with duration labels. </action> - <action issue="POOL-396" dev="ggregory" type="add" due-to="Jeremy Kong, Phil Steitz"> + <action issue="POOL-396" dev="ggregory" type="add" due-to="Jeremy Kong, Phil Steitz"> Handle validation exceptions during eviction. #85. </action> - <action issue="POOL-395" dev="ggregory" type="add" due-to="Gary Gregory, Arash Nikoo"> + <action issue="POOL-395" dev="ggregory" type="add" due-to="Gary Gregory, Arash Nikoo"> Improve exception thrown in GenericObjectPool.borrowObject when pool is exhausted. Added BaseGenericObjectPool.setMessagesStatistics(boolean). </action> - <action dev="ggregory" type="add" due-to="Gary Gregory"> + <action dev="ggregory" type="add" due-to="Gary Gregory"> Add and use AbandonedConfig.copy(AbandonedConfig) to fix CPD code duplication issues in GenericKeyedObjectPool and GenericObjectPool. </action> - <action dev="ggregory" type="add" due-to="Gary Gregory"> + <action dev="ggregory" type="add" due-to="Gary Gregory"> Pull up AbandonedConfig and related methods from GenericKeyedObjectPool and GenericObjectPool to BaseGenericObjectPool (fix for CPD issues). - BaseGenericObjectPool.getLogAbandoned() - BaseGenericObjectPool.getRemoveAbandonedOnBorrow() @@ -319,812 +320,812 @@ The <action> type attribute can be add,update,fix,remove. - BaseGenericObjectPool.isAbandonedConfig() - BaseGenericObjectPool.setAbandonedConfig(AbandonedConfig) </action> - <!-- UPDATES --> - <action dev="ggregory" type="fix" due-to="Gary Gregory"> + <!-- UPDATES --> + <action dev="ggregory" type="fix" due-to="Gary Gregory"> Bump org.ow2.asm:asm-util from 9.1 to 9.2. </action> - <action dev="ggregory" type="fix" due-to="Gary Gregory"> + <action dev="ggregory" type="fix" due-to="Gary Gregory"> Bump com.github.spotbugs:spotbugs from 4.2.3 to 4.3.0. </action> - <action dev="ggregory" type="fix" due-to="Dependabot"> + <action dev="ggregory" type="fix" due-to="Dependabot"> Bump checkstyle from 8.44 to 8.45 #92. </action> - </release> - <release version="2.10.0" date="2021-05-28" description="This is a feature release (Java 8 or above)."> - <!-- ADD --> - <action dev="ggregory" type="add" due-to="Gary Gregory"> + </release> + <release version="2.10.0" date="2021-05-28" description="This is a feature release (Java 8 or above)."> + <!-- ADD --> + <action dev="ggregory" type="add" due-to="Gary Gregory"> Add and use java.time.Duration APIs timeouts instead of using ints for seconds. See the site and its API comparison report for a list of the new Duration-based APIs. </action> - <action dev="ggregory" type="add" due-to="JSurf, Gary Gregory, Phil Steitz"> + <action dev="ggregory" type="add" due-to="JSurf, Gary Gregory, Phil Steitz"> Implement AbandonedConfig for GenericKeyedObjectPool #67. </action> - <!-- FIXES --> - <action dev="ggregory" type="fix" due-to="Arturo Bernal"> + <!-- FIXES --> + <action dev="ggregory" type="fix" due-to="Arturo Bernal"> Simplify Assertions in tests #77. </action> - <action dev="ggregory" type="fix" due-to="Arturo Bernal"> + <action dev="ggregory" type="fix" due-to="Arturo Bernal"> Replace C-style array declaration with Java style #80. </action> - <action dev="ggregory" type="fix" due-to="Arturo Bernal"> + <action dev="ggregory" type="fix" due-to="Arturo Bernal"> Use Objects.equals(); Use Anonymous type; Use method reference instead Lambda; Replace Loop with Collection.removeIf(). #81. </action> - <action dev="ggregory" type="fix" due-to="Arturo Bernal"> + <action dev="ggregory" type="fix" due-to="Arturo Bernal"> Use diamond operator. #82. </action> - <action dev="ggregory" type="fix" due-to="Arturo Bernal"> + <action dev="ggregory" type="fix" due-to="Arturo Bernal"> Code clean ups. #83. </action> - <!-- UPDATE --> - <action dev="ggregory" type="update" due-to="Dependabot"> + <!-- UPDATE --> + <action dev="ggregory" type="update" due-to="Dependabot"> Bump spotbugs-maven-plugin from 4.0.4 to 4.2.1 #48, #53, #59, #62. </action> - <action dev="ggregory" type="update" due-to="Dependabot, Gary Gregory"> + <action dev="ggregory" type="update" due-to="Dependabot, Gary Gregory"> Bump actions/setup-java from v1.4.2 to v2, #47. </action> - <action dev="ggregory" type="update" due-to="Dependabot"> + <action dev="ggregory" type="update" due-to="Dependabot"> Bump junit from 4.13 to 4.13.1 #50. </action> - <action dev="ggregory" type="update" due-to="Dependabot"> + <action dev="ggregory" type="update" due-to="Dependabot"> Bump biz.aQute.bndlib from 5.1.2 to 5.3.0, #51, #66. </action> - <action dev="ggregory" type="update" due-to="Arturo Bernal" issue="POOL-389"> + <action dev="ggregory" type="update" due-to="Arturo Bernal" issue="POOL-389"> Migrate to JUnit 5 #57. </action> - <action dev="ggregory" type="update" due-to="Arturo Bernal" issue="POOL-389"> + <action dev="ggregory" type="update" due-to="Arturo Bernal" issue="POOL-389"> Minor Improvements #58, #60. </action> - <action dev="ggregory" type="update" due-to="Dependabot"> + <action dev="ggregory" type="update" due-to="Dependabot"> Bump actions/checkout from v2.3.3 to v2.3.4 #54. </action> - <action dev="ggregory" type="update" due-to="Dependabot"> + <action dev="ggregory" type="update" due-to="Dependabot"> Bump maven-pmd-plugin from 3.13.0 to 3.14.0 #55. </action> - <action dev="ggregory" type="update" due-to="Gary Gregory"> + <action dev="ggregory" type="update" due-to="Gary Gregory"> Update commons.japicmp.version 0.14.3 -> 0.15.3. </action> - <action dev="ggregory" type="update" due-to="Dependabot, Gary Gregory"> + <action dev="ggregory" type="update" due-to="Dependabot, Gary Gregory"> Bump actions/cache from v2 to v2.1.6 #65, #75, #84. </action> - <action dev="ggregory" type="update" due-to="Dependabot"> + <action dev="ggregory" type="update" due-to="Dependabot"> Bump maven-checkstyle-plugin from 3.1.1 to 3.1.2 #61. </action> - <action dev="ggregory" type="update" due-to="Dependabot"> + <action dev="ggregory" type="update" due-to="Dependabot"> Bump asm-util from 9.0 to 9.1 #64. </action> - <action dev="ggregory" type="update" due-to="Dependabot"> + <action dev="ggregory" type="update" due-to="Dependabot"> Bump spotbugs from 4.2.1 to 4.2.3 #68, #73, #74. </action> - <action dev="ggregory" type="update" due-to="Dependabot, Gary Gregory"> + <action dev="ggregory" type="update" due-to="Dependabot, Gary Gregory"> Bump junit-bom from 5.7.1 to 5.8.0-M1 #76. </action> - <action dev="ggregory" type="update" due-to="Dependabot"> + <action dev="ggregory" type="update" due-to="Dependabot"> Bump maven-bundle-plugin from 5.1.1 to 5.1.2 #70. </action> - <action dev="ggregory" type="update" due-to="Dependabot"> + <action dev="ggregory" type="update" due-to="Dependabot"> Bump animal-sniffer-maven-plugin from 1.19 to 1.20. </action> - </release> - <release version="2.9.0" date="2020-09-25" description="This is a minor release (Java 8 or above)."> - <action issue="POOL-387" dev="ggregory" type="update" due-to=" Phil Steitz"> + </release> + <release version="2.9.0" date="2020-09-25" description="This is a minor release (Java 8 or above)."> + <action issue="POOL-387" dev="ggregory" type="update" due-to=" Phil Steitz"> Object factory destroy method should carry information on activation context. </action> - <action dev="ggregory" type="update" due-to="Dependabot"> + <action dev="ggregory" type="update" due-to="Dependabot"> Update spotbugs from 4.0.6 to 4.1.3, #37, #41, #46. </action> - <action dev="ggregory" type="update" due-to="Dependabot"> + <action dev="ggregory" type="update" due-to="Dependabot"> Update actions/checkout from v2.3.1 to v2.3.3 #56, #45. </action> - <action dev="ggregory" type="update" due-to="Dependabot"> + <action dev="ggregory" type="update" due-to="Dependabot"> Update actions/setup-java from v1.4.0 to v1.4.2 #42. </action> - <action dev="ggregory" type="update" due-to="Dependabot"> + <action dev="ggregory" type="update" due-to="Dependabot"> Update optional asm-util from 8.0.1 to 9.0 #44. </action> - </release> - <release version="2.8.1" date="2020-07-27" description="This is a maintenance release (Java 8 or above)."> - <action dev="ggregory" issue="POOL-386" type="fix" due-to="Phil Steitz, Mark Thomas"> + </release> + <release version="2.8.1" date="2020-07-27" description="This is a maintenance release (Java 8 or above)."> + <action dev="ggregory" issue="POOL-386" type="fix" due-to="Phil Steitz, Mark Thomas"> Refactored EvictionTimer usage tracking to fix POOL-386 and handle abandoned pools. #32. </action> - <action dev="ggregory" type="fix" due-to="Prodigysov, Gary Gregory"> + <action dev="ggregory" type="fix" due-to="Prodigysov, Gary Gregory"> [Javadoc] Add missing @throws comment in PoolUtils. #27. </action> - <action dev="ggregory" issue="POOL-384" type="update" due-to="Gary Gregory"> + <action dev="ggregory" issue="POOL-384" type="update" due-to="Gary Gregory"> Update optional library org.ow2.asm:asm-util from 7.2 to 8.0.1. </action> - <action dev="ggregory" issue="POOL-385" type="add" due-to="scholzi100"> + <action dev="ggregory" issue="POOL-385" type="add" due-to="scholzi100"> Added Automatic-Module-Name to support JPMS #31. </action> - <action dev="ggregory" type="update" due-to="Gary Gregory"> + <action dev="ggregory" type="update" due-to="Gary Gregory"> Update site reports from org.apache.bcel:bcel 6.4.1 to 6.5.0. </action> - <action dev="ggregory" type="update" due-to="Gary Gregory"> + <action dev="ggregory" type="update" due-to="Gary Gregory"> Update site reports from maven-pmd-plugin 3.12.0 to 3.13.0. </action> - <action dev="ggregory" type="update" due-to="Gary Gregory"> + <action dev="ggregory" type="update" due-to="Gary Gregory"> Update build from biz.aQute.bnd:biz.aQute.bndlib 5.1.0 -> 5.1.2. </action> - <action dev="ggregory" type="update" due-to="Dependabot"> + <action dev="ggregory" type="update" due-to="Dependabot"> Update actions/checkout from v1 to v2.3.1 #33. </action> - <action dev="ggregory" type="update" due-to="Dependabot"> + <action dev="ggregory" type="update" due-to="Dependabot"> Update commons-parent from 50 to 51 #36. </action> - <action dev="ggregory" type="update" due-to="Gary Gregory"> + <action dev="ggregory" type="update" due-to="Gary Gregory"> Update Checkstyle plugin from 3.0.0 to 3.1.1. </action> - <action dev="ggregory" type="update" due-to="Gary Gregory"> + <action dev="ggregory" type="update" due-to="Gary Gregory"> Update JApiCmp from 0.14.1 to 0.14.3. </action> - <action dev="ggregory" type="update" due-to="Gary Gregory"> + <action dev="ggregory" type="update" due-to="Gary Gregory"> Update animal-sniffer-maven-plugin from 1.16 to 1.19. </action> - </release> - <release version="2.8.0" date="2019-12-05" description="This is a maintenance release (Java 8 or above)."> - <action dev="ggregory" issue="POOL-374" type="fix" due-to="Gary Gregory, Phil Steitz"> + </release> + <release version="2.8.0" date="2019-12-05" description="This is a maintenance release (Java 8 or above)."> + <action dev="ggregory" issue="POOL-374" type="fix" due-to="Gary Gregory, Phil Steitz"> GenericKeyedObjectPool.returnObject(K, T) should throw IllegalStateException instead of NullPointerException when a key is not found in the pool map. </action> - <action dev="ggregory" issue="POOL-375" type="update" due-to="Gary Gregory"> + <action dev="ggregory" issue="POOL-375" type="update" due-to="Gary Gregory"> Update optional library cglib from 3.2.12 to 3.3.0. </action> - <action dev="psteitz" issue="POOL-376" type="fix" due-to="Sazzadul Hoque, Phil Steitz"> + <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"> + <action dev="psteitz" issue="POOL-326" type="fix" due-to="Phil Steitz"> Eliminated NPE / ISE exceptions due to keyed pools being prematurely removed. </action> - <action dev="ggregory" type="update" due-to="Gary Gregory"> + <action dev="ggregory" type="update" due-to="Gary Gregory"> Update site build from Apache Commons BCEL 6.3.1 to 6.4.1. </action> - <action dev="ggregory" issue="POOL-377" type="update" due-to="Gary Gregory"> + <action dev="ggregory" issue="POOL-377" type="update" due-to="Gary Gregory"> Update optional library org.ow2.asm:asm-util from 7.1 to 7.2. </action> - <action dev="ggregory" issue="POOL-378" type="add" due-to="Gary Gregory"> + <action dev="ggregory" issue="POOL-378" type="add" due-to="Gary Gregory"> Deprecate PoolUtils.prefill(ObjectPool, int) in favor of ObjectPool.addObjects(int). </action> - <action dev="ggregory" issue="POOL-379" type="add" due-to="Gary Gregory"> + <action dev="ggregory" issue="POOL-379" type="add" due-to="Gary Gregory"> Deprecate PoolUtils.prefill(KeyedObjectPool, K, int) in favor of KeyedObjectPool.addObjects(K, int). </action> - <action dev="ggregory" issue="POOL-380" type="add" due-to="Gary Gregory"> + <action dev="ggregory" issue="POOL-380" type="add" due-to="Gary Gregory"> Deprecate PoolUtils.prefill(KeyedObjectPool, Collection, int) in favor of KeyedObjectPool.addObjects(Collection, int). </action> - <action dev="ggregory" type="fix" due-to="emopers"> + <action dev="ggregory" type="fix" due-to="emopers"> Close BufferedOutputStream in test before calling toString on underlying BufferedOutputStream #26. </action> - <action dev="ggregory" type="fix" due-to="Prodigysov"> + <action dev="ggregory" type="fix" due-to="Prodigysov"> [Javadoc] Add missing @throws comment in SoftReferenceObjectPool. #28. </action> - </release> - <release version="2.7.0" date="2019-07-25" description="This is a feature release (Java 8 or above)."> - <action dev="ggregory" issue="POOL-364" type="update" due-to="Gary Gregory"> + </release> + <release version="2.7.0" date="2019-07-25" description="This is a feature release (Java 8 or above)."> + <action dev="ggregory" issue="POOL-364" type="update" due-to="Gary Gregory"> Update from Java 7 to Java 8. </action> - <action dev="ggregory" issue="POOL-365" type="update" due-to="Gary Gregory"> + <action dev="ggregory" issue="POOL-365" type="update" due-to="Gary Gregory"> Update ASM from 7.0 to 7.1 </action> - <action dev="ggregory" issue="POOL-366" type="update" due-to="Gary Gregory"> + <action dev="ggregory" issue="POOL-366" type="update" due-to="Gary Gregory"> Update optional library cglib from 3.2.10 to 3.2.12. </action> - <action dev="ggregory" issue="POOL-367" type="update" due-to="Per Lundberg"> + <action dev="ggregory" issue="POOL-367" type="update" due-to="Per Lundberg"> Fix typo in package private method name stopEvitor() -> stopEvictor() #22. </action> - <action dev="ggregory" issue="POOL-361" type="fix" due-to="Pablo, Phil Steitz, Bruno P. Kinoshita"> + <action dev="ggregory" issue="POOL-361" type="fix" due-to="Pablo, Phil Steitz, Bruno P. Kinoshita"> Move validation for newly created objects into create(). Fixes #23. </action> - <action dev="ggregory" type="add" issue="POOL-370" due-to="Mark Thomas, Gary Gregory"> + <action dev="ggregory" type="add" issue="POOL-370" due-to="Mark Thomas, Gary Gregory"> Add org.apache.commons.pool3.PooledObject#getBorrowedCount(). </action> - <action dev="ggregory" type="add" issue="POOL-371" due-to="Matt Sicker, Gary Gregory"> + <action dev="ggregory" type="add" issue="POOL-371" due-to="Matt Sicker, Gary Gregory"> Add org.apache.commons.pool3.PooledObject#setRequireFullStackTrace(boolean). </action> - <action dev="ggregory" type="fix" issue="POOL-352" due-to=" Volker Kleinschmidt"> + <action dev="ggregory" type="fix" issue="POOL-352" due-to=" Volker Kleinschmidt"> CallStackUtils mishandles security manager check part 1. </action> - </release> - <release version="2.6.2" date="2019-03-05" description="This is a maintenance release (Java 7 or above)."> - <action dev="ggregory" issue="POOL-362" type="fix"> + </release> + <release version="2.6.2" date="2019-03-05" description="This is a maintenance release (Java 7 or above)."> + <action dev="ggregory" issue="POOL-362" type="fix"> Always null out org.apache.commons.pool3.impl.BaseGenericObjectPool.evictionIterator to match org.apache.commons.pool3.impl.BaseGenericObjectPool.evictor. </action> - <action dev="ggregory" issue="POOL-363" type="fix" due-to="Josh Landin"> + <action dev="ggregory" issue="POOL-363" type="fix" due-to="Josh Landin"> Evictor Thread prevents Spring Context shutdown in standalone app. </action> - <action dev="ggregory" issue="POOL-348" type="fix" due-to="Josh Landin"> + <action dev="ggregory" issue="POOL-348" type="fix" due-to="Josh Landin"> The commons-pool-evictor-thread should run as a Deamon. </action> - </release> - <release version="2.6.1" date="2019-02-08" description="This is a maintenance release (Java 7 or above)."> - <action dev="struberg" issue="POOL-340" type="fix" due-to="Pavel Kolesov"> + </release> + <release version="2.6.1" date="2019-02-08" description="This is a maintenance release (Java 7 or above)."> + <action dev="struberg" issue="POOL-340" type="fix" due-to="Pavel Kolesov"> Correct validateObject with concurrent borrowObject </action> - <action dev="struberg" issue="POOL-356" type="fix"> + <action dev="struberg" issue="POOL-356" type="fix"> Fix deadlock on massive concurrent requests </action> - <action dev="ggregory" issue="POOL-345" type="update"> + <action dev="ggregory" issue="POOL-345" type="update"> Update optional library cglib from 3.2.6 to 3.2.9. </action> - <action dev="ggregory" issue="POOL-346" type="update" due-to="Michael Chen"> + <action dev="ggregory" issue="POOL-346" type="update" due-to="Michael Chen"> Move common configuration setter to BaseGenericObjectPool #9. </action> - <action dev="ggregory" issue="POOL-347" type="fix" due-to="Shunsuke Nakamura"> + <action dev="ggregory" issue="POOL-347" type="fix" due-to="Shunsuke Nakamura"> Method borrowObject waits for maxWaitMillis over in pool full. </action> - <action dev="ggregory" issue="POOL-349" type="update"> + <action dev="ggregory" issue="POOL-349" type="update"> Update optional library asm-util from 6.2 to 7.0. </action> - <action dev="ggregory" issue="POOL-359" type="fix" due-to="Michael Wintermeyer, Gary Gregory"> + <action dev="ggregory" issue="POOL-359" type="fix" due-to="Michael Wintermeyer, Gary Gregory"> NullPointerException closing multiple GenericObjectPools. </action> - <action dev="ggregory" issue="POOL-360" type="update"> + <action dev="ggregory" issue="POOL-360" type="update"> Update optional library cglib from 3.2.9 to 3.2.10. </action> - <action dev="ggregory" issue="POOL-326" type="fix" due-to="Chris Allison, Phil Steitz"> + <action dev="ggregory" issue="POOL-326" type="fix" due-to="Chris Allison, Phil Steitz"> Threading issue, NullPointerException and IllegalStateException in GenericKeyedObjectPool. </action> - <action dev="ggregory" issue="POOL-352" type="fix" due-to="Volker Kleinschmidt, Gary Gregory"> + <action dev="ggregory" issue="POOL-352" type="fix" due-to="Volker Kleinschmidt, Gary Gregory"> CallStackUtils mishandles security manager check (partial fix.) </action> - </release> - <release version="2.6.0" date="2018-07-06" description="This is a maintenance release (Java 7 or above)."> - <action dev="ggregory" issue="POOL-336" type="update" due-to="Wolfgang Glas"> + </release> + <release version="2.6.0" date="2018-07-06" description="This is a maintenance release (Java 7 or above)."> + <action dev="ggregory" issue="POOL-336" type="update" due-to="Wolfgang Glas"> GenericObjectPool's borrowObject lock if create() fails with Error. </action> - <action dev="ggregory" issue="POOL-339" type="update"> + <action dev="ggregory" issue="POOL-339" type="update"> Update optional library cglib from 3.2.5 to 3.2.6. </action> - <action dev="markt" issue="POOL-337" type="fix" due-to="Reinald Verheij"> + <action dev="markt" issue="POOL-337" type="fix" due-to="Reinald Verheij"> Ensure cancelled eviction tasks are removed from scheduler. </action> - <action dev="ggregory" issue="POOL-341" type="update"> + <action dev="ggregory" issue="POOL-341" type="update"> Update optional library asm-util from 6.0 to 6.1.1. </action> - <action dev="ggregory" issue="POOL-342" type="update"> + <action dev="ggregory" issue="POOL-342" type="update"> Update optional library asm-util from 6.1.1 to 6.2. </action> - <action dev="ggregory" issue="POOL-338" type="fix" due-to="Michael C, Gary Gregory"> + <action dev="ggregory" issue="POOL-338" type="fix" due-to="Michael C, Gary Gregory"> GenericObjectPool constructor may throw an exception under OSGi. </action> - <action dev="ggregory" issue="POOL-324" type="fix" due-to="Jay Xu, Gary Gregory"> + <action dev="ggregory" issue="POOL-324" type="fix" due-to="Jay Xu, Gary Gregory"> org.apache.commons.pool3.impl.GenericObjectPool.getFactoryType() throws java.lang.ClassCastException. </action> - <action dev="ggregory" issue="POOL-344" type="fix" due-to="Yulin Wang"> + <action dev="ggregory" issue="POOL-344" type="fix" due-to="Yulin Wang"> Delete repeated call startEvictor. </action> - </release> - <release version="2.5.0" date="2017-12-16" description="This is a minor release (Java 7 or above)."> - <action dev="ggregory" issue="POOL-331" type="update"> + </release> + <release version="2.5.0" date="2017-12-16" description="This is a minor release (Java 7 or above)."> + <action dev="ggregory" issue="POOL-331" type="update"> Update from Java 6 to 7. </action> - <action dev="ggregory" issue="POOL-330" type="delete"> + <action dev="ggregory" issue="POOL-330" type="delete"> Drop Ant build. </action> - <action dev="ggregory" issue="POOL-332" type="add"> + <action dev="ggregory" issue="POOL-332" type="add"> ObjectPool and KeyedObject pool should extend Closeable. </action> - <action dev="ggregory" issue="POOL-333" type="update"> + <action dev="ggregory" issue="POOL-333" type="update"> Update optional dependency asm-util from 5.2 to 6.0. </action> - <action dev="ggregory" issue="POOL-334" type="update"> + <action dev="ggregory" issue="POOL-334" type="update"> org.apache.commons.pool3.impl.ThrowableCallStack.Snapshot is missing serialVersionUID. </action> - <action dev="mattsicker" issue="POOL-335" type="add"> + <action dev="mattsicker" issue="POOL-335" type="add"> Make abandoned logging stack trace requirements configurable. This also reverts the default behavior introduced by POOL-320. </action> - <action dev="mattsicker" issue="POOL-335" type="add"> + <action dev="mattsicker" issue="POOL-335" type="add"> Make abandoned logging stack trace requirements configurable. This also reverts the default behavior introduced by POOL-320. </action> - </release> - <release version="2.4.3" date="2017-10-24" description="This is a patch release, including bug fixes only (Java 6 or above)."> - <action dev="ggregory" issue="POOL-328" type="fix" due-to="Lorenzo Solano Martinez"> + </release> + <release version="2.4.3" date="2017-10-24" description="This is a patch release, including bug fixes only (Java 6 or above)."> + <action dev="ggregory" issue="POOL-328" type="fix" due-to="Lorenzo Solano Martinez"> Documentation with repeated words (sources, tests, and examples). </action> - <action dev="ggregory" issue="POOL-317" type="fix" due-to="KeiichiFujino"> + <action dev="ggregory" issue="POOL-317" type="fix" due-to="KeiichiFujino"> Correction of default value of softMinEvictableIdleTimeMillis in BaseObjectPoolConfig. </action> - <action dev="ggregory" issue="POOL-309" type="fix" due-to="jolestar, Roopam Patekar"> + <action dev="ggregory" issue="POOL-309" type="fix" due-to="jolestar, Roopam Patekar"> Fix misspellings from "destory" to "destroy". </action> - <action dev="markt" issue="POOL-306" type="fix" due-to="Adrian Crum"> + <action dev="markt" issue="POOL-306" type="fix" due-to="Adrian Crum"> Ensure BaseGenericObjectPool.IdentityWrapper#equals() follows the expected contract for equals(). </action> - <action dev="markt" issue="POOL-303" type="fix"> + <action dev="markt" issue="POOL-303" type="fix"> Ensure that threads do not block indefinitely if more than maxTotal threads try to borrow an object at the same time and the factory fails to create any objects. </action> - <action dev="markt" issue="POOL-280" type="update" due-to="Jacopo Cappellato"> + <action dev="markt" issue="POOL-280" type="update" due-to="Jacopo Cappellato"> Small refactoring of borrowObject() to reduce code duplication. </action> - <action dev="markt" issue="POOL-307" type="update" due-to="Anthony Whitford"> + <action dev="markt" issue="POOL-307" type="update" due-to="Anthony Whitford"> Replace inefficient use of keySet with entrySet in GKOP. </action> - <action dev="markt" issue="POOL-310" type="fix" due-to="Ivan Iliev"> + <action dev="markt" issue="POOL-310" type="fix" due-to="Ivan Iliev"> Ensure that threads using GKOP do not block indefinitely if more than maxTotal threads try to borrow objects with different keys at the same time and the factory destroys objects on return. </action> - <action dev="markt" type="fix"> + <action dev="markt" type="fix"> Ensure that any class name used for evictionPolicyClassName represents a class that implements EvictionPolicy. </action> - <action dev="markt" issue="POOL-315" type="fix" due-to="KeiichiFujino"> + <action dev="markt" issue="POOL-315" type="fix" due-to="KeiichiFujino"> Add a configurable delay (default 10 seconds) to wait when shutting down an Evictor to allow the associated thread time to complete any current evictions and to terminate. </action> - <action dev="markt" type="fix"> + <action dev="markt" type="fix"> Ensure that a call to GKOP preparePool() takes account of other threads that might create objects concurrently, particularly the Evictor. </action> - <action dev="mattsicker" issue="POOL-320" type="add"> + <action dev="mattsicker" issue="POOL-320" type="add"> Use more efficient stack walking mechanisms for usage tracking when possible. </action> - <action dev="ggregory" issue="POOL-322" type="update"> + <action dev="ggregory" issue="POOL-322" type="update"> Update optional cglib library from 3.1 to 3.2.5. </action> - <action dev="ggregory" issue="POOL-323" type="update"> + <action dev="ggregory" issue="POOL-323" type="update"> Update optional OW2 ASM from 5.0.4 to 5.2. </action> - </release> - <release version="2.4.2" date="2015-08-01" description="This is a patch release, including bug fixes only (Java 6 or above)."> - <action dev="psteitz" issue="POOL-298" type="fix"> + </release> + <release version="2.4.2" date="2015-08-01" description="This is a patch release, including bug fixes only (Java 6 or above)."> + <action dev="psteitz" issue="POOL-298" type="fix"> Changed default jmxNameBase in BaseObjectPoolConfig to the correct (null) default. </action> - <action dev="psteitz" issue="POOL-300" type="fix"> + <action dev="psteitz" issue="POOL-300" type="fix"> Added PrintWriter flush to DefaultPooledObject's printStackTrace method. </action> - </release> - <release version="2.4.1" date="2015-05-30" description= - "This is a patch release (Java 6 or above), replacing a defective binary jar in version 2.4. Other + </release> + <release version="2.4.1" date="2015-05-30" + description="This is a patch release (Java 6 or above), replacing a defective binary jar in version 2.4. Other than the build configuration, the source distribution for version 2.4.1 is identical to version 2.4."> - <action dev="psteitz" issue="POOL-297" type="fix"> + <action dev="psteitz" issue="POOL-297" type="fix"> Reverted cobertura plugin update that caused binary jar corruption. </action> - </release> - <release version="2.4" date="2015-05-27" description= - "This is a maintenance release that includes bug fixes and minor enhancements (Java 6 or above)."> - <action dev="psteitz" type="fix" issue="POOL-287" due-to="Caleb Spare and Thomas Neidhart"> + </release> + <release version="2.4" date="2015-05-27" + description="This is a maintenance release that includes bug fixes and minor enhancements (Java 6 or above)."> + <action dev="psteitz" type="fix" issue="POOL-287" due-to="Caleb Spare and Thomas Neidhart"> Fixed capacity leak when an object is offered from a GenericKeyedObjectPool while it is being validated by the evictor. </action> - <action dev="psteitz" type="fix" issue="POOL-283"> + <action dev="psteitz" type="fix" issue="POOL-283"> Eliminated the requirement that objects managed by GenericObjectPool or GenericKeyedObjectPool be discernible by equals. Prior to this fix, equal but distinct object instances could not be stored in the same pool. </action> - <action dev="psteitz" type="fix" issue="POOL-284"> + <action dev="psteitz" type="fix" issue="POOL-284"> Eliminated the requirement that object equality and hashcodes do not change while objects are under management by GenericObjectPool or GenericKeyedObjectPool. </action> - <action dev="markt" type="fix" issue="POOL-289" due-to="Luke Winkenbach"> + <action dev="markt" type="fix" issue="POOL-289" due-to="Luke Winkenbach"> Fixed class loading for custom EvictionPolicy implementations that may not be present in the class loader hierarchy of the Pool classes by falling back to the class loader of the current class. </action> - <action dev="psteitz" type="fix" issue="POOL-285"> + <action dev="psteitz" type="fix" issue="POOL-285"> Ensured that when an instance that has already been returned to a pool is returned again, the expected IllegalStateException is generated before the returning object is re-validated or re-passivated. </action> - <action dev="psteitz" type="add" issue="POOL-286"> + <action dev="psteitz" type="add" issue="POOL-286"> Added preparePool method to GenericObjectPool. </action> - <action dev="ggregory" type="update" issue="POOL-296"> + <action dev="ggregory" type="update" issue="POOL-296"> Update asm-util from 5.0.3 to 5.0.4. </action> - <action dev="psteitz" type="update" issue="POOL-293"> + <action dev="psteitz" type="update" issue="POOL-293"> Exposed getEvictionPolicy as protected in BaseGenericObjectPool. </action> - </release> - <release version="2.3" date="2014-12-30" description= -"This is a maintenance release that includes bug fixes and minor enhancements (Java 6 or above)."> - <action dev="psteitz" type="fix" issue="POOL-279" due-to="Jacopo Cappellato"> + </release> + <release version="2.3" date="2014-12-30" + description="This is a maintenance release that includes bug fixes and minor enhancements (Java 6 or above)."> + <action dev="psteitz" type="fix" issue="POOL-279" due-to="Jacopo Cappellato"> Eliminated possibility that DefaultPoolObject#getIdleTimeMillis() could return a negative value. Use by pool implementations would not hit this bug. </action> - <action dev="psteitz" type="fix" issue="POOL-275"> + <action dev="psteitz" type="fix" issue="POOL-275"> Made wrapped BaseProxyHandler.pooledObject volatile. </action> - <action dev="ecki" type="fix" issue="POOL-277" due-to="Lucas Pouzac"> + <action dev="ecki" type="fix" issue="POOL-277" due-to="Lucas Pouzac"> Replace synchronisation with lock-free maxBorrowWaitTimeMillis to increase scalability. </action> - <action dev="markt" type="fix" issue="POOL-276"> + <action dev="markt" type="fix" issue="POOL-276"> Ensure that objects are not validated on borrow when testOnBorrow is set to false, testOnCreate is set to true and the pool is exhausted at the point borrowObject() is called. </action> - <action dev="psteitz" type="fix" issue="POOL-270" due-to="Michael Berman"> + <action dev="psteitz" type="fix" issue="POOL-270" due-to="Michael Berman"> Fixed error in GenericKeyedObjectPool constructor causing minEvictableIdleTimeMillis to be used in place of timeBetweenEvictionRunsMillis in eviction timer setup when a GenericKeyedObjectPoolConfig instance is supplied to the constructor. </action> - <action dev="markt" type="fix" issue="POOL-263"> + <action dev="markt" type="fix" issue="POOL-263"> Fix a threading issue that meant that concurrent calls to close() and returnObject() could result in some returned objects not being destroyed. </action> - <action dev="psteitz" type="add" issue="POOL-262"> + <action dev="psteitz" type="add" issue="POOL-262"> Made fairness configurable for GenericObjectPool, GenericKeyedObjectPool. </action> - <action dev="markt" type="fix" issue="POOL-261"> + <action dev="markt" type="fix" issue="POOL-261"> Correctly mark cglib as an optional dependency and ensure that the OSGi manifest information reflects that. </action> - <action dev="markt" type="fix"> + <action dev="markt" type="fix"> Improve performance of statistics collection for pools that extend BaseGenericObjectPool. </action> - <action dev="psteitz" type="fix" issue="POOL-259"> + <action dev="psteitz" type="fix" issue="POOL-259"> Made client wait time statistics accurate when pools are configured to block indefinitely. Also modified computation to include latency clients experience due to waiting on factory methods. </action> - <action dev="ggregory" type="update" issue="POOL-273"> + <action dev="ggregory" type="update" issue="POOL-273"> Update cglib to 3.1 from 3.0. </action> - <action dev="ggregory" type="update" issue="POOL-274"> + <action dev="ggregory" type="update" issue="POOL-274"> Update asm-util to 5.0.3 from 4.0. </action> - <action dev="markt" type="fix"> + <action dev="markt" type="fix"> Prevent potential memory leaks when the Pool is dereferenced without being closed. </action> - <action dev="markt" type="fix"> + <action dev="markt" type="fix"> Prevent potential memory leaks with using an Evictor in a container environment. </action> - <action dev="markt" type="fix"> + <action dev="markt" type="fix"> Protect against a user provided eviction policy throwing an exception and stopping the Evictor thread. </action> - <action dev="markt" type="fix"> + <action dev="markt" type="fix"> Use the thread context class loader to load custom eviction policies. This allows application provided eviction policies to be used in a container environment when the pooling implementation is provided by the container. </action> - <action dev="markt" type="fix" issue="POOL-281"> + <action dev="markt" type="fix" issue="POOL-281"> Fix a potential infinite loop in the underlying Deque implementation. </action> - </release> - <release version="2.2" date="2014-02-24" description= -"This is a maintenance release (Java 6 or above) that adds a new testOnCreate configuration option + </release> + <release version="2.2" date="2014-02-24" + description="This is a maintenance release (Java 6 or above) that adds a new testOnCreate configuration option and fixes a small number of bugs."> - <action issue="POOL-248" dev="markt" type="fix" due-to="Warren Chen"> + <action issue="POOL-248" dev="markt" type="fix" due-to="Warren Chen"> Ensure that if an attempt is made to return an object multiple times that the current active and idle object counts are not corrupted. </action> - <action issue="POOL-249" dev="markt" type="fix" due-to="Ville Skyttä"> + <action issue="POOL-249" dev="markt" type="fix" due-to="Ville Skyttä"> Fix Javadoc issues when building docs with Java 8. </action> - <action dev="markt" type="fix"> + <action dev="markt" type="fix"> Fix the remaining Javadoc warnings. </action> - <action dev="markt" type="add"> + <action dev="markt" type="add"> Add a new validation configuration option testOnCreate that tests an object immediately after it is created. </action> - </release> - <release version="2.1" date="2013-12-30" description= -"This is a maintenance release (Java 6 or above) that includes a small number of new features as well as + </release> + <release version="2.1" date="2013-12-30" + description="This is a maintenance release (Java 6 or above) that includes a small number of new features as well as including bugfixes and test case improvements."> - <action issue="POOL-243" dev="psteitz" type="fix" due-to="Michal Sabo"> + <action issue="POOL-243" dev="psteitz" type="fix" due-to="Michal Sabo"> Added missing create counter decrement in GenericKeyedObjectPool create method on factory exception path. Prior to this fix, exceptions thrown by factory makeObject calls could leak per key capacity. </action> - <action issue="POOL-240" dev="psteitz" type="fix" due-to="Dan McNulty"> + <action issue="POOL-240" dev="psteitz" type="fix" due-to="Dan McNulty"> Ensured that blocked threads waiting on a depleted pool get served when objects are destroyed due to validation or passivation failures in returnObject or when a checked out instance is invalidated. </action> - <action issue="POOL-241" dev="markt" type="add" due-to="Bruno P. Kinoshita"> + <action issue="POOL-241" dev="markt" type="add" due-to="Bruno P. Kinoshita"> Expand the coverage of the unit tests. </action> - <action dev="markt" type="add"> + <action dev="markt" type="add"> Provide more control over the names under which Pools are registered in JMX so components using the pools can register the pools they use under a related name. </action> - <action dev="markt" type="add"> + <action dev="markt" type="add"> Include the number of times an object has been borrowed from the Pool when the DefaultPooledObject wrapper is used and expose this property via JMX. </action> - <action issue="POOL-245" dev="markt" type="fix" due-to="Bruno P. Kinoshita"> + <action issue="POOL-245" dev="markt" type="fix" due-to="Bruno P. Kinoshita"> Remove a duplicate null check and fix some typos in PoolUtils. </action> - <action issue="POOL-246" dev="markt" type="fix" due-to="Bruno P. Kinoshita"> + <action issue="POOL-246" dev="markt" type="fix" due-to="Bruno P. Kinoshita"> Make the toString() method of ErodingKeyedObjectPool consistent with the other pools. </action> - <action issue="POOL-245" dev="markt" type="add" due-to="Bruno P. Kinoshita"> + <action issue="POOL-245" dev="markt" type="add" due-to="Bruno P. Kinoshita"> Further expansion of the coverage of the unit tests. </action> - </release> - <release version="2.0" date="2013-11-11" description= -"This is a major new release (Java 6 or above) that provides significant performance improvements + </release> + <release version="2.0" date="2013-11-11" + description="This is a major new release (Java 6 or above) that provides significant performance improvements in high concurrency environments. Pools now provide a mechanism for tracking objects that have been borrowed from the pool but not returned. There have been numerous API changes to support these and other new features as well as to clarify behavior and improve consistency across the API. This release requires JDK level 1.6 or above."> - <action issue="POOL-211" dev="markt" type="add" due-to="Brad Koehn"> + <action issue="POOL-211" dev="markt" type="add" due-to="Brad Koehn"> Add support for proxy wrappers to ObjectPool and KeyedObjectPool. The primary advantage of these wrappers is that use of pooled objects is prevented after they have been returned to the pool. </action> - <action issue="POOL-229" dev="psteitz" type="update"> + <action issue="POOL-229" dev="psteitz" type="update"> Added abandoned object removal (moved from DBCP) to GenericObjectPool. </action> - <action issue="POOL-221" dev="markt" type="fix" > + <action issue="POOL-221" dev="markt" type="fix"> PooledObject.state does not need to be volatile </action> - <action issue="POOL-220" dev="markt" type="fix"> + <action issue="POOL-220" dev="markt" type="fix"> Suppress a FindBugs warning </action> - <action issue="POOL-217" dev="markt" type="update" due-to="sebb"> + <action issue="POOL-217" dev="markt" type="update" due-to="sebb"> Use an IODH for PoolUtils.MIN_IDLE_TIMER </action> - <action issue="POOL-216" dev="markt" type="update" > + <action issue="POOL-216" dev="markt" type="update"> GenericKeyedObjectPool.ensureMinIdle(K) does not need to check getMinIdlePerKey(). </action> - <action issue="POOL-215" dev="markt" type="fix" > + <action issue="POOL-215" dev="markt" type="fix"> GenericKeyedObjectPool - multiple mutable fields not published safely. </action> - <action issue="POOL-214" dev="markt" type="fix" > + <action issue="POOL-214" dev="markt" type="fix"> GenericObjectPool.evictionPolicy not thread-safe </action> - <action issue="POOL-212" dev="markt" type="fix" > + <action issue="POOL-212" dev="markt" type="fix"> GenericObjectPool allows maxIdle < minIdle </action> - <action issue="POOL-207" dev="markt" type="fix" > + <action issue="POOL-207" dev="markt" type="fix"> GenericKeyedObjectPool.clear() has unnecessary null check of objectDequeue </action> - <action issue="POOL-201" dev="markt" type="fix" > + <action issue="POOL-201" dev="markt" type="fix"> Classes Generic[Keyed]ObjectPoolConfig are generic - but why? </action> - <action issue="POOL-200" dev="markt" type="fix" > + <action issue="POOL-200" dev="markt" type="fix"> GOP/GKOP don't consistently use getters to access fields </action> - <action issue="POOL-199" dev="markt" type="fix" > + <action issue="POOL-199" dev="markt" type="fix"> GOP/GKOP evict() method is not synchronized and is not thread-safe </action> - <action issue="POOL-197" dev="markt" type="fix" > + <action issue="POOL-197" dev="markt" type="fix"> PooledObject: risky init of lastBorrowTime & lastReturnTime </action> - <action issue="POOL-196" dev="markt" type="fix" > + <action issue="POOL-196" dev="markt" type="fix"> PooledObject.getActiveTimeMillis() does not synch. access to lastReturnTime and lastBorrowTime </action> - <action issue="POOL-194" dev="simonetripodi" type="update" date="2011-12-12"> + <action issue="POOL-194" dev="simonetripodi" type="update" date="2011-12-12"> Replace synchronized blocks in PoolUtils with Read/Write locks. </action> - <action issue="POOL-83" dev="simonetripodi" type="update" date="2011-04-28"> + <action issue="POOL-83" dev="simonetripodi" type="update" date="2011-04-28"> Support Java 1.5 Generics. </action> - <action issue="POOL-186" dev="simonetripodi" type="update" date="2011-04-28"> + <action issue="POOL-186" dev="simonetripodi" type="update" date="2011-04-28"> Developer documentation and examples have to be updated once the 2.0 repackaging has been done </action> - <action dev="markt" type="update"> + <action dev="markt" type="update"> Switch GOP to use a pooling mechanism based on java.util.concurrent and a LinkedBlockingQueue implementation from Apache Harmony (originally by Doug Lea and the JSR-166 expert group). </action> - <action dev="markt" type="update"> + <action dev="markt" type="update"> Make deprecated protected attributes private, requiring that access is via the appropriate getters. </action> - <action dev="markt" type="update"> + <action dev="markt" type="update"> Code clean-up. Add missing @Override annotations, remove unused code, remove deprecated code and unnecessary code. </action> - <action dev="markt" type="update"> + <action dev="markt" type="update"> Introduce an Enum (WhenExhaustedAction) to control pool behavior when no more objects are available to allocate. </action> - <action dev="markt" type="update"> + <action dev="markt" type="update"> Remove WhenExhuastedAction.GROW since it is equivalent to WhenExhuastedAction.FAIL with a maxActive value of Integer.MAX_VALUE. </action> - <action issue="POOL-188" dev="markt" type="fix" due-to="sebb"> + <action issue="POOL-188" dev="markt" type="fix" due-to="sebb"> Remove confusing method PoolUtils.ErodingKeyedObjectPool.numIdle(K key). </action> - <action issue="POOL-155" dev="markt" type="update"> + <action issue="POOL-155" dev="markt" type="update"> Guard against multiple returns of the same object to the pool and ensure that only objects borrowed from the pool are returned to it. </action> - <action issue="POOL-150" dev="markt" type="fix"> + <action issue="POOL-150" dev="markt" type="fix"> Ensure GKOP.preparePool() throws an exception if no factory has been defined. </action> - <action issue="POOL-134" dev="markt" type="fix"> + <action issue="POOL-134" dev="markt" type="fix"> Add the ability to specify a per call wait time when borrowing an object. </action> - <action issue="POOL-121" dev="markt" type="fix"> + <action issue="POOL-121" dev="markt" type="fix"> Provide a name for the eviction timer thread. </action> - <action dev="markt" type="update"> + <action dev="markt" type="update"> Remove setFactory() method from GOP. </action> - <action issue="POOL-173" dev="markt" type="fix"> + <action issue="POOL-173" dev="markt" type="fix"> Reduce duplication in configuration code. </action> - <action issue="POOL-178" dev="markt" type="fix"> + <action issue="POOL-178" dev="markt" type="fix"> Re-factor common code into common base classes. </action> - <action issue="POOL-172" dev="markt" type="update"> + <action issue="POOL-172" dev="markt" type="update"> Expose GOP and GKOP attributes via JMX. </action> - <action issue="POOL-98" dev="markt" type="update"> + <action issue="POOL-98" dev="markt" type="update"> Add additional attributes (also accessible via JMX) for monitoring. </action> - <action dev="markt" type="update"> + <action dev="markt" type="update"> Change meaning of zero for maxWait to a maximum wait of zero milliseconds rather than the unexpected infinite wait. </action> - <action issue="POOL-100" dev="markt" type="fix"> + <action issue="POOL-100" dev="markt" type="fix"> Allow custom eviction policies to be defined. </action> - <action issue="POOL-211" dev="markt" type="add" due-to="Brad Koehn"> + <action issue="POOL-211" dev="markt" type="add" due-to="Brad Koehn"> Add support for proxy wrappers for ObjectPool and KeyedObjectPool. The primary advantage of using these wrappers is that use of pooled objects is prevented after they have been returned to the pool. </action> - </release> - <release version="1.6" date="2012-01-07" description="Adds generics (Java 5 or above)."> - <action dev="ggregory" type="add" issue="POOL-208"> + </release> + <release version="1.6" date="2012-01-07" description="Adds generics (Java 5 or above)."> + <action dev="ggregory" type="add" issue="POOL-208"> Support Java 1.5 Generics in version 1.x. </action> - </release> - <release version="1.5.7" date="2011-12-20" description="This is a patch release, including bugfixes only."> - <action dev="psteitz" type="fix" issue="POOL-189" due-to="Bill Speirs"> + </release> + <release version="1.5.7" date="2011-12-20" description="This is a patch release, including bugfixes only."> + <action dev="psteitz" type="fix" issue="POOL-189" due-to="Bill Speirs"> Awaken threads waiting on borrowObject when a pool has been closed and have them throw IllegalStateException. Prior to the fix for this issue, threads waiting in borrowObject when close was invoked on GOP or GKOP would block indefinitely. </action> - <action dev="psteitz" type="fix" issue="POOL-192" due-to="Helge Dannenberg"> + <action dev="psteitz" type="fix" issue="POOL-192" due-to="Helge Dannenberg"> Corrected total internal processing counter update in destroy. Prior to the fix for this issue, clear(key) was leaking capacity associated with elements in the pool being cleared. </action> - </release> - <release version="1.5.6" date="2011-04-03" description="This is a patch release, including bugfixes only."> - <action dev="markt" type="fix" issue="POOL-179" due-to="Axel Grossmann"> + </release> + <release version="1.5.6" date="2011-04-03" description="This is a patch release, including bugfixes only."> + <action dev="markt" type="fix" issue="POOL-179" due-to="Axel Grossmann"> Correctly handle an InterruptedException when waiting for an object from the pool. </action> - <action dev="markt" type="fix" issue="POOL-180"> + <action dev="markt" type="fix" issue="POOL-180"> Only stop tracking objects for a key when there are no idle objects, no active objects and no objects being processed. </action> - <action dev="markt" type="update" issue="POOL-181"> + <action dev="markt" type="update" issue="POOL-181"> Make BaseObjectPool.isClosed() public. </action> - <action dev="markt" type="fix" issue="POOL-184" due-to="Adrian Nistor"> + <action dev="markt" type="fix" issue="POOL-184" due-to="Adrian Nistor"> Correct bug that could lead to inappropriate pool starvation when evict() and borrowObject() are called concurrently. </action> - <action dev="markt" type="fix" due-to="psteitz"> + <action dev="markt" type="fix" due-to="psteitz"> Fix performance issues when object destruction has latency. </action> - </release> - <release version="1.5.5" date="2010-09-10" description= - "This is a patch release, including bugfixes, documentation improvements and some deprecations + </release> + <release version="1.5.5" date="2010-09-10" + description="This is a patch release, including bugfixes, documentation improvements and some deprecations in preparation for pool 2.0."> - <action dev="psteitz" type="update" issue="POOL-169"> + <action dev="psteitz" type="update" issue="POOL-169"> In preparation for pool 2.0, deprecated direct access to protected fields and setFactory methods. In pool 2.0, pool object factories will be immutable. </action> - <action dev="psteitz" type="fix" issue="POOL-158"> + <action dev="psteitz" type="fix" issue="POOL-158"> Made GenericKeyedObjectPool._minIdle volatile. </action> - <action dev="markt" type="fix" issue="POOL-161"> + <action dev="markt" type="fix" issue="POOL-161"> Made the default context class loader for the eviction thread the same loader that loads the library to prevent memory leaks in multiple class loader environments. </action> - <action dev="sebb" type="update" issue="POOL-166"> + <action dev="sebb" type="update" issue="POOL-166"> GenericKeyedObjectPool.destroy could use entrySet() rather than keySet() followed by get() </action> - <action dev="psteitz" type="fix" issue="POOL-157" due-to="David Hu"> + <action dev="psteitz" type="fix" issue="POOL-157" due-to="David Hu"> GenericObjectPool and GenericKeyedObjectPool setFactory methods destroy idle instances in the pool by contract. Prior to the fix for this issue, newly set factories were being used to destroy idle instances, rather than the factories used to create them. The setFactory methods have also been deprecated, to be removed in version 2.0. </action> - <action dev="sebb" type="update" issue="POOL-156"> + <action dev="sebb" type="update" issue="POOL-156"> ObjectPool classes can ignore Throwable. Added consistent handling for Throwables that are normally swallowed including always re-throwing certain Throwables (e.g. ThreadDeath). </action> - <action dev="markt" type="fix" issue="POOL-162"> + <action dev="markt" type="fix" issue="POOL-162"> When waiting threads are interrupted, GOP, GKOP may leak capacity. </action> - <action dev="psteitz" type="fix" issue="POOL-154" due-to="Glen Mazza"> + <action dev="psteitz" type="fix" issue="POOL-154" due-to="Glen Mazza"> Documentation for the close method in GenericObjectPool and GenericKeyedObjectPool incorrectly states that this method does not clear the pool. </action> - </release> - <release version="1.5.4" date="2009-11-20" description= - "This is a patch release containing a fix for POOL-152, a regression + </release> + <release version="1.5.4" date="2009-11-20" + description="This is a patch release containing a fix for POOL-152, a regression introduced in version 1.5."> - <action dev="markt" type="fix" issue="POOL-152" due-to="Bushov Alexander"> + <action dev="markt" type="fix" issue="POOL-152" due-to="Bushov Alexander"> GenericObjectPool can block forever in borrowObject when the pool is exhausted and a newly created object fails validation. When borrowing an object if a new object is created but validate fails, the latch should not be returned to the queue as an exception will be thrown. </action> - </release> - <release version="1.5.3" date="2009-09-21" description= -"This is a patch release containing a fix for POOL-149, a regression + </release> + <release version="1.5.3" date="2009-09-21" + description="This is a patch release containing a fix for POOL-149, a regression introduced in version 1.5."> - <action dev="markt" type="fix" issue="POOL-149" due-to="Shuyang Zhou"> + <action dev="markt" type="fix" issue="POOL-149" due-to="Shuyang Zhou"> Fix case where a thread could end up waiting indefinitely even if objects were available. Also fixes a couple of leaks in the internal processing object count that could lead to pool exhaustion. </action> - </release> - <release version="1.5.2" date="2009-07-12" description= -"This is a patch release containing fixes for POOL-146 and POOL-147, regressions + </release> + <release version="1.5.2" date="2009-07-12" + description="This is a patch release containing fixes for POOL-146 and POOL-147, regressions introduced in version 1.5."> - <action dev="markt" type="fix" issue="POOL-146"> + <action dev="markt" type="fix" issue="POOL-146"> Handle the case where one key has reached maxActive but other keys have not. Prior to the fix for this issue, threads waiting on objects from keyed pools still having instances available could be blocked by a thread requesting an instance from an exhausted pool. </action> - <action dev="markt" type="fix" issue="POOL-147" due-to="Giambattista Bloisi"> + <action dev="markt" type="fix" issue="POOL-147" due-to="Giambattista Bloisi"> Fix case where a thread could end up waiting indefinitely even if objects were available. </action> - <action dev="markt" type="fix" issue="POOL-145"> + <action dev="markt" type="fix" issue="POOL-145"> Ensure that the GenericKeyedObjectPool idle object evictor does not visit the same instance more than once per eviction run. </action> - </release> - <release version="1.5.1" date="2009-06-16" description= -"This is a patch release containing a fix for POOL-144, a regression introduced + </release> + <release version="1.5.1" date="2009-06-16" + description="This is a patch release containing a fix for POOL-144, a regression introduced in version 1.5."> - <action dev="markt" type="fix" issue="POOL-144"> + <action dev="markt" type="fix" issue="POOL-144"> When exhausted action is set to WHEN_EXHAUSTED_BLOCK, maxwait is positive and client threads time out waiting for idle objects, capacity can be "leaked" from GenericObjectPools and GeneritCkeyedObjectPools. </action> - </release> - <release version="1.5" date="2009-06-10" description= -"This is a maintenance release including several important bug fixes. This release + </release> + <release version="1.5" date="2009-06-10" + description="This is a maintenance release including several important bug fixes. This release is source and binary compatible with versions 1.3 and 1.4 of commons pool. In addition to resolving some important concurrency-related bugs (POOL-135, POOL-125, POOL-29 POOL-107) this release implements a fairness algorithm to ensure that threads waiting for available object instances from GenericObjectPools and GenericKeyedObjectPools are served in request arrival order."> - <action dev="markt" type="fix" issue="POOL-139" due-to="Sebastian Bazley"> + <action dev="markt" type="fix" issue="POOL-139" due-to="Sebastian Bazley"> StackKeyedObjectPool.getNumActive() needs to be synchronized. </action> - <action dev="markt" type="fix" issue="POOL-137" due-to="Sebastian Bazley"> + <action dev="markt" type="fix" issue="POOL-137" due-to="Sebastian Bazley"> Inconsistent synchronization in GenericObjectPool; constant fields should be final. </action> - <action dev="markt" type="fix" issue="POOL-75" due-to="Takayuki Kaneko and Gordon Mohr"> + <action dev="markt" type="fix" issue="POOL-75" due-to="Takayuki Kaneko and Gordon Mohr"> GenericObjectPool not FIFO with respect to borrowing threads. </action> - <action dev="markt" type="fix" issue="POOL-135"> + <action dev="markt" type="fix" issue="POOL-135"> _numActive > _maxActive under load </action> - <action dev="markt" type="fix" issue="POOL-125"> + <action dev="markt" type="fix" issue="POOL-125"> Insufficient control over concurrent access to pooled objects by Evictor, client threads. </action> - <action dev="markt" type="fix" issue="POOL-107"> + <action dev="markt" type="fix" issue="POOL-107"> Number of connections created has crossed more than maxActive. </action> - <action dev="markt" type="fix" issue="POOL-122"> + <action dev="markt" type="fix" issue="POOL-122"> java.util.Timer in EvictionTimer does not recover from OutOfMemoryError in Evictor. </action> - <action dev="markt" type="fix" issue="POOL-133"> + <action dev="markt" type="fix" issue="POOL-133"> Failed object creation may result in invalid active count in GKOP. </action> - </release> - <release version="1.4" date="2008-01-15" description= -"This is a maintenance release including numerous bug fixes. This release + </release> + <release version="1.4" date="2008-01-15" + description="This is a maintenance release including numerous bug fixes. This release is source and binary compatible with version 1.3 of commons pool, but there are some behavior changes introduced to resolve bugs, remove ambiguity or improve robustness. Among these are the change in default behavior of @@ -1170,8 +1171,7 @@ threadsafe."> environments, can lead to memory leaks and/or prevent applications from shutting down or reloading cleanly. </action> - <action dev="psteitz" type="fix" issue="POOL-93" - due-to="Mark Thomas"> + <action dev="psteitz" type="fix" issue="POOL-93" due-to="Mark Thomas"> Reduced synchronization in GenericObjectPool, GenericKeyedObjectPool. Factory method activations within synchronized blocks were causing performance problems in DBCP and other applications where factory @@ -1229,7 +1229,7 @@ threadsafe."> base implementation of close in BaseObjectPool no longer throws IllegalStateException when invoked on an already closed pool. </action> - + </release> <release version="1.3" date="2006-04-06" description="1.x bugfix release">
