mjsax commented on code in PR #18091: URL: https://github.com/apache/kafka/pull/18091#discussion_r1978441481
########## docs/compatibility.html: ########## @@ -0,0 +1,206 @@ +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<script> + <!--#include virtual="js/templateData.js" --> +</script> + +<script id="compatibility-template" type="text/x-handlebars-template"></script> + +<div class="p-compatibility"> + With the release of Kafka 4.0, significant changes have been introduced that impact compatibility across various + components. To assist users in planning upgrades and ensuring seamless interoperability, a comprehensive compatibility + matrix has been prepared. + <h4>JDK Compatibility Across Kafka Versions</h4> + <table> + <tr> + <th>Module</th> + <th>Kafka Version</th> + <th>Java 8</th> + <th>Java 11</th> + <th>Java 17</th> + <th>Java 23</th> + </tr> + <tr> + <td>Client</td> + <td>4.0.0</td> + <td>❌</td> + <td>✅</td> + <td>✅</td> + <td>✅</td> + </tr> + <tr> + <td>Streams</td> + <td>4.0.0</td> + <td>❌</td> + <td>✅</td> + <td>✅</td> + <td>✅</td> + </tr> + <tr> + <td>Connect</td> + <td>4.0.0</td> + <td>❌</td> + <td>❌</td> + <td>✅</td> + <td>✅</td> + </tr> + <tr> + <td>Server</td> + <td>4.0.0</td> + <td>❌</td> + <td>❌</td> + <td>✅</td> + <td>✅</td> + </tr> + </table> + + <h4>Server Compatibility</h4> + <table> + <tr> + <th>KRaft Cluster Version</th> + <th>Compatibility 4.0 Server (dynamic voter)</th> + <th>Compatibility 4.0 Server (static voter)</th> + </tr> + <tr> + <td>before 3.2.x</td> + <td>❌</td> + <td>❌</td> + </tr> + <tr> + <td>3.3.x</td> + <td>❌</td> + <td>✅</td> + </tr> + <tr> + <td>3.4.x</td> + <td>❌</td> + <td>✅</td> + </tr> + <tr> + <td>3.5.x</td> + <td>❌</td> + <td>✅</td> + </tr> + <tr> + <td>3.6.x</td> + <td>❌</td> + <td>✅</td> + </tr> + <tr> + <td>3.7.x</td> + <td>❌</td> + <td>✅</td> + </tr> + <tr> + <td>3.8.x</td> + <td>❌</td> + <td>✅</td> + </tr> + <tr> + <td>3.9.x</td> + <td>✅</td> + <td>✅</td> + </tr> + <tr> + <td>4.0.x</td> + <td>✅</td> + <td>✅</td> + </tr> + </table> + <p>Note: Can’t upgrade server from static voter to dynamic voter, see <a href="https://issues.apache.org/jira/browse/KAFKA-16538">KAFKA-16538</a>.</p> + + <h4>Client Compatibility</h4> + <table> + <tr> + <th>Kafka Version</th> + <th>Module</th> + <th>Compatibility with Kafka 4.0</th> + <th>Key Differences/Limitations</th> + </tr> + <tr> + <td rowspan="3">0.x</td> + <td>Client</td> + <td>❌ Not Compatible</td> + <td>Pre-0.10.x protocols are fully removed in Kafka 4.0 (<a href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-896">KIP-896</a>).</td> + </tr> + <tr> + <td>Streams</td> + <td>❌ Not Available</td> + <td>Kafka Streams introduced in Kafka 0.10.x.</td> + </tr> + <tr> + <td>Connect</td> + <td>⚠️ Limited Compatibility</td> + <td>Connect introduced in Kafka 0.9.x but lacks support for modern features like IncrementalAlterConfigs and dynamic configs.</td> + </tr> + <tr> + <td rowspan="3">1.x</td> + <td>Client</td> + <td>⚠️ Limited Compatibility</td> + <td>Supports brokers >= 0.10.x. Does not support newer features like idempotent producer or transactional API.</td> Review Comment: I am not an expert here, but from my understanding of KIP-896, the minimum supported client version for 4.0 brokers would be 2.1 (what extend to Connect and KS, naturally...) ########## docs/compatibility.html: ########## @@ -0,0 +1,206 @@ +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<script> + <!--#include virtual="js/templateData.js" --> +</script> + +<script id="compatibility-template" type="text/x-handlebars-template"></script> + +<div class="p-compatibility"> + With the release of Kafka 4.0, significant changes have been introduced that impact compatibility across various + components. To assist users in planning upgrades and ensuring seamless interoperability, a comprehensive compatibility + matrix has been prepared. + <h4>JDK Compatibility Across Kafka Versions</h4> + <table> + <tr> + <th>Module</th> + <th>Kafka Version</th> + <th>Java 8</th> + <th>Java 11</th> + <th>Java 17</th> + <th>Java 23</th> + </tr> + <tr> + <td>Client</td> + <td>4.0.0</td> + <td>❌</td> + <td>✅</td> + <td>✅</td> + <td>✅</td> + </tr> + <tr> + <td>Streams</td> + <td>4.0.0</td> + <td>❌</td> + <td>✅</td> + <td>✅</td> + <td>✅</td> + </tr> + <tr> + <td>Connect</td> + <td>4.0.0</td> + <td>❌</td> + <td>❌</td> + <td>✅</td> + <td>✅</td> + </tr> + <tr> + <td>Server</td> + <td>4.0.0</td> + <td>❌</td> + <td>❌</td> + <td>✅</td> + <td>✅</td> + </tr> + </table> + + <h4>Server Compatibility</h4> + <table> + <tr> + <th>KRaft Cluster Version</th> + <th>Compatibility 4.0 Server (dynamic voter)</th> + <th>Compatibility 4.0 Server (static voter)</th> + </tr> + <tr> + <td>before 3.2.x</td> + <td>❌</td> + <td>❌</td> + </tr> + <tr> + <td>3.3.x</td> + <td>❌</td> + <td>✅</td> + </tr> + <tr> + <td>3.4.x</td> + <td>❌</td> + <td>✅</td> + </tr> + <tr> + <td>3.5.x</td> + <td>❌</td> + <td>✅</td> + </tr> + <tr> + <td>3.6.x</td> + <td>❌</td> + <td>✅</td> + </tr> + <tr> + <td>3.7.x</td> + <td>❌</td> + <td>✅</td> + </tr> + <tr> + <td>3.8.x</td> + <td>❌</td> + <td>✅</td> + </tr> + <tr> + <td>3.9.x</td> + <td>✅</td> + <td>✅</td> + </tr> + <tr> + <td>4.0.x</td> + <td>✅</td> + <td>✅</td> + </tr> + </table> + <p>Note: Can’t upgrade server from static voter to dynamic voter, see <a href="https://issues.apache.org/jira/browse/KAFKA-16538">KAFKA-16538</a>.</p> + + <h4>Client Compatibility</h4> + <table> + <tr> + <th>Kafka Version</th> + <th>Module</th> + <th>Compatibility with Kafka 4.0</th> + <th>Key Differences/Limitations</th> + </tr> + <tr> + <td rowspan="3">0.x</td> + <td>Client</td> + <td>❌ Not Compatible</td> + <td>Pre-0.10.x protocols are fully removed in Kafka 4.0 (<a href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-896">KIP-896</a>).</td> + </tr> + <tr> + <td>Streams</td> + <td>❌ Not Available</td> + <td>Kafka Streams introduced in Kafka 0.10.x.</td> + </tr> + <tr> + <td>Connect</td> + <td>⚠️ Limited Compatibility</td> + <td>Connect introduced in Kafka 0.9.x but lacks support for modern features like IncrementalAlterConfigs and dynamic configs.</td> + </tr> + <tr> + <td rowspan="3">1.x</td> + <td>Client</td> + <td>⚠️ Limited Compatibility</td> + <td>Supports brokers >= 0.10.x. Does not support newer features like idempotent producer or transactional API.</td> + </tr> + <tr> + <td>Streams</td> + <td>⚠️ Limited Compatibility</td> + <td>Basic Streams features available. Exactly-once semantics unavailable (requires Kafka 2.4.x or later).</td> + </tr> + <tr> + <td>Connect</td> + <td>⚠️ Limited Compatibility</td> + <td>IncrementalAlterConfigs not supported before Kafka 2.3.x.</td> + </tr> + <tr> + <td rowspan="3">2.x</td> Review Comment: Similar questions as above. ########## docs/compatibility.html: ########## @@ -0,0 +1,206 @@ +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<script> + <!--#include virtual="js/templateData.js" --> +</script> + +<script id="compatibility-template" type="text/x-handlebars-template"></script> + +<div class="p-compatibility"> + With the release of Kafka 4.0, significant changes have been introduced that impact compatibility across various + components. To assist users in planning upgrades and ensuring seamless interoperability, a comprehensive compatibility + matrix has been prepared. + <h4>JDK Compatibility Across Kafka Versions</h4> + <table> + <tr> + <th>Module</th> + <th>Kafka Version</th> + <th>Java 8</th> + <th>Java 11</th> + <th>Java 17</th> + <th>Java 23</th> + </tr> + <tr> + <td>Client</td> + <td>4.0.0</td> + <td>❌</td> + <td>✅</td> + <td>✅</td> + <td>✅</td> + </tr> + <tr> + <td>Streams</td> + <td>4.0.0</td> + <td>❌</td> + <td>✅</td> + <td>✅</td> + <td>✅</td> + </tr> + <tr> + <td>Connect</td> + <td>4.0.0</td> + <td>❌</td> + <td>❌</td> + <td>✅</td> + <td>✅</td> + </tr> + <tr> + <td>Server</td> + <td>4.0.0</td> + <td>❌</td> + <td>❌</td> + <td>✅</td> + <td>✅</td> + </tr> + </table> + + <h4>Server Compatibility</h4> + <table> + <tr> + <th>KRaft Cluster Version</th> + <th>Compatibility 4.0 Server (dynamic voter)</th> + <th>Compatibility 4.0 Server (static voter)</th> + </tr> + <tr> + <td>before 3.2.x</td> + <td>❌</td> + <td>❌</td> + </tr> + <tr> + <td>3.3.x</td> + <td>❌</td> + <td>✅</td> + </tr> + <tr> + <td>3.4.x</td> + <td>❌</td> + <td>✅</td> + </tr> + <tr> + <td>3.5.x</td> + <td>❌</td> + <td>✅</td> + </tr> + <tr> + <td>3.6.x</td> + <td>❌</td> + <td>✅</td> + </tr> + <tr> + <td>3.7.x</td> + <td>❌</td> + <td>✅</td> + </tr> + <tr> + <td>3.8.x</td> + <td>❌</td> + <td>✅</td> + </tr> + <tr> + <td>3.9.x</td> + <td>✅</td> + <td>✅</td> + </tr> + <tr> + <td>4.0.x</td> + <td>✅</td> + <td>✅</td> + </tr> + </table> + <p>Note: Can’t upgrade server from static voter to dynamic voter, see <a href="https://issues.apache.org/jira/browse/KAFKA-16538">KAFKA-16538</a>.</p> + + <h4>Client Compatibility</h4> Review Comment: ```suggestion <h4>Client/Broker Forward Compatibility</h4> ``` ########## docs/compatibility.html: ########## @@ -0,0 +1,206 @@ +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<script> + <!--#include virtual="js/templateData.js" --> +</script> + +<script id="compatibility-template" type="text/x-handlebars-template"></script> + +<div class="p-compatibility"> + With the release of Kafka 4.0, significant changes have been introduced that impact compatibility across various + components. To assist users in planning upgrades and ensuring seamless interoperability, a comprehensive compatibility + matrix has been prepared. + <h4>JDK Compatibility Across Kafka Versions</h4> + <table> + <tr> + <th>Module</th> + <th>Kafka Version</th> + <th>Java 8</th> + <th>Java 11</th> + <th>Java 17</th> + <th>Java 23</th> + </tr> + <tr> + <td>Client</td> + <td>4.0.0</td> + <td>❌</td> + <td>✅</td> + <td>✅</td> + <td>✅</td> + </tr> + <tr> + <td>Streams</td> + <td>4.0.0</td> + <td>❌</td> + <td>✅</td> + <td>✅</td> + <td>✅</td> + </tr> + <tr> + <td>Connect</td> + <td>4.0.0</td> + <td>❌</td> + <td>❌</td> + <td>✅</td> + <td>✅</td> + </tr> + <tr> + <td>Server</td> + <td>4.0.0</td> + <td>❌</td> + <td>❌</td> + <td>✅</td> + <td>✅</td> + </tr> + </table> + + <h4>Server Compatibility</h4> + <table> + <tr> + <th>KRaft Cluster Version</th> + <th>Compatibility 4.0 Server (dynamic voter)</th> + <th>Compatibility 4.0 Server (static voter)</th> + </tr> + <tr> + <td>before 3.2.x</td> + <td>❌</td> + <td>❌</td> + </tr> + <tr> + <td>3.3.x</td> + <td>❌</td> + <td>✅</td> + </tr> + <tr> + <td>3.4.x</td> + <td>❌</td> + <td>✅</td> + </tr> + <tr> + <td>3.5.x</td> + <td>❌</td> + <td>✅</td> + </tr> + <tr> + <td>3.6.x</td> + <td>❌</td> + <td>✅</td> + </tr> + <tr> + <td>3.7.x</td> + <td>❌</td> + <td>✅</td> + </tr> + <tr> + <td>3.8.x</td> + <td>❌</td> + <td>✅</td> + </tr> + <tr> + <td>3.9.x</td> + <td>✅</td> + <td>✅</td> + </tr> + <tr> + <td>4.0.x</td> + <td>✅</td> + <td>✅</td> + </tr> + </table> + <p>Note: Can’t upgrade server from static voter to dynamic voter, see <a href="https://issues.apache.org/jira/browse/KAFKA-16538">KAFKA-16538</a>.</p> + + <h4>Client Compatibility</h4> Review Comment: I believe "forward" is the right term here, as we are covering older client version and 4.0 brokers? ########## docs/compatibility.html: ########## @@ -0,0 +1,206 @@ +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<script> + <!--#include virtual="js/templateData.js" --> +</script> + +<script id="compatibility-template" type="text/x-handlebars-template"></script> + +<div class="p-compatibility"> + With the release of Kafka 4.0, significant changes have been introduced that impact compatibility across various + components. To assist users in planning upgrades and ensuring seamless interoperability, a comprehensive compatibility + matrix has been prepared. + <h4>JDK Compatibility Across Kafka Versions</h4> + <table> + <tr> + <th>Module</th> + <th>Kafka Version</th> + <th>Java 8</th> + <th>Java 11</th> + <th>Java 17</th> + <th>Java 23</th> + </tr> + <tr> + <td>Client</td> Review Comment: ```suggestion <td>Clients</td> ``` ########## docs/compatibility.html: ########## @@ -0,0 +1,206 @@ +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<script> + <!--#include virtual="js/templateData.js" --> +</script> + +<script id="compatibility-template" type="text/x-handlebars-template"></script> + +<div class="p-compatibility"> + With the release of Kafka 4.0, significant changes have been introduced that impact compatibility across various + components. To assist users in planning upgrades and ensuring seamless interoperability, a comprehensive compatibility + matrix has been prepared. + <h4>JDK Compatibility Across Kafka Versions</h4> + <table> + <tr> + <th>Module</th> + <th>Kafka Version</th> + <th>Java 8</th> Review Comment: Given that we did drop Java8 support, might be simpler to just drop this column, and add a sentence above to state it explicitly? ########## docs/compatibility.html: ########## @@ -0,0 +1,206 @@ +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<script> + <!--#include virtual="js/templateData.js" --> +</script> + +<script id="compatibility-template" type="text/x-handlebars-template"></script> + +<div class="p-compatibility"> + With the release of Kafka 4.0, significant changes have been introduced that impact compatibility across various + components. To assist users in planning upgrades and ensuring seamless interoperability, a comprehensive compatibility + matrix has been prepared. + <h4>JDK Compatibility Across Kafka Versions</h4> + <table> + <tr> + <th>Module</th> + <th>Kafka Version</th> + <th>Java 8</th> + <th>Java 11</th> + <th>Java 17</th> + <th>Java 23</th> + </tr> + <tr> + <td>Client</td> + <td>4.0.0</td> + <td>❌</td> + <td>✅</td> + <td>✅</td> + <td>✅</td> + </tr> + <tr> + <td>Streams</td> + <td>4.0.0</td> + <td>❌</td> + <td>✅</td> + <td>✅</td> + <td>✅</td> + </tr> + <tr> + <td>Connect</td> + <td>4.0.0</td> + <td>❌</td> + <td>❌</td> + <td>✅</td> + <td>✅</td> + </tr> + <tr> + <td>Server</td> + <td>4.0.0</td> + <td>❌</td> + <td>❌</td> + <td>✅</td> + <td>✅</td> + </tr> + </table> + + <h4>Server Compatibility</h4> + <table> + <tr> + <th>KRaft Cluster Version</th> + <th>Compatibility 4.0 Server (dynamic voter)</th> + <th>Compatibility 4.0 Server (static voter)</th> + </tr> + <tr> + <td>before 3.2.x</td> + <td>❌</td> + <td>❌</td> + </tr> + <tr> + <td>3.3.x</td> + <td>❌</td> + <td>✅</td> + </tr> + <tr> + <td>3.4.x</td> + <td>❌</td> + <td>✅</td> + </tr> + <tr> + <td>3.5.x</td> + <td>❌</td> + <td>✅</td> + </tr> + <tr> + <td>3.6.x</td> + <td>❌</td> + <td>✅</td> + </tr> + <tr> + <td>3.7.x</td> + <td>❌</td> + <td>✅</td> + </tr> + <tr> + <td>3.8.x</td> + <td>❌</td> + <td>✅</td> + </tr> + <tr> + <td>3.9.x</td> + <td>✅</td> + <td>✅</td> + </tr> + <tr> + <td>4.0.x</td> + <td>✅</td> + <td>✅</td> + </tr> + </table> + <p>Note: Can’t upgrade server from static voter to dynamic voter, see <a href="https://issues.apache.org/jira/browse/KAFKA-16538">KAFKA-16538</a>.</p> + + <h4>Client Compatibility</h4> + <table> + <tr> + <th>Kafka Version</th> + <th>Module</th> + <th>Compatibility with Kafka 4.0</th> + <th>Key Differences/Limitations</th> + </tr> + <tr> + <td rowspan="3">0.x</td> + <td>Client</td> + <td>❌ Not Compatible</td> + <td>Pre-0.10.x protocols are fully removed in Kafka 4.0 (<a href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-896">KIP-896</a>).</td> + </tr> + <tr> + <td>Streams</td> + <td>❌ Not Available</td> + <td>Kafka Streams introduced in Kafka 0.10.x.</td> + </tr> + <tr> + <td>Connect</td> + <td>⚠️ Limited Compatibility</td> + <td>Connect introduced in Kafka 0.9.x but lacks support for modern features like IncrementalAlterConfigs and dynamic configs.</td> + </tr> + <tr> + <td rowspan="3">1.x</td> + <td>Client</td> + <td>⚠️ Limited Compatibility</td> + <td>Supports brokers >= 0.10.x. Does not support newer features like idempotent producer or transactional API.</td> + </tr> + <tr> + <td>Streams</td> + <td>⚠️ Limited Compatibility</td> + <td>Basic Streams features available. Exactly-once semantics unavailable (requires Kafka 2.4.x or later).</td> + </tr> + <tr> + <td>Connect</td> + <td>⚠️ Limited Compatibility</td> + <td>IncrementalAlterConfigs not supported before Kafka 2.3.x.</td> + </tr> + <tr> + <td rowspan="3">2.x</td> + <td>Client</td> + <td>⚠️ Partially Compatible</td> + <td>Compatible with brokers >= 0.10.x but lacks optimizations for Kafka 4.0. Pre-0.10.x protocols removed in 4.0.</td> + </tr> + <tr> + <td>Streams</td> + <td>⚠️ Limited Compatibility</td> + <td>Exactly-once semantics unavailable (requires Kafka 2.4.x or later). Pre-2.4.x brokers lack key Streams features.</td> + </tr> + <tr> + <td>Connect</td> + <td>⚠️ Limited Compatibility</td> + <td>MirrorMaker 1 supported in 2.x but removed in 4.0. IncrementalAlterConfigs unsupported before Kafka 2.3.x.</td> + </tr> + <tr> + <td rowspan="3">3.x</td> + <td>Client</td> + <td>✅ Fully Compatible</td> + <td>Fully compatible with Kafka 4.0 brokers. Lacks access to optimizations introduced in Kafka 4.0.</td> + </tr> + <tr> + <td>Streams</td> + <td>✅ Fully Compatible</td> + <td>Supports exactly-once semantics (introduced in Kafka 2.4.x). Topic IDs introduced in Kafka 3.0.</td> Review Comment: EOS was added in KS 0.11.0. -- We did add EOSv2 in KS 2.6 (which required 2.5.x broker), but given that we talk about KS 3.x against 4.0 brokers it should not matter. Why would we care about Topic IDs? ########## docs/compatibility.html: ########## @@ -0,0 +1,206 @@ +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<script> + <!--#include virtual="js/templateData.js" --> +</script> + +<script id="compatibility-template" type="text/x-handlebars-template"></script> + +<div class="p-compatibility"> + With the release of Kafka 4.0, significant changes have been introduced that impact compatibility across various + components. To assist users in planning upgrades and ensuring seamless interoperability, a comprehensive compatibility + matrix has been prepared. + <h4>JDK Compatibility Across Kafka Versions</h4> + <table> + <tr> + <th>Module</th> + <th>Kafka Version</th> + <th>Java 8</th> + <th>Java 11</th> + <th>Java 17</th> + <th>Java 23</th> + </tr> + <tr> + <td>Client</td> + <td>4.0.0</td> + <td>❌</td> + <td>✅</td> + <td>✅</td> + <td>✅</td> + </tr> + <tr> + <td>Streams</td> + <td>4.0.0</td> + <td>❌</td> + <td>✅</td> + <td>✅</td> + <td>✅</td> + </tr> + <tr> + <td>Connect</td> + <td>4.0.0</td> + <td>❌</td> + <td>❌</td> + <td>✅</td> + <td>✅</td> + </tr> + <tr> + <td>Server</td> + <td>4.0.0</td> + <td>❌</td> + <td>❌</td> + <td>✅</td> + <td>✅</td> + </tr> + </table> + + <h4>Server Compatibility</h4> + <table> + <tr> + <th>KRaft Cluster Version</th> + <th>Compatibility 4.0 Server (dynamic voter)</th> + <th>Compatibility 4.0 Server (static voter)</th> + </tr> + <tr> + <td>before 3.2.x</td> + <td>❌</td> + <td>❌</td> + </tr> + <tr> + <td>3.3.x</td> + <td>❌</td> + <td>✅</td> + </tr> + <tr> + <td>3.4.x</td> + <td>❌</td> + <td>✅</td> + </tr> + <tr> + <td>3.5.x</td> + <td>❌</td> + <td>✅</td> + </tr> + <tr> + <td>3.6.x</td> + <td>❌</td> + <td>✅</td> + </tr> + <tr> + <td>3.7.x</td> + <td>❌</td> + <td>✅</td> + </tr> + <tr> + <td>3.8.x</td> + <td>❌</td> + <td>✅</td> + </tr> + <tr> + <td>3.9.x</td> + <td>✅</td> + <td>✅</td> + </tr> + <tr> + <td>4.0.x</td> + <td>✅</td> + <td>✅</td> + </tr> + </table> + <p>Note: Can’t upgrade server from static voter to dynamic voter, see <a href="https://issues.apache.org/jira/browse/KAFKA-16538">KAFKA-16538</a>.</p> + + <h4>Client Compatibility</h4> + <table> + <tr> + <th>Kafka Version</th> + <th>Module</th> + <th>Compatibility with Kafka 4.0</th> + <th>Key Differences/Limitations</th> + </tr> + <tr> + <td rowspan="3">0.x</td> + <td>Client</td> + <td>❌ Not Compatible</td> + <td>Pre-0.10.x protocols are fully removed in Kafka 4.0 (<a href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-896">KIP-896</a>).</td> + </tr> + <tr> + <td>Streams</td> + <td>❌ Not Available</td> + <td>Kafka Streams introduced in Kafka 0.10.x.</td> + </tr> + <tr> + <td>Connect</td> + <td>⚠️ Limited Compatibility</td> + <td>Connect introduced in Kafka 0.9.x but lacks support for modern features like IncrementalAlterConfigs and dynamic configs.</td> + </tr> + <tr> + <td rowspan="3">1.x</td> + <td>Client</td> + <td>⚠️ Limited Compatibility</td> + <td>Supports brokers >= 0.10.x. Does not support newer features like idempotent producer or transactional API.</td> + </tr> + <tr> + <td>Streams</td> + <td>⚠️ Limited Compatibility</td> + <td>Basic Streams features available. Exactly-once semantics unavailable (requires Kafka 2.4.x or later).</td> Review Comment: This is confusing. The line compare KS to 4.0 brokers, right? We did add EOS in KS 0.11.0 so what does `(requires Kafka 2.4.x or later)` mean? -- 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: jira-unsubscr...@kafka.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org