From 03ece437f0690e0902f5fcd24bd5129aa2fb0fb1 Mon Sep 17 00:00:00 2001 From: wangbo Date: Fri, 29 Dec 2023 23:04:20 +0800 Subject: [PATCH] Fix topicPublisher thread may NPE when no topic exists (#29306) --- .../apache/doris/common/publish/TopicPublisherThread.java | 5 ++--- .../apache/doris/common/publish/WorkloadGroupPublisher.java | 4 +--- .../workloadschedpolicy/WorkloadSchedPolicyPublisher.java | 4 +--- 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/common/publish/TopicPublisherThread.java b/fe/fe-core/src/main/java/org/apache/doris/common/publish/TopicPublisherThread.java index db5158e24f..0a6bed76d0 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/common/publish/TopicPublisherThread.java +++ b/fe/fe-core/src/main/java/org/apache/doris/common/publish/TopicPublisherThread.java @@ -66,9 +66,8 @@ public class TopicPublisherThread extends MasterDaemon { topicPublisher.getTopicInfo(request); } - if (request.getTopicMap().size() == 0) { - return; - } + // even request contains no group and schedule policy, we still need to send an empty rpc. + // because it may means workload group/policy is dropped // step 2: publish topic info to all be Collection nodesToPublish = clusterInfoService.getIdToBackend().values(); diff --git a/fe/fe-core/src/main/java/org/apache/doris/common/publish/WorkloadGroupPublisher.java b/fe/fe-core/src/main/java/org/apache/doris/common/publish/WorkloadGroupPublisher.java index e81ccb06d3..45b3664631 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/common/publish/WorkloadGroupPublisher.java +++ b/fe/fe-core/src/main/java/org/apache/doris/common/publish/WorkloadGroupPublisher.java @@ -35,8 +35,6 @@ public class WorkloadGroupPublisher implements TopicPublisher { @Override public void getTopicInfo(TPublishTopicRequest req) { List list = env.getWorkloadGroupMgr().getPublishTopicInfo(); - if (list.size() > 0) { - req.putToTopicMap(TTopicInfoType.WORKLOAD_GROUP, list); - } + req.putToTopicMap(TTopicInfoType.WORKLOAD_GROUP, list); } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/resource/workloadschedpolicy/WorkloadSchedPolicyPublisher.java b/fe/fe-core/src/main/java/org/apache/doris/resource/workloadschedpolicy/WorkloadSchedPolicyPublisher.java index 5083d183e6..e3b6e466a3 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/resource/workloadschedpolicy/WorkloadSchedPolicyPublisher.java +++ b/fe/fe-core/src/main/java/org/apache/doris/resource/workloadschedpolicy/WorkloadSchedPolicyPublisher.java @@ -36,9 +36,7 @@ public class WorkloadSchedPolicyPublisher implements TopicPublisher { @Override public void getTopicInfo(TPublishTopicRequest req) { List list = env.getWorkloadSchedPolicyMgr().getPublishTopicInfoList(); - if (list.size() > 0) { - req.putToTopicMap(TTopicInfoType.WORKLOAD_SCHED_POLICY, list); - } + req.putToTopicMap(TTopicInfoType.WORKLOAD_SCHED_POLICY, list); } }