我有一个Kafka Streams应用程序,它被配置为为每个任务创建1个备用副本。我有两个应用程序的实例在运行。当应用程序启动时,应用程序为它负责的每个分区写入.checkpoint文件。它为活动任务和备用任务所拥有的分区写入这些文件。
当发送一个新的Kafka事件由应用程序处理时,包含该活动任务的分区的实例会更新.checkpoint文件中的偏移量。然而,第二个实例上的待机任务的.checkpoint文件从未更新。它仍然保持在旧的偏移量上。
我相信这导致我们在重新平衡时看到OffsetOutOfRangeEceptions被抛出,导致任务被拆掉并从头创建。
Streams版本:2.3.1
这个问题已经在Kafka 2.4.0中得到了修复,它解决了以下bug问题.apache.orgjirabrowseKAFKA-8755
注意:这个问题看起来只影响配置为OPTIMIZE="all "的应用程序。