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:30:38 UTC
[kafka] branch 3.3 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 3.3
in repository https://gitbox.apache.org/repos/asf/kafka.git
The following commit(s) were added to refs/heads/3.3 by this push:
new ba165889ec1 MINOR: Displaying default entity name in MetadataShell (#12053)
ba165889ec1 is described below
commit ba165889ec17767fcffa4d1c244c7125d87f2992
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