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