diff --git a/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisInfo.java b/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisInfo.java index 0606350b8b..65bb4a5dd9 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisInfo.java +++ b/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisInfo.java @@ -97,10 +97,8 @@ public class AnalysisInfo implements Writable { public final long tblId; // TODO: Map here is wired, List is enough - @SerializedName("colToPartitions") public final Map> colToPartitions; - @SerializedName("partitionNames") public final Set partitionNames; @SerializedName("colName") diff --git a/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisJob.java b/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisJob.java index bb51ae593e..193e0c4900 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisJob.java +++ b/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisJob.java @@ -178,6 +178,18 @@ public class AnalysisJob { public void deregisterJob() { analysisManager.removeJob(jobInfo.jobId); + for (BaseAnalysisTask task : queryingTask) { + task.info.colToPartitions.clear(); + if (task.info.partitionNames != null) { + task.info.partitionNames.clear(); + } + } + for (BaseAnalysisTask task : queryFinished) { + task.info.colToPartitions.clear(); + if (task.info.partitionNames != null) { + task.info.partitionNames.clear(); + } + } } protected void syncLoadStats() { 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 d9f9f9582f..01e48f422f 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 @@ -621,7 +621,10 @@ public class AnalysisManager implements Writable { tableStats.update(jobInfo, tbl); logCreateTableStats(tableStats); } - + jobInfo.colToPartitions.clear(); + if (jobInfo.partitionNames != null) { + jobInfo.partitionNames.clear(); + } } public List showAnalysisJob(ShowAnalyzeStmt stmt) { @@ -801,6 +804,9 @@ public class AnalysisManager implements Writable { while (analysisJobInfoMap.size() >= Config.analyze_record_limit) { analysisJobInfoMap.remove(analysisJobInfoMap.pollFirstEntry().getKey()); } + if (jobInfo.message != null && jobInfo.message.length() >= StatisticConstants.MSG_LEN_UPPER_BOUND) { + jobInfo.message = jobInfo.message.substring(0, StatisticConstants.MSG_LEN_UPPER_BOUND); + } this.analysisJobInfoMap.put(jobInfo.jobId, jobInfo); } @@ -808,6 +814,9 @@ public class AnalysisManager implements Writable { while (analysisTaskInfoMap.size() >= Config.analyze_record_limit) { analysisTaskInfoMap.remove(analysisTaskInfoMap.pollFirstEntry().getKey()); } + if (taskInfo.message != null && taskInfo.message.length() >= StatisticConstants.MSG_LEN_UPPER_BOUND) { + taskInfo.message = taskInfo.message.substring(0, StatisticConstants.MSG_LEN_UPPER_BOUND); + } this.analysisTaskInfoMap.put(taskInfo.taskId, taskInfo); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/statistics/StatisticConstants.java b/fe/fe-core/src/main/java/org/apache/doris/statistics/StatisticConstants.java index 3e2b9c8bc2..695edae386 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/statistics/StatisticConstants.java +++ b/fe/fe-core/src/main/java/org/apache/doris/statistics/StatisticConstants.java @@ -100,6 +100,8 @@ public class StatisticConstants { public static final int AUTO_ANALYZE_TABLE_WIDTH_THRESHOLD = 70; + public static final int MSG_LEN_UPPER_BOUND = 1024; + static { SYSTEM_DBS.add(SystemInfoService.DEFAULT_CLUSTER + ClusterNamespace.CLUSTER_DELIMITER + FeConstants.INTERNAL_DB_NAME);