| Version |
Date |
Description |
| 1.5
|
TBD |
TBD |
| 1.4
|
2008-01-15 |
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. |
| 1.3
|
2006-04-06 |
1.x bugfix release |
| 1.2
|
2004-06-07 |
bugfixes |
| 1.1
|
2003-10-20 |
|
| 1.0.1
|
2002-08-12 |
|
| 1.0
|
2002-05-04 |
|
| Type |
Changes |
By |
 |
|
sandymac
|
 |
Changed StackKeyedObjectPool to discard stalest, not freshest, idle object when maxSleeping is reached. |
sandymac
|
 |
Allowed blocked threads in GenericObjectPool borrowObject to be interrupted. Fixes POOL-102
. Thanks to John Sumsion. |
psteitz
|
 |
Fixes POOL-86
. |
psteitz
|
 |
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). Fixes POOL-110
. Thanks to Alexander Pogrebnyak. |
psteitz
|
 |
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. Fixes POOL-97
. Thanks to Mark Thomas. |
psteitz
|
 |
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. Fixes POOL-93
. Thanks to Mark Thomas. |
psteitz
|
 |
Made _testOnBorrow, _testOnReturn volatile and removed synchronization
in associated getters and setters in GenericObjectPool,
GenericKeyedObjectPool. Made getNumIdle synchronized in
StackKeyedObjectPool. Fixes POOL-113
. |
psteitz
|
 |
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. Fixes POOL-116
. |
psteitz
|
 |
Made behavior on instance validation failure consistent across pools,
eliminating possible infinite loops in StackObjectPool,
StackKeyedObjectPool, SoftReferenceObjectPool when factory fails to
create valid objects. Fixes POOL-117
. |
|
 |
When no factory has been defined, addObject now throws
IllegalStateExecption instead of NullPointerException for all pools. |
sandymac
|
 |
SoftReferenceObjectPool. Improved the accuracy of getNumIdle by
"pruning" references to objects that have been garbage collected. |
sandymac
|
 |
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. |
sandymac
|
 |
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. |
sandymac
|
 |
StackKeyedObjectPool. Added validation check for objects returned
from borrowObject. |
psteitz
|
 |
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. |
sandymac
|
| Type |
Changes |
By |
 |
A large number of bug fixes. See release notes for changes. |
|
| Type |
Changes |
By |
 |
A lot of corner cases were fixed |
|
 |
Performance improvement by optimizing pool synchronization, the critical code paths were optimized by reducing pool synchronization but we also added more synchronization where needed |
|
 |
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) |
|
 |
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). |
|
 |
UML Class and sequence diagrams |
|
 |
See bugzilla for more changes |
|