导致任务被挂起,然后一直重试消费 错误如下: 21-2019-04-20-38.log:2019-04-20 18:52:09.175 [pipelineId = 21,taskName = ProcessTermin] INFO com.alibaba.otter.node.etl.select.SelectTask - [21] ProcessTermin has an error! retry... 21-2019-04-20-38.log-com.alibaba.otter.node.etl.select.exceptions.SelectException: unmatched terminId, SelectTask batchId = 2581683 processId = 2572237 and Termin Event: TerminEventData[type=NORMAL,code=setl,desc=,currNid=2,processId=2572267,startTime=1555757499440,endTime=1555757499531,firstTime=1555757499000,batchId=2581713,number=1,size=,exts=,pipelineId=21]
原提问者GitHub用户
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
根据日志提示,错误的原因是任务没有正确地处理终止事件(TerminEvent)而导致的异常。具体地说,“unmatched terminId” 表示在终止事件中的 batchId 和 processId 分别为 2581713 和 2572267,但是在 SelectTask 中的 batchId 和 processId 分别为 2581683 和 2572237,两者不匹配导致异常。
有多种原因可能会导致这个错误,例如:
数据源在一段时间内没有产生新的数据,但是任务仍然会不断重试消费这个任务,这样可能会导致消费异常。
源数据格式发生变化,但是同步任务仍然按照旧的格式进行消费,这也会导致不匹配的异常。
MySQL 等源数据库发生异常,此时任务可能会一直重试消费导致异常,也可能需要进行重启或者手动调整同步任务配置等操作来解决。
为了解决这个问题,您可以尝试以下几种方法:
检查数据源是否正常,并确保源数据库的数据格式和同步任务的配置相匹配。
在 OTTER 中增加一些配置参数,以达到终止任务的目的(例如设置 task.queueSize = 0),来尝试强制结束任务并重新启动。
对于异常情况,可以尝试重新启动同步任务并手动消费数据,或者对配置进行适当调整。