<?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
    
          http://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.
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 
release process easy :-).

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.

To generate the release notes from this file:

mvn changes:announcement-generate -Prelease-notes [-Dchanges.version=nnn]

then tweak the formatting if necessary 
and commit

The <action> type attribute can be add,update,fix,remove.
-->

<document>
  <properties>
    <title>Apache Commons Pool Release Notes</title>
  </properties>
  <body>
  <release version="2.10.0" date="2021-05-28" description="This is a MMMM release (Java 8).">
    <!-- 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">
      Implement AbandonedConfig for GenericKeyedObjectPool #67.
    </action>
    <!-- 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">
      Replace C-style array declaration with Java style #80.
    </action>
    <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">
      Use diamond operator. #82. 
    </action>
    <action dev="ggregory" type="fix" due-to="Arturo Bernal">
      Code clean ups. #83.
    </action>
    <!-- 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">
      Bump actions/setup-java from v1.4.2 to v2, #47.
    </action>
    <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">
      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">
      Migrate to JUnit 5 #57.
    </action>
    <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">
      Bump actions/checkout from v2.3.3 to v2.3.4 #54.
    </action>
    <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">
      Update commons.japicmp.version 0.14.3 -> 0.15.3.
    </action>
    <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">
      Bump maven-checkstyle-plugin from 3.1.1 to 3.1.2 #61.
    </action>
    <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">
      Bump spotbugs from 4.2.1 to 4.2.3 #68, #73, #74.
    </action>
    <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">
      Bump maven-bundle-plugin from 5.1.1 to 5.1.2 #70.
    </action>
    <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).">
    <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">
      Update spotbugs from 4.0.6 to 4.1.3, #37, #41, #46.
    </action>
    <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">
      Update actions/setup-java from v1.4.0 to v1.4.2 #42.
    </action>
    <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).">
    <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">
      [Javadoc] Add missing @throws comment in PoolUtils. #27.
    </action>
    <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">
      Added Automatic-Module-Name to support JPMS #31.
    </action>
    <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">
      Update site reports from maven-pmd-plugin 3.12.0 to 3.13.0.
    </action>
    <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">
      Update actions/checkout from v1 to v2.3.1 #33.
    </action>
    <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">
      Update Checkstyle plugin from 3.0.0 to 3.1.1.
    </action>
    <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">
      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).">
    <action dev="ggregory" issue="POOL-374" type="fix" due-to="Gary Gregory, Phil Steitz">
       org.apache.commons.pool2.impl.GenericKeyedObjectPool.returnObject(K, T) should throw IllegalStateException instead of NullPointerException when a key is not found in the pool map.
    </action>
    <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">
      Fixed regression from original fix for POOL-356 which could result in NPE when destroying objects.
    </action>
    <action dev="psteitz" issue="POOL-326" type="fix" due-to="Phil Steitz">
      Eliminated NPE / ISE exceptions due to keyed pools being prematurely removed.
    </action>
    <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">
      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">
      Deprecate PoolUtils.prefill(ObjectPool, int) in favor of ObjectPool.addObjects(int).
    </action>
    <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">
      Deprecate PoolUtils.prefill(KeyedObjectPool, Collection, int) in favor of KeyedObjectPool.addObjects(Collection, int).
    </action>
    <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">
      [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).">
    <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">
       Update ASM from 7.0 to 7.1
    </action>
    <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">
      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">
      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">
      Add org.apache.commons.pool2.PooledObject#getBorrowedCount().
    </action>
    <action dev="ggregory" type="add" issue="POOL-371" due-to="Matt Sicker, Gary Gregory">
      Add org.apache.commons.pool2.PooledObject#setRequireFullStackTrace(boolean).
    </action>
    <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).">
    <action dev="ggregory" issue="POOL-362" type="fix">
       Always null out org.apache.commons.pool2.impl.BaseGenericObjectPool.evictionIterator to match org.apache.commons.pool2.impl.BaseGenericObjectPool.evictor.
    </action>
    <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">
       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).">
    <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">
      Fix deadlock on massive concurrent requests
    </action>
    <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">
      Move common configuration setter to BaseGenericObjectPool #9.
    </action>
    <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">
      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">
      NullPointerException closing multiple GenericObjectPools.
    </action>
    <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">
      Threading issue, NullPointerException and IllegalStateException in GenericKeyedObjectPool.
    </action>
    <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).">
    <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">
      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">
      Ensure cancelled eviction tasks are removed from scheduler.
    </action>
    <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">
      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">
      GenericObjectPool constructor may throw an exception under OSGi.
    </action>
    <action dev="ggregory" issue="POOL-324" type="fix" due-to="Jay Xu, Gary Gregory">
      org.apache.commons.pool2.impl.GenericObjectPool.getFactoryType() throws java.lang.ClassCastException.
    </action>
    <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).">
    <action dev="ggregory" issue="POOL-331" type="update">
      Update from Java 6 to 7.
    </action>
    <action dev="ggregory" issue="POOL-330" type="delete">
      Drop Ant build.
    </action>
    <action dev="ggregory" issue="POOL-332" type="add">
      ObjectPool and KeyedObject pool should extend Closeable.
    </action>
    <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">
      org.apache.commons.pool2.impl.ThrowableCallStack.Snapshot is missing serialVersionUID.
    </action>
    <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">
      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).">
    <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">
      Correction of default value of softMinEvictableIdleTimeMillis in BaseObjectPoolConfig.
    </action>
    <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">
      Ensure BaseGenericObjectPool.IdentityWrapper#equals() follows the expected
      contract for equals(). 
    </action>
    <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">
      Small refactoring of borrowObject() to reduce code duplication.
    </action>
    <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">
      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">
      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">
      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">
      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">
      Use more efficient stack walking mechanisms for usage tracking when possible.
    </action>
    <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">
      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).">
    <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">
      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), 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">
      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).">
    <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">
      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">
      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">
      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">
      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">
      Added preparePool method to GenericObjectPool.
    </action>
    <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">
      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).">  
    <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">
      Made wrapped BaseProxyHandler.pooledObject volatile.
    </action>
    <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">
      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">
      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">
      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">
      Made fairness configurable for GenericObjectPool, GenericKeyedObjectPool.
    </action>
    <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">
      Improve performance of statistics collection for pools that extend
      BaseGenericObjectPool.
    </action>
    <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">
      Update cglib to 3.1 from 3.0.
    </action>
    <action dev="ggregory" type="update" issue="POOL-274">
      Update asm-util to 5.0.3 from 4.0.
    </action>
    <action dev="markt" type="fix">
      Prevent potential memory leaks when the Pool is dereferenced without being
      closed.
    </action>
    <action dev="markt" type="fix">
      Prevent potential memory leaks with using an Evictor in a container
      environment.
    </action>
    <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">
      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">
      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) 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">
      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ä">
      Fix Javadoc issues when building docs with Java 8.
    </action>
    <action dev="markt" type="fix">
      Fix the remaining Javadoc warnings.
    </action>
    <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) 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">
      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">
      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">
      Expand the coverage of the unit tests.
    </action>
    <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">
      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">
      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">
      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">
      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) 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">
      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">
      Added abandoned object removal (moved from DBCP) to GenericObjectPool.
    </action>
    <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">
      Suppress a FindBugs warning
    </action>
    <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" >
      GenericKeyedObjectPool.ensureMinIdle(K) does not need to check getMinIdlePerKey().
    </action>
    <action issue="POOL-215" dev="markt" type="fix" >
      GenericKeyedObjectPool - multiple mutable fields not published safely.
    </action>
    <action issue="POOL-214" dev="markt" type="fix" >
      GenericObjectPool.evictionPolicy not thread-safe
    </action>
    <action issue="POOL-212" dev="markt" type="fix" >
      GenericObjectPool allows maxIdle &lt; minIdle
    </action>
    <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" >
      Classes Generic[Keyed]ObjectPoolConfig are generic - but why? 
    </action>
    <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" >
      GOP/GKOP evict() method is not synchronized and is not thread-safe
    </action>
    <action issue="POOL-197" dev="markt" type="fix" >
      PooledObject: risky init of lastBorrowTime &amp; lastReturnTime
    </action>
    <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">
      Replace synchronized blocks in PoolUtils with Read/Write locks.
    </action>
    <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">
      Developer documentation and examples have to be updated once the 2.0 repackaging has been done
    </action>
    <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">
      Make deprecated protected attributes private, requiring that access is via
      the appropriate getters. 
    </action>
    <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">
      Introduce an Enum (WhenExhaustedAction) to control pool behavior when no
      more objects are available to allocate.
    </action>
    <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">
      Remove confusing method PoolUtils.ErodingKeyedObjectPool.numIdle(K key).
    </action>
    <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">
      Ensure GKOP.preparePool() throws an exception if no factory has been
      defined.
    </action>
    <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">
      Provide a name for the eviction timer thread.
    </action>
    <action dev="markt" type="update">
      Remove setFactory() method from GOP.
    </action>
    <action issue="POOL-173" dev="markt" type="fix">
      Reduce duplication in configuration code.
    </action>
    <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">
      Expose GOP and GKOP attributes via JMX.
    </action>
    <action issue="POOL-98" dev="markt" type="update">
      Add additional attributes (also accessible via JMX) for monitoring.
    </action>
    <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">
      Allow custom eviction policies to be defined.
    </action>
    <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).">
    <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">
      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">
      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">
      Correctly handle an InterruptedException when waiting for an object from
      the pool.
    </action>
    <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">
      Make BaseObjectPool.isClosed() public.
    </action>
    <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">
      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
      in preparation for pool 2.0.">
    <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">
      Made GenericKeyedObjectPool._minIdle volatile.
    </action>
    <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">
      GenericKeyedObjectPool.destroy could use entrySet() rather than keySet() followed by get()
    </action>
    <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">
      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">
      When waiting threads are interrupted, GOP, GKOP may leak capacity.
    </action>
    <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
introduced in version 1.5.">
    <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
introduced in version 1.5.">
    <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
introduced in version 1.5.">
    <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">
      Fix case where a thread could end up waiting indefinitely even if objects
      were available.
    </action>
    <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
in version 1.5.">
    <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
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">
      StackKeyedObjectPool.getNumActive() needs to be synchronized.
    </action>
    <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">
       GenericObjectPool not FIFO with respect to borrowing threads.
    </action>
    <action dev="markt" type="fix" issue="POOL-135">
      _numActive > _maxActive under load
    </action>
    <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">
      Number of connections created has crossed more than maxActive.
    </action>
    <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">
      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
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
GenericObjectPool and GenericKeyedObjectPool from FIFO back to LIFO queues
(as in 1.2 and earlier). The LIFO/FIFO behavior is now configurable. Some of
the extra synchronization included in version 1.3 was removed / refactored to
improve performance. The javadoc has also been made more complete and explicit.
See the detailed list of changes below for specifics on fixed bugs and behavior
changes in Commons Pool 1.4. This version of Commons Pool depends only on
JDK version 1.3 or higher. Classes implementing pools are all intended to be
threadsafe.">
      <action dev="sandymac" type="fix">
        Fixed constructor which was ignoring maxTotal parameter: 
          GenericKeyedObjectPool(KeyedPoolableObjectFactory factory, int maxActive, byte whenExhaustedAction,
          long maxWait, int maxIdle, int maxTotal, boolean testOnBorrow, boolean testOnReturn,
          long timeBetweenEvictionRunsMillis, int numTestsPerEvictionRun, long minEvictableIdleTimeMillis,
          boolean testWhileIdle)
      </action>
      <action dev="sandymac" type="fix">
        Changed StackKeyedObjectPool to discard stalest, not freshest, idle object when maxSleeping is reached.
      </action>
      <action dev="psteitz" type="fix" issue="POOL-102" due-to="John Sumsion">
        Allowed blocked threads in GenericObjectPool borrowObject to be interrupted.
      </action>
      <action dev="psteitz" type="fix" issue="POOL-86">
        Fixes to address idle object eviction and LIFO/FIFO behavior reported
        in POOL-86. Made LIFO/FIFO behavior configurable for GenericObjectPool and
        GenericKeyedObjectPool, with default set back to LIFO (reverting to 1.2 behavior).
        Fixed GOP, GKOP evict method and added tests to ensure objects are visited in
        oldest-to-youngest order. Changed backing store for GOP, GKOP pools back to Commons
        Collections CursorableLinkedList (brought this class in, repackaged with package scope).
      </action>
      <action dev="psteitz" type="fix" issue="POOL-110" due-to="Alexander Pogrebnyak">
        Changed the default setting for Config.softMinEvictableIdleTimeMillis to
        GenericObjectPool.DEFAULT_SOFT_MIN_EVICTABLE_IDLE_TIME_MILLIS (was
        being incorrectly defaulted to DEFAULT_MIN_EVICTABLE_IDLE_TIME_MILLIS).
      </action>
      <action dev="psteitz" type="fix" issue="POOL-97" due-to="Mark Thomas">
         Added a wrapper for the shared idle object eviction timer for all
         pools. The wrapper class wraps the Timer and keeps track of how many
         pools are using it. If no pools are using the timer, it is canceled.
         This prevents a thread being left running which, in application server
         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">
        Reduced synchronization in GenericObjectPool, GenericKeyedObjectPool.
        Factory method activations within synchronized blocks were causing
        performance problems in DBCP and other applications where factory
        methods could block. Fixes both POOL-93 and POOL-108.
      </action>
      <action dev="psteitz" type="fix" issue="POOL-113">
        Made _testOnBorrow, _testOnReturn volatile and removed synchronization
        in associated getters and setters in GenericObjectPool,
        GenericKeyedObjectPool. Made getNumIdle synchronized in
        StackKeyedObjectPool. 
      </action>
      <action dev="psteitz" type="fix" issue="POOL-116">
        Fixed an error in the GenericKeyedObjectPool constructor that takes
        a Config instance as a parameter. The minIdle setting in the Config
        was being ignored by the constructor.
      </action>
      <action def="psteitz" type="fix" issue="POOL-117">
        Made behavior on instance validation failure consistent across pools,
        eliminating possible infinite loops in StackObjectPool,
        StackKeyedObjectPool, SoftReferenceObjectPool when factory fails to
        create valid objects. 
      </action>
      <action dev="sandymac" type="update">
        When no factory has been defined, addObject now throws 
        IllegalStateExecption instead of NullPointerException for all pools.
      </action>
      <action dev="sandymac" type="update">
        SoftReferenceObjectPool. Improved the accuracy of getNumIdle by
        "pruning" references to objects that have been garbage collected.
      </action>
      <action dev="sandymac" type="update">
        GenericObjectPool, GenericKeyedObjectPool, SoftReferenceObjectPool,
        StackObjectPool. Eliminated IllegalStateExceptions when the following
        operations are attempted on a closed pool: getNumActive, getNumIdle, 
        returnObject, invalidateObject.  In each case, the operation is allowed
        to proceed, reporting the state of the pool that is being shut down, or
        destroying objects returning to the closed pool.
      </action>
      <action dev="sandymac" type="update">
        StackObjectPool, SoftReferenceObjectPool, GenericKeyedObjectPool. Allowed
        borrowObject to continue (either examining additional idle instances or
        with makeObject) when an exception is encountered activating an idle
        object instead of propagating the exception to the client.  Also made
        addObject propagate (not swallow) exceptions when passivating newly
        created instances. 
      </action>
      <action dev="psteitz" type="update">
        StackKeyedObjectPool. Added validation check for objects returned
        from borrowObject. 
      </action>
      <action dev="sandymac" type="update">
        BaseObjectPool, BaseKeyedObjectPool. Instead of throwing 
        UnsupportedOperationException, the base class implementations
        of getNumIdle and getNumActive return negative values. The
        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">
      <action type="fix">A large number of bug fixes. See release notes for changes.</action>
    </release>

    <release version="1.2" date="2004-06-07" description="bugfixes">
      <action dev="dirkv" type="fix">
           GenericKeyedObjectPoolFactory Config Constructor is incorrect
      </action>
      <action dev="dirkv" type="fix">
        Not possible to extend GenericObjectPool.returnObject() without affecting addObject()
      </action>
    </release>

    <release version="1.1" date="2003-10-20" description="bugfixes">
      <action type="fix">A lot of corner cases were fixed</action>
      <action type="fix">Performance improvement by optimizing pool synchronization, the critical code paths were optimized by reducing pool synchronization but we also added more synchronization where needed</action>
      <action type="fix">New minIdle feature: the minimum number of objects allowed in the pool before the evictor thread (if active) spawns new objects. (Note no objects are created when: numActive + numIdle >= maxActive)</action>
      <action type="fix">New maxTotal feature: a cap on the total number of instances controlled by a pool. Only for GenericKeyedObjectPool where maxActive is a cap on the number of active instances from the pool (per key).</action>
      <action type="fix">UML Class and sequence diagrams</action>
      <action type="fix">See bugzilla for more changes</action>
    </release>

    <release version="1.0.1" date="2002-08-12">
      <action type="fix">No change log available.</action>
    </release>

    <release version="1.0" date="2002-05-04">
      <action type="add">No change log available.</action>
    </release>
  </body>
</document>
