You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kafka.apache.org by sh...@apache.org on 2022/08/30 03:28:58 UTC

[kafka] branch trunk updated: MINOR: Displaying default entity name in MetadataShell (#12053)

This is an automated email from the ASF dual-hosted git repository.

showuon 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 7fb178aad77 MINOR: Displaying default entity name in MetadataShell (#12053)
7fb178aad77 is described below

commit 7fb178aad778870b2e5f5c49e2f3634b5483a356
Author: dengziming <de...@gmail.com>
AuthorDate: Tue Aug 30 11:28:49 2022 +0800

    MINOR: Displaying default entity name in MetadataShell (#12053)
    
    When debugging some bugs related to configs, I find we are unable to show default broker/topic entity name since the resourceName="". Changed it to similar to how we trait default client quotas.
    
    Reviewers: Luke Chen <sh...@gmail.com>
---
 .../org/apache/kafka/shell/MetadataNodeManager.java    |  4 ++--
 .../apache/kafka/shell/MetadataNodeManagerTest.java    | 18 ++++++++++++------
 2 files changed, 14 insertions(+), 8 deletions(-)

diff --git a/shell/src/main/java/org/apache/kafka/shell/MetadataNodeManager.java b/shell/src/main/java/org/apache/kafka/shell/MetadataNodeManager.java
index cc8d30940a6..93dc3073fde 100644
--- a/shell/src/main/java/org/apache/kafka/shell/MetadataNodeManager.java
+++ b/shell/src/main/java/org/apache/kafka/shell/MetadataNodeManager.java
@@ -215,7 +215,7 @@ public final class MetadataNodeManager implements AutoCloseable {
     }
 
     private void handleCommitImpl(MetadataRecordType type, ApiMessage message)
-            throws Exception {
+        throws Exception {
         switch (type) {
             case REGISTER_BROKER_RECORD: {
                 DirectoryNode brokersNode = data.root.mkdirs("brokers");
@@ -268,7 +268,7 @@ public final class MetadataNodeManager implements AutoCloseable {
                             "Can't handle ConfigResource.Type " + record.resourceType());
                 }
                 DirectoryNode configDirectory = data.root.mkdirs("configs").
-                    mkdirs(typeString).mkdirs(record.resourceName());
+                    mkdirs(typeString).mkdirs(record.resourceName().isEmpty() ? "<default>" : record.resourceName());
                 if (record.value() == null) {
                     configDirectory.rmrf(record.name());
                 } else {
diff --git a/shell/src/test/java/org/apache/kafka/shell/MetadataNodeManagerTest.java b/shell/src/test/java/org/apache/kafka/shell/MetadataNodeManagerTest.java
index 59008280ac1..88b3c48b6c7 100644
--- a/shell/src/test/java/org/apache/kafka/shell/MetadataNodeManagerTest.java
+++ b/shell/src/test/java/org/apache/kafka/shell/MetadataNodeManagerTest.java
@@ -138,26 +138,32 @@ public class MetadataNodeManagerTest {
 
     @Test
     public void testValidConfigRecord() {
-        checkValidConfigRecord(ConfigResource.Type.BROKER.id(), "broker");
-        checkValidConfigRecord(ConfigResource.Type.TOPIC.id(), "topic");
+        checkValidConfigRecord(ConfigResource.Type.BROKER.id(), "broker", "0", "0");
+        checkValidConfigRecord(ConfigResource.Type.TOPIC.id(), "topic", "0", "0");
     }
 
-    private void checkValidConfigRecord(byte resourceType, String typeString) {
+    @Test
+    public void testDefaultBrokerRecord() {
+        checkValidConfigRecord(ConfigResource.Type.BROKER.id(), "broker", "", "<default>");
+        // Default topic resources are not allowed, so we don't test it.
+    }
+
+    private void checkValidConfigRecord(byte resourceType, String typeString, String resourceName, String resourceNameKey) {
         ConfigRecord configRecord = new ConfigRecord()
             .setResourceType(resourceType)
-            .setResourceName("0")
+            .setResourceName(resourceName)
             .setName("name")
             .setValue("kraft");
 
         metadataNodeManager.handleMessage(configRecord);
         assertEquals("kraft",
-            metadataNodeManager.getData().root().directory("configs", typeString, "0").file("name").contents());
+            metadataNodeManager.getData().root().directory("configs", typeString, resourceNameKey).file("name").contents());
 
         // null value indicates delete
         configRecord.setValue(null);
         metadataNodeManager.handleMessage(configRecord);
         assertFalse(
-            metadataNodeManager.getData().root().directory("configs", typeString, "0").children().containsKey("name"));
+            metadataNodeManager.getData().root().directory("configs", typeString, resourceNameKey).children().containsKey("name"));
     }
 
     @Test