ticdc 接入 kafka 后过一段时间报panic

版本:4.0.13

线上一套tidb集群部署了ticdc后,将任务创建好,总共18个任务,17个任务都能正常将binlog同步到下游kafka,但是有一个任务在kafka没有找到对应的binlog。

排查发现cdc在不断的重启。
1、通过display查看集群状态,cdc的状态一直在down跟up之间切换。
2、分析cdc日志发现,cdc.log一直在刷日志,但是都是info类跟warn类日志,cdc_stderr.log日志一直在刷下面的日志段。

goroutine 2359 [running]:
github.com/pingcap/ticdc/cdc/sink/codec.rowEventToMaxwellMessage(0xc0228f5900, 0x2fa3e80, 0xc020205960)
	github.com/pingcap/ticdc@/cdc/sink/codec/maxwell.go:105 +0xfae
github.com/pingcap/ticdc/cdc/sink/codec.(*MaxwellEventBatchEncoder).AppendRowChangedEvent(0xc020205960, 0xc0228f5900, 0x3, 0x2, 0x1)
	github.com/pingcap/ticdc@/cdc/sink/codec/maxwell.go:160 +0x2f
github.com/pingcap/ticdc/cdc/sink.(*mqSink).runWorker(0xc020ba0750, 0x2f70da0, 0xc020256800, 0x2, 0x0, 0x0)
	github.com/pingcap/ticdc@/cdc/sink/mq.go:351 +0x3c8
github.com/pingcap/ticdc/cdc/sink.(*mqSink).run.func1(0xc013f57768, 0x0)
	github.com/pingcap/ticdc@/cdc/sink/mq.go:281 +0x46
golang.org/x/sync/errgroup.(*Group).Go.func1(0xc022794fc0, 0xc020c0b4e0)
	golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9/errgroup/errgroup.go:57 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
	golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9/errgroup/errgroup.go:54 +0x66
panic: interface conversion: interface {} is string, not []uint8

goroutine 603 [running]:
github.com/pingcap/ticdc/cdc/sink/codec.rowEventToMaxwellMessage(0xc008f16180, 0x2fa3e80, 0xc000346220)
	github.com/pingcap/ticdc@/cdc/sink/codec/maxwell.go:105 +0xfae
github.com/pingcap/ticdc/cdc/sink/codec.(*MaxwellEventBatchEncoder).AppendRowChangedEvent(0xc000346220, 0xc008f16180, 0x3, 0x2, 0x1)
	github.com/pingcap/ticdc@/cdc/sink/codec/maxwell.go:160 +0x2f
github.com/pingcap/ticdc/cdc/sink.(*mqSink).runWorker(0xc000e9c360, 0x2f70da0, 0xc0021b6300, 0x2, 0x0, 0x0)
	github.com/pingcap/ticdc@/cdc/sink/mq.go:351 +0x3c8
github.com/pingcap/ticdc/cdc/sink.(*mqSink).run.func1(0xc00216cf68, 0x0)
	github.com/pingcap/ticdc@/cdc/sink/mq.go:281 +0x46
golang.org/x/sync/errgroup.(*Group).Go.func1(0xc000176660, 0xc00000c220)
	golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9/errgroup/errgroup.go:57 +0x64
created by golang.org/x/sync/errgroup.(*Group).Go
	golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9/errgroup/errgroup.go:54 +0x66
panic: interface conversion: interface {} is string, not []uint8

这个问题看起来像是个bug,现在只能每几天通过重建cdc任务来解决,想请教一下这个问题的触发条件可能是什么。

一台上面 搞了几个任务?

要不 就把这个异常的关了,在其他机器新开一个

你把这个任务重新关闭再新建试试,有可能任务多了,资源不够了,看看cdc的资源利用率

你这个是老版本的bug。看下这个issues
https://github.com/pingcap/tiflow/issues/2758
你这tidb版本太低了,最好是升级下,后面版本优化了很多cdc方面的问题

这个bug触发条件是什么呢,主要是想了解一下触发条件,然后看看能不能规避

怎么触发的不清楚,都已知bug了就别挣扎了,升级吧

升级安排起了

1.0->2.0->2.1->4.0,每次都是一有问题就让升级,这种解决方案真是让人难以言喻

正常啊,你们开发软件出问题也是让升级打补丁嘛

这个问题是由于ticdc在使用maxwell格式的编码器时,遇到了一些不符合预期的数据类型,导致了panic错误。这个问题已经在ticdc的4.0.14版本中修复了

小版本升级还好的,主要是修复bug,对其他的影响不大

不过升级前,还是先备份好数据,在做升级操作

4.0.16 是最新的 4.0.x 的版本,可以先考虑升级到这个小版本。

如果 4.x 能满足你的需求,那么你先升级下小版本 debug 下,不需要说一下子就升级到 7.x

发版的意义就是为了尽快让你们遇到的问题能找到一个解决的方案。

4 版本肯定是小了点 建议升级一下版本

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。