Merge pull request #1059 from rewerma/master

CanalConnector接口去掉stopRunning方法
This commit is contained in:
rewerma
2018-10-29 01:42:30 +08:00
committed by GitHub
10 changed files with 38 additions and 48 deletions

View File

@@ -134,7 +134,6 @@ public abstract class AbstractCanalAdapterWorker {
return;
}
closeConnection();
running = false;
syncSwitch.release(canalDestination);
@@ -156,6 +155,4 @@ public abstract class AbstractCanalAdapterWorker {
}
}
protected abstract void closeConnection();
}

View File

@@ -34,11 +34,6 @@ public class CanalAdapterKafkaWorker extends AbstractCanalAdapterWorker {
// connector.setSessionTimeout(1L, TimeUnit.MINUTES);
}
@Override
protected void closeConnection() {
connector.stopRunning();
}
@Override
protected void process() {
while (!running)

View File

@@ -32,11 +32,6 @@ public class CanalAdapterRocketMQWorker extends AbstractCanalAdapterWorker {
logger.info("RocketMQ consumer config topic:{}, nameServer:{}, groupId:{}", topic, nameServers, groupId);
}
@Override
protected void closeConnection() {
connector.stopRunning();
}
@Override
protected void process() {
while (!running)
@@ -88,7 +83,7 @@ public class CanalAdapterRocketMQWorker extends AbstractCanalAdapterWorker {
} catch (WakeupException e) {
// No-op. Continue process
}
connector.stopRunning();
connector.disconnect();
logger.info("=============> Disconnect topic: {} <=============", this.topic);
}
}

View File

@@ -2,7 +2,6 @@ package com.alibaba.otter.canal.adapter.launcher.loader;
import java.net.SocketAddress;
import java.util.List;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
@@ -10,6 +9,7 @@ import com.alibaba.otter.canal.client.CanalConnector;
import com.alibaba.otter.canal.client.CanalConnectors;
import com.alibaba.otter.canal.client.adapter.OuterAdapter;
import com.alibaba.otter.canal.client.impl.ClusterCanalConnector;
import com.alibaba.otter.canal.client.impl.SimpleCanalConnector;
import com.alibaba.otter.canal.protocol.Message;
/**
@@ -36,7 +36,6 @@ public class CanalAdapterWorker extends AbstractCanalAdapterWorker {
List<List<OuterAdapter>> canalOuterAdapters){
super(canalOuterAdapters);
this.canalDestination = canalDestination;
groupInnerExecutorService = Executors.newFixedThreadPool(canalOuterAdapters.size());
connector = CanalConnectors.newSingleConnector(address, canalDestination, "", "");
}
@@ -51,16 +50,10 @@ public class CanalAdapterWorker extends AbstractCanalAdapterWorker {
List<List<OuterAdapter>> canalOuterAdapters){
super(canalOuterAdapters);
this.canalDestination = canalDestination;
groupInnerExecutorService = Executors.newFixedThreadPool(canalOuterAdapters.size());
connector = CanalConnectors.newClusterConnector(zookeeperHosts, canalDestination, "", "");
((ClusterCanalConnector) connector).setSoTimeout(SO_TIMEOUT);
}
@Override
protected void closeConnection() {
connector.stopRunning();
}
@Override
protected void process() {
while (!running)
@@ -132,4 +125,38 @@ public class CanalAdapterWorker extends AbstractCanalAdapterWorker {
}
}
}
@Override
public void stop() {
try {
if (!running) {
return;
}
if (connector instanceof ClusterCanalConnector) {
((ClusterCanalConnector) connector).stopRunning();
} else if (connector instanceof SimpleCanalConnector) {
((SimpleCanalConnector) connector).stopRunning();
}
running = false;
syncSwitch.release(canalDestination);
logger.info("destination {} is waiting for adapters' worker thread die!", canalDestination);
if (thread != null) {
try {
thread.join();
} catch (InterruptedException e) {
// ignore
}
}
groupInnerExecutorService.shutdown();
logger.info("destination {} adapters worker thread dead!", canalDestination);
canalOuterAdapters.forEach(outerAdapters -> outerAdapters.forEach(OuterAdapter::destroy));
logger.info("destination {} all adapters destroyed!", canalDestination);
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
}
}