You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by jl...@apache.org on 2020/02/26 07:51:49 UTC

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

This is an automated email from the ASF dual-hosted git repository.

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


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

commit d2128ffeaa4a9f5e242ad236a34bb34e3a591941
Author: Jacques Le Roux <ja...@les7arts.com>
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
    
    # Conflicts:
    #	framework/entity/src/main/java/org/apache/ofbiz/entity/jdbc/DatabaseUtil.java
---
 .../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 e2201e5..0edd110 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<Future<AbstractCountingCallable>>();
                         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);
+                            }
                         }
                     }