From e2778fbf7d81b10fa558deeb9ccf66d374de7f4f Mon Sep 17 00:00:00 2001 From: Gary Tully Date: Wed, 24 Jun 2009 12:04:50 +0000 Subject: [PATCH] apply modified suggstion from https://issues.apache.org/activemq/browse/AMQ-1191 - executeQuery conditional on statement metadata which works when statement does not return a result set like with derby which is used in the unit tests git-svn-id: https://svn.apache.org/repos/asf/activemq/trunk@787990 13f79535-47bb-0310-9956-ffa450edef68 --- .../activemq/store/jdbc/DefaultDatabaseLocker.java | 10 +++++++++- .../store/jdbc/adapter/DefaultJDBCAdapter.java | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/activemq-core/src/main/java/org/apache/activemq/store/jdbc/DefaultDatabaseLocker.java b/activemq-core/src/main/java/org/apache/activemq/store/jdbc/DefaultDatabaseLocker.java index dd6b359ea8..906067a1a8 100644 --- a/activemq-core/src/main/java/org/apache/activemq/store/jdbc/DefaultDatabaseLocker.java +++ b/activemq-core/src/main/java/org/apache/activemq/store/jdbc/DefaultDatabaseLocker.java @@ -19,6 +19,8 @@ package org.apache.activemq.store.jdbc; import java.io.IOException; import java.sql.Connection; import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.ResultSetMetaData; import java.sql.SQLException; import javax.sql.DataSource; @@ -64,7 +66,13 @@ public class DefaultDatabaseLocker implements DatabaseLocker { connection.setAutoCommit(false); String sql = statements.getLockCreateStatement(); statement = connection.prepareStatement(sql); - statement.execute(); + if (statement.getMetaData() != null) { + ResultSet rs = statement.executeQuery(); + // if not already locked the statement below blocks until lock acquired + rs.next(); + } else { + statement.execute(); + } break; } catch (Exception e) { if (stopping) { diff --git a/activemq-core/src/main/java/org/apache/activemq/store/jdbc/adapter/DefaultJDBCAdapter.java b/activemq-core/src/main/java/org/apache/activemq/store/jdbc/adapter/DefaultJDBCAdapter.java index e1682d00b0..8df17e716a 100755 --- a/activemq-core/src/main/java/org/apache/activemq/store/jdbc/adapter/DefaultJDBCAdapter.java +++ b/activemq-core/src/main/java/org/apache/activemq/store/jdbc/adapter/DefaultJDBCAdapter.java @@ -291,7 +291,7 @@ public class DefaultJDBCAdapter implements JDBCAdapter { throw new SQLException("Failed to remove message"); } } finally { - if (!this.batchStatments) { + if (!this.batchStatments && s != null) { s.close(); } }