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()];