[
https://issues.apache.org/jira/browse/KAFKA-19875?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jimmy Wang reassigned KAFKA-19875:
----------------------------------
Assignee: Jimmy Wang
> Duplicated topic config prevents broker start
> ---------------------------------------------
>
> Key: KAFKA-19875
> URL: https://issues.apache.org/jira/browse/KAFKA-19875
> Project: Kafka
> Issue Type: Bug
> Affects Versions: 4.2.0
> Reporter: Andrew Schofield
> Assignee: Jimmy Wang
> Priority: Blocker
>
> KIP-1161 tightened the validation of configurations. Unfortunately, there is
> a situation in which the tighter validation introduces a blocking issue for
> AK 4.2.
> If I create a broker in AK 4.1 and then create a topic with a duplicated
> value for the cleanup.policy config, the broker will not start with the AK
> 4.2 code.
> Here's an example of the topic creation which succeeds in AK 4.1:
> $ bin/kafka-topics.sh --bootstrap-server localhost:9092 --create --topic T1
> --config cleanup.policy=delete,delete
> And here's the exception stack trace from the 4.2 broker failing to start:
> [2025-11-10 09:14:28,730] ERROR Encountered fatal fault: Error starting
> LogManager (org.apache.kafka.server.fault.ProcessTerminatingFaultHandler)
> org.apache.kafka.common.config.ConfigException: Configuration
> 'cleanup.policy' values must not be duplicated.
> at
> org.apache.kafka.common.config.ConfigDef$ValidList.ensureValid(ConfigDef.java:1050)
> at org.apache.kafka.common.config.ConfigDef.parseValue(ConfigDef.java:540)
> at org.apache.kafka.common.config.ConfigDef.parse(ConfigDef.java:524)
> at
> org.apache.kafka.common.config.AbstractConfig.<init>(AbstractConfig.java:118)
> at
> org.apache.kafka.common.config.AbstractConfig.<init>(AbstractConfig.java:149)
> at org.apache.kafka.storage.internals.log.LogConfig.<init>(LogConfig.java:299)
> at
> org.apache.kafka.storage.internals.log.LogConfig.fromProps(LogConfig.java:426)
> at
> kafka.log.LogManager.$anonfun$fetchTopicConfigOverrides$1(LogManager.scala:590)
> at
> kafka.log.LogManager.$anonfun$fetchTopicConfigOverrides$1$adapted(LogManager.scala:586)
> at scala.collection.IterableOnceOps.foreach(IterableOnce.scala:630)
> at scala.collection.IterableOnceOps.foreach$(IterableOnce.scala:628)
> at scala.collection.AbstractIterable.foreach(Iterable.scala:936)
> at kafka.log.LogManager.fetchTopicConfigOverrides(LogManager.scala:586)
> at kafka.log.LogManager.startup(LogManager.scala:579)
> at
> kafka.server.metadata.BrokerMetadataPublisher.initializeManagers(BrokerMetadataPublisher.scala:344)
> at
> kafka.server.metadata.BrokerMetadataPublisher.onMetadataUpdate(BrokerMetadataPublisher.scala:141)
> at
> org.apache.kafka.image.loader.MetadataLoader.initializeNewPublishers(MetadataLoader.java:315)
> at
> org.apache.kafka.image.loader.MetadataLoader.lambda$scheduleInitializeNewPublishers$0(MetadataLoader.java:272)
> at
> org.apache.kafka.queue.KafkaEventQueue$EventContext.run(KafkaEventQueue.java:134)
> at
> org.apache.kafka.queue.KafkaEventQueue$EventHandler.handleEvents(KafkaEventQueue.java:217)
> at
> org.apache.kafka.queue.KafkaEventQueue$EventHandler.run(KafkaEventQueue.java:188)
> at java.base/java.lang.Thread.run(Thread.java:1583)
--
This message was sent by Atlassian Jira
(v8.20.10#820010)