Luke Chen created KAFKA-16848: --------------------------------- Summary: Reverting KRaft migration for "Migrating brokers to KRaft" state is wrong Key: KAFKA-16848 URL: https://issues.apache.org/jira/browse/KAFKA-16848 Project: Kafka Issue Type: Bug Affects Versions: 3.7.0 Reporter: Luke Chen
Hello, I would like to report a mistake in the {_}Kafka 3.7 Documentation -> 6.10 KRaft -> ZooKeeper to KRaft Migration -> Reverting to ZooKeeper mode During the Migration{_}. While migrating my Kafka + Zookeeper cluster to KRaft and testing rollbacks at a different migration stages I have noticed, that "{_}Directions for reverting{_}" provided for "{_}Migrating brokers to KRaft{_}" are wrong. Following the first step provided in documentation you suppose to : _On each broker, remove the process.roles configuration, and restore the zookeeper.connect configuration to its previous value. If your cluster requires other ZooKeeper configurations for brokers, such as zookeeper.ssl.protocol, re-add those configurations as well. Then perform a rolling._ In that case, if you remove _process.roles_ configuration and restore _zookeeper.connect_ as well as other _ZooKeeper_ configuration (If your cluster requires) you will receive an error that looks like this: [2024-05-28 08:09:49,396] lvl=ERROR Exiting Kafka due to fatal exception logger=kafka.Kafka$ java.lang.IllegalArgumentException: requirement failed: controller.listener.names must be empty when not running in KRaft mode: [CONTROLLER] at scala.Predef$.require(Predef.scala:337) at kafka.server.KafkaConfig.validateValues(KafkaConfig.scala:2441) at kafka.server.KafkaConfig.<init>(KafkaConfig.scala:2290) at kafka.server.KafkaConfig.<init>(KafkaConfig.scala:1639) at kafka.Kafka$.buildServer(Kafka.scala:71) at kafka.Kafka$.main(Kafka.scala:90) at kafka.Kafka.main(Kafka.scala) However I was able to perform rollback successfully by performing additional steps: * Restore _zookeeper.metadata.migration.enable=true_ line in broker configuration; * We are using {_}[authorizer.class.name|http://authorizer.class.name/]{_}, so it also had to be reverted: _org.apache.kafka.metadata.authorizer.StandardAuthorizer_ -> {_}kafka.security.authorizer.AclAuthorizer{_}; I believe that should be mentioned. -- This message was sent by Atlassian Jira (v8.20.10#820010)