From aac7d81077d7b14c4ab6bb3c49b595d4226173f3 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Sat, 13 Jun 2020 15:37:04 +0200 Subject: [PATCH] IDEMPIERE-4330 New tables are not logged - requires a server restart (#111) * IDEMPIERE-4330 New tables are not logged - requires a server restart * IDEMPIERE-4330 New tables are not logged - requires a server restart Add synchronized to isLogged and resetLoggedList as advised by Heng Sin --- .../src/org/compiere/model/MChangeLog.java | 9 ++++++--- org.adempiere.base/src/org/compiere/model/MColumn.java | 6 ++++++ org.adempiere.base/src/org/compiere/model/MTable.java | 3 +++ 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/org.adempiere.base/src/org/compiere/model/MChangeLog.java b/org.adempiere.base/src/org/compiere/model/MChangeLog.java index 8ed28049c6..7cde84a141 100644 --- a/org.adempiere.base/src/org/compiere/model/MChangeLog.java +++ b/org.adempiere.base/src/org/compiere/model/MChangeLog.java @@ -37,15 +37,14 @@ public class MChangeLog extends X_AD_ChangeLog /** * */ - private static final long serialVersionUID = -7156972859181201446L; - + private static final long serialVersionUID = 7262833610411402160L; /** * Do we track changes for this table * @param AD_Table_ID table * @return true if changes are tracked */ - public static boolean isLogged (int AD_Table_ID) + public static synchronized boolean isLogged (int AD_Table_ID) { if (s_changeLog == null || s_changeLog.length == 0) fillChangeLog(); @@ -53,6 +52,10 @@ public class MChangeLog extends X_AD_ChangeLog int index = Arrays.binarySearch(s_changeLog, AD_Table_ID); return index >= 0; } // trackChanges + + public static synchronized void resetLoggedList() { + s_changeLog = null; + } /** * Fill Log with tables to be logged diff --git a/org.adempiere.base/src/org/compiere/model/MColumn.java b/org.adempiere.base/src/org/compiere/model/MColumn.java index 5bf13c3024..9a34f6e04a 100644 --- a/org.adempiere.base/src/org/compiere/model/MColumn.java +++ b/org.adempiere.base/src/org/compiere/model/MColumn.java @@ -498,6 +498,12 @@ public class MColumn extends X_AD_Column } */ + if ((newRecord || is_ValueChanged(COLUMNNAME_ColumnName)) + && ( "EntityType".equals(getColumnName()) + || "EntityType".equals(get_ValueOld(COLUMNNAME_ColumnName).toString()))) { + MChangeLog.resetLoggedList(); + } + return success; } // afterSave diff --git a/org.adempiere.base/src/org/compiere/model/MTable.java b/org.adempiere.base/src/org/compiere/model/MTable.java index 7baf8adab4..f62dc51de9 100644 --- a/org.adempiere.base/src/org/compiere/model/MTable.java +++ b/org.adempiere.base/src/org/compiere/model/MTable.java @@ -568,6 +568,9 @@ public class MTable extends X_AD_Table seq.setName(getTableName()); seq.saveEx(); } + if (newRecord || is_ValueChanged(COLUMNNAME_IsChangeLog)) { + MChangeLog.resetLoggedList(); + } return success; } // afterSave