You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by rd...@apache.org on 2005/10/27 21:02:28 UTC
svn commit: r328923 -
/jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/impl/SoftReferenceObjectPool.java
Author: rdonkin
Date: Thu Oct 27 12:02:25 2005
New Revision: 328923
URL: http://svn.apache.org/viewcvs?rev=328923&view=rev
Log:
Added missed synchronization to SoftReferenceObjectPool. Submitted by Sandy McArthur. Issue #37228. Thanks to Mayur Naik for discovering and reporting these issues.
Modified:
jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/impl/SoftReferenceObjectPool.java
Modified: jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/impl/SoftReferenceObjectPool.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/impl/SoftReferenceObjectPool.java?rev=328923&r1=328922&r2=328923&view=diff
==============================================================================
--- jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/impl/SoftReferenceObjectPool.java (original)
+++ jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/impl/SoftReferenceObjectPool.java Thu Oct 27 12:02:25 2005
@@ -78,7 +78,7 @@
return obj;
}
- public void returnObject(Object obj) throws Exception {
+ public synchronized void returnObject(Object obj) throws Exception {
assertOpen();
boolean success = true;
if(!(_factory.validateObject(obj))) {
@@ -92,13 +92,11 @@
}
boolean shouldDestroy = !success;
- synchronized(this) {
- _numActive--;
- if(success) {
- _pool.add(new SoftReference(obj));
- }
- notifyAll(); // _numActive has changed
+ _numActive--;
+ if(success) {
+ _pool.add(new SoftReference(obj));
}
+ notifyAll(); // _numActive has changed
if(shouldDestroy) {
try {
@@ -121,20 +119,21 @@
* Create an object, and place it into the pool.
* addObject() is useful for "pre-loading" a pool with idle objects.
*/
- public void addObject() throws Exception {
+ public synchronized void addObject() throws Exception {
+ assertOpen();
Object obj = _factory.makeObject();
- synchronized(this) {
- _numActive++; // A little slimy - must do this because returnObject decrements it.
- this.returnObject(obj);
- }
+ _numActive++; // A little slimy - must do this because returnObject decrements it.
+ returnObject(obj);
}
/** Returns an approximation not less than the of the number of idle instances in the pool. */
- public int getNumIdle() {
+ public synchronized int getNumIdle() {
+ assertOpen();
return _pool.size();
}
- public int getNumActive() {
+ public synchronized int getNumActive() {
+ assertOpen();
return _numActive;
}
@@ -156,14 +155,14 @@
_pool.clear();
}
- synchronized public void close() throws Exception {
+ public synchronized void close() throws Exception {
clear();
_pool = null;
_factory = null;
super.close();
}
- synchronized public void setFactory(PoolableObjectFactory factory) throws IllegalStateException {
+ public synchronized void setFactory(PoolableObjectFactory factory) throws IllegalStateException {
assertOpen();
if(0 < getNumActive()) {
throw new IllegalStateException("Objects are already active");
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org