[ https://issues.apache.org/jira/browse/KAFKA-18930?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Luke Chen updated KAFKA-18930: ------------------------------ Description: When running ZK migrating to KRaft, there will be a dual-write mode. In that mode, metadata will write to KRaft, then write to ZK asynchronously. When there's some exception, KRaft MigrationEvent won't retry when failing to write data to ZK. That causes metadata inconsistency between KRaft and ZK. Note: 1. Besides, when doing KRaft controller clean shutdown, we should keep retrying the failing ZK writing until force shutdown, to make sure the metadata is consistent. 2. When doing shutdown, [the order of shutdown|https://github.com/apache/kafka/blob/1ec1043d5197c4f807fa5cbc41d875b289443096/core/src/main/scala/kafka/server/ControllerServer.scala#L69-L76] is to close ZK -> close RPC Client -> close migration driver. That causes another issue that even if we retry the ZK write, it will never succeed when shutdown is ongoing because ZK connection is closed first. The impact is when rolling back to ZK mode during migration, the metadata in ZK is out of date was: When running ZK migrating to KRaft, there will be a dual-write mode. In that mode, metadata will write to KRaft, then write to ZK asynchronously. When there's some exception, KRaft MigrationEvent won't retry when failing to write data to ZK. That causes metadata inconsistency between KRaft and ZK. Besides, when doing KRaft controller clean shutdown, we should keep retrying the failing ZK writing until force shutdown, to make sure the metadata is consistent. The impact is when rolling back to ZK mode during migration, the metadata in ZK is out of date > KRaft MigrationEvent won't retry when failing to write data to ZK > ------------------------------------------------------------------ > > Key: KAFKA-18930 > URL: https://issues.apache.org/jira/browse/KAFKA-18930 > Project: Kafka > Issue Type: Improvement > Affects Versions: 3.9.0 > Reporter: Luke Chen > Priority: Major > > When running ZK migrating to KRaft, there will be a dual-write mode. In that > mode, metadata will write to KRaft, then write to ZK asynchronously. When > there's some exception, KRaft MigrationEvent won't retry when failing to > write data to ZK. That causes metadata inconsistency between KRaft and ZK. > > Note: > 1. Besides, when doing KRaft controller clean shutdown, we should keep > retrying the failing ZK writing until force shutdown, to make sure the > metadata is consistent. > 2. When doing shutdown, [the order of > shutdown|https://github.com/apache/kafka/blob/1ec1043d5197c4f807fa5cbc41d875b289443096/core/src/main/scala/kafka/server/ControllerServer.scala#L69-L76] > is to close ZK -> close RPC Client -> close migration driver. That causes > another issue that even if we retry the ZK write, it will never succeed when > shutdown is ongoing because ZK connection is closed first. > > The impact is when rolling back to ZK mode during migration, the metadata in > ZK is out of date -- This message was sent by Atlassian Jira (v8.20.10#820010)