mirror of
https://github.com/alibaba/canal.git
synced 2026-11-04 00:30:15 +08:00
bug fix (#2122)
* admin端口调整完成 * server端适配调整 * 调整部分功能 * 单机/集群admin调试完成 * 重新发布前端页面 * bug fix * 解决server端admin配置会被远程覆盖的问题 解决default-instance.xml无法加载远程zkServers配置的问题 * 集群模式下取活动实例的问题
This commit is contained in:
@@ -5,7 +5,7 @@ import com.alibaba.otter.canal.protocol.exception.CanalClientException;
|
||||
|
||||
/**
|
||||
* canal数据操作客户端
|
||||
*
|
||||
*
|
||||
* @author zebin.xuzb @ 2012-6-19
|
||||
* @author jianghang
|
||||
* @version 1.0.0
|
||||
@@ -14,14 +14,14 @@ public interface AdminConnector {
|
||||
|
||||
/**
|
||||
* 链接对应的canal server
|
||||
*
|
||||
*
|
||||
* @throws CanalClientException
|
||||
*/
|
||||
void connect() throws ServiceException;
|
||||
|
||||
/**
|
||||
* 释放链接
|
||||
*
|
||||
*
|
||||
* @throws CanalClientException
|
||||
*/
|
||||
void disconnect() throws ServiceException;
|
||||
@@ -54,6 +54,13 @@ public interface AdminConnector {
|
||||
*/
|
||||
boolean restart();
|
||||
|
||||
/**
|
||||
* 获取所有当前节点下所有实例
|
||||
*
|
||||
* @return 实例信息
|
||||
*/
|
||||
String getInstances();
|
||||
|
||||
/**
|
||||
* 获取所有当前节点下运行中的实例
|
||||
*
|
||||
@@ -63,7 +70,7 @@ public interface AdminConnector {
|
||||
|
||||
/**
|
||||
* 通过实例名检查
|
||||
*
|
||||
*
|
||||
* @param destination
|
||||
* @return
|
||||
*/
|
||||
@@ -109,7 +116,7 @@ public interface AdminConnector {
|
||||
|
||||
/**
|
||||
* 获取Instance的机器日志列表
|
||||
*
|
||||
*
|
||||
* @param destination
|
||||
*/
|
||||
String listInstanceLog(String destination);
|
||||
|
||||
@@ -156,6 +156,11 @@ public class SimpleAdminConnector implements AdminConnector {
|
||||
return BooleanUtils.toBoolean(Integer.parseInt(doServerAdmin("restart")));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getInstances() {
|
||||
return doServerAdmin("instances");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getRunningInstances() {
|
||||
return doServerAdmin("list");
|
||||
@@ -227,11 +232,8 @@ public class SimpleAdminConnector implements AdminConnector {
|
||||
try {
|
||||
writeWithHeader(Packet.newBuilder()
|
||||
.setType(PacketType.INSTANCE)
|
||||
.setBody(InstanceAdmin.newBuilder()
|
||||
.setDestination(destination)
|
||||
.setAction(action)
|
||||
.build()
|
||||
.toByteString())
|
||||
.setBody(
|
||||
InstanceAdmin.newBuilder().setDestination(destination).setAction(action).build().toByteString())
|
||||
.build()
|
||||
.toByteArray());
|
||||
|
||||
|
||||
@@ -162,6 +162,6 @@ public class CanalInstanceController {
|
||||
*/
|
||||
@GetMapping(value = "/active/instances/{serverId}")
|
||||
public BaseModel<List<CanalInstanceConfig>> activeInstances(@PathVariable Long serverId, @PathVariable String env) {
|
||||
return BaseModel.getInstance(canalInstanceConfigService.findActiveInstaceByServerId(serverId));
|
||||
return BaseModel.getInstance(canalInstanceConfigService.findActiveInstanceByServerId(serverId));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,8 +20,6 @@ public interface CanalInstanceService {
|
||||
|
||||
CanalInstanceConfig detail(Long id);
|
||||
|
||||
CanalInstanceConfig findOne(String name);
|
||||
|
||||
void updateContent(CanalInstanceConfig canalInstanceConfig);
|
||||
|
||||
void delete(Long id);
|
||||
@@ -32,5 +30,5 @@ public interface CanalInstanceService {
|
||||
|
||||
boolean instanceOperation(Long id, String option);
|
||||
|
||||
List<CanalInstanceConfig> findActiveInstaceByServerId(Long serverId);
|
||||
List<CanalInstanceConfig> findActiveInstanceByServerId(Long serverId);
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.alibaba.otter.canal.admin.service.impl;
|
||||
import java.util.List;
|
||||
|
||||
import com.alibaba.otter.canal.admin.common.exception.ServiceException;
|
||||
import com.alibaba.otter.canal.admin.model.CanalInstanceConfig;
|
||||
import com.alibaba.otter.canal.admin.model.NodeServer;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -33,7 +34,13 @@ public class CanalClusterServiceImpl implements CanalClusterServic {
|
||||
throw new ServiceException("Servers exist, delete failed");
|
||||
}
|
||||
|
||||
CanalCluster canalCluster = CanalCluster.find.byId(id);
|
||||
// 判断集群下是否存在instance信息
|
||||
int instanceCnt = CanalInstanceConfig.find.query().where().eq("clusterId", id).findCount();
|
||||
if (instanceCnt > 0) {
|
||||
throw new ServiceException("Instances exist, delete failed");
|
||||
}
|
||||
|
||||
CanalCluster canalCluster = CanalCluster.find.byId(id);
|
||||
if (canalCluster != null) {
|
||||
canalCluster.delete();
|
||||
}
|
||||
|
||||
@@ -119,13 +119,23 @@ public class CanalInstanceServiceImpl implements CanalInstanceService {
|
||||
*
|
||||
* @param serverId server id
|
||||
*/
|
||||
public List<CanalInstanceConfig> findActiveInstaceByServerId(Long serverId) {
|
||||
public List<CanalInstanceConfig> findActiveInstanceByServerId(Long serverId) {
|
||||
NodeServer nodeServer = NodeServer.find.byId(serverId);
|
||||
if (nodeServer == null) {
|
||||
return null;
|
||||
}
|
||||
String runningInstances = SimpleAdminConnectors
|
||||
.execute(nodeServer.getIp(), nodeServer.getAdminPort(), AdminConnector::getRunningInstances);
|
||||
|
||||
String runningInstances = null;
|
||||
if (nodeServer.getClusterId() != null) {// 集群模式
|
||||
// 只取活动的instances
|
||||
runningInstances = SimpleAdminConnectors
|
||||
.execute(nodeServer.getIp(), nodeServer.getAdminPort(), AdminConnector::getRunningInstances);
|
||||
} else {
|
||||
// 取所属所有instances
|
||||
runningInstances = SimpleAdminConnectors
|
||||
.execute(nodeServer.getIp(), nodeServer.getAdminPort(), AdminConnector::getInstances);
|
||||
}
|
||||
|
||||
if (runningInstances == null) {
|
||||
return null;
|
||||
}
|
||||
@@ -227,16 +237,6 @@ public class CanalInstanceServiceImpl implements CanalInstanceService {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public CanalInstanceConfig findOne(String name) {
|
||||
CanalInstanceConfig config = CanalInstanceConfig.find.query()
|
||||
.setDisableLazyLoading(true)
|
||||
.where()
|
||||
.eq("name", name)
|
||||
.findOne();
|
||||
return config;
|
||||
}
|
||||
|
||||
public Map<String, String> remoteInstanceLog(Long id, Long nodeId) {
|
||||
Map<String, String> result = new HashMap<>();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user