From 91bf769d0475a306711d8a9d44075ee8e119be02 Mon Sep 17 00:00:00 2001 From: Xuan-Zhang Gong Date: Fri, 3 Jan 2025 15:14:52 +0800 Subject: [PATCH 1/4] fix shell --- docker/start_kafka.sh | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/docker/start_kafka.sh b/docker/start_kafka.sh index 662c9dff1..8d315a04c 100755 --- a/docker/start_kafka.sh +++ b/docker/start_kafka.sh @@ -14,8 +14,22 @@ # See the License for the specific language governing permissions and # limitations under the License. + +get_ipv4_address() { + if command -v ip &>/dev/null; then + ip -o -4 address show | awk '!/127.0.0.1/ {gsub(/\/.*/, "", $4); print $4; exit}' + elif command -v ifconfig &>/dev/null; then + ifconfig | awk '/inet / && $2 != "127.0.0.1" { print $2; exit }' + elif command -v networksetup &>/dev/null; then + networksetup -getinfo Wi-Fi | awk '/IP address:/ { print $3; exit }' + else + echo "Error: No supported command found to fetch IP address." >&2 + return 1 + fi +} + # ===============================[global variables]=============================== -declare -r ADDRESS=$(ip -o -4 address show | awk ' NR==2 { gsub(/\/.*/, "", $4); print $4 } ') +declare -r ADDRESS=$(get_ipv4_address) declare -r KAFKA_VERSION=${KAFKA_VERSION:-2.1.1} declare -r DOCKERFILE=/tmp/astraea/kafka.dockerfile declare -r JMX0_OPTS="-Dcom.sun.management.jmxremote \ @@ -38,7 +52,7 @@ declare -r JMX2_OPTS="-Dcom.sun.management.jmxremote \ -Djava.rmi.server.hostname=$ADDRESS" declare -r HEAP_OPTS="${HEAP_OPTS:-"-Xmx2G -Xms2G"}" declare -r BROKER_PROPERTIES="/tmp/kafka-${BROKER_PORT}.properties" -declare -r IMAGE_NAME="ghcr.io/opensource4you/astraea/kafka:${KAFKA_VERSION,,}" +declare -r IMAGE_NAME="ghcr.io/opensource4you/astraea/kafka:$(echo "$KAFKA_VERSION" | tr '[:upper:]' '[:lower:]')" function generateDockerfileByVersion() { echo "# this dockerfile is generated dynamically @@ -135,4 +149,4 @@ docker run --rm \ -p 11113:11113 \ -d \ -e KAFKA_JMX_OPTS="$JMX2_OPTS" \ - "$IMAGE_NAME" bin/kafka-server-start.sh config/server2.properties \ No newline at end of file + "$IMAGE_NAME" bin/kafka-server-start.sh config/server2.properties From cec3985fa3772c8b56440502ef5c077cf0abcb64 Mon Sep 17 00:00:00 2001 From: Xuan-Zhang Gong Date: Fri, 3 Jan 2025 16:37:09 +0800 Subject: [PATCH 2/4] draft --- .../java/org/astraea/app/checker/Checker.java | 4 +- .../astraea/app/checker/FetchRpcGuard.java | 45 +++++++++++++++++++ .../common/metrics/broker/NetworkMetrics.java | 2 +- 3 files changed, 49 insertions(+), 2 deletions(-) create mode 100644 app/src/main/java/org/astraea/app/checker/FetchRpcGuard.java diff --git a/app/src/main/java/org/astraea/app/checker/Checker.java b/app/src/main/java/org/astraea/app/checker/Checker.java index e255dc81a..53ced3315 100644 --- a/app/src/main/java/org/astraea/app/checker/Checker.java +++ b/app/src/main/java/org/astraea/app/checker/Checker.java @@ -35,7 +35,9 @@ public class Checker { - private static final List GUARDS = List.of(new ProduceRpcGuard()); + private static final List GUARDS = List.of( + new ProduceRpcGuard(), + new FetchRpcGuard()); public static void main(String[] args) throws Exception { execute(Argument.parse(new Argument(), args)); diff --git a/app/src/main/java/org/astraea/app/checker/FetchRpcGuard.java b/app/src/main/java/org/astraea/app/checker/FetchRpcGuard.java new file mode 100644 index 000000000..c30a1917a --- /dev/null +++ b/app/src/main/java/org/astraea/app/checker/FetchRpcGuard.java @@ -0,0 +1,45 @@ +/* + * 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. + */ +package org.astraea.app.checker; + +import org.apache.kafka.clients.admin.Admin; +import org.apache.kafka.common.Node; +import org.astraea.common.metrics.MBeanClient; +import org.astraea.common.metrics.broker.NetworkMetrics; + +import java.util.Collection; +import java.util.function.Function; + +public class FetchRpcGuard implements Guard { + @Override + public Collection run( + Admin admin, Function clients, Changelog changelog) throws Exception { + return admin.describeCluster().nodes().get().stream() + .map( + node -> { + var protocol = + changelog + .protocols() + .get(NetworkMetrics.Request.FETCH.metricName().toLowerCase()); + if (protocol == null) return Report.empty(); + var versions = NetworkMetrics.Request.FETCH.versions(clients.apply(node)); + return Report.of(node, protocol, versions); + }) + .flatMap(Report::stream) + .toList(); + } +} diff --git a/common/src/main/java/org/astraea/common/metrics/broker/NetworkMetrics.java b/common/src/main/java/org/astraea/common/metrics/broker/NetworkMetrics.java index 083f75e24..1ccda57fd 100644 --- a/common/src/main/java/org/astraea/common/metrics/broker/NetworkMetrics.java +++ b/common/src/main/java/org/astraea/common/metrics/broker/NetworkMetrics.java @@ -141,7 +141,7 @@ public Set versions(MBeanClient mBeanClient) { BeanQuery.builder() .domainName("kafka.network") .property("type", "RequestMetrics") - .property("request", "Produce") + .property("request", this.metricName()) .property("name", "RequestsPerSec") .property("version", "*") .build()); From 960b3dfd425ded24d94ac2e476636ec7e8fcefc6 Mon Sep 17 00:00:00 2001 From: Xuan-Zhang Gong Date: Fri, 3 Jan 2025 17:45:04 +0800 Subject: [PATCH 3/4] add RpcGuard --- .../java/org/astraea/app/checker/Checker.java | 6 +- .../astraea/app/checker/FetchRpcGuard.java | 45 ------------- .../astraea/app/checker/ProduceRpcGuard.java | 44 ------------- .../java/org/astraea/app/checker/Report.java | 65 +++++++++++-------- .../org/astraea/app/checker/RpcGuard.java | 50 ++++++++++++++ 5 files changed, 89 insertions(+), 121 deletions(-) delete mode 100644 app/src/main/java/org/astraea/app/checker/FetchRpcGuard.java delete mode 100644 app/src/main/java/org/astraea/app/checker/ProduceRpcGuard.java create mode 100644 app/src/main/java/org/astraea/app/checker/RpcGuard.java diff --git a/app/src/main/java/org/astraea/app/checker/Checker.java b/app/src/main/java/org/astraea/app/checker/Checker.java index 53ced3315..87909cb44 100644 --- a/app/src/main/java/org/astraea/app/checker/Checker.java +++ b/app/src/main/java/org/astraea/app/checker/Checker.java @@ -35,9 +35,7 @@ public class Checker { - private static final List GUARDS = List.of( - new ProduceRpcGuard(), - new FetchRpcGuard()); + private static final List GUARDS = List.of(new RpcGuard()); public static void main(String[] args) throws Exception { execute(Argument.parse(new Argument(), args)); @@ -47,7 +45,7 @@ public static void execute(final Argument param) throws Exception { try (var admin = Admin.create(Map.of("bootstrap.servers", param.bootstrapServers()))) { for (var guard : GUARDS) { var result = guard.run(admin, param.mBeanClientFunction(), param.readChangelog()); - System.out.println(result); + result.forEach(System.out::println); } } } diff --git a/app/src/main/java/org/astraea/app/checker/FetchRpcGuard.java b/app/src/main/java/org/astraea/app/checker/FetchRpcGuard.java deleted file mode 100644 index c30a1917a..000000000 --- a/app/src/main/java/org/astraea/app/checker/FetchRpcGuard.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * 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. - */ -package org.astraea.app.checker; - -import org.apache.kafka.clients.admin.Admin; -import org.apache.kafka.common.Node; -import org.astraea.common.metrics.MBeanClient; -import org.astraea.common.metrics.broker.NetworkMetrics; - -import java.util.Collection; -import java.util.function.Function; - -public class FetchRpcGuard implements Guard { - @Override - public Collection run( - Admin admin, Function clients, Changelog changelog) throws Exception { - return admin.describeCluster().nodes().get().stream() - .map( - node -> { - var protocol = - changelog - .protocols() - .get(NetworkMetrics.Request.FETCH.metricName().toLowerCase()); - if (protocol == null) return Report.empty(); - var versions = NetworkMetrics.Request.FETCH.versions(clients.apply(node)); - return Report.of(node, protocol, versions); - }) - .flatMap(Report::stream) - .toList(); - } -} diff --git a/app/src/main/java/org/astraea/app/checker/ProduceRpcGuard.java b/app/src/main/java/org/astraea/app/checker/ProduceRpcGuard.java deleted file mode 100644 index ab4774b68..000000000 --- a/app/src/main/java/org/astraea/app/checker/ProduceRpcGuard.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * 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. - */ -package org.astraea.app.checker; - -import java.util.Collection; -import java.util.function.Function; -import org.apache.kafka.clients.admin.Admin; -import org.apache.kafka.common.Node; -import org.astraea.common.metrics.MBeanClient; -import org.astraea.common.metrics.broker.NetworkMetrics; - -public class ProduceRpcGuard implements Guard { - @Override - public Collection run( - Admin admin, Function clients, Changelog changelog) throws Exception { - return admin.describeCluster().nodes().get().stream() - .map( - node -> { - var protocol = - changelog - .protocols() - .get(NetworkMetrics.Request.PRODUCE.metricName().toLowerCase()); - if (protocol == null) return Report.empty(); - var versions = NetworkMetrics.Request.PRODUCE.versions(clients.apply(node)); - return Report.of(node, protocol, versions); - }) - .flatMap(Report::stream) - .toList(); - } -} diff --git a/app/src/main/java/org/astraea/app/checker/Report.java b/app/src/main/java/org/astraea/app/checker/Report.java index 49b22216a..f67141fb4 100644 --- a/app/src/main/java/org/astraea/app/checker/Report.java +++ b/app/src/main/java/org/astraea/app/checker/Report.java @@ -16,37 +16,46 @@ */ package org.astraea.app.checker; +import org.apache.kafka.common.Node; + import java.util.Set; import java.util.stream.Collectors; import java.util.stream.Stream; -import org.apache.kafka.common.Node; public record Report(Node node, String why) { - static Report noMetrics(Node node) { - return new Report(node, "failed to get metrics from"); - } - - static Report of(Node node, String why) { - return new Report(node, why); - } - - static Report empty() { - return new Report(null, ""); - } - - static Report of(Node node, Protocol protocol, Set versions) { - var unsupportedVersions = - versions.stream().filter(v -> v < protocol.base()).collect(Collectors.toSet()); - if (unsupportedVersions.isEmpty()) return empty(); - return new Report( - node, - String.format( - "there are unsupported %s versions: %s due to new baseline: %s", - protocol.name(), unsupportedVersions, protocol.base())); - } - - Stream stream() { - if (why.isEmpty()) return Stream.empty(); - return Stream.of(this); - } + static Report noMetrics(Node node) { + return new Report(node, "failed to get metrics from"); + } + + static Report of(Node node, String why) { + return new Report(node, why); + } + + static Report empty() { + return new Report(null, ""); + } + + static Report of(Node node, Protocol protocol, Set versions) { + var unsupportedVersions = + versions.stream().filter(v -> v < protocol.base()).collect(Collectors.toSet()); + if (unsupportedVersions.isEmpty()) return empty(); + return new Report( + node, + String.format( + "there are unsupported %s versions: %s due to new baseline: %s", + protocol.name(), unsupportedVersions, protocol.base())); + } + + Stream stream() { + if (why.isEmpty()) return Stream.empty(); + return Stream.of(this); + } + + @Override + public String toString() { + if (node == null) { + return "Report[pass]"; + } + return "Report[" + node+ "] why = " + why; + } } diff --git a/app/src/main/java/org/astraea/app/checker/RpcGuard.java b/app/src/main/java/org/astraea/app/checker/RpcGuard.java new file mode 100644 index 000000000..9e60dc156 --- /dev/null +++ b/app/src/main/java/org/astraea/app/checker/RpcGuard.java @@ -0,0 +1,50 @@ +/* + * 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. + */ +package org.astraea.app.checker; + +import org.apache.kafka.clients.admin.Admin; +import org.apache.kafka.common.Node; +import org.astraea.common.metrics.MBeanClient; +import org.astraea.common.metrics.broker.NetworkMetrics; + +import java.util.Arrays; +import java.util.Collection; +import java.util.Map; +import java.util.function.Function; + +public class RpcGuard implements Guard { + @Override + public Collection run( + Admin admin, Function clients, Changelog changelog) throws Exception { + Map protocols = changelog.protocols(); + return admin.describeCluster().nodes().get().stream() + .map(node -> checkNode(node, protocols, clients)) + .flatMap(Collection::stream) + .toList(); + } + + private Collection checkNode(Node node, Map protocols,Function clients) { + return Arrays.stream(NetworkMetrics.Request.values()) + .filter(request -> protocols.containsKey(request.metricName().toLowerCase())) + .map(request -> { + var protocol = protocols.get(request.metricName().toLowerCase()); + var versions = NetworkMetrics.Request.PRODUCE.versions(clients.apply(node)); + return Report.of(node, protocol, versions); + }).toList(); + } + +} From b88ac9e71b8bcfb6bbbfd1f9c09c2981a5617a23 Mon Sep 17 00:00:00 2001 From: Xuan-Zhang Gong Date: Fri, 3 Jan 2025 17:49:46 +0800 Subject: [PATCH 4/4] update json --- config/kafka_changelog.json | 350 +++++++++++++++++++++++++++++++++++- 1 file changed, 349 insertions(+), 1 deletion(-) diff --git a/config/kafka_changelog.json b/config/kafka_changelog.json index e97f844e4..36171f807 100644 --- a/config/kafka_changelog.json +++ b/config/kafka_changelog.json @@ -5,6 +5,354 @@ "base": 7, "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "fetch", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "listoffsets", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "metadata", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "controlledshutdown", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "offsetcommit", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "offsetfetch", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "findcoordinator", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "joingroup", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "heartbeat", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "leavegroup", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "syncgroup", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "describegroups", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "listgroups", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "saslhandshake", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "apiversions", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "createtopics", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "deletetopics", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "deleterecords", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "initproducerid", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "offsetforleaderepoch", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "addpartitionstotxn", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "addoffsetstotxn", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "endtxn", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "writetxnmarkers", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "txnoffsetcommit", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "describeacls", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "createacls", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "deleteacls", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "describeconfigs", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "alterconfigs", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "alterreplicalogdirs", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "describelogdirs", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "saslauthenticate", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "createpartitions", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "deletegroups", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "electleaders", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "incrementalalterconfigs", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "alterpartitionreassignments", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "listpartitionreassignments", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "offsetdelete", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "describeclientquotas", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "alterclientquotas", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "vote", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "beginquorumepoch", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "endquorumepoch", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "describequorum", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "alterpartition", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "updatefeatures", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "envelope", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "fetchsnapshot", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "describecluster", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "describeproducers", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "brokerregistration", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "brokerheartbeat", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "unregisterbroker", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "describetransactions", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "listtransactions", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" + }, + { + "name": "allocateproducerids", + "base": 7, + "commit": "https://github.com/apache/kafka/commit/fe56fc98fa736c79c9dcbb1f64f810065161a1cc", + "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0" } ], "configs": [ @@ -15,4 +363,4 @@ "kip": "https://cwiki.apache.org/confluence/display/KAFKA/KIP-500%3A+Replace+ZooKeeper+with+a+Self-Managed+Metadata+Quorum" } ] -} \ No newline at end of file +}