| <?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> |