Author: fhanik
Date: Wed Jun  6 01:02:41 2012
New Revision: 1346691

URL: http://svn.apache.org/viewvc?rev=1346691&view=rev
Log:
https://issues.apache.org/bugzilla/show_bug.cgi?id=53367
Avoid pool hanging when database fails


Modified:
    
tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java
    
tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/PooledConnection.java

Modified: 
tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java?rev=1346691&r1=1346690&r2=1346691&view=diff
==============================================================================
--- 
tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java
 (original)
+++ 
tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java
 Wed Jun  6 01:02:41 2012
@@ -750,7 +750,19 @@ public class ConnectionPool {
 
             if (!con.isDiscarded() && !con.isInitialized()) {
                 //attempt to connect
-                con.connect();
+                try {
+                    con.connect();
+                } catch (Exception x) {
+                    release(con);
+                    setToNull = true;
+                    if (x instanceof SQLException) {
+                        throw (SQLException)x;
+                    } else {
+                        SQLException ex  = new SQLException(x.getMessage());
+                        ex.initCause(x);
+                        throw ex;
+                    }
+                }
             }
 
             if (usercheck) {

Modified: 
tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/PooledConnection.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/PooledConnection.java?rev=1346691&r1=1346690&r2=1346691&view=diff
==============================================================================
--- 
tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/PooledConnection.java
 (original)
+++ 
tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/PooledConnection.java
 Wed Jun  6 01:02:41 2012
@@ -238,10 +238,14 @@ public class PooledConnection {
     protected void connectUsingDriver() throws SQLException {
 
         try {
-            if (driver==null)
+            if (driver==null) {
+                if (log.isDebugEnabled()) {
+                    log.debug("Instantiating driver using class: 
"+poolProperties.getDriverClassName()+" [url="+poolProperties.getUrl()+"]");
+                }
                 driver = (java.sql.Driver) 
Class.forName(poolProperties.getDriverClassName(),
                                                          true, 
PooledConnection.class.getClassLoader()
                                                          ).newInstance();
+            }
         } catch (java.lang.Exception cn) {
             if (log.isDebugEnabled()) {
                 log.debug("Unable to instantiate JDBC driver.", cn);



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to