[Bugfix]修复新接入的集群,Controller-Host不显示的问题(#927)

问题原因:
1、新接入的集群,DB中暂未存储Broker信息,因此在存储Controller至DB时,查询DB中的Broker会查询为空。

解决方式:
1、存储Controller至DB前,主动获取一次Broker的信息。
This commit is contained in:
zengqiao
2023-02-20 16:01:29 +08:00
committed by EricZeng
parent 687eea80c8
commit 91c60ce72c
4 changed files with 39 additions and 16 deletions

View File

@@ -5,12 +5,16 @@ import com.didiglobal.logi.job.common.TaskResult;
import com.didiglobal.logi.job.core.consensual.ConsensualEnum;
import com.didiglobal.logi.log.ILog;
import com.didiglobal.logi.log.LogFactory;
import com.xiaojukeji.know.streaming.km.common.bean.entity.broker.Broker;
import com.xiaojukeji.know.streaming.km.common.bean.entity.cluster.ClusterPhy;
import com.xiaojukeji.know.streaming.km.common.bean.entity.kafkacontroller.KafkaController;
import com.xiaojukeji.know.streaming.km.common.bean.entity.result.Result;
import com.xiaojukeji.know.streaming.km.core.service.broker.BrokerService;
import com.xiaojukeji.know.streaming.km.core.service.kafkacontroller.KafkaControllerService;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.List;
@Task(name = "SyncControllerTask",
description = "Controller信息同步到DB",
@@ -19,7 +23,10 @@ import org.springframework.beans.factory.annotation.Autowired;
consensual = ConsensualEnum.BROADCAST,
timeout = 2 * 60)
public class SyncControllerTask extends AbstractAsyncMetadataDispatchTask {
private static final ILog log = LogFactory.getLog(SyncControllerTask.class);
private static final ILog LOGGER = LogFactory.getLog(SyncControllerTask.class);
@Autowired
private BrokerService brokerService;
@Autowired
private KafkaControllerService kafkaControllerService;
@@ -33,10 +40,30 @@ public class SyncControllerTask extends AbstractAsyncMetadataDispatchTask {
if (controllerResult.getData() == null) {
kafkaControllerService.setNoKafkaController(clusterPhy.getId(), System.currentTimeMillis() / 1000L * 1000L);
} else {
kafkaControllerService.insertAndIgnoreDuplicateException(controllerResult.getData());
return TaskResult.SUCCESS;
}
Broker controllerBroker = null;
Result<List<Broker>> brokerListResult = brokerService.listBrokersFromKafka(clusterPhy);
if (brokerListResult.failed()) {
LOGGER.error("method=processClusterTask||clusterPhyId={}||result={}||errMsg=list brokers failed", clusterPhy.getId(), brokerListResult);
} else {
for (Broker broker: brokerListResult.getData()) {
if (broker.getBrokerId().equals(controllerResult.getData().getBrokerId())) {
controllerBroker = broker;
}
}
}
kafkaControllerService.insertAndIgnoreDuplicateException(
controllerResult.getData(),
controllerBroker != null? controllerBroker.getHost(): "",
controllerBroker != null? controllerBroker.getRack(): ""
);
return TaskResult.SUCCESS;
}
}