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); + } } }