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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to