Author: sandymac
Date: Tue Apr 18 18:43:56 2006
New Revision: 395102

URL: http://svn.apache.org/viewcvs?rev=395102&view=rev
Log:
The calls to BaseObjectPool.close() and BaseKeyedObjectPool.close() should not
by synchronized. Those methods are implicitly thread-safe and requiring
synchronization while calling them can introduce a high latency while trying to
close a pool when a slow [Keyed]PoolableObjectFactory is being used, eg: one
that does network IO.

Modified:
    
jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/impl/GenericKeyedObjectPool.java
    
jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/impl/GenericObjectPool.java
    
jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/impl/SoftReferenceObjectPool.java
    
jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/impl/StackKeyedObjectPool.java
    
jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/impl/StackObjectPool.java

Modified: 
jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/impl/GenericKeyedObjectPool.java
URL: 
http://svn.apache.org/viewcvs/jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/impl/GenericKeyedObjectPool.java?rev=395102&r1=395101&r2=395102&view=diff
==============================================================================
--- 
jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/impl/GenericKeyedObjectPool.java
 (original)
+++ 
jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/impl/GenericKeyedObjectPool.java
 Tue Apr 18 18:43:56 2006
@@ -1160,13 +1160,15 @@
         }
     }
 
-    public synchronized void close() throws Exception {
-        clear();
-        if (null != _evictor) {
-            _evictor.cancel();
-            _evictor = null;
-        }
+    public void close() throws Exception {
         super.close();
+        synchronized (this) {
+            clear();
+            if (null != _evictor) {
+                _evictor.cancel();
+                _evictor = null;
+            }
+        }
     }
 
     public synchronized void setFactory(KeyedPoolableObjectFactory factory) 
throws IllegalStateException {

Modified: 
jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/impl/GenericObjectPool.java
URL: 
http://svn.apache.org/viewcvs/jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/impl/GenericObjectPool.java?rev=395102&r1=395101&r2=395102&view=diff
==============================================================================
--- 
jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/impl/GenericObjectPool.java
 (original)
+++ 
jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/impl/GenericObjectPool.java
 Tue Apr 18 18:43:56 2006
@@ -971,10 +971,12 @@
         }
     }
 
-    public synchronized void close() throws Exception {
-        clear();
-        startEvictor(-1L);
+    public void close() throws Exception {
         super.close();
+        synchronized (this) {
+            clear();
+            startEvictor(-1L);
+        }
     }
 
     /**

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=395102&r1=395101&r2=395102&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
 Tue Apr 18 18:43:56 2006
@@ -234,9 +234,9 @@
         pruneClearedReferences();
     }
 
-    public synchronized void close() throws Exception {
-        clear();
+    public void close() throws Exception {
         super.close();
+        clear();
     }
 
     /**

Modified: 
jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/impl/StackKeyedObjectPool.java
URL: 
http://svn.apache.org/viewcvs/jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/impl/StackKeyedObjectPool.java?rev=395102&r1=395101&r2=395102&view=diff
==============================================================================
--- 
jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/impl/StackKeyedObjectPool.java
 (original)
+++ 
jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/impl/StackKeyedObjectPool.java
 Tue Apr 18 18:43:56 2006
@@ -401,9 +401,9 @@
      *
      * @throws Exception <strong>deprecated</strong>: implementations should 
silently fail if not all resources can be freed.
      */
-    public synchronized void close() throws Exception {
-        clear();
+    public void close() throws Exception {
         super.close();
+        clear();
     }
 
     /**

Modified: 
jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/impl/StackObjectPool.java
URL: 
http://svn.apache.org/viewcvs/jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/impl/StackObjectPool.java?rev=395102&r1=395101&r2=395102&view=diff
==============================================================================
--- 
jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/impl/StackObjectPool.java
 (original)
+++ 
jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/impl/StackObjectPool.java
 Tue Apr 18 18:43:56 2006
@@ -274,9 +274,9 @@
      *
      * @throws Exception <strong>deprecated</strong>: implementations should 
silently fail if not all resources can be freed.
      */
-    public synchronized void close() throws Exception {
-        clear();
+    public void close() throws Exception {
         super.close();
+        clear();
     }
 
     /**



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to