This is an automated email from the ASF dual-hosted git repository.
mjsax pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/kafka.git
The following commit(s) were added to refs/heads/trunk by this push:
new cf07e6b1f64 KAFKA-18074: Add kafka client compatibility matrix (#18091)
cf07e6b1f64 is described below
commit cf07e6b1f64b581b997def4e3f9bcbb832a8f074
Author: Ken Huang <[email protected]>
AuthorDate: Wed Mar 12 09:38:37 2025 +0800
KAFKA-18074: Add kafka client compatibility matrix (#18091)
Add new section for Kafka 4.0 compatibility metrics for user, so user
can check server and client in this section.
Reviewers: Divij Vaidya <[email protected]>, Matthias J. Sax
<[email protected]>
---
docs/compatibility-summary.html | 27 +++++
docs/documentation.html | 4 +-
docs/documentation/compatibility.html | 201 ++++++++++++++++++++++++++++++++++
docs/toc.html | 3 +-
docs/upgrade.html | 18 +--
5 files changed, 242 insertions(+), 11 deletions(-)
diff --git a/docs/compatibility-summary.html b/docs/compatibility-summary.html
new file mode 100644
index 00000000000..bb6f2d581bc
--- /dev/null
+++ b/docs/compatibility-summary.html
@@ -0,0 +1,27 @@
+<!--
+ 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-summary-template" type="text/x-handlebars-template">
+<p>
+ 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
+ <a href="/{{version}}/documentation/compatibility.html">compatibility
matrix</a> has been prepared.
+</p>
+</script>
+<div class="p-compatibility-summary"></div>
diff --git a/docs/documentation.html b/docs/documentation.html
index e499031c8f5..b142263ac85 100644
--- a/docs/documentation.html
+++ b/docs/documentation.html
@@ -78,7 +78,9 @@
<!--#include virtual="upgrade.html" -->
<h3 class="anchor-heading"><a id="zk2kraft-summary"
class="anchor-link"></a><a href="#zk2kraft-summary">1.6 KRaft vs
ZooKeeper</a></h3>
<!--#include virtual="zk2kraft-summary.html" -->
- <h3 class="anchor-heading"><a id="docker" class="anchor-link"></a><a
href="#docker">1.7 Docker</a></h3>
+ <h3 class="anchor-heading"><a id="compatibility-summary"
class="anchor-link"></a><a href="#compatibility-summary">1.7
Compatibility</a></h3>
+ <!--#include virtual="compatibility-summary.html" -->
+ <h3 class="anchor-heading"><a id="docker" class="anchor-link"></a><a
href="#docker">1.8 Docker</a></h3>
<!--#include virtual="docker.html" -->
<h2 class="anchor-heading"><a id="api" class="anchor-link"></a><a
href="#api">2. APIs</a></h2>
diff --git a/docs/documentation/compatibility.html
b/docs/documentation/compatibility.html
new file mode 100644
index 00000000000..e1b5134ea40
--- /dev/null
+++ b/docs/documentation/compatibility.html
@@ -0,0 +1,201 @@
+<!--
+ 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.
+-->
+
+<!--#include virtual="../../includes/_header.htm" -->
+<!--#include virtual="../../includes/_top.htm" -->
+<div class="content">
+ <div class="p-compatibility">
+ <h1>Compatibility</h1>
+ 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.
+ <h2 class="anchor-heading">JDK Compatibility Across Kafka Versions</h2>
+ <table>
+ <tr>
+ <th>Module</th>
+ <th>Kafka Version</th>
+ <th>Java 11</th>
+ <th>Java 17</th>
+ <th>Java 23</th>
+ </tr>
+ <tr>
+ <td>Clients</td>
+ <td>4.0.0</td>
+ <td>✅</td>
+ <td>✅</td>
+ <td>✅</td>
+ </tr>
+ <tr>
+ <td>Streams</td>
+ <td>4.0.0</td>
+ <td>✅</td>
+ <td>✅</td>
+ <td>✅</td>
+ </tr>
+ <tr>
+ <td>Connect</td>
+ <td>4.0.0</td>
+ <td>❌</td>
+ <td>✅</td>
+ <td>✅</td>
+ </tr>
+ <tr>
+ <td>Server</td>
+ <td>4.0.0</td>
+ <td>❌</td>
+ <td>✅</td>
+ <td>✅</td>
+ </tr>
+ </table>
+ <p><strong>Note: Java 8 is removed in Kafka 4.0 and is no longer
supported.</strong></p>
+
+ <h2 class="anchor-heading">Server Compatibility</h2>
+ <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><strong>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>.</strong></p>
+
+ <h4>Client/Broker Forward 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, 1.x, 2.0</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/x/K5sODg">KIP-896</a>).
+ </td>
+ </tr>
+ <tr>
+ <td>Streams</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/x/K5sODg">KIP-896</a>).
+ </td>
+ </tr>
+ <tr>
+ <td>Connect</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/x/K5sODg">KIP-896</a>).
+ </td>
+ </tr>
+ <tr>
+ <td rowspan="3">2.1 ~ 2.8</td>
+ <td>Client</td>
+ <td>⚠️ Partially Compatible</td>
+ <td>
+ More details in the <a
href="/40/documentation.html#upgrade_400_notable_consumer">Consumer</a>,
+ <a
href="/40/documentation.html#upgrade_400_notable_producer">Producer</a>, and
+ <a
href="/40/documentation.html#upgrade_400_notable_admin_client">Admin Client</a>
section.
+ </td>
+ </tr>
+ <tr>
+ <td>Streams</td>
+ <td>⚠️ Limited Compatibility</td>
+ <td>
+ More details in the <a
href="/40/documentation.html#upgrade_400_notable_kafka_streams">Kafka
Streams</a> section.
+ </td>
+ </tr>
+ <tr>
+ <td>Connect</td>
+ <td>⚠️ Limited Compatibility</td>
+ <td>
+ More details in the <a
href="/40/documentation.html#upgrade_400_notable_connect">Connect</a> section.
+ </td>
+ </tr>
+ <tr>
+ <td rowspan="3">3.x</td>
+ <td>Client</td>
+ <td>✅ Fully Compatible</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>Streams</td>
+ <td>✅ Fully Compatible</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>Connect</td>
+ <td>✅ Fully Compatible</td>
+ <td></td>
+ </tr>
+ </table>
+ <p>
+ Note: Starting with Kafka 4.0, the <code>--zookeeper</code> option
in AdminClient commands has been removed. Users must
+ use the <code>--bootstrap-server</code> option to interact with
the Kafka cluster. This change aligns with the transition
+ to KRaft mode.
+ </p>
+
+ </div>
+ <!--#include virtual="../../includes/_footer.htm" -->
+</div>
\ No newline at end of file
diff --git a/docs/toc.html b/docs/toc.html
index cc8107ad8a3..c42961cf7fb 100644
--- a/docs/toc.html
+++ b/docs/toc.html
@@ -28,7 +28,8 @@
<li><a href="#ecosystem">1.4 Ecosystem</a>
<li><a href="#upgrade">1.5 Upgrading</a>
<li><a href="#zk2kraft-summary">1.6 KRaft vs ZooKeeper</a>
- <li><a href="#docker">1.7 Docker</a>
+ <li><a href="#compatibility-summary">1.7 Compatibility</a>
+ <li><a href="#docker">1.8 Docker</a>
</ul>
<li><a href="#api">2. APIs</a>
diff --git a/docs/upgrade.html b/docs/upgrade.html
index 9ab621d38cd..c1dd22db9de 100644
--- a/docs/upgrade.html
+++ b/docs/upgrade.html
@@ -101,7 +101,7 @@
</li>
<li>A number of deprecated classes, methods, configurations and tools
have been removed.
<ul>
- <li><b>Common</b>
+ <li><a id="upgrade_400_notable_common"
href="#upgrade_400_notable_common"><b>Common</b></a>
<ul>
<li>The <code>metrics.jmx.blacklist</code> and
<code>metrics.jmx.whitelist</code> configurations were removed from the
<code>org.apache.kafka.common.metrics.JmxReporter</code>
Please use <code>metrics.jmx.exclude</code> and
<code>metrics.jmx.include</code> respectively instead.
@@ -144,7 +144,7 @@
</li>
</ul>
</li>
- <li><b>Broker</b>
+ <li><a id="upgrade_400_notable_broker"
href="#upgrade_400_notable_broker"><b>Broker</b></a>
<ul>
<li>The <code>delegation.token.master.key</code>
configuration was removed.
Please use
<code>delegation.token.secret.key</code> instead.
@@ -177,7 +177,7 @@
</li>
</ul>
</li>
- <li><b>MirrorMaker</b>
+ <li><a id="upgrade_400_notable_MirrorMaker"
href="#upgrade_400_notable_MirrorMaker"><b>MirrorMaker</b></a>
<ul>
<li>The original MirrorMaker (MM1) and related classes
were removed. Please use the Connect-based
MirrorMaker (MM2), as described in the <a
href="/{{version}}/documentation/#georeplication">Geo-Replication section.</a>.
@@ -199,7 +199,7 @@
</li>
</ul>
</li>
- <li><b>Tools</b>
+ <li><a id="upgrade_400_notable_tools"
href="#upgrade_400_notable_tools"><b>Tools</b></a>
<ul>
<li>The <code>kafka.common.MessageReader</code> class
was removed. Please use the
<a
href="/{{version}}/javadoc/org/apache/kafka/tools/api/RecordReader.html"><code>org.apache.kafka.tools.api.RecordReader</code></a>
@@ -250,7 +250,7 @@
</li>
</ul>
</li>
- <li><b>Connect</b>
+ <li><a id="upgrade_400_notable_connect"
href="#upgrade_400_notable_connect"><b>Connect</b></a>
<ul>
<li>The <code>whitelist</code> and
<code>blacklist</code> configurations were removed from the
<code>org.apache.kafka.connect.transforms.ReplaceField</code> transformation.
Please use <code>include</code> and
<code>exclude</code> respectively instead.
@@ -262,7 +262,7 @@
</li>
</ul>
</li>
- <li><b>Consumer</b>
+ <li><a id="upgrade_400_notable_consumer"
href="#upgrade_400_notable_consumer"><b>Consumer</b></a>
<ul>
<li>The <code>poll(long)</code> method was removed
from the consumer. Please use <code>poll(Duration)</code> instead. Note that
there is
a difference in behavior between the two methods.
The <code>poll(Duration)</code> method does not block beyond the timeout
awaiting
@@ -277,7 +277,7 @@
</li>
</ul>
</li>
- <li><b>Producer</b>
+ <li><a id="upgrade_400_notable_producer"
href="#upgrade_400_notable_producer"><b>Producer</b></a>
<ul>
<li>The <code>enable.idempotence</code> configuration
will no longer automatically fall back when the
<code>max.in.flight.requests.per.connection</code> value exceeds 5.
</li>
@@ -288,7 +288,7 @@
</li>
</ul>
</li>
- <li><b>Admin client</b>
+ <li><a id="upgrade_400_notable_admin_client"
href="#upgrade_400_notable_admin_client"><b>Admin client</b></a>
<ul>
<li>
The <code>alterConfigs</code> method was removed
from the <code>org.apache.kafka.clients.admin.Admin</code>.
@@ -332,7 +332,7 @@
</li>
</ul>
</li>
- <li><b>Kafka Streams</b>
+ <li><a id="upgrade_400_notable_kafka_streams"
href="#upgrade_400_notable_kafka_streams"><b>Kafka Streams</b></a>
<ul>
<li>
All public APIs, deprecated in Apache Kafka 3.6 or
an earlier release, have been removed, with the exception of
<code>JoinWindows.of()</code> and <code>JoinWindows#grace()</code>.