otter源码分析-(1)debug node源码

本文针对Canal在同步任务中出现的问题进行了源码级的分析与修复,具体表现为localnode的mainstem一直显示“定位中”,且同步功能不可用的情况。通过分析发现是由于MysqlConnection中的loadBinlogChecksum方法未进行null判断导致的NullPointerException异常。
摘要由CSDN通过智能技术生成
想解决一个源码的疑问,需要debug otter node模块。
开启同步任务后,local node 的 mainstem一直 显示:定位中,数据更改后,同步功能不可用。


 
 
bug信息如下
pid:8 nid:3 exception:canal:test_cancal_debug:java.lang.NullPointerException 
at com.alibaba.otter.canal.parse.inbound.mysql.MysqlConnection.loadBinlogChecksum(MysqlConnection.java:284) 
at com.alibaba.otter.canal.parse.inbound.mysql.MysqlConnection.dump(MysqlConnection.java:113) 
at com.alibaba.otter.canal.parse.inbound.AbstractEventParser$3.run(AbstractEventParser.java:209) 
at java.lang.Thread.run(Thread.java:745) 
这个问题是当前的1.0.23版本的canal有些问题,参考 https://github.com/alibaba/otter/issues/258
 
我想了个办法: 关联local的canal源码,然后手工修复canal 的bug。
cannal源码链接如下
otter源码链接如下
 
第一步 修复源码bug
经过观察,原来是 com.alibaba.otter.canal.parse.inbound.mysql.MysqlConnection.loadBinlogChecksum 中
columnValues.get(0)没有判空,做如下修改


 
 
第二步 update otter main pom.xml


 
第三步 otter 全部模块 执行 maven update.
 
经本人验证,好用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值