chia7712 commented on PR #17576: URL: https://github.com/apache/kafka/pull/17576#issuecomment-2471861303
> I think the approach sounds fine, but wasn't sure if we typically updated ZK like this without a KIP or anything. It is also a bit odd since it will only be used in tests. But reading on the previous messages, it seems like this is the only way forward for these older versions that require ZK? If so, then it seems like our best bet to unblock these tests. Yes, that approach can simplify our E2E environment, as we can use `JDK 17` and `ZooKeeper 3.8` server to test all supported versions in E2E. Additionally, a KIP shouldn't be necessary, since #6802 upgraded ZooKeeper from 3.4.14 to 3.5.5 without requiring a KIP. Importantly, what we're trying to test here isn't the compatibility between Kafka and ZooKeeper. > KIP-902 does have a chart in it that indicates the older kafka versions aren't compatible, so I think we should sort that area out before proceeding. Pardon me, are we taking about this chart?  If so, the chart is about which version of the ZooKeeper client is used by Kafka and the compatibility between the ZooKeeper client and server versions. Additionally, we don't test rolling upgrades from versions 2.1 to 2.3 to newer versions. The main concern with replacing the ZooKeeper 3.4 client JAR with the 3.5 JAR is whether the ZooKeeper 3.5 client introduces API changes. The answer is yes—some APIs have been moved to `zookeeper-jute`, such as `org.apache.zookeeper.data`. That's why #17625 needs to manually add `zookeeper-jute` to make Kafka versions 2.1 to 2.3 work with the ZooKeeper 3.5 client. The following table is the env used to running Kafka in E2E. |version |support |zk client version|zk server version|java version| |-----------|---------|----------|------------|------------| | pre-2.0 | none | n/a | n/a | n/a | | 2.1 | zk mode | 3.5.5 (manually update) | 3.8.4 | jdk17 | | 2.2 | zk mode | 3.5.5 (manually update) | 3.8.4 | jdk17 | | 2.3 | zk mode | 3.5.5 (manually update) | 3.8.4 | jdk17 | | 2.4 | zk mode | 3.5.9 | 3.8.4 | jdk17 | | 2.5 | zk mode | 3.5.9 | 3.8.4 | jdk17 | | 2.6 | zk mode | 3.5.9 | 3.8.4 | jdk17 | | 2.7 | zk mode | 3.5.9 | 3.8.4 | jdk17 | | 2.8 | zk mode | 3.5.9 | 3.8.4 | jdk17 | | 3.0 | kraft | n/a | n/a | jdk17 | | 3.1 | kraft | n/a | n/a | jdk17 | | 3.2 | kraft | n/a | n/a | jdk17 | | 3.3 | kraft | n/a | n/a | jdk17 | | 3.4 | kraft | n/a | n/a | jdk17 | | 3.5 | kraft | n/a | n/a | jdk17 | | 3.6 | kraft | n/a | n/a | jdk17 | | 3.7 | kraft | n/a | n/a | jdk17 | | 3.8 | kraft | n/a | n/a | jdk17 | | 3.9 | kraft | n/a | n/a | jdk17 | | 4.0 | kraft | n/a | n/a | jdk17 | Note that the `ZooKeeper 3.8.4 server` can be set up using `Kafka 3.9 release` in the E2E tests, allowing us to remove all ZooKeeper-related code from version 4.0 (related discussion: [#17768](https://github.com/apache/kafka/pull/17768#discussion_r1838559400)). -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
