mirror of
https://github.com/alibaba/canal.git
synced 2026-11-04 00:30:15 +08:00
fixed PR format
This commit is contained in:
@@ -13,11 +13,7 @@ import com.alibaba.otter.canal.parse.driver.mysql.packets.HeaderPacket;
|
||||
import com.alibaba.otter.canal.parse.driver.mysql.packets.client.AuthSwitchResponsePacket;
|
||||
import com.alibaba.otter.canal.parse.driver.mysql.packets.client.ClientAuthenticationPacket;
|
||||
import com.alibaba.otter.canal.parse.driver.mysql.packets.client.QuitCommandPacket;
|
||||
import com.alibaba.otter.canal.parse.driver.mysql.packets.server.AuthSwitchRequestMoreData;
|
||||
import com.alibaba.otter.canal.parse.driver.mysql.packets.server.AuthSwitchRequestPacket;
|
||||
import com.alibaba.otter.canal.parse.driver.mysql.packets.server.ErrorPacket;
|
||||
import com.alibaba.otter.canal.parse.driver.mysql.packets.server.HandshakeInitializationPacket;
|
||||
import com.alibaba.otter.canal.parse.driver.mysql.packets.server.Reply323Packet;
|
||||
import com.alibaba.otter.canal.parse.driver.mysql.packets.server.*;
|
||||
import com.alibaba.otter.canal.parse.driver.mysql.socket.SocketChannel;
|
||||
import com.alibaba.otter.canal.parse.driver.mysql.socket.SocketChannelPool;
|
||||
import com.alibaba.otter.canal.parse.driver.mysql.utils.MSC;
|
||||
@@ -247,6 +243,7 @@ public class MysqlConnector {
|
||||
body = PacketManager.readBytes(channel, header.getPacketBodyLength(), timeout);
|
||||
assert body != null;
|
||||
if (body[0] == 0x01 && body[1] == 0x04) {
|
||||
// fixed issue https://github.com/alibaba/canal/pull/4767, support mysql 8.0.30+
|
||||
header = cachingSha2PasswordFullAuth(channel, header, getPassword().getBytes(), scramble);
|
||||
body = PacketManager.readBytes(channel, header.getPacketBodyLength(), timeout);
|
||||
} else {
|
||||
|
||||
@@ -1,13 +1,9 @@
|
||||
package com.alibaba.otter.canal.parse.driver.mysql.utils;
|
||||
|
||||
import java.security.DigestException;
|
||||
import java.security.InvalidKeyException;
|
||||
import java.security.KeyFactory;
|
||||
import java.security.MessageDigest;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.security.PublicKey;
|
||||
import java.security.*;
|
||||
import java.security.spec.InvalidKeySpecException;
|
||||
import java.security.spec.X509EncodedKeySpec;
|
||||
|
||||
import javax.crypto.BadPaddingException;
|
||||
import javax.crypto.Cipher;
|
||||
import javax.crypto.IllegalBlockSizeException;
|
||||
|
||||
@@ -13,26 +13,19 @@ import org.springframework.util.CollectionUtils;
|
||||
|
||||
import com.alibaba.otter.canal.client.CanalConnector;
|
||||
import com.alibaba.otter.canal.protocol.CanalEntry;
|
||||
import com.alibaba.otter.canal.protocol.CanalEntry.Column;
|
||||
import com.alibaba.otter.canal.protocol.CanalEntry.Entry;
|
||||
import com.alibaba.otter.canal.protocol.CanalEntry.EntryType;
|
||||
import com.alibaba.otter.canal.protocol.CanalEntry.EventType;
|
||||
import com.alibaba.otter.canal.protocol.CanalEntry.Pair;
|
||||
import com.alibaba.otter.canal.protocol.CanalEntry.RowChange;
|
||||
import com.alibaba.otter.canal.protocol.CanalEntry.RowData;
|
||||
import com.alibaba.otter.canal.protocol.CanalEntry.TransactionBegin;
|
||||
import com.alibaba.otter.canal.protocol.CanalEntry.TransactionEnd;
|
||||
import com.alibaba.otter.canal.protocol.Message;
|
||||
import com.alibaba.otter.canal.protocol.CanalEntry.*;
|
||||
import com.google.protobuf.InvalidProtocolBufferException;
|
||||
|
||||
public class BaseCanalClientTest {
|
||||
|
||||
protected final static Logger logger = LoggerFactory.getLogger(AbstractCanalClientTest.class);
|
||||
protected final static Logger logger = LoggerFactory
|
||||
.getLogger(AbstractCanalClientTest.class);
|
||||
protected static final String SEP = SystemUtils.LINE_SEPARATOR;
|
||||
protected static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
|
||||
protected volatile boolean running = false;
|
||||
protected Thread.UncaughtExceptionHandler handler = (t, e) -> logger.error("parse events has an error",
|
||||
e);
|
||||
e);
|
||||
protected Thread thread = null;
|
||||
protected CanalConnector connector;
|
||||
protected static String context_format = null;
|
||||
@@ -51,8 +44,7 @@ public class BaseCanalClientTest {
|
||||
+ "----------------> binlog[{}:{}] , name[{},{}] , eventType : {} , executeTime : {}({}) , gtid : ({}) , delay : {} ms"
|
||||
+ SEP;
|
||||
|
||||
transaction_format = SEP
|
||||
+ "================> binlog[{}:{}] , executeTime : {}({}) , gtid : ({}) , delay : {}ms"
|
||||
transaction_format = SEP + "================> binlog[{}:{}] , executeTime : {}({}) , gtid : ({}) , delay : {}ms"
|
||||
+ SEP;
|
||||
|
||||
}
|
||||
@@ -71,8 +63,8 @@ public class BaseCanalClientTest {
|
||||
}
|
||||
|
||||
SimpleDateFormat format = new SimpleDateFormat(DATE_FORMAT);
|
||||
logger.info(context_format, new Object[] { batchId, size, memsize, format.format(new Date()), startPosition,
|
||||
endPosition });
|
||||
logger.info(context_format,
|
||||
new Object[] { batchId, size, memsize, format.format(new Date()), startPosition, endPosition });
|
||||
}
|
||||
|
||||
protected String buildPositionForDump(Entry entry) {
|
||||
@@ -94,7 +86,8 @@ public class BaseCanalClientTest {
|
||||
Date date = new Date(entry.getHeader().getExecuteTime());
|
||||
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
|
||||
if (entry.getEntryType() == EntryType.TRANSACTIONBEGIN || entry.getEntryType() == EntryType.TRANSACTIONEND) {
|
||||
if (entry.getEntryType() == EntryType.TRANSACTIONBEGIN
|
||||
|| entry.getEntryType() == EntryType.TRANSACTIONEND) {
|
||||
if (entry.getEntryType() == EntryType.TRANSACTIONBEGIN) {
|
||||
TransactionBegin begin = null;
|
||||
try {
|
||||
@@ -105,9 +98,10 @@ public class BaseCanalClientTest {
|
||||
// 打印事务头信息,执行的线程id,事务耗时
|
||||
logger.info(transaction_format,
|
||||
new Object[] { entry.getHeader().getLogfileName(),
|
||||
String.valueOf(entry.getHeader().getLogfileOffset()),
|
||||
String.valueOf(entry.getHeader().getExecuteTime()), simpleDateFormat.format(date),
|
||||
entry.getHeader().getGtid(), String.valueOf(delayTime) });
|
||||
String.valueOf(entry.getHeader().getLogfileOffset()),
|
||||
String.valueOf(entry.getHeader().getExecuteTime()),
|
||||
simpleDateFormat.format(date), entry.getHeader().getGtid(),
|
||||
String.valueOf(delayTime) });
|
||||
logger.info(" BEGIN ----> Thread id: {}", begin.getThreadId());
|
||||
printXAInfo(begin.getPropsList());
|
||||
} else if (entry.getEntryType() == EntryType.TRANSACTIONEND) {
|
||||
@@ -123,9 +117,10 @@ public class BaseCanalClientTest {
|
||||
printXAInfo(end.getPropsList());
|
||||
logger.info(transaction_format,
|
||||
new Object[] { entry.getHeader().getLogfileName(),
|
||||
String.valueOf(entry.getHeader().getLogfileOffset()),
|
||||
String.valueOf(entry.getHeader().getExecuteTime()), simpleDateFormat.format(date),
|
||||
entry.getHeader().getGtid(), String.valueOf(delayTime) });
|
||||
String.valueOf(entry.getHeader().getLogfileOffset()),
|
||||
String.valueOf(entry.getHeader().getExecuteTime()),
|
||||
simpleDateFormat.format(date), entry.getHeader().getGtid(),
|
||||
String.valueOf(delayTime) });
|
||||
}
|
||||
|
||||
continue;
|
||||
@@ -143,10 +138,10 @@ public class BaseCanalClientTest {
|
||||
|
||||
logger.info(row_format,
|
||||
new Object[] { entry.getHeader().getLogfileName(),
|
||||
String.valueOf(entry.getHeader().getLogfileOffset()), entry.getHeader().getSchemaName(),
|
||||
entry.getHeader().getTableName(), eventType,
|
||||
String.valueOf(entry.getHeader().getExecuteTime()), simpleDateFormat.format(date),
|
||||
entry.getHeader().getGtid(), String.valueOf(delayTime) });
|
||||
String.valueOf(entry.getHeader().getLogfileOffset()),
|
||||
entry.getHeader().getSchemaName(), entry.getHeader().getTableName(), eventType,
|
||||
String.valueOf(entry.getHeader().getExecuteTime()), simpleDateFormat.format(date),
|
||||
entry.getHeader().getGtid(), String.valueOf(delayTime) });
|
||||
|
||||
if (eventType == EventType.QUERY || rowChange.getIsDdl()) {
|
||||
logger.info("ddl : " + rowChange.getIsDdl() + " , sql ----> " + rowChange.getSql() + SEP);
|
||||
@@ -174,8 +169,8 @@ public class BaseCanalClientTest {
|
||||
if (StringUtils.containsIgnoreCase(column.getMysqlType(), "BLOB")
|
||||
|| StringUtils.containsIgnoreCase(column.getMysqlType(), "BINARY")) {
|
||||
// get value bytes
|
||||
builder.append(column.getName() + " : "
|
||||
+ new String(column.getValue().getBytes("ISO-8859-1"), "UTF-8"));
|
||||
builder.append(
|
||||
column.getName() + " : " + new String(column.getValue().getBytes("ISO-8859-1"), "UTF-8"));
|
||||
} else {
|
||||
builder.append(column.getName() + " : " + column.getValue());
|
||||
}
|
||||
|
||||
@@ -22,10 +22,8 @@ public class SimpleCanalClientPermanceTest {
|
||||
long end = 0;
|
||||
final ArrayBlockingQueue<Long> queue = new ArrayBlockingQueue<>(100);
|
||||
try {
|
||||
final CanalConnector connector = CanalConnectors.newSingleConnector(new InetSocketAddress(ip, 11111),
|
||||
destination,
|
||||
"canal",
|
||||
"canal");
|
||||
final CanalConnector connector = CanalConnectors
|
||||
.newSingleConnector(new InetSocketAddress(ip, 11111), destination, "canal", "canal");
|
||||
|
||||
Thread ackThread = new Thread(() -> {
|
||||
while (true) {
|
||||
|
||||
@@ -22,10 +22,8 @@ public class SimpleCanalClientTest extends AbstractCanalClientTest {
|
||||
// 根据ip,直接创建链接,无HA的功能
|
||||
String destination = "example";
|
||||
String ip = AddressUtils.getHostIp();
|
||||
CanalConnector connector = CanalConnectors.newSingleConnector(new InetSocketAddress(ip, 11111),
|
||||
destination,
|
||||
"canal",
|
||||
"canal");
|
||||
CanalConnector connector = CanalConnectors
|
||||
.newSingleConnector(new InetSocketAddress(ip, 11111), destination, "canal", "canal");
|
||||
|
||||
final SimpleCanalClientTest clientTest = new SimpleCanalClientTest(destination);
|
||||
clientTest.setConnector(connector);
|
||||
|
||||
@@ -34,7 +34,8 @@ public class CanalKafkaClientExample {
|
||||
|
||||
public static void main(String[] args) {
|
||||
try {
|
||||
final CanalKafkaClientExample kafkaCanalClientExample = new CanalKafkaClientExample(AbstractKafkaTest.zkServers,
|
||||
final CanalKafkaClientExample kafkaCanalClientExample = new CanalKafkaClientExample(
|
||||
AbstractKafkaTest.zkServers,
|
||||
AbstractKafkaTest.servers,
|
||||
AbstractKafkaTest.topic,
|
||||
AbstractKafkaTest.partition,
|
||||
|
||||
@@ -35,7 +35,8 @@ public class CanalKafkaClientFlatMessageExample {
|
||||
|
||||
public static void main(String[] args) {
|
||||
try {
|
||||
final CanalKafkaClientFlatMessageExample kafkaCanalClientExample = new CanalKafkaClientFlatMessageExample(AbstractKafkaTest.zkServers,
|
||||
final CanalKafkaClientFlatMessageExample kafkaCanalClientExample = new CanalKafkaClientFlatMessageExample(
|
||||
AbstractKafkaTest.zkServers,
|
||||
AbstractKafkaTest.servers,
|
||||
AbstractKafkaTest.topic,
|
||||
AbstractKafkaTest.partition,
|
||||
|
||||
@@ -43,7 +43,8 @@ public class CanalKafkaOffsetClientExample {
|
||||
|
||||
public static void main(String[] args) {
|
||||
try {
|
||||
final CanalKafkaOffsetClientExample kafkaCanalClientExample = new CanalKafkaOffsetClientExample(AbstractKafkaTest.servers,
|
||||
final CanalKafkaOffsetClientExample kafkaCanalClientExample = new CanalKafkaOffsetClientExample(
|
||||
AbstractKafkaTest.servers,
|
||||
AbstractKafkaTest.topic,
|
||||
AbstractKafkaTest.partition,
|
||||
AbstractKafkaTest.groupId);
|
||||
|
||||
@@ -1,13 +1,15 @@
|
||||
package com.alibaba.otter.canal.example.rocketmq;
|
||||
|
||||
import com.alibaba.otter.canal.client.rocketmq.RocketMQCanalConnector;
|
||||
import com.alibaba.otter.canal.protocol.Message;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.util.Assert;
|
||||
|
||||
import com.alibaba.otter.canal.client.rocketmq.RocketMQCanalConnector;
|
||||
import com.alibaba.otter.canal.protocol.Message;
|
||||
|
||||
/**
|
||||
* RocketMQ client example
|
||||
*
|
||||
@@ -26,15 +28,23 @@ public class CanalRocketMQClientExample extends AbstractRocektMQTest {
|
||||
|
||||
private Thread.UncaughtExceptionHandler handler = (t, e) -> logger.error("parse events has an error", e);
|
||||
|
||||
public CanalRocketMQClientExample(String nameServers, String topic, String groupId) {
|
||||
public CanalRocketMQClientExample(String nameServers, String topic, String groupId){
|
||||
connector = new RocketMQCanalConnector(nameServers, topic, groupId, 500, false);
|
||||
}
|
||||
|
||||
public CanalRocketMQClientExample(String nameServers, String topic, String groupId, boolean enableMessageTrace,
|
||||
String accessKey, String secretKey, String accessChannel, String namespace) {
|
||||
connector = new RocketMQCanalConnector(nameServers, topic, groupId, accessKey,
|
||||
secretKey, -1, false, enableMessageTrace,
|
||||
null, accessChannel, namespace);
|
||||
String accessKey, String secretKey, String accessChannel, String namespace){
|
||||
connector = new RocketMQCanalConnector(nameServers,
|
||||
topic,
|
||||
groupId,
|
||||
accessKey,
|
||||
secretKey,
|
||||
-1,
|
||||
false,
|
||||
enableMessageTrace,
|
||||
null,
|
||||
accessChannel,
|
||||
namespace);
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
@@ -18,7 +18,8 @@ import com.alibaba.otter.canal.protocol.FlatMessage;
|
||||
*/
|
||||
public class CanalRocketMQClientFlatMessageExample extends AbstractRocektMQTest {
|
||||
|
||||
protected final static Logger logger = LoggerFactory.getLogger(CanalRocketMQClientFlatMessageExample.class);
|
||||
protected final static Logger logger = LoggerFactory
|
||||
.getLogger(CanalRocketMQClientFlatMessageExample.class);
|
||||
|
||||
private RocketMQCanalConnector connector;
|
||||
|
||||
@@ -34,7 +35,8 @@ public class CanalRocketMQClientFlatMessageExample extends AbstractRocektMQTest
|
||||
|
||||
public static void main(String[] args) {
|
||||
try {
|
||||
final CanalRocketMQClientFlatMessageExample rocketMQClientExample = new CanalRocketMQClientFlatMessageExample(nameServers,
|
||||
final CanalRocketMQClientFlatMessageExample rocketMQClientExample = new CanalRocketMQClientFlatMessageExample(
|
||||
nameServers,
|
||||
topic,
|
||||
groupId);
|
||||
logger.info("## Start the rocketmq consumer: {}-{}", topic, groupId);
|
||||
|
||||
@@ -1,12 +1,6 @@
|
||||
package com.alibaba.otter.canal.parse.inbound.mysql.rds;
|
||||
|
||||
import io.netty.handler.codec.http.HttpResponseStatus;
|
||||
|
||||
import java.io.BufferedOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.*;
|
||||
import java.util.Comparator;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedList;
|
||||
@@ -41,6 +35,8 @@ import org.slf4j.LoggerFactory;
|
||||
import com.alibaba.otter.canal.parse.exception.CanalParseException;
|
||||
import com.alibaba.otter.canal.parse.inbound.mysql.rds.data.BinlogFile;
|
||||
|
||||
import io.netty.handler.codec.http.HttpResponseStatus;
|
||||
|
||||
/**
|
||||
* @author chengjin.lyf on 2018/8/7 下午3:10
|
||||
* @since 1.0.25
|
||||
@@ -212,7 +208,7 @@ public class BinlogDownloadQueue {
|
||||
InputStream is = response.getEntity().getContent();
|
||||
boolean isChunked = response.getEntity().isChunked();
|
||||
Header contentLengthHeader = response.getFirstHeader("Content-Length");
|
||||
long totalSize = isChunked || contentLengthHeader == null ? 0 : Long.parseLong(contentLengthHeader.getValue());
|
||||
long totalSize = (isChunked || contentLengthHeader == null) ? 0 : Long.parseLong(contentLengthHeader.getValue());
|
||||
if (response.getFirstHeader("Content-Disposition") != null) {
|
||||
fileName = response.getFirstHeader("Content-Disposition").getValue();
|
||||
fileName = StringUtils.substringAfter(fileName, "filename=");
|
||||
|
||||
Reference in New Issue
Block a user