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 &lt; 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 &amp; 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">


Reply via email to