This is an automated email from the git hooks/post-receive script. ebourg-guest pushed a commit to annotated tag REL9_3_1100 in repository libpostgresql-jdbc-java.
commit 9387af3e12f5827a909141f8c137b4690811c801 Author: Dave Cramer <[email protected]> Date: Fri Jan 11 11:34:44 2013 -0500 fix cancelTimer bug reported by Andri Redko. now cancel timer when connection is closed make sure timer is cancelled if there is an exception in execute --- org/postgresql/jdbc2/AbstractJdbc2Statement.java | 32 ++++++++++++++++++------ 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/org/postgresql/jdbc2/AbstractJdbc2Statement.java b/org/postgresql/jdbc2/AbstractJdbc2Statement.java index 484d69f..7671cf6 100644 --- a/org/postgresql/jdbc2/AbstractJdbc2Statement.java +++ b/org/postgresql/jdbc2/AbstractJdbc2Statement.java @@ -46,7 +46,7 @@ public abstract class AbstractJdbc2Statement implements BaseStatement protected final int resultsettype; // the resultset type to return (ResultSet.TYPE_xxx) protected final int concurrency; // is it updateable or not? (ResultSet.CONCUR_xxx) protected int fetchdirection = ResultSet.FETCH_FORWARD; // fetch direction hint (currently ignored) - private TimerTask cancelTimer=null; + private volatile TimerTask cancelTimer=null; /** * Does the caller of execute/executeUpdate want generated keys for this @@ -552,16 +552,20 @@ public abstract class AbstractJdbc2Statement implements BaseStatement StatementResultHandler handler = new StatementResultHandler(); result = null; + try + { + + connection.getQueryExecutor().execute(queryToExecute, queryParameters, handler, maxrows, fetchSize, flags); - if ( cancelTimer != null ) + } + finally { - cancelTimer.cancel(); - cancelTimer=null; + killTimer(); } result = firstUnclosedResult = handler.getResults(); @@ -714,10 +718,7 @@ public abstract class AbstractJdbc2Statement implements BaseStatement PSQLState.INVALID_PARAMETER_VALUE); if (seconds == 0) { - if ( cancelTimer != null ) { - cancelTimer.cancel(); - cancelTimer = null; - } + killTimer(); return; } @@ -728,6 +729,10 @@ public abstract class AbstractJdbc2Statement implements BaseStatement AbstractJdbc2Statement.this.cancel(); } catch (SQLException e) { } + finally + { + killTimer(); + } } }; @@ -853,6 +858,8 @@ public abstract class AbstractJdbc2Statement implements BaseStatement if (isClosed) return ; + killTimer(); + closeForNextExecution(); if (preparedQuery != null) @@ -3408,4 +3415,13 @@ public abstract class AbstractJdbc2Statement implements BaseStatement throw Driver.notImplemented(this.getClass(), "registerOutParameter(int,int,String)"); } + private synchronized void killTimer() + { + if ( cancelTimer != null ) + { + cancelTimer.cancel(); + cancelTimer = null; + } + + } } -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/libpostgresql-jdbc-java.git _______________________________________________ pkg-java-commits mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-java-commits

