This is an automated email from the ASF dual-hosted git repository. yiguolei pushed a commit to branch branch-2.1 in repository https://gitbox.apache.org/repos/asf/doris.git
commit 3efab570df1f2a5a22bf7e323a25359607114761 Author: Jibing-Li <[email protected]> AuthorDate: Thu May 30 14:27:44 2024 +0800 [fix](stats) Add synchronize for some analysis maps to avoid ConcurrentModificationException (#35591) Add synchronized for analysis related maps to avoid ConcurrentModificationException. For example, modify the map while writing image will throw ConcurrentModificationException. --- .../apache/doris/statistics/AnalysisManager.java | 24 +++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisManager.java b/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisManager.java index c20657e8c68..06f6ca331b3 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisManager.java +++ b/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisManager.java @@ -935,8 +935,12 @@ public class AnalysisManager implements Writable { @Override public void write(DataOutput out) throws IOException { - writeJobInfo(out, analysisJobInfoMap); - writeJobInfo(out, analysisTaskInfoMap); + synchronized (analysisJobInfoMap) { + writeJobInfo(out, analysisJobInfoMap); + } + synchronized (analysisTaskInfoMap) { + writeJobInfo(out, analysisTaskInfoMap); + } writeTableStats(out); } @@ -948,9 +952,11 @@ public class AnalysisManager implements Writable { } private void writeTableStats(DataOutput out) throws IOException { - out.writeInt(idToTblStats.size()); - for (Entry<Long, TableStatsMeta> entry : idToTblStats.entrySet()) { - entry.getValue().write(out); + synchronized (idToTblStats) { + out.writeInt(idToTblStats.size()); + for (Entry<Long, TableStatsMeta> entry : idToTblStats.entrySet()) { + entry.getValue().write(out); + } } } @@ -997,7 +1003,9 @@ public class AnalysisManager implements Writable { } public void replayUpdateTableStatsStatus(TableStatsMeta tableStats) { - idToTblStats.put(tableStats.tblId, tableStats); + synchronized (idToTblStats) { + idToTblStats.put(tableStats.tblId, tableStats); + } } public void logCreateTableStats(TableStatsMeta tableStats) { @@ -1042,7 +1050,9 @@ public class AnalysisManager implements Writable { } public void removeTableStats(long tableId) { - idToTblStats.remove(tableId); + synchronized (idToTblStats) { + idToTblStats.remove(tableId); + } } public ColStatsMeta findColStatsMeta(long tblId, String indexName, String colName) { --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
