blob: 858a878e67722117f186783caac663f463b52da9 [file] [log] [blame]
<?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.
-->
<document>
<properties>
<title>Commons Pool Changes</title>
<author email="sandymac@apache.org">Sandy McArthur</author>
</properties>
<body>
<release version="2.0" date="pending" description="Significant clean ups">
<action dev="sandymac" type="update">
Where there is no factory calling addObject is bogus so throw an IllegalStateExecption.
</action>
<action dev="sandymac" type="fix">
Edited all KeyedObjectPool related JavaDocs to have meaningful and correct content.
</action>
<action dev="sandymac" type="fix">
Implemented unit tests to verify KeyedObjectPool implementations conformed to Pool 2 contracts.
Updated GenericKeyedObjectPool and StackKeyedObjectPool to conformant behavior.
</action>
<action dev="sandymac" type="fix">
Don't ignore maxTotal parameter in
<code>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)</code>
</action>
<action dev="sandymac" type="fix">
Change StackKeyedObjectPool to discard stalest, not freshest, idle object when maxSleeping is reached.
</action>
<action dev="sandymac" type="fix">
Edited all ObjectPool related JavaDocs to have meaningful and correct content.
</action>
<action dev="sandymac" type="fix">
Implemented until tests to verify ObjectPool implementations conformed to Pool 2 contracts.
Updated GenericObjectPool, StackObjectPool, and SoftReferenceObjectPool to conformant behavior.
</action>
<action dev="sandymac" type="fix">
Fix JavaDocs to conform to Pool 2 contracts.
</action>
<action dev="sandymac" type="update">
Improved SoftReferenceObjectPool getNumIdle accuracy.
</action>
<action dev="rdonkin" type="update">
<description>Updates to javadoc contracts for 2.0.</description>
<fixes issue="38660"/>
<fixes issue="38664"/>
<fixes issue="38666"/>
<fixes issue="38667"/>
<fixes issue="38669"/>
<fixes issue="38746"/>
<dueto name="Sandy McArthur"/>
</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.
<ul>
<li>Made LIFO/FIFO behavior configurable for GenericObjectPool and
GenericKeyedObjectPool, with default set back to LIFO
(reverting to 1.2 behavior)</li>
<li>Fixed GOP, GKOP evict method and added tests to ensure objects
are visited in oldest-to-youngest order</li>
<li>Changed backing store for GOP, GKOP pools back to Commons
Collections CursorableLinkedList (brought this class in,
repackaged with package scope).</li>
</ul>
</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 leads 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>
</release>
<release version="1.3" date="2006-pending" 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">
<description>GenericKeyedObjectPoolFactory Config Constructor is incorrect</description>
<fixes issue="24864"/>
</action>
<action dev="dirkv" type="fix">
<description>Not possible to extend GenericObjectPool.returnObject() without affecting addObject()</description>
<fixes issue="28638"/>
</action>
</release>
<release version="1.1" date="2003-10-20">
<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>