环境信息
canal version 1.1.3-alpha2 mysql version 5.7
问题描述
之前一直用单机模式跑过一段时间,从canal同步数据到es中,切换成HA后,仅在配置文件中加上了zk的集群的地址,启动后canal-adapter报Outer adapter sync failed! Error sync but ACK!
2019-02-18 10:01:18.859 ERROR 17709 --- [pool-1-thread-1] c.a.o.c.a.l.loader.CanalAdapterWorker : null
java.lang.NullPointerException: null at com.alibaba.otter.canal.adapter.launcher.loader.AbstractCanalAdapterWorker.batchSync(AbstractCanalAdapterWorker.java:203) ~[client-adapter.launcher-1.1.3-SNAPSHOT.jar:na] at com.alibaba.otter.canal.adapter.launcher.loader.AbstractCanalAdapterWorker.lambda$null$1(AbstractCanalAdapterWorker.java:61) ~[client-adapter.launcher-1.1.3-SNAPSHOT.jar:na] at java.util.ArrayList.forEach(ArrayList.java:1257) ~[na:1.8.0_181] at com.alibaba.otter.canal.adapter.launcher.loader.AbstractCanalAdapterWorker.lambda$null$2(AbstractCanalAdapterWorker.java:57) ~[client-adapter.launcher-1.1.3-SNAPSHOT.jar:na] at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[na:1.8.0_181] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[na:1.8.0_181] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[na:1.8.0_181] at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0_181]
2019-02-18 10:01:18.859 ERROR 17709 --- [ Thread-4] c.a.o.c.a.l.loader.CanalAdapterWorker : Outer adapter sync failed! Error sync but ACK! 2019-02-18 10:01:19.365 ERROR 17709 --- [pool-1-thread-1] c.a.o.c.a.l.loader.CanalAdapterWorker : null
java.lang.NullPointerException: null at com.alibaba.otter.canal.adapter.launcher.loader.AbstractCanalAdapterWorker.batchSync(AbstractCanalAdapterWorker.java:203) ~[client-adapter.launcher-1.1.3-SNAPSHOT.jar:na] at com.alibaba.otter.canal.adapter.launcher.loader.AbstractCanalAdapterWorker.lambda$null$1(AbstractCanalAdapterWorker.java:61) ~[client-adapter.launcher-1.1.3-SNAPSHOT.jar:na] at java.util.ArrayList.forEach(ArrayList.java:1257) ~[na:1.8.0_181] at com.alibaba.otter.canal.adapter.launcher.loader.AbstractCanalAdapterWorker.lambda$null$2(AbstractCanalAdapterWorker.java:57) ~[client-adapter.launcher-1.1.3-SNAPSHOT.jar:na] at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[na:1.8.0_181] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[na:1.8.0_181] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[na:1.8.0_181] at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0_181]
2019-02-18 10:01:19.366 ERROR 17709 --- [ Thread-4] c.a.o.c.a.l.loader.CanalAdapterWorker : Outer adapter sync failed! Error sync but ACK!
删除canal service端conf目录下的h2.mv.db和meta.dat 则能正常启动
原提问者GitHub用户JunRzz
问题可能是 Canal Adapter for Elasticsearch 在 HA 模式下连接到 ZooKeeper 时发生了错误,导致启动失败。
具体而言,错误信息中提到了 Outer adapter sync failed! Error sync but ACK! 以及 java.lang.NullPointerException,这意味着 Canal Adapter for Elasticsearch 在执行同步操作时遇到了错误,并且没有正确处理该错误。这个错误可能来自于配置文件中未正确设置的参数或者其他错误原因。
针对这个问题,您可以尝试以下解决方法:
确认 Canal Adapter for Elasticsearch 的版本是否与您使用的 Canal Server 版本兼容,并确认已经将 Canal Adapter for Elasticsearch 配置为 HA 模式。在 HA 模式下,Canal Adapter for Elasticsearch 需要正确配置相关参数,并正确连接到 ZooKeeper 才能正常运行。建议您查阅官方文档,了解如何正确配置 HA 模式的 Canal Adapter for Elasticsearch。
确认您的 ZooKeeper 集群是否正常运行,并且 Canal Adapter for Elasticsearch 可以正确连接到 ZooKeeper。您可以通过检查 ZooKeeper 日志和 Canal Adapter for Elasticsearch 日志,查看是否有相关的错误或者警告信息。
如果以上两种方法都无法解决问题,您可以尝试排除 Canal Adapter for Elasticsearch 的其他错误。根据错误信息,可以看出 Canal Adapter for Elasticsearch 在执行同步操作时发生了 NullPointerException,这可能是由于缺少必要的参数或者其他错误原因导致的。您可以通过仔细分析错误信息和日志文件,逐步排除错误,找到问题所在。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。