in manager/dm-server/src/main/java/org/apache/doris/stack/control/request/handler/DorisClusterTakeOverRequestHandler.java [121:185]
private ModelControlResponse handleCreateAndStartResourceClusterEvent(CoreUserEntity user,
DorisClusterTakeOverRequest request) throws Exception {
long clusterId = request.getClusterId();
log.info("handle take over cluster {} CREATE_AND_START_RESOURCE_CLUSTER request {} event",
clusterId, request.getRequestId());
ClusterInfoEntity clusterInfo = clusterInfoRepository.findById(clusterId).get();
// TODO:get cluster nodes ip info
List<String> nodeIps = new ArrayList<>();
Statement stmt = jdbcClient.getStatement(clusterInfo.getAddress(), clusterInfo.getQueryPort(),
clusterInfo.getUser(), CredsUtil.aesDecrypt(clusterInfo.getPasswd()));
Set<String> feNodeIps = jdbcClient.getFeOrBeIps(stmt, "'/frontends';");
log.debug("The node list IP of Doris cluster Fe is {}", feNodeIps);
Set<String> beNodeIps = jdbcClient.getFeOrBeIps(stmt, "'/backends';");
log.debug("The node list IP of Doris cluster Be is {}", beNodeIps);
jdbcClient.closeStatement(stmt);
Set<String> allNodeDistinct = new HashSet<>();
allNodeDistinct.addAll(feNodeIps);
allNodeDistinct.addAll(beNodeIps);
log.debug("The node list distinct IP of Doris cluster is {}", allNodeDistinct);
nodeIps.addAll(allNodeDistinct);
log.debug("The node list IP of Doris cluster is {}", nodeIps);
dorisClusterManager.createClusterResourceOperation(user, clusterInfo, request.getReqInfo().getAuthInfo(), nodeIps);
dorisClusterManager.configClusterResourceOperation(clusterInfo, "",
request.getReqInfo().getInstallInfo(), request.getReqInfo().getAgentPort());
// TODO sshInfo and iplist can check agent port
List<ResourceNodeEntity> nodeEntities =
nodeRepository.getByResourceClusterId(clusterInfo.getResourceClusterId());
Set<Long> feNodeIds = new HashSet<>();
Set<Long> beNodeIds = new HashSet<>();
for (ResourceNodeEntity nodeEntity : nodeEntities) {
if (feNodeIps.contains(nodeEntity.getHost())) {
feNodeIds.add(nodeEntity.getId());
}
if (beNodeIps.contains(nodeEntity.getHost())) {
beNodeIds.add(nodeEntity.getId());
}
}
log.debug("The node list ID of Doris cluster fe is {}", feNodeIds);
log.debug("The node list ID of Doris cluster be is {}", beNodeIds);
DorisClusterModuleResourceConfig feConfig = new DorisClusterModuleResourceConfig();
feConfig.setModuleName(ServerAndAgentConstant.FE_NAME);
feConfig.setNodeIds(feNodeIds);
DorisClusterModuleResourceConfig beConfig = new DorisClusterModuleResourceConfig();
beConfig.setModuleName(ServerAndAgentConstant.BE_NAME);
beConfig.setNodeIds(beNodeIds);
List<DorisClusterModuleResourceConfig> resourceConfigs = Lists.newArrayList(feConfig, beConfig);
dorisClusterManager.scheduleClusterOperation(clusterId, resourceConfigs);
dorisClusterManager.startClusterResourceOperation(clusterInfo, request.getRequestId());
return getResponse(request, false);
}