KStreams正在尝试删除分区主题

时间:2019-12-11 11:26:37

标签: apache-kafka apache-kafka-streams

我们建立了一个管道,该管道从一个主题读取并在另一个字段上执行groupBy

input
.groupBy(
    (key, value) -> value.getFieldA(),
    Grouped.with("TopicName", Serdes.String(), Serdes.Integer()))
.windowedBy(SessionWindows.with(ofMinutes(5)).grace(Duration.ZERO))

此步骤创建一个中间app-TopicName-repartition主题。但是,KStream不断向Kafka发送Delete请求。我们可以在Kafka端看到日志:

INFO [DENY] Auth request Delete on Topic:app-TopicName-repartition by User test_user (cached) (io.aiven.kafka.auth.AivenAclAuthorizer)

我们的代码中没有streams.cleanUp()或通过管理员API进行手动删除的过程。删除请求仅针对重新分区主题,不适用于其他中间主题。该应用程序运行正常。它只是一直发送后台删除请求,因为我已将retries设置为Integer.MAX_VALUE。我未能调试问题。为什么KStream发出对重新分区主题的删除请求?

[更新]

据我所知,KStreams源代码在TaskManager中调用了KafkaAdminClient.deleteRecords()。这是我在日志文件中看到Delete的原因吗? KStreams源代码中没有其他调用可以明确删除主题。

1 个答案:

答案 0 :(得分:1)

是正确的。 Kafka Streams从未尝试删除主题。但是,您需要允许它清除分区主题中的数据。请注意,默认情况下,重新分区主题配置有无限的保留时间,如果Kafka Streams无法清除该主题,分区主题将无限扩展。

有关需要哪些ACL的更多详细信息,请查看文档:{​​{3}}