Author: fhanik
Date: Tue Mar 20 16:44:17 2012
New Revision: 1302990

URL: http://svn.apache.org/viewvc?rev=1302990&view=rev
Log:
https://issues.apache.org/bugzilla/show_bug.cgi?id=51893 add notification that 
the pool has been exhausted

Added:
    
tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/PoolExhaustedException.java
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/jmx/ConnectionPool.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=1302990&r1=1302989&r2=1302990&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
 Tue Mar 20 16:44:17 2012
@@ -634,13 +634,19 @@ public class ConnectionPool {
                 waitcount.decrementAndGet();
             }
             if (maxWait==0 && con == null) { //no wait, return one if we have 
one
-                throw new SQLException("[" + 
Thread.currentThread().getName()+"] " +
+                if (jmxPool!=null) {
+                    
jmxPool.notify(org.apache.tomcat.jdbc.pool.jmx.ConnectionPool.POOL_EMPTY, "Pool 
empty - no wait.");
+                }
+                throw new PoolExhaustedException("[" + 
Thread.currentThread().getName()+"] " +
                         "NoWait: Pool empty. Unable to fetch a connection, 
none available["+busy.size()+" in use].");
             }
             //we didn't get a connection, lets see if we timed out
             if (con == null) {
                 if ((System.currentTimeMillis() - now) >= maxWait) {
-                    throw new SQLException("[" + 
Thread.currentThread().getName()+"] " +
+                    if (jmxPool!=null) {
+                        
jmxPool.notify(org.apache.tomcat.jdbc.pool.jmx.ConnectionPool.POOL_EMPTY, "Pool 
empty - timeout.");
+                    }
+                    throw new PoolExhaustedException("[" + 
Thread.currentThread().getName()+"] " +
                         "Timeout: Pool empty. Unable to fetch a connection in 
" + (maxWait / 1000) +
                         " seconds, none available[size:"+size.get() +"; 
busy:"+busy.size()+"; idle:"+idle.size()+"; lastwait:"+timetowait+"].");
                 } else {

Added: 
tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/PoolExhaustedException.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/PoolExhaustedException.java?rev=1302990&view=auto
==============================================================================
--- 
tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/PoolExhaustedException.java
 (added)
+++ 
tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/PoolExhaustedException.java
 Tue Mar 20 16:44:17 2012
@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tomcat.jdbc.pool;
+
+import java.sql.SQLException;
+
+public class PoolExhaustedException extends SQLException {
+
+    public PoolExhaustedException() {
+    }
+
+    public PoolExhaustedException(String reason) {
+        super(reason);
+    }
+
+    public PoolExhaustedException(Throwable cause) {
+        super(cause);
+    }
+
+    public PoolExhaustedException(String reason, String SQLState) {
+        super(reason, SQLState);
+    }
+
+    public PoolExhaustedException(String reason, Throwable cause) {
+        super(reason, cause);
+    }
+
+    public PoolExhaustedException(String reason, String SQLState, int 
vendorCode) {
+        super(reason, SQLState, vendorCode);
+    }
+
+    public PoolExhaustedException(String reason, String sqlState, Throwable 
cause) {
+        super(reason, sqlState, cause);
+    }
+
+    public PoolExhaustedException(String reason, String sqlState, int 
vendorCode, Throwable cause) {
+        super(reason, sqlState, vendorCode, cause);
+    }
+
+}

Modified: 
tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/jmx/ConnectionPool.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/jmx/ConnectionPool.java?rev=1302990&r1=1302989&r2=1302990&view=diff
==============================================================================
--- 
tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/jmx/ConnectionPool.java
 (original)
+++ 
tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/jmx/ConnectionPool.java
 Tue Mar 20 16:44:17 2012
@@ -75,6 +75,7 @@ public class ConnectionPool extends Noti
     public static final String SLOW_QUERY_NOTIFICATION = "SLOW QUERY";
     public static final String FAILED_QUERY_NOTIFICATION = "FAILED QUERY";
     public static final String SUSPECT_ABANDONED_NOTIFICATION = "SUSPECT 
CONNETION ABANDONED";
+    public static final String POOL_EMPTY = "POOL EMPTY";
 
     @Override
     public MBeanNotificationInfo[] getNotificationInfo() {



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

Reply via email to