I'm running Tomcat 7.0.52 (7.0.52-1ubuntu0.1) with jdbc-pool and I see this exception in catalina.out somewhat frequently: Mar 30, 2015 11:44:44 PM org.apache.tomcat.jdbc.pool.interceptor.AbstractQueryReport createStatement WARNING: Unable to create statement proxy for slow query report. java.lang.NullPointerException at org.apache.tomcat.jdbc.pool.interceptor.SlowQueryReport.prepareStatement(SlowQueryReport.java:122) As far as I can tell, it appears unrelated to #51582. In this case, some condition causes getQueryStats() to return null: public void prepareStatement(String sql, long time) { QueryStats qs = getQueryStats(sql); qs.prepare(time); // <--- LINE 122 } Please let me know if you need any more info.
Thanks for the report. I examined the code of SlowQueryReport. There were two problems that cause NPE. The first is Because SlowQueryReport#removeOldest has not been implemented correctly, If multiple threads invoke the same query at the same time, It is possible to return null. The second is If this Interceptor has executed a connection that had been closed by the removeAbandoned, It is possible to return null. The former issue has been fixed in r1686791 and r1686792, the latter issue has been fixed in r1686975 and r1686976. These revisions are scheduled to be included in the release of Tomcat8.0.24, Tomcat 7.0.63 or later.