Skip to main content

自定义代码自助排查

CloudCanal自定义代码如何自助排查。

前言

自定义代码往往和业务自身逻辑紧相关,如果由于自定义代码导致同步异常、延迟会丢数据可以参考本文的思路来进行排查。

基本排查思路顺序

  1. 先确认是否为自身自定义代码导致问题:这个只要创建一个不包含自定义代码功能的任务作为对比任务,运行下,看看同步结果是否符合预期,如果是的话,则说明问题和用户自身自定义代码相关,请使用debug自定义代码来进一步排查。
  2. debug自定义代码,查看自定义代码接收输入的参数和返回的结果是否符合预期
    ## debug 断点打在该接口实现代码第一行,查看customData变量的值是否符合预期,此时
    ## 作为第一行代码,不涉及用户任何的自定义代码操作
    List<CustomData> process(CustomData customData);
    ## debug断点打在该接口实现代码最后的return xxx.查看return的List<CustomData>中的结果是否符合预期

如何进行debug

  1. 停止任务。
  2. 如下图所示,进入控制台,选择任务详情>功能列表>参数配置,找到debugMode设置为true,默认使用debug端口8787。 a9a75dff-50ad-4e1d-88c7-668c3e269deb-image.png
  3. 在IDE中以远程debug模式启动(我们以IDEA为例),步骤如下:
    1. 打开运行配置,左上角新增启动配置。 28303323-048f-4a09-acb7-f7d730207b23-image.png
    2. 选择远程JVM调试(Remote JVM Debug)。
    3. 填写ip地址和端口,远程调试端口为8787。 7cd60422-5876-414e-b6a4-b0296f9c217d-image.png
  4. 在CloudCanal平台上启动任务。
  5. 进入自定义代码断点后即可进行调试。
  6. 重要!!】调试完毕后请重新修改参数debugMode=false并重启任务,否则该任务会无法正常执行。
  7. 如果上述步骤无法自助解决请加群提问,请提供debug时第一行和return时预期返回的结果 以及实际返回的结果,提供完整的自定义代码,以及库表结构以便于我们复现问题。