You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by di...@apache.org on 2003/08/13 00:46:09 UTC

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

dirkv       2003/08/12 15:46:09

  Modified:    pool/src/java/org/apache/commons/pool/impl
                        GenericObjectPool.java
  Log:
  Bugzilla Bug 22078
    [DBCP] testOnBorrow fails if setAutoCommit() throws an exception
  
  If activateObject throws an Exception and the object wasn't newly created
  the Exception is now ignored, activation errors on new objects continue to
  throw NoSuchElementException
  
  Revision  Changes    Path
  1.21      +24 -11    jakarta-commons/pool/src/java/org/apache/commons/pool/impl/GenericObjectPool.java
  
  Index: GenericObjectPool.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/pool/src/java/org/apache/commons/pool/impl/GenericObjectPool.java,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- GenericObjectPool.java	22 Apr 2003 22:22:02 -0000	1.20
  +++ GenericObjectPool.java	12 Aug 2003 22:46:09 -0000	1.21
  @@ -754,15 +754,28 @@
                       }
                   }
               }
  -            _factory.activateObject(pair.value);
  -            if(_testOnBorrow && !_factory.validateObject(pair.value)) {
  -                _factory.destroyObject(pair.value);
  -                if(newlyCreated) {
  -                    throw new NoSuchElementException("Could not create a validated object");
  -                } // else keep looping
  -            } else {
  +
  +            try {
  +                _factory.activateObject(pair.value);
  +                if(_testOnBorrow && !_factory.validateObject(pair.value)) {
  +                    throw new Exception("validateObject failed");
  +                }                
                   _numActive++;
                   return pair.value;
  +            } 
  +            catch (Exception e) {
  +                try {
  +                    _factory.destroyObject(pair.value);
  +                } 
  +                catch (Exception e2) {
  +                    // cannot destroy broken object 
  +                }
  +                if(newlyCreated) {
  +                    throw new NoSuchElementException("Could not create a validated object");
  +                } 
  +                else {
  +                    continue; // keep looping
  +                }
               }
           }
       }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org