这是一个简单的、普通的Kafka应用程序,它执行使用EXACTLY_ONCE_V2配置的简单记录转换。
configurationParameters.put(StreamsConfig.PROCESSING_GUARANTEE_CONFIG, StreamsConfig.EXACTLY_ONCE_V2);我看到的错误如下。如果删除上面提到的EXACTLY_ONCE_V2设置,此错误将消失,流应用程序将运行数天而不会出现错误。错误日志是:
错误2021-11-27 18:10:23.141卡夫卡-生产者-网络线程id-mapping-app-1eede139-ace6-4aff-9e94-ca508cb9c98d-StreamThread-1-producer RecordCollectorImpl -流-线程id-mapping-app-1eede139-ace6-4aff-9e94-ca508cb9c98d-StreamThread-1任务_11错误,发送记录到主题数据-记录-输出的任务0_11,因为: org.apache.kafka.common.errors.InvalidProducerEpochException:生产者试图生产与旧时代。不会记录书面偏移量,也不会发送更多的记录,因为生产者被设置了栅栏,这表明任务可能被迁移出去。
应用程序正在使用Kafka Streams 3.0.0,这是本文撰写时的最新版本。Gradle样式的Maven坐标是:org.apache.kafka:kafka-streams:3.0.0
卡夫卡经纪人正在运行卡夫卡2.8.0下的斯维齐0.23.0的库伯内特斯。
在使用Flink框架而不是Kafka流的类似应用程序中,我也遇到了完全相同的错误消息:
ProducerFencedException: Producer attempted an operation with an old epoch
在Flink和Kafka流中,禁用一次会使错误消失。如果我只打开一次处理错误,就会发生错误。
发布于 2021-12-03 15:59:42
代理日志中的信息是什么?就我而言,原因是:
INFO [TransactionCoordinator id=3] Completed rollback of ongoing transaction for transactionalId stats-mapper-ac83167f-5e02-4fb1-92cd-cec0e6c7332f-2 due to timeout (kafka.coordinator.transaction.TransactionCoordinator)
ERROR [ReplicaManager broker=3] Error processing append operation on partition stats.topic-1 (kafka.server.ReplicaManager)
org.apache.kafka.common.errors.InvalidProducerEpochException: Epoch of producer 1015 at offset 2395825914 in stats.topic-1 is 0, which is smaller than the last seen epoch 1看起来这是一项正在进行的工作,基普-588预计将在3.2.0 卡夫卡-9803中修复。
KIP说
这可能是由于网络分区或长GC造成的客户端短时间不活动造成的。
虽然我不确定“网络分区”是什么意思- GC是相当琐碎的监视和看到。
https://stackoverflow.com/questions/70138589
复制相似问题