Przeglądaj źródła

fix: issue #2649 client-adapter启动时抛LinkageError异常、#3073 client-adapter通过启动参数传入`canal.tcp.zookeeper.hosts`为空值时抛异常 (#3074)

许道杰 4 lat temu
rodzic
commit
58448e559d

+ 1 - 0
connector/core/src/main/java/com/alibaba/otter/canal/connector/core/spi/URLClassExtensionLoader.java

@@ -20,6 +20,7 @@ public class URLClassExtensionLoader extends URLClassLoader {
         }
 
         if (name.startsWith("java.") || name.startsWith("org.slf4j.") || name.startsWith("org.apache.logging")
+            || name.startsWith("org.apache.zookeeper.") || name.startsWith("org.I0Itec.zkclient.")
             || name.startsWith("org.apache.commons.logging.")) {
             // || name.startsWith("org.apache.hadoop."))
             // {

+ 13 - 9
connector/tcp-connector/src/main/java/com/alibaba/otter/canal/connector/tcp/consumer/CanalTCPConsumer.java

@@ -1,11 +1,5 @@
 package com.alibaba.otter.canal.connector.tcp.consumer;
 
-import java.net.InetSocketAddress;
-import java.net.SocketAddress;
-import java.util.List;
-import java.util.Properties;
-import java.util.concurrent.TimeUnit;
-
 import com.alibaba.otter.canal.client.CanalConnector;
 import com.alibaba.otter.canal.client.impl.ClusterCanalConnector;
 import com.alibaba.otter.canal.client.impl.ClusterNodeAccessStrategy;
@@ -18,11 +12,21 @@ import com.alibaba.otter.canal.connector.core.util.MessageUtil;
 import com.alibaba.otter.canal.connector.tcp.config.TCPConstants;
 import com.alibaba.otter.canal.protocol.Message;
 
+import org.apache.commons.lang.StringUtils;
+
+import java.net.InetSocketAddress;
+import java.net.SocketAddress;
+import java.util.List;
+import java.util.Properties;
+import java.util.concurrent.TimeUnit;
+
 /**
  * TCP 消费者连接器, 一个destination对应一个SPI实例
- * 
+ *
  * @author rewerma 2020-01-30
- * @version 1.0.0
+ * @author XuDaojie
+ * @version 1.1.5
+ * @since 1.1.5
  */
 @SPI("tcp")
 public class CanalTCPConsumer implements CanalMsgConsumer {
@@ -42,7 +46,7 @@ public class CanalTCPConsumer implements CanalMsgConsumer {
         if (batchSizePro != null) {
             batchSize = Integer.parseInt(batchSizePro);
         }
-        if (host != null) {
+        if (StringUtils.isNotBlank(host)) {
             String[] ipPort = host.split(":");
             SocketAddress sa = new InetSocketAddress(ipPort[0], Integer.parseInt(ipPort[1]));
             this.canalConnector = new SimpleCanalConnector(sa, username, password, destination);