svn commit: r1748544 - in /ofbiz/branches/release15.12: ./ framework/entity/src/org/ofbiz/entity/jdbc/DatabaseUtil.java

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

svn commit: r1748544 - in /ofbiz/branches/release15.12: ./ framework/entity/src/org/ofbiz/entity/jdbc/DatabaseUtil.java

jleroux@apache.org
Author: jleroux
Date: Wed Jun 15 10:37:29 2016
New Revision: 1748544

URL: http://svn.apache.org/viewvc?rev=1748544&view=rev
Log:
"Applied fix from trunk for revision: 1748543  "
------------------------------------------------------------------------
r1748543 | jleroux | 2016-06-15 12:35:18 +0200 (mer. 15 juin 2016) | 9 lignes

A patch from Gareth Carter for "DB connections remain open and unused on startup" https://issues.apache.org/jira/browse/OFBIZ-7344

When ofbiz starts and checks the database, it will leave open connections and they will not get reused.

If you run Check/Update database from webtools, you can see a new connection is created for your selected group

As far as I can tell, the problem lies in DatabaseUtil.getDatabaseMetaData. If the parameter connection is null, a new connection object is created but not closed (like any resource should be!)

jleroux: I was unable to "see a new connection is created for your selected group" when running "Check/Update database from webtools". But I tested with Postgres while and after discussing with Gareth about this.
------------------------------------------------------------------------


Modified:
    ofbiz/branches/release15.12/   (props changed)
    ofbiz/branches/release15.12/framework/entity/src/org/ofbiz/entity/jdbc/DatabaseUtil.java

Propchange: ofbiz/branches/release15.12/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Jun 15 10:37:29 2016
@@ -9,4 +9,4 @@
 /ofbiz/branches/json-integration-refactoring:1634077-1635900
 /ofbiz/branches/multitenant20100310:921280-927264
 /ofbiz/branches/release13.07:1547657
-/ofbiz/trunk:1722712,1723007,1723248,1724402,1724411,1724566,1724689,1724763,1724916,1724918,1724925,1724930,1724940,1724943,1724946,1724951,1724957,1724975,1724978,1725006,1725217,1725257,1725561,1725574,1726388,1726486,1726493,1726828,1727894,1728398,1728411,1729005,1729078,1729609,1729809,1730035,1730456,1730735-1730736,1730747,1730758,1730882,1730889,1731382,1731396,1732454,1732570,1732721,1733951,1733956,1734246,1734269,1734276,1734912,1734918,1735021,1735244,1735385,1735398,1735569,1735731,1735734,1735750,1735753,1735756,1735759,1735773,1736083,1736087,1736272,1736434,1736628,1736851,1736854,1736890,1737156,1737440,1738235,1738303,1738407,1738902,1739438,1739448,1739571,1740008,1740442,1740629,1741146,1741563,1741684,1741925,1741930,1741960,1742018,1742097,1742103,1742712,1742737,1742741,1743025,1743027,1743230,1743411-1743412,1743656,1743937,1744117,1744198,1744396,1744662,1744768,1744773,1744873,1744911,1745111,1745264,1745428,1745438,1745573,1745577,1745592,1745751,1746228,
 1746422,1746459,1746524,1746527,1746536,1746601,1746676,1746714,1746755,1746805,1746832,1746890,1747223,1747349,1747498,1747639,1747642,1747646,1747650,1747661,1747956,1747959,1747963,1748121,1748133,1748206,1748218,1748223,1748260,1748357,1748394,1748401
+/ofbiz/trunk:1722712,1723007,1723248,1724402,1724411,1724566,1724689,1724763,1724916,1724918,1724925,1724930,1724940,1724943,1724946,1724951,1724957,1724975,1724978,1725006,1725217,1725257,1725561,1725574,1726388,1726486,1726493,1726828,1727894,1728398,1728411,1729005,1729078,1729609,1729809,1730035,1730456,1730735-1730736,1730747,1730758,1730882,1730889,1731382,1731396,1732454,1732570,1732721,1733951,1733956,1734246,1734269,1734276,1734912,1734918,1735021,1735244,1735385,1735398,1735569,1735731,1735734,1735750,1735753,1735756,1735759,1735773,1736083,1736087,1736272,1736434,1736628,1736851,1736854,1736890,1737156,1737440,1738235,1738303,1738407,1738902,1739438,1739448,1739571,1740008,1740442,1740629,1741146,1741563,1741684,1741925,1741930,1741960,1742018,1742097,1742103,1742712,1742737,1742741,1743025,1743027,1743230,1743411-1743412,1743656,1743937,1744117,1744198,1744396,1744662,1744768,1744773,1744873,1744911,1745111,1745264,1745428,1745438,1745573,1745577,1745592,1745751,1746228,
 1746422,1746459,1746524,1746527,1746536,1746601,1746676,1746714,1746755,1746805,1746832,1746890,1747223,1747349,1747498,1747639,1747642,1747646,1747650,1747661,1747956,1747959,1747963,1748121,1748133,1748206,1748218,1748223,1748260,1748357,1748394,1748401,1748543

Modified: ofbiz/branches/release15.12/framework/entity/src/org/ofbiz/entity/jdbc/DatabaseUtil.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/release15.12/framework/entity/src/org/ofbiz/entity/jdbc/DatabaseUtil.java?rev=1748544&r1=1748543&r2=1748544&view=diff
==============================================================================
--- ofbiz/branches/release15.12/framework/entity/src/org/ofbiz/entity/jdbc/DatabaseUtil.java (original)
+++ ofbiz/branches/release15.12/framework/entity/src/org/ofbiz/entity/jdbc/DatabaseUtil.java Wed Jun 15 10:37:29 2016
@@ -219,8 +219,7 @@ public class DatabaseUtil {
         List<ModelEntity> entitiesAdded = new LinkedList<ModelEntity>();
         String schemaName;
         try {
-            DatabaseMetaData dbData = this.getDatabaseMetaData(null, messages);
-            schemaName = getSchemaName(dbData);
+            schemaName = getSchemaName(messages);
         } catch (SQLException e) {
             String message = "Could not get schema name the database, aborting.";
             if (messages != null) messages.add(message);
@@ -734,15 +733,7 @@ public class DatabaseUtil {
         // then print out XML for the entities/fields
         List<ModelEntity> newEntList = new LinkedList<ModelEntity>();
 
-        boolean isCaseSensitive = false;
-        DatabaseMetaData dbData = this.getDatabaseMetaData(null, messages);
-        if (dbData != null) {
-            try {
-                isCaseSensitive = dbData.supportsMixedCaseIdentifiers();
-            } catch (SQLException e) {
-                Debug.logError(e, "Error getting db meta data about case sensitive", module);
-            }
-        }
+        boolean isCaseSensitive = getIsCaseSensitive(messages);
 
         // iterate over the table names is alphabetical order
         for (String tableName: new TreeSet<String>(colInfo.keySet())) {
@@ -755,18 +746,55 @@ public class DatabaseUtil {
         return newEntList;
     }
 
-    public DatabaseMetaData getDatabaseMetaData(Connection connection, Collection<String> messages) {
-        if (connection == null) {
+    private String getSchemaName(Collection<String> messages) throws SQLException {
+        String schemaName;
+        Connection connection = null;
+
+        try {
             connection = getConnectionLogged(messages);
+            DatabaseMetaData dbData = this.getDatabaseMetaData(connection, messages);
+            schemaName = getSchemaName(dbData);
+            return schemaName;
+        }
+        finally {
+            if (connection != null) {
+                try {
+                    connection.close();
+                } catch (SQLException e) {
+                    Debug.logError(e, module);
+                }
+            }
         }
+    }
 
-        if (connection == null) {
-            String message = "Unable to establish a connection with the database, no additional information available.";
-            Debug.logError(message, module);
-            if (messages != null) messages.add(message);
-            return null;
+    private boolean getIsCaseSensitive(Collection<String> messages) {
+        Connection connection = null;
+
+        try {
+            connection = getConnectionLogged(messages);
+            boolean isCaseSensitive = false;
+            DatabaseMetaData dbData = this.getDatabaseMetaData(connection, messages);
+            if (dbData != null) {
+                try {
+                    isCaseSensitive = dbData.supportsMixedCaseIdentifiers();
+                } catch (SQLException e) {
+                    Debug.logError(e, "Error getting db meta data about case sensitive", module);
+                }
+            }
+            return isCaseSensitive;
+        }
+        finally {
+            if (connection != null) {
+                try {
+                    connection.close();
+                } catch (SQLException e) {
+                    Debug.logError(e, module);
+                }
+            }
         }
+    }
 
+    public DatabaseMetaData getDatabaseMetaData(Connection connection, Collection<String> messages) {
         DatabaseMetaData dbData = null;
         try {
             dbData = connection.getMetaData();