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)