[ https://issues.apache.org/jira/browse/KAFKA-17866?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Colin McCabe resolved KAFKA-17866. ---------------------------------- Resolution: Duplicate > kraft.version/dirID is not updated after upgrading to MV 3.9 > ------------------------------------------------------------ > > Key: KAFKA-17866 > URL: https://issues.apache.org/jira/browse/KAFKA-17866 > Project: Kafka > Issue Type: Bug > Affects Versions: 3.9.0 > Reporter: Luke Chen > Priority: Blocker > Fix For: 3.9.0 > > > When upgrading old controllers to v3.9.0, we didn't update the kraft.version > to 1 and the directory ID, which causes it blocks the following controller > addition/removal. > > Steps to reproduce: > 1. format 1 controller node in MV 3.8: > {code:java} > bin/kafka-storage.sh format -t r0NrSlvGTqmZCtFtZ8tBIg -c > config/kraft/controller1.properties --release-version 3.8 > {code} > 2. start up the controller > 3. update the metadata version to 3.9: > {code:java} > bin/kafka-features.sh --bootstrap-controller localhost:9093 upgrade > --metadata 3.9 > or > bin/kafka-features.sh --bootstrap-controller localhost:9093 upgrade --feature > kraft.version=1 > {code} > 4. format one additional controller to be expanded > {code:java} > bin/kafka-storage.sh format --cluster-id r0NrSlvGTqmZCtFtZ8tBIg --config > config/kraft/controller2.properties --no-initial-controllers > {code} > 5. Try to add this node > {code:java} > bin/kafka-metadata-quorum.sh --command-config > config/kraft/controller2.properties --bootstrap-controller localhost:9093 > add-controller > {code} > It'll fail with: > {code:java} > org.apache.kafka.common.errors.UnsupportedVersionException: Cluster doesn't > support adding voter because the kraft.version feature is 0 > java.util.concurrent.ExecutionException: > org.apache.kafka.common.errors.UnsupportedVersionException: Cluster doesn't > support adding voter because the kraft.version feature is 0 > at > java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:396) > at > java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2073) > at > org.apache.kafka.common.internals.KafkaFutureImpl.get(KafkaFutureImpl.java:165) > at > org.apache.kafka.tools.MetadataQuorumCommand.handleAddController(MetadataQuorumCommand.java:431) > at > org.apache.kafka.tools.MetadataQuorumCommand.execute(MetadataQuorumCommand.java:147) > at > org.apache.kafka.tools.MetadataQuorumCommand.mainNoExit(MetadataQuorumCommand.java:81) > at > org.apache.kafka.tools.MetadataQuorumCommand.main(MetadataQuorumCommand.java:76) > Caused by: org.apache.kafka.common.errors.UnsupportedVersionException: > Cluster doesn't support adding voter because the kraft.version feature is 0 > {code} > > Under this situation, I can't find any workaround to update kraft.version > even if rebooting the node. > Besides, we also didn't generate directory id for the upgraded nodes. Without > the directory id, even if we have correct kraft.version, the controller > removal still cannot succeed. > {code:java} > ./bin/kafka-metadata-quorum.sh --bootstrap-server localhost:9092 describe > --replication > NodeId DirectoryId LogEndOffset Lag LastFetchTimestamp > LastCaughtUpTimestamp Status > 1 AAAAAAAAAAAAAAAAAAAAAA 588 0 1729752652123 > 1729752652123 Leader > 4 AAAAAAAAAAAAAAAAAAAAAA 588 0 1729752651778 > 1729752651778 Follower > 5 AAAAAAAAAAAAAAAAAAAAAA 588 0 1729752651782 > 1729752651782 Follower{code} > > The directoryID `AAAAAAAAAAAAAAAAAAAAAA` in all 3 nodes means zero UUID (new > Uuid(0L, 0L)), which is not correct. > > I think we should have a MetadataPublisher to handle the MV/feature upgrade > for kraft.version and directory ID. -- This message was sent by Atlassian Jira (v8.20.10#820010)