You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kafka.apache.org by cm...@apache.org on 2024/08/08 16:22:30 UTC

(kafka) branch trunk updated: KAFKA-16521: Have Raft endpoints printed as name://host:port (#16830)

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 <ah...@confluent.io>
AuthorDate: Thu Aug 8 09:22:23 2024 -0700

    KAFKA-16521: Have Raft endpoints printed as name://host:port (#16830)
    
    Reviewers: Colin P. McCabe <cm...@apache.org>
---
 .../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
         );