|
@@ -1,5 +1,13 @@
|
|
package com.alibaba.otter.canal.common.zookeeper;
|
|
package com.alibaba.otter.canal.common.zookeeper;
|
|
|
|
|
|
|
|
+import java.io.IOException;
|
|
|
|
+import java.lang.reflect.Field;
|
|
|
|
+import java.net.InetSocketAddress;
|
|
|
|
+import java.util.Arrays;
|
|
|
|
+import java.util.List;
|
|
|
|
+import java.util.concurrent.locks.Lock;
|
|
|
|
+import java.util.concurrent.locks.ReentrantLock;
|
|
|
|
+
|
|
import org.I0Itec.zkclient.ZkConnection;
|
|
import org.I0Itec.zkclient.ZkConnection;
|
|
import org.I0Itec.zkclient.exception.ZkException;
|
|
import org.I0Itec.zkclient.exception.ZkException;
|
|
import org.apache.commons.lang.StringUtils;
|
|
import org.apache.commons.lang.StringUtils;
|
|
@@ -13,14 +21,6 @@ import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.springframework.util.ReflectionUtils;
|
|
import org.springframework.util.ReflectionUtils;
|
|
|
|
|
|
-import java.io.IOException;
|
|
|
|
-import java.lang.reflect.Field;
|
|
|
|
-import java.net.InetSocketAddress;
|
|
|
|
-import java.util.Arrays;
|
|
|
|
-import java.util.List;
|
|
|
|
-import java.util.concurrent.locks.Lock;
|
|
|
|
-import java.util.concurrent.locks.ReentrantLock;
|
|
|
|
-
|
|
|
|
/**
|
|
/**
|
|
* 封装了ZooKeeper,使其支持节点的优先顺序,比如美国机房的节点会优先加载美国对应的zk集群列表,都失败后才会选择加载杭州的zk集群列表 *
|
|
* 封装了ZooKeeper,使其支持节点的优先顺序,比如美国机房的节点会优先加载美国对应的zk集群列表,都失败后才会选择加载杭州的zk集群列表 *
|
|
*
|
|
*
|
|
@@ -33,8 +33,10 @@ public class ZooKeeperx extends ZkConnection {
|
|
private static final Logger logger = LoggerFactory.getLogger(ZooKeeperx.class);
|
|
private static final Logger logger = LoggerFactory.getLogger(ZooKeeperx.class);
|
|
private static final Field clientCnxnField = ReflectionUtils.findField(ZooKeeper.class, "cnxn");
|
|
private static final Field clientCnxnField = ReflectionUtils.findField(ZooKeeper.class, "cnxn");
|
|
private static final Field hostProviderField = ReflectionUtils.findField(ClientCnxn.class, "hostProvider");
|
|
private static final Field hostProviderField = ReflectionUtils.findField(ClientCnxn.class, "hostProvider");
|
|
- private static final Field serverAddressesField = ReflectionUtils.findField(StaticHostProvider.class, "serverAddresses");
|
|
|
|
- private static final Field zookeeperLockField = ReflectionUtils.findField(ZkConnection.class, "_zookeeperLock");
|
|
|
|
|
|
+ private static final Field serverAddressesField = ReflectionUtils.findField(StaticHostProvider.class,
|
|
|
|
+ "serverAddresses");
|
|
|
|
+ private static final Field zookeeperLockField = ReflectionUtils.findField(ZkConnection.class,
|
|
|
|
+ "_zookeeperLock");
|
|
private static final Field zookeeperFiled = ReflectionUtils.findField(ZkConnection.class, "_zk");
|
|
private static final Field zookeeperFiled = ReflectionUtils.findField(ZkConnection.class, "_zk");
|
|
private static final int DEFAULT_SESSION_TIMEOUT = 90000;
|
|
private static final int DEFAULT_SESSION_TIMEOUT = 90000;
|
|
|
|
|
|
@@ -98,7 +100,8 @@ public class ZooKeeperx extends ZkConnection {
|
|
// 强制获取zk中的地址信息
|
|
// 强制获取zk中的地址信息
|
|
ClientCnxn cnxn = (ClientCnxn) ReflectionUtils.getField(clientCnxnField, zk);
|
|
ClientCnxn cnxn = (ClientCnxn) ReflectionUtils.getField(clientCnxnField, zk);
|
|
HostProvider hostProvider = (HostProvider) ReflectionUtils.getField(hostProviderField, cnxn);
|
|
HostProvider hostProvider = (HostProvider) ReflectionUtils.getField(hostProviderField, cnxn);
|
|
- List<InetSocketAddress> serverAddrs = (List<InetSocketAddress>) ReflectionUtils.getField(serverAddressesField, hostProvider);
|
|
|
|
|
|
+ List<InetSocketAddress> serverAddrs = (List<InetSocketAddress>) ReflectionUtils.getField(serverAddressesField,
|
|
|
|
+ hostProvider);
|
|
// 添加第二组集群列表
|
|
// 添加第二组集群列表
|
|
serverAddrs.addAll(new ConnectStringParser(cluster).getServerAddresses());
|
|
serverAddrs.addAll(new ConnectStringParser(cluster).getServerAddresses());
|
|
}
|
|
}
|
|
@@ -116,4 +119,3 @@ public class ZooKeeperx extends ZkConnection {
|
|
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|