You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by fh...@apache.org on 2008/12/11 00:38:13 UTC

svn commit: r725487 - in /tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool: ConnectionPool.java interceptor/SlowQueryReport.java

Author: fhanik
Date: Wed Dec 10 15:38:13 2008
New Revision: 725487

URL: http://svn.apache.org/viewvc?rev=725487&view=rev
Log:
refactor the slow query report a bit
also add the ability to remove a listener

Modified:
    tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java
    tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/interceptor/SlowQueryReport.java

Modified: tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java?rev=725487&r1=725486&r2=725487&view=diff
==============================================================================
--- tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java (original)
+++ tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java Wed Dec 10 15:38:13 2008
@@ -263,6 +263,10 @@
         listeners.add(listener);
     }
     
+    public void removeCloseListener(CloseListener listener) {
+        listeners.remove(listener);
+    }
+    
     /**
      * Closes the pool and all disconnects all idle connections
      * Active connections will be closed upon the {@link java.sql.Connection#close close} method is called

Modified: tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/interceptor/SlowQueryReport.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/interceptor/SlowQueryReport.java?rev=725487&r1=725486&r2=725487&view=diff
==============================================================================
--- tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/interceptor/SlowQueryReport.java (original)
+++ tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/interceptor/SlowQueryReport.java Wed Dec 10 15:38:13 2008
@@ -29,6 +29,8 @@
 import java.util.LinkedHashMap;
 import java.util.Map.Entry;
 
+import javax.management.openmbean.CompositeData;
+
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
 import org.apache.tomcat.jdbc.pool.ConnectionPool;
@@ -110,7 +112,7 @@
      */
     @Override
     public void closeInvoked() {
-        // TODO Auto-generated method stub
+        queries = null;
         
     }
     
@@ -187,6 +189,10 @@
         }
         this.pool = parent;
     }
+    
+    public void finalize() {
+        if (pool!=null) pool.removeCloseListener(this);
+    }
 
     
     public void poolClosed(ConnectionPool pool) {
@@ -194,6 +200,10 @@
         perPoolStats.remove(pool);
     }
     
+    public CompositeData[] getSlowQueriesCD() {
+        return null;
+    }
+    
 
     
     /**
@@ -326,29 +336,32 @@
             long delta = (process)?(System.currentTimeMillis()-start):Long.MIN_VALUE;
             //see if we meet the requirements to measure
             if (delta>threshold) {
-                //extract the query string
-                String sql = (query==null && args!=null &&  args.length>0)?(String)args[0]:query;
-                //if we do batch execution, then we name the query 'batch'
-                if (sql==null && compare(executes[3],name)) {
-                    sql = "batch";
-                }
-                //if we have a query, record the stats
-                if (sql!=null) {
-                    QueryStats qs = SlowQueryReport.this.queries.get(sql);
-                    if (qs == null) {
-                        qs = new QueryStats(sql);
-                        SlowQueryReport.this.queries.put((String)sql,qs);
-                    }
-                    qs.add(delta,start);
-                }
+                reportSlowQuery(args, name, start, delta);
             }
             //perform close cleanup
             if (close) {
                 closed=true;
                 delegate = null;
-                queries = null;
             }
             return result;
         }
+
+        protected void reportSlowQuery(Object[] args, final String name, long start, long delta) {
+            //extract the query string
+            String sql = (query==null && args!=null &&  args.length>0)?(String)args[0]:query;
+            //if we do batch execution, then we name the query 'batch'
+            if (sql==null && compare(executes[3],name)) {
+                sql = "batch";
+            }
+            //if we have a query, record the stats
+            if (sql!=null) {
+                QueryStats qs = SlowQueryReport.this.queries.get(sql);
+                if (qs == null) {
+                    qs = new QueryStats(sql);
+                    SlowQueryReport.this.queries.put((String)sql,qs);
+                }
+                qs.add(delta,start);
+            }
+        }
     }
 }



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