使用starrocks 提供的flink connector jar包,starrocks sink提供的语义:exactly-once,发现sink到starrocks数据库丢数据现象

【详述】 starrocks 提供的flink connector jar包,有没有遇到过使用sink时,用starrocks语义是:exactly-once 时,会丢数据
【背景】通过Flink CDC 2.2版本 + flink-connector-starrocks-1.1.10_fink-1.13 版本
【业务影响】
【StarRocks版本】1.19版本,使用更新模型
【集群规模】3fe(1 follower+2observer)+3be(fe与be混部)
【机器信息】CPU虚拟核/内存/网卡,8C/32G/万兆
【附件】
看了一下源码分析:StarRocksDynamicSinkFunction.invoke方法和flink cp快照时方法:snapshotState方法,都会调用这段代码:


在方法中flush方法,会处理调用如下方法: ,在offer方法是把取出的cp数据放入双向队列处理,在异步线程会处理队列,如图:

异步线程处理有异常会标识在 字段上,虽然该字段加了 volatile 的可见行,也能及时被捕获到,如图:
按代码逻辑来讲,invoke和snapshotState都是会调用checkFlushException异常,只要sink starrocks stream load api http请求失败,也会抛出对应的RuntimeException异常,从而让cp和invoke的方法失败,也不会丢数据;但从代码上分析,没有疑问发现任务疑问,一开始已为是字段flushException虽然加了volatile 可见性,还可能会延迟可见性,因为在dostreamApi有重试机制如图: ,要等重试次数过后才捕获到,对于cp来说,可能已完成,在cp snapshotState方法有触发清cp状态后端数据;但这一点,后面仔细查看源码,也不对成立,在cp flush调用方法,有如下代码: 这代码应该就是解决标识异常的问题的,所以,看了源码,还是没有发现可能存在的原因,请指教

您好,您的版本太低了,2.2及以上版本是LTS,请您升级使用,谢谢

请问下丢数据是怎么判断的?数据条数对不上?是不是导入的一些数据越界了转成null了?