This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new f57dc9298a9 [Fix]Fix publish may wait timeout because of dead BE
(#40763)
f57dc9298a9 is described below
commit f57dc9298a94c6fc3504c2a78e974843a9dc7b50
Author: wangbo <[email protected]>
AuthorDate: Mon Sep 23 14:40:12 2024 +0800
[Fix]Fix publish may wait timeout because of dead BE (#40763)
## Proposed changes
```AckResponseHandler``` should only accept alive BE, otherwise pubslih may
wait timeout if dead Be exists.
---
.../doris/common/publish/TopicPublisherThread.java | 17 +++++++++++------
1 file changed, 11 insertions(+), 6 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 797b0893936..df3b06e8271 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
@@ -35,7 +35,6 @@ import org.apache.logging.log4j.Logger;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -76,18 +75,24 @@ public class TopicPublisherThread extends MasterDaemon {
// because it may means workload group/policy is dropped
// step 2: publish topic info to all be
- Collection<Backend> nodesToPublish;
+ List<Backend> nodesToPublish = new ArrayList<>();
try {
- nodesToPublish =
clusterInfoService.getAllBackendsByAllCluster().values();
+ for (Backend be :
clusterInfoService.getAllBackendsByAllCluster().values()) {
+ if (be.isAlive()) {
+ nodesToPublish.add(be);
+ }
+ }
} catch (Exception e) {
LOG.warn("get backends failed", e);
return;
}
+ if (nodesToPublish.isEmpty()) {
+ LOG.info("no alive backend, skip publish topic");
+ return;
+ }
AckResponseHandler handler = new AckResponseHandler(nodesToPublish);
for (Backend be : nodesToPublish) {
- if (be.isAlive()) {
- executor.submit(new TopicPublishWorker(request, be, handler));
- }
+ executor.submit(new TopicPublishWorker(request, be, handler));
}
try {
int timeoutMs = Config.publish_topic_info_interval_ms / 3 * 2;
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]