You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@kafka.apache.org by "Andrew Schofield (Jira)" <ji...@apache.org> on 2025/11/10 09:19:00 UTC
[jira] [Created] (KAFKA-19875) Duplicated topic config prevents broker start
Andrew Schofield created KAFKA-19875:
----------------------------------------
Summary: 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
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 fails:
$ 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)