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