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 <jacques.le.r...@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
---
 .../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);
+                            }
                         }
                     }
 

Reply via email to