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 2014/08/11 21:57:22 UTC

svn commit: r1617355 - /tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/interceptor/StatementFinalizer.java

Author: fhanik
Date: Mon Aug 11 19:57:22 2014
New Revision: 1617355

URL: http://svn.apache.org/r1617355
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=56318
The weak reference is for the statement itself.

Modified:
    tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/interceptor/StatementFinalizer.java

Modified: tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/interceptor/StatementFinalizer.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/interceptor/StatementFinalizer.java?rev=1617355&r1=1617354&r2=1617355&view=diff
==============================================================================
--- tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/interceptor/StatementFinalizer.java (original)
+++ tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/interceptor/StatementFinalizer.java Mon Aug 11 19:57:22 2014
@@ -37,7 +37,7 @@ import org.apache.tomcat.jdbc.pool.Poole
 public class StatementFinalizer extends AbstractCreateStatementInterceptor {
     private static final Log log = LogFactory.getLog(StatementFinalizer.class);
 
-    protected List<WeakReference<StatementEntry>> statements = new LinkedList<>();
+    protected List<StatementEntry> statements = new LinkedList<>();
 
     private boolean logCreationStack = false;
 
@@ -45,7 +45,7 @@ public class StatementFinalizer extends 
     public Object createStatement(Object proxy, Method method, Object[] args, Object statement, long time) {
         try {
             if (statement instanceof Statement)
-                statements.add(new WeakReference<>(new StatementEntry((Statement)statement)));
+                statements.add(new StatementEntry((Statement)statement));
         }catch (ClassCastException x) {
             //ignore this one
         }
@@ -55,13 +55,13 @@ public class StatementFinalizer extends 
     @Override
     public void closeInvoked() {
         while (statements.size()>0) {
-            WeakReference<StatementEntry> ws = statements.remove(0);
-            StatementEntry st = ws.get();
+            StatementEntry ws = statements.remove(0);
+            Statement st = ws.getStatement();
             boolean shallClose = false;
             try {
-                shallClose = st!=null && (!st.getStatement().isClosed());
+                shallClose = st!=null && (!st.isClosed());
                 if (shallClose) {
-                    st.getStatement().close();
+                    st.close();
                 }
             } catch (Exception ignore) {
                 if (log.isDebugEnabled()) {
@@ -69,7 +69,7 @@ public class StatementFinalizer extends 
                 }
             } finally {
                 if (logCreationStack && shallClose) {
-                    log.warn("Statement created, but was not closed at:", st.getAllocationStack());
+                    log.warn("Statement created, but was not closed at:", ws.getAllocationStack());
                 }
             }
         }
@@ -92,18 +92,18 @@ public class StatementFinalizer extends 
     }
 
     protected class StatementEntry {
-        private Statement statement;
-       private Throwable allocationStack;
+        private WeakReference<Statement> statement;
+        private Throwable allocationStack;
 
         public StatementEntry(Statement statement) {
-            this.statement = statement;
+            this.statement = new WeakReference<>(statement);
             if (logCreationStack) {
                 this.allocationStack = new Throwable();
             }
         }
 
         public Statement getStatement() {
-            return statement;
+            return statement.get();
         }
 
         public Throwable getAllocationStack() {



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