You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by rw...@apache.org on 2002/06/06 00:02:22 UTC

cvs commit: jakarta-commons/pool/src/test/org/apache/commons/pool/impl TestStackKeyedObjectPool.java

rwaldhoff    2002/06/05 15:02:22

  Modified:    pool/src/java/org/apache/commons/pool/impl
                        StackKeyedObjectPool.java
               pool/src/test/org/apache/commons/pool/impl
                        TestStackKeyedObjectPool.java
  Log:
  fix concurrent modification bug in StackKeyedObjectPool, and add a test that demonstrates
  
  Revision  Changes    Path
  1.5       +11 -5     jakarta-commons/pool/src/java/org/apache/commons/pool/impl/StackKeyedObjectPool.java
  
  Index: StackKeyedObjectPool.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/pool/src/java/org/apache/commons/pool/impl/StackKeyedObjectPool.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- StackKeyedObjectPool.java	1 May 2002 06:33:01 -0000	1.4
  +++ StackKeyedObjectPool.java	5 Jun 2002 22:02:22 -0000	1.5
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-commons/pool/src/java/org/apache/commons/pool/impl/StackKeyedObjectPool.java,v 1.4 2002/05/01 06:33:01 rwaldhoff Exp $
  - * $Revision: 1.4 $
  - * $Date: 2002/05/01 06:33:01 $
  + * $Header: /home/cvs/jakarta-commons/pool/src/java/org/apache/commons/pool/impl/StackKeyedObjectPool.java,v 1.5 2002/06/05 22:02:22 rwaldhoff Exp $
  + * $Revision: 1.5 $
  + * $Date: 2002/06/05 22:02:22 $
    *
    * ====================================================================
    *
  @@ -81,7 +81,7 @@
    * artificial limits.
    *
    * @author Rodney Waldhoff
  - * @version $Id: StackKeyedObjectPool.java,v 1.4 2002/05/01 06:33:01 rwaldhoff Exp $
  + * @version $Id: StackKeyedObjectPool.java,v 1.5 2002/06/05 22:02:22 rwaldhoff Exp $
    */
   public class StackKeyedObjectPool extends BaseKeyedObjectPool implements KeyedObjectPool {
       /**
  @@ -248,7 +248,9 @@
       public synchronized void clear() {
           Iterator it = _pools.keySet().iterator();
           while(it.hasNext()) {
  -            clear(it.next());
  +            Object key = it.next();
  +            Stack stack = (Stack)(_pools.get(key));
  +            destroyStack(key,stack);
           }
           _totIdle = 0;
           _pools.clear();
  @@ -257,6 +259,10 @@
   
       public synchronized void clear(Object key) {
           Stack stack = (Stack)(_pools.remove(key));
  +        destroyStack(key,stack);
  +    }
  +
  +    private synchronized void destroyStack(Object key,Stack stack) {
           if(null == stack) {
               return;
           } else {
  
  
  
  1.4       +28 -4     jakarta-commons/pool/src/test/org/apache/commons/pool/impl/TestStackKeyedObjectPool.java
  
  Index: TestStackKeyedObjectPool.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/pool/src/test/org/apache/commons/pool/impl/TestStackKeyedObjectPool.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- TestStackKeyedObjectPool.java	1 May 2002 06:33:02 -0000	1.3
  +++ TestStackKeyedObjectPool.java	5 Jun 2002 22:02:22 -0000	1.4
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-commons/pool/src/test/org/apache/commons/pool/impl/TestStackKeyedObjectPool.java,v 1.3 2002/05/01 06:33:02 rwaldhoff Exp $
  - * $Revision: 1.3 $
  - * $Date: 2002/05/01 06:33:02 $
  + * $Header: /home/cvs/jakarta-commons/pool/src/test/org/apache/commons/pool/impl/TestStackKeyedObjectPool.java,v 1.4 2002/06/05 22:02:22 rwaldhoff Exp $
  + * $Revision: 1.4 $
  + * $Date: 2002/06/05 22:02:22 $
    *
    * ====================================================================
    *
  @@ -66,7 +66,7 @@
   
   /**
    * @author Rodney Waldhoff
  - * @version $Id: TestStackKeyedObjectPool.java,v 1.3 2002/05/01 06:33:02 rwaldhoff Exp $
  + * @version $Id: TestStackKeyedObjectPool.java,v 1.4 2002/06/05 22:02:22 rwaldhoff Exp $
    */
   public class TestStackKeyedObjectPool extends TestCase {
       public TestStackKeyedObjectPool(String testName) {
  @@ -209,6 +209,30 @@
           assertEquals(0,pool.getNumIdle(""));
           Object obj2 = pool.borrowObject("");
           assertEquals("2",obj2);
  +    }
  +
  +    public void testCloseBug() throws Exception {
  +        {
  +            Object obj0 = pool.borrowObject("");
  +            Object obj1 = pool.borrowObject("");
  +            assertEquals(2,pool.getNumActive(""));
  +            assertEquals(0,pool.getNumIdle(""));
  +            pool.returnObject("",obj1);
  +            pool.returnObject("",obj0);
  +            assertEquals(0,pool.getNumActive(""));
  +            assertEquals(2,pool.getNumIdle(""));
  +        }
  +        {
  +            Object obj0 = pool.borrowObject("2");
  +            Object obj1 = pool.borrowObject("2");
  +            assertEquals(2,pool.getNumActive("2"));
  +            assertEquals(0,pool.getNumIdle("2"));
  +            pool.returnObject("2",obj1);
  +            pool.returnObject("2",obj0);
  +            assertEquals(0,pool.getNumActive("2"));
  +            assertEquals(2,pool.getNumIdle("2"));
  +        }
  +        pool.close();
       }
   
       public void testIdleCap() throws Exception {
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>