自定义代码自助排查
CloudCanal自定义代码如何自助排查。
前言
自定义代码往往和业务自身逻辑紧相关,如果由于自定义代码导致同步异常、延迟会丢数据可以参考本文的思路来进行排查。
基本排查思路顺序
- 先确认是否为自身自定义代码导致问题:这个只要创建一个不包含自定义代码功能的任务作为对比任务,运行下,看看同步结果是否符合预期,如果是的话,则说明问题和用户自身自定义代码相关,请使用debug自定义代码来进一步排查。
- debug自定义代码,查看自定义代码接收输入的参数和返回的结果是否符合预期:
## debug 断点打在该接口实现代码第一行,查看customData变量的值是否符合预期,此时
## 作为第一行代码,不涉及用户任何的自定义代码操作
List<CustomData> process(CustomData customData);
## debug断点打在该接口实现代码最后的return xxx.查看return的List<CustomData>中的结果是否符合预期
如何进行debug
- 停止任务。
- 如下图所示,进入控制台,选择任务详情>功能列表>参数配置,找到debugMode设置为true,默认使用debug端口8787。
- 在IDE中以远程debug模式启动(我们以IDEA为例),步骤如下:
- 打开运行配置,左上角新增启动配置。
- 选择远程JVM调试(Remote JVM Debug)。
- 填写ip地址和端口,远程调试端口为8787。
- 打开运行配置,左上角新增启动配置。
- 在CloudCanal平台上启动任务。
- 进入自定义代码断点后即可进行调试。
- 【重要!!】调试完毕后请重新修改参数debugMode=false并重启任务,否则该任务会无法正常执行。
- 如果上述步骤无法自助解决请加群提问,请提供debug时第一行和return时预期返回的结果 以及实际返回的结果,提供完整的自定义代码,以及库表结构以便于我们复现问题。