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