You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2014/12/17 08:05:53 UTC
[1/2] camel git commit: CAMEL-8153: Fixed potential connection leak
when using streamList with camel-jdbc. Thanks to Konstantin V. Salikhov for
the patch.
Repository: camel
Updated Branches:
refs/heads/camel-2.14.x 2f238cc04 -> 888c104eb
refs/heads/master 905461d6a -> 8a5a0cb73
CAMEL-8153: Fixed potential connection leak when using streamList with camel-jdbc. Thanks to Konstantin V. Salikhov for the patch.
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/8a5a0cb7
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/8a5a0cb7
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/8a5a0cb7
Branch: refs/heads/master
Commit: 8a5a0cb731f1b8a772612005f4baeeb1a7d3fb07
Parents: 905461d
Author: Claus Ibsen <da...@apache.org>
Authored: Wed Dec 17 08:05:22 2014 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Wed Dec 17 08:05:22 2014 +0100
----------------------------------------------------------------------
.../camel/component/jdbc/JdbcProducer.java | 19 ++++++++++---------
.../camel/component/jdbc/ResultSetIterator.java | 4 ++--
2 files changed, 12 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/8a5a0cb7/components/camel-jdbc/src/main/java/org/apache/camel/component/jdbc/JdbcProducer.java
----------------------------------------------------------------------
diff --git a/components/camel-jdbc/src/main/java/org/apache/camel/component/jdbc/JdbcProducer.java b/components/camel-jdbc/src/main/java/org/apache/camel/component/jdbc/JdbcProducer.java
index d78e9c7..13ecade 100644
--- a/components/camel-jdbc/src/main/java/org/apache/camel/component/jdbc/JdbcProducer.java
+++ b/components/camel-jdbc/src/main/java/org/apache/camel/component/jdbc/JdbcProducer.java
@@ -163,7 +163,7 @@ public class JdbcProducer extends DefaultProducer {
boolean stmtExecutionResult = ps.execute();
if (stmtExecutionResult) {
rs = ps.getResultSet();
- shouldCloseResources = setResultSet(exchange, rs);
+ shouldCloseResources = setResultSet(exchange, conn, rs);
} else {
int updateCount = ps.getUpdateCount();
// preserve headers
@@ -173,7 +173,7 @@ public class JdbcProducer extends DefaultProducer {
}
if (shouldRetrieveGeneratedKeys) {
- setGeneratedKeys(exchange, ps.getGeneratedKeys());
+ setGeneratedKeys(exchange, conn, ps.getGeneratedKeys());
}
} finally {
if (shouldCloseResources) {
@@ -219,7 +219,7 @@ public class JdbcProducer extends DefaultProducer {
if (stmtExecutionResult) {
rs = stmt.getResultSet();
- shouldCloseResources = setResultSet(exchange, rs);
+ shouldCloseResources = setResultSet(exchange, conn, rs);
} else {
int updateCount = stmt.getUpdateCount();
// preserve headers
@@ -229,7 +229,7 @@ public class JdbcProducer extends DefaultProducer {
}
if (shouldRetrieveGeneratedKeys) {
- setGeneratedKeys(exchange, stmt.getGeneratedKeys());
+ setGeneratedKeys(exchange, conn, stmt.getGeneratedKeys());
}
} finally {
if (shouldCloseResources) {
@@ -285,12 +285,13 @@ public class JdbcProducer extends DefaultProducer {
* - {@link JdbcConstants#JDBC_GENERATED_KEYS_ROW_COUNT} : the row count of generated keys
* - {@link JdbcConstants#JDBC_GENERATED_KEYS_DATA} : the generated keys data
*
- * @param exchange The exchange where to store the generated keys
+ * @param exchange The exchange where to store the generated keys
+ * @param conn Current JDBC connection
* @param generatedKeys The result set containing the generated keys
*/
- protected void setGeneratedKeys(Exchange exchange, ResultSet generatedKeys) throws SQLException {
+ protected void setGeneratedKeys(Exchange exchange, Connection conn, ResultSet generatedKeys) throws SQLException {
if (generatedKeys != null) {
- ResultSetIterator iterator = new ResultSetIterator(generatedKeys, getEndpoint().isUseJDBC4ColumnNameAndLabelSemantics());
+ ResultSetIterator iterator = new ResultSetIterator(conn, generatedKeys, getEndpoint().isUseJDBC4ColumnNameAndLabelSemantics());
List<Map<String, Object>> data = extractRows(iterator);
exchange.getOut().setHeader(JdbcConstants.JDBC_GENERATED_KEYS_ROW_COUNT, data.size());
@@ -303,10 +304,10 @@ public class JdbcProducer extends DefaultProducer {
*
* @return whether to close resources
*/
- protected boolean setResultSet(Exchange exchange, ResultSet rs) throws SQLException {
+ protected boolean setResultSet(Exchange exchange, Connection conn, ResultSet rs) throws SQLException {
boolean answer = true;
- ResultSetIterator iterator = new ResultSetIterator(rs, getEndpoint().isUseJDBC4ColumnNameAndLabelSemantics());
+ ResultSetIterator iterator = new ResultSetIterator(conn, rs, getEndpoint().isUseJDBC4ColumnNameAndLabelSemantics());
// preserve headers
exchange.getOut().getHeaders().putAll(exchange.getIn().getHeaders());
http://git-wip-us.apache.org/repos/asf/camel/blob/8a5a0cb7/components/camel-jdbc/src/main/java/org/apache/camel/component/jdbc/ResultSetIterator.java
----------------------------------------------------------------------
diff --git a/components/camel-jdbc/src/main/java/org/apache/camel/component/jdbc/ResultSetIterator.java b/components/camel-jdbc/src/main/java/org/apache/camel/component/jdbc/ResultSetIterator.java
index caf3ea8..8055550 100644
--- a/components/camel-jdbc/src/main/java/org/apache/camel/component/jdbc/ResultSetIterator.java
+++ b/components/camel-jdbc/src/main/java/org/apache/camel/component/jdbc/ResultSetIterator.java
@@ -43,10 +43,10 @@ public class ResultSetIterator implements Iterator<Map<String, Object>> {
private final Column[] columns;
private final AtomicBoolean closed = new AtomicBoolean();
- public ResultSetIterator(ResultSet resultSet, boolean isJDBC4) throws SQLException {
+ public ResultSetIterator(Connection conn, ResultSet resultSet, boolean isJDBC4) throws SQLException {
this.resultSet = resultSet;
this.statement = this.resultSet.getStatement();
- this.connection = this.statement.getConnection();
+ this.connection = conn;
ResultSetMetaData metaData = resultSet.getMetaData();
columns = new Column[metaData.getColumnCount()];
[2/2] camel git commit: CAMEL-8153: Fixed potential connection leak
when using streamList with camel-jdbc. Thanks to Konstantin V. Salikhov for
the patch.
Posted by da...@apache.org.
CAMEL-8153: Fixed potential connection leak when using streamList with camel-jdbc. Thanks to Konstantin V. Salikhov for the patch.
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/888c104e
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/888c104e
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/888c104e
Branch: refs/heads/camel-2.14.x
Commit: 888c104eb19d90e9abea0328047d9c5df11eab31
Parents: 2f238cc
Author: Claus Ibsen <da...@apache.org>
Authored: Wed Dec 17 08:05:22 2014 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Wed Dec 17 08:05:40 2014 +0100
----------------------------------------------------------------------
.../camel/component/jdbc/JdbcProducer.java | 19 ++++++++++---------
.../camel/component/jdbc/ResultSetIterator.java | 4 ++--
2 files changed, 12 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/888c104e/components/camel-jdbc/src/main/java/org/apache/camel/component/jdbc/JdbcProducer.java
----------------------------------------------------------------------
diff --git a/components/camel-jdbc/src/main/java/org/apache/camel/component/jdbc/JdbcProducer.java b/components/camel-jdbc/src/main/java/org/apache/camel/component/jdbc/JdbcProducer.java
index d78e9c7..13ecade 100644
--- a/components/camel-jdbc/src/main/java/org/apache/camel/component/jdbc/JdbcProducer.java
+++ b/components/camel-jdbc/src/main/java/org/apache/camel/component/jdbc/JdbcProducer.java
@@ -163,7 +163,7 @@ public class JdbcProducer extends DefaultProducer {
boolean stmtExecutionResult = ps.execute();
if (stmtExecutionResult) {
rs = ps.getResultSet();
- shouldCloseResources = setResultSet(exchange, rs);
+ shouldCloseResources = setResultSet(exchange, conn, rs);
} else {
int updateCount = ps.getUpdateCount();
// preserve headers
@@ -173,7 +173,7 @@ public class JdbcProducer extends DefaultProducer {
}
if (shouldRetrieveGeneratedKeys) {
- setGeneratedKeys(exchange, ps.getGeneratedKeys());
+ setGeneratedKeys(exchange, conn, ps.getGeneratedKeys());
}
} finally {
if (shouldCloseResources) {
@@ -219,7 +219,7 @@ public class JdbcProducer extends DefaultProducer {
if (stmtExecutionResult) {
rs = stmt.getResultSet();
- shouldCloseResources = setResultSet(exchange, rs);
+ shouldCloseResources = setResultSet(exchange, conn, rs);
} else {
int updateCount = stmt.getUpdateCount();
// preserve headers
@@ -229,7 +229,7 @@ public class JdbcProducer extends DefaultProducer {
}
if (shouldRetrieveGeneratedKeys) {
- setGeneratedKeys(exchange, stmt.getGeneratedKeys());
+ setGeneratedKeys(exchange, conn, stmt.getGeneratedKeys());
}
} finally {
if (shouldCloseResources) {
@@ -285,12 +285,13 @@ public class JdbcProducer extends DefaultProducer {
* - {@link JdbcConstants#JDBC_GENERATED_KEYS_ROW_COUNT} : the row count of generated keys
* - {@link JdbcConstants#JDBC_GENERATED_KEYS_DATA} : the generated keys data
*
- * @param exchange The exchange where to store the generated keys
+ * @param exchange The exchange where to store the generated keys
+ * @param conn Current JDBC connection
* @param generatedKeys The result set containing the generated keys
*/
- protected void setGeneratedKeys(Exchange exchange, ResultSet generatedKeys) throws SQLException {
+ protected void setGeneratedKeys(Exchange exchange, Connection conn, ResultSet generatedKeys) throws SQLException {
if (generatedKeys != null) {
- ResultSetIterator iterator = new ResultSetIterator(generatedKeys, getEndpoint().isUseJDBC4ColumnNameAndLabelSemantics());
+ ResultSetIterator iterator = new ResultSetIterator(conn, generatedKeys, getEndpoint().isUseJDBC4ColumnNameAndLabelSemantics());
List<Map<String, Object>> data = extractRows(iterator);
exchange.getOut().setHeader(JdbcConstants.JDBC_GENERATED_KEYS_ROW_COUNT, data.size());
@@ -303,10 +304,10 @@ public class JdbcProducer extends DefaultProducer {
*
* @return whether to close resources
*/
- protected boolean setResultSet(Exchange exchange, ResultSet rs) throws SQLException {
+ protected boolean setResultSet(Exchange exchange, Connection conn, ResultSet rs) throws SQLException {
boolean answer = true;
- ResultSetIterator iterator = new ResultSetIterator(rs, getEndpoint().isUseJDBC4ColumnNameAndLabelSemantics());
+ ResultSetIterator iterator = new ResultSetIterator(conn, rs, getEndpoint().isUseJDBC4ColumnNameAndLabelSemantics());
// preserve headers
exchange.getOut().getHeaders().putAll(exchange.getIn().getHeaders());
http://git-wip-us.apache.org/repos/asf/camel/blob/888c104e/components/camel-jdbc/src/main/java/org/apache/camel/component/jdbc/ResultSetIterator.java
----------------------------------------------------------------------
diff --git a/components/camel-jdbc/src/main/java/org/apache/camel/component/jdbc/ResultSetIterator.java b/components/camel-jdbc/src/main/java/org/apache/camel/component/jdbc/ResultSetIterator.java
index caf3ea8..8055550 100644
--- a/components/camel-jdbc/src/main/java/org/apache/camel/component/jdbc/ResultSetIterator.java
+++ b/components/camel-jdbc/src/main/java/org/apache/camel/component/jdbc/ResultSetIterator.java
@@ -43,10 +43,10 @@ public class ResultSetIterator implements Iterator<Map<String, Object>> {
private final Column[] columns;
private final AtomicBoolean closed = new AtomicBoolean();
- public ResultSetIterator(ResultSet resultSet, boolean isJDBC4) throws SQLException {
+ public ResultSetIterator(Connection conn, ResultSet resultSet, boolean isJDBC4) throws SQLException {
this.resultSet = resultSet;
this.statement = this.resultSet.getStatement();
- this.connection = this.statement.getConnection();
+ this.connection = conn;
ResultSetMetaData metaData = resultSet.getMetaData();
columns = new Column[metaData.getColumnCount()];