This is an automated email from the ASF dual-hosted git repository.
cmccabe 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 3066019efa1 KAFKA-16521: Have Raft endpoints printed as
name://host:port (#16830)
3066019efa1 is described below
commit 3066019efa1cabe7fe52bb7ac663d4363bb9be84
Author: Alyssa Huang <[email protected]>
AuthorDate: Thu Aug 8 09:22:23 2024 -0700
KAFKA-16521: Have Raft endpoints printed as name://host:port (#16830)
Reviewers: Colin P. McCabe <[email protected]>
---
.../java/org/apache/kafka/clients/admin/RaftVoterEndpoint.java | 8 +++-----
.../java/org/apache/kafka/tools/MetadataQuorumCommand.java | 10 ++++++----
.../java/org/apache/kafka/tools/MetadataQuorumCommandTest.java | 3 ++-
3 files changed, 11 insertions(+), 10 deletions(-)
diff --git
a/clients/src/main/java/org/apache/kafka/clients/admin/RaftVoterEndpoint.java
b/clients/src/main/java/org/apache/kafka/clients/admin/RaftVoterEndpoint.java
index ec9cbfd1fb0..984ac999393 100644
---
a/clients/src/main/java/org/apache/kafka/clients/admin/RaftVoterEndpoint.java
+++
b/clients/src/main/java/org/apache/kafka/clients/admin/RaftVoterEndpoint.java
@@ -91,10 +91,8 @@ public class RaftVoterEndpoint {
@Override
public String toString() {
- return "RaftVoterEndpoint" +
- "(name=" + name +
- ", host=" + host +
- ", port=" + port +
- ")";
+ // enclose IPv6 hosts in square brackets for readability
+ String hostString = host.contains(":") ? "[" + host + "]" : host;
+ return name + "://" + hostString + ":" + port;
}
}
diff --git
a/tools/src/main/java/org/apache/kafka/tools/MetadataQuorumCommand.java
b/tools/src/main/java/org/apache/kafka/tools/MetadataQuorumCommand.java
index 1fdc600cbcc..8b7b70bf063 100644
--- a/tools/src/main/java/org/apache/kafka/tools/MetadataQuorumCommand.java
+++ b/tools/src/main/java/org/apache/kafka/tools/MetadataQuorumCommand.java
@@ -241,7 +241,7 @@ public class MetadataQuorumCommand {
}
// Constructs the CurrentVoters string
- // CurrentVoters: [{"id": 0, "directoryId": "UUID1", "endpoints":
[{"name": "C", "securityProtocol": "SSL", "host": "controller-0", "port":
1234}]}, {"id": 1, ... }]}]
+ // CurrentVoters: [{"id": 0, "directoryId": "UUID1", "endpoints":
["C://controller-0:1234"]}]
private static String printVoterState(QuorumInfo quorumInfo) {
return printReplicaState(quorumInfo, quorumInfo.voters());
}
@@ -279,13 +279,15 @@ public class MetadataQuorumCommand {
StringBuilder sb = new StringBuilder();
sb.append("{");
sb.append("\"id\": ").append(id).append(", ");
- sb.append("\"directoryId\":
").append("\"").append(directoryId.equals(Uuid.ZERO_UUID) ? "null" :
directoryId).append("\"");
+ sb.append("\"directoryId\":
").append(directoryId.equals(Uuid.ZERO_UUID) ? "null" : "\"" + directoryId +
"\"");
if (!endpoints.isEmpty()) {
- sb.append(", \"endpoints\": ");
+ sb.append(", \"endpoints\": [");
for (RaftVoterEndpoint endpoint : endpoints) {
- sb.append(endpoint.toString()).append(", ");
+ sb.append("\"");
+ sb.append(endpoint.toString()).append("\", ");
}
sb.setLength(sb.length() - 2); // remove the last comma and
space
+ sb.append("]");
}
sb.append("}");
return sb.toString();
diff --git
a/tools/src/test/java/org/apache/kafka/tools/MetadataQuorumCommandTest.java
b/tools/src/test/java/org/apache/kafka/tools/MetadataQuorumCommandTest.java
index 809ce1ee161..37c7650766c 100644
--- a/tools/src/test/java/org/apache/kafka/tools/MetadataQuorumCommandTest.java
+++ b/tools/src/test/java/org/apache/kafka/tools/MetadataQuorumCommandTest.java
@@ -118,7 +118,8 @@ class MetadataQuorumCommandTest {
assertTrue(outputs[4].matches("MaxFollowerLag:\\s+\\d+"),
describeOutput);
assertTrue(outputs[5].matches("MaxFollowerLagTimeMs:\\s+-?\\d+"),
describeOutput);
assertTrue(
-
outputs[6].matches("CurrentVoters:\\s+\\[\\{\"id\":\\s+\\d+,\\s+\"directoryId\":\\s+\\S+,\\s+\"endpoints\":\\s+.*}]"),
+
outputs[6].matches("CurrentVoters:\\s+\\[\\{\"id\":\\s+\\d+,\\s+\"directoryId\":\\s+\\S+,\\s+"
+
+ "\"endpoints\":\\s+\\[\"\\S+://\\[?\\S+]?:\\d+\",?.*]"),
describeOutput
);