自定义代码往往和业务自身逻辑紧相关,如果由于自定义代码导致同步异常、延迟会丢数据可以参考本文的思路来进行排查。
基本排查思路顺序 先确认是否为自身自定义代码导致问题:这个只要创建一个不包含自定义代码功能的任务作为对比任务,运行下,看看同步结果是否符合预期,如果是的话,则说明问题和用户自身自定义代码相关,请使用debug自定义代码来进一步排查。 debug自定义代码,查看自定义代码接收输入的参数和返回的结果是否符合预期: ## debug 断点打在该接口实现代码第一行,查看customData变量的值是否符合预期,此时 ## 作为第一行代码,不涉及用户任何的自定义代码操作 List<CustomData> process(CustomData customData); ## debug断点打在该接口实现代码最后的return xxx.查看return的List<CustomData>中的结果是否符合预期 如何进行debug 先停止任务 任务详情->功能列表->参数配置->找到debugMode设置为true,默认使用debug端口8787a9a75dff-50ad-4e1d-88c7-668c3e269deb-image.png 在IDE中以远程debug模式启动(我们以IDEA为例) 右上角新增启动配置 选择Remote JVM Debug 填写ip地址和端口,远程调试端口为8787
28303323-048f-4a09-acb7-f7d730207b23-image.png
3fb0ba7c-8d82-4b21-a1a5-da2e709220d9-image.png
7cd60422-5876-414e-b6a4-b0296f9c217d-image.png 在CloudCanal平台上启动任务 进入自定义代码断点后即可进行调试 【重要!!】调试完毕后请重新修改参数debugMode=false并重启任务,否则该任务会无法正常执行 如果自定义代码第一行和return结果都符合预期怎么进一步排查
参考https://www.askcug.com/topic/142在www.askcug.com上发帖,提供debug时第一行和return时预期返回的结果 以及实际返回的结果,提供完整的自定义代码,以及库表结构以便于我们复现问题