[ofbiz-framework] branch trunk updated: Fixed: DatabaseUtil.getColumnInfo(...) does not retrieve primary keys due to connection-locks (OFBIZ-11312)

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

[ofbiz-framework] branch trunk updated: Fixed: DatabaseUtil.getColumnInfo(...) does not retrieve primary keys due to connection-locks (OFBIZ-11312)

jleroux@apache.org
This is an automated email from the ASF dual-hosted git repository.

jleroux pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git


The following commit(s) were added to refs/heads/trunk by this push:
     new 4697bf5  Fixed: DatabaseUtil.getColumnInfo(...) does not retrieve primary keys due to connection-locks (OFBIZ-11312)
4697bf5 is described below

commit 4697bf5faa7672152e9d59f49456ebb03a950645
Author: Jacques Le Roux <[hidden email]>
AuthorDate: Wed Feb 26 08:38:08 2020 +0100

    Fixed: DatabaseUtil.getColumnInfo(...) does not retrieve primary keys due to
    connection-locks
    (OFBIZ-11312)
   
    The method DatabaseUtil.getColumnInfo(...) uses an elaborate algorithm using a
    List<Future<AbstractCountingCallable>> object. This does not work properly as it
    runs into connection-locks. When debugging the error does not occur. I assume
    that the slower pace of debugging prevents the error.
   
    Thanks: Benjamin Jugl
---
 .../main/java/org/apache/ofbiz/entity/jdbc/DatabaseUtil.java   | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/framework/entity/src/main/java/org/apache/ofbiz/entity/jdbc/DatabaseUtil.java b/framework/entity/src/main/java/org/apache/ofbiz/entity/jdbc/DatabaseUtil.java
index a833c02..b3cc716 100644
--- a/framework/entity/src/main/java/org/apache/ofbiz/entity/jdbc/DatabaseUtil.java
+++ b/framework/entity/src/main/java/org/apache/ofbiz/entity/jdbc/DatabaseUtil.java
@@ -1157,13 +1157,13 @@ public class DatabaseUtil {
                     }
                     if (pkCount == 0) {
                         Debug.logInfo("Searching in " + tableNames.size() + " tables for primary key fields ...", module);
-                        List<Future<AbstractCountingCallable>> pkFetcherFutures = new LinkedList<>();
                         for (String curTable: tableNames) {
                             curTable = curTable.substring(curTable.indexOf('.') + 1); //cut off schema name
-                            pkFetcherFutures.add(executor.submit(createPrimaryKeyFetcher(dbData, lookupSchemaName, needsUpperCase, colInfo, messages, curTable)));
-                        }
-                        for (AbstractCountingCallable pkFetcherCallable: ExecutionPool.getAllFutures(pkFetcherFutures)) {
-                            pkCount += pkFetcherCallable.updateData(messages);
+                            try (ResultSet rsPks = dbData.getPrimaryKeys(null, lookupSchemaName, curTable)) {
+                                pkCount += checkPrimaryKeyInfo(rsPks, lookupSchemaName, needsUpperCase, colInfo, messages);
+                            } catch (Exception e1) {
+                                Debug.logInfo("Error getting primary key info from database with % tableName." + e1.toString(), module);
+                            }
                         }
                     }