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

adoroszlai pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozone.git


The following commit(s) were added to refs/heads/master by this push:
     new 93d8ff51d0f HDDS-14105. Require ConfigGroup prefix to be present in 
Config keys (#9463)
93d8ff51d0f is described below

commit 93d8ff51d0fdf3a00dc7c32bd9c6080f4faa25d4
Author: Doroszlai, Attila <[email protected]>
AuthorDate: Mon Jan 19 12:10:38 2026 +0100

    HDDS-14105. Require ConfigGroup prefix to be present in Config keys (#9463)
---
 .../hadoop/hdds/conf/SimpleConfiguration.java      |   2 +-
 .../hdds/conf/SimpleConfigurationParent.java       |  36 -------
 .../hadoop/hdds/conf/TestOzoneConfiguration.java   |   5 -
 .../hadoop/hdds/conf/ConfigFileGenerator.java      |  37 ++------
 .../hdds/conf/ConfigurationReflectionUtil.java     | 103 ++-------------------
 .../hadoop/hdds/conf/ConfigurationExample.java     |   2 +-
 .../hdds/conf/ConfigurationExampleGrandParent.java |  40 --------
 .../hdds/conf/ConfigurationExampleParent.java      |  37 --------
 .../hadoop/hdds/conf/TestConfigFileGenerator.java  |   8 --
 .../hdds/conf/TestConfigurationReflectionUtil.java |  11 +--
 .../hadoop/hdds/conf/TestConfigurationSource.java  |   3 +-
 .../ozone/insight/ConfigurationSubCommand.java     |  22 +----
 12 files changed, 25 insertions(+), 281 deletions(-)

diff --git 
a/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/conf/SimpleConfiguration.java
 
b/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/conf/SimpleConfiguration.java
index be3b7421798..ce6c42f2dfa 100644
--- 
a/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/conf/SimpleConfiguration.java
+++ 
b/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/conf/SimpleConfiguration.java
@@ -24,7 +24,7 @@
  * Example configuration to test the configuration injection.
  */
 @ConfigGroup(prefix = "test.scm.client")
-public class SimpleConfiguration extends SimpleConfigurationParent {
+public class SimpleConfiguration extends ReconfigurableConfig {
 
   @Config(key = "test.scm.client.address",
       defaultValue = "localhost",
diff --git 
a/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/conf/SimpleConfigurationParent.java
 
b/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/conf/SimpleConfigurationParent.java
deleted file mode 100644
index 33b4051e546..00000000000
--- 
a/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/conf/SimpleConfigurationParent.java
+++ /dev/null
@@ -1,36 +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.apache.hadoop.hdds.conf;
-
-/**
- * Parent class for the example configuration.
- */
-public class SimpleConfigurationParent extends ReconfigurableConfig {
-
-  @Config(key = "enabled", defaultValue = "true", description = "Example "
-      + "boolean config.", tags = ConfigTag.MANAGEMENT)
-  private boolean enabled;
-
-  public boolean isEnabled() {
-    return enabled;
-  }
-
-  public void setEnabled(boolean enabled) {
-    this.enabled = enabled;
-  }
-}
diff --git 
a/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/conf/TestOzoneConfiguration.java
 
b/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/conf/TestOzoneConfiguration.java
index 63370c86483..8046deafea6 100644
--- 
a/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/conf/TestOzoneConfiguration.java
+++ 
b/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/conf/TestOzoneConfiguration.java
@@ -143,7 +143,6 @@ public void getConfigurationObject() {
 
     assertEquals("host", configuration.getBindHost());
     assertEquals("address", configuration.getClientAddress());
-    assertTrue(configuration.isEnabled());
     assertEquals(5555, configuration.getPort());
     assertEquals(600, configuration.getWaitTime());
     assertSame(Integer.class, configuration.getMyClass());
@@ -219,7 +218,6 @@ public void getConfigurationObjectWithDefault() {
     SimpleConfiguration configuration =
         ozoneConfiguration.getObject(SimpleConfiguration.class);
 
-    assertTrue(configuration.isEnabled());
     assertEquals(9878, configuration.getPort());
     assertSame(Object.class, configuration.getMyClass());
     assertEquals(10, configuration.getThreshold());
@@ -232,7 +230,6 @@ public void setConfigFromObject() {
     SimpleConfiguration object = new SimpleConfiguration();
     object.setBindHost("host");
     object.setClientAddress("address");
-    object.setEnabled(true);
     object.setPort(5555);
     object.setWaitTime(600);
     object.setMyClass(this.getClass());
@@ -247,7 +244,6 @@ public void setConfigFromObject() {
     // THEN
     assertEquals(object.getBindHost(), 
subject.get("test.scm.client.bind.host"));
     assertEquals(object.getClientAddress(), 
subject.get("test.scm.client.address"));
-    assertEquals(object.isEnabled(), 
subject.getBoolean("test.scm.client.enabled", false));
     assertEquals(object.getPort(), subject.getInt("test.scm.client.port", 0));
     assertEquals(TimeUnit.SECONDS.toMinutes(object.getWaitTime()),
         subject.getTimeDuration("test.scm.client.wait", 0, TimeUnit.MINUTES));
@@ -272,7 +268,6 @@ public void setConfigFromObjectWithConfigDefaults() {
     // THEN
     assertEquals("0.0.0.0", subject.get("test.scm.client.bind.host"));
     assertEquals("localhost", subject.get("test.scm.client.address"));
-    assertTrue(subject.getBoolean("test.scm.client.enabled", false));
     assertEquals(9878, subject.getInt("test.scm.client.port", 123));
     assertEquals(TimeUnit.MINUTES.toSeconds(30),
         subject.getTimeDuration("test.scm.client.wait", 555, 
TimeUnit.SECONDS));
diff --git 
a/hadoop-hdds/config/src/main/java/org/apache/hadoop/hdds/conf/ConfigFileGenerator.java
 
b/hadoop-hdds/config/src/main/java/org/apache/hadoop/hdds/conf/ConfigFileGenerator.java
index be07fddb310..f4d8e10f707 100644
--- 
a/hadoop-hdds/config/src/main/java/org/apache/hadoop/hdds/conf/ConfigFileGenerator.java
+++ 
b/hadoop-hdds/config/src/main/java/org/apache/hadoop/hdds/conf/ConfigFileGenerator.java
@@ -17,8 +17,6 @@
 
 package org.apache.hadoop.hdds.conf;
 
-import static 
org.apache.hadoop.hdds.conf.ConfigurationReflectionUtil.getFullKey;
-
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStream;
@@ -36,8 +34,6 @@
 import javax.lang.model.element.Element;
 import javax.lang.model.element.ElementKind;
 import javax.lang.model.element.TypeElement;
-import javax.lang.model.type.DeclaredType;
-import javax.lang.model.util.SimpleTypeVisitor8;
 import javax.tools.Diagnostic.Kind;
 import javax.tools.FileObject;
 import javax.tools.StandardLocation;
@@ -52,14 +48,6 @@ public class ConfigFileGenerator extends AbstractProcessor {
   private static final String OUTPUT_FILE_NAME = "ozone-default-generated.xml";
   private static final String OUTPUT_FILE_POSTFIX = "-default.xml";
 
-  private static final SimpleTypeVisitor8<Element, Void> GET_PARENT_ELEMENT =
-      new SimpleTypeVisitor8<Element, Void>() {
-        @Override
-        public Element visitDeclared(DeclaredType t, Void aVoid) {
-          return t.asElement();
-        }
-      };
-
   @Override
   public boolean process(Set<? extends TypeElement> annotations,
       RoundEnvironment roundEnv) {
@@ -98,21 +86,7 @@ public boolean process(Set<? extends TypeElement> 
annotations,
         ConfigGroup configGroupAnnotation =
             configurationObject.getAnnotation(ConfigGroup.class);
 
-        TypeElement elementToCheck = configurationObject;
-        while (elementToCheck != null) {
-
-          writeConfigAnnotations(configGroupAnnotation, appender,
-              elementToCheck);
-          if (!elementToCheck.getSuperclass().toString()
-              .equals("java.lang.Object")) {
-            elementToCheck =
-                (TypeElement) elementToCheck.getSuperclass()
-                    .accept(GET_PARENT_ELEMENT, null);
-          } else {
-            elementToCheck = null;
-          }
-        }
-
+        writeConfigAnnotations(configGroupAnnotation, appender, 
configurationObject);
       }
 
       if (!resourceExists) {
@@ -141,8 +115,13 @@ private void writeConfigAnnotations(ConfigGroup 
configGroup,
         if (element.getAnnotation(Config.class) != null) {
 
           Config configAnnotation = element.getAnnotation(Config.class);
-
-          String key = getFullKey(configGroup, configAnnotation);
+          String prefix = configGroup.prefix() + ".";
+          String key = configAnnotation.key();
+          if (!key.startsWith(prefix)) {
+            processingEnv.getMessager().printMessage(Kind.ERROR,
+                prefix + " is not a prefix of " + key,
+                typeElement);
+          }
 
           appender.addConfig(key,
               configAnnotation.defaultValue(),
diff --git 
a/hadoop-hdds/config/src/main/java/org/apache/hadoop/hdds/conf/ConfigurationReflectionUtil.java
 
b/hadoop-hdds/config/src/main/java/org/apache/hadoop/hdds/conf/ConfigurationReflectionUtil.java
index 81d37e72cc0..89fe6c5b03e 100644
--- 
a/hadoop-hdds/config/src/main/java/org/apache/hadoop/hdds/conf/ConfigurationReflectionUtil.java
+++ 
b/hadoop-hdds/config/src/main/java/org/apache/hadoop/hdds/conf/ConfigurationReflectionUtil.java
@@ -22,9 +22,7 @@
 import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
 import java.time.Duration;
-import java.util.Deque;
 import java.util.HashMap;
-import java.util.LinkedList;
 import java.util.Map;
 import java.util.Optional;
 import java.util.stream.Stream;
@@ -39,19 +37,6 @@ private ConfigurationReflectionUtil() {
 
   public static <T> Map<String, Field> mapReconfigurableProperties(
       Class<T> configurationClass) {
-    String prefix = getPrefix(configurationClass);
-    Map<String, Field> props =
-        mapReconfigurableProperties(configurationClass, prefix);
-    Class<? super T> superClass = configurationClass.getSuperclass();
-    while (superClass != null) {
-      props.putAll(mapReconfigurableProperties(superClass, prefix));
-      superClass = superClass.getSuperclass();
-    }
-    return props;
-  }
-
-  private static <T> Map<String, Field> mapReconfigurableProperties(
-      Class<T> configurationClass, String prefix) {
     Map<String, Field> props = new HashMap<>();
     for (Field field : configurationClass.getDeclaredFields()) {
       if (field.isAnnotationPresent(Config.class)) {
@@ -59,7 +44,7 @@ private static <T> Map<String, Field> 
mapReconfigurableProperties(
 
         if (configAnnotation.reconfigurable()) {
           checkNotFinal(configurationClass, field);
-          props.put(getFullKey(prefix, configAnnotation), field);
+          props.put(configAnnotation.key(), field);
         }
       }
     }
@@ -67,26 +52,10 @@ private static <T> Map<String, Field> 
mapReconfigurableProperties(
   }
 
   public static <T> void injectConfiguration(
-      ConfigurationSource configuration,
-      Class<T> configurationClass,
-      T configObject, boolean reconfiguration) {
-    String prefix = getPrefix(configurationClass);
-    injectConfigurationToObject(configuration, configurationClass, 
configObject,
-        prefix, reconfiguration);
-    Class<? super T> superClass = configurationClass.getSuperclass();
-    while (superClass != null) {
-      injectConfigurationToObject(configuration, superClass, configObject,
-          prefix, reconfiguration);
-      superClass = superClass.getSuperclass();
-    }
-  }
-
-  private static <T> void injectConfigurationToObject(ConfigurationSource from,
+      ConfigurationSource from,
       Class<T> configurationClass,
       T configuration,
-      String prefix,
-      boolean reconfiguration
-  ) {
+      boolean reconfiguration) {
     for (Field field : configurationClass.getDeclaredFields()) {
       if (field.isAnnotationPresent(Config.class)) {
         checkNotFinal(configurationClass, field);
@@ -97,7 +66,7 @@ private static <T> void 
injectConfigurationToObject(ConfigurationSource from,
           continue;
         }
 
-        String key = getFullKey(prefix, configAnnotation);
+        String key = configAnnotation.key();
         String defaultValue = configAnnotation.defaultValue();
         String value = from.get(key, defaultValue);
 
@@ -240,37 +209,13 @@ static <T> void callPostConstruct(T configObject) {
     }
   }
 
-  public static <T> void updateConfiguration(ConfigurationTarget config,
-      T object) {
-    updateConfiguration(config, object, getPrefix(object.getClass()));
-  }
-
-  private static <T> void updateConfiguration(ConfigurationTarget config,
-      T object, String prefix) {
-
-    Class<?> configClass = object.getClass();
-    Deque<Class<?>> classes = new LinkedList<>();
-    classes.addLast(configClass);
-    Class<?> superclass = configClass.getSuperclass();
-    while (superclass != null) {
-      classes.addFirst(superclass);
-      superclass = superclass.getSuperclass();
-    }
-
-    for (Class<?> cl : classes) {
-      updateConfigurationFromObject(config, cl, object, prefix);
-    }
-  }
-
-  private static <T> void updateConfigurationFromObject(
-      ConfigurationTarget config, Class<?> configClass, T configObject,
-      String prefix) {
-
+  public static <T> void updateConfiguration(ConfigurationTarget config, T 
configObject) {
+    Class<?> configClass = configObject.getClass();
     for (Field field : configClass.getDeclaredFields()) {
       if (field.isAnnotationPresent(Config.class)) {
         Config configAnnotation = field.getAnnotation(Config.class);
         String fieldLocation = configClass + "." + field.getName();
-        String key = getFullKey(prefix, configAnnotation);
+        String key = configAnnotation.key();
         ConfigType type = configAnnotation.type();
 
         if (type == ConfigType.AUTO) {
@@ -301,10 +246,8 @@ public static Optional<String> getDefaultValue(Class<?> 
configClass,
 
   public static Optional<String> getKey(Class<?> configClass,
       String fieldName) {
-    ConfigGroup configGroup = getConfigGroup(configClass);
-
     return findFieldConfigAnnotationByName(configClass, fieldName)
-        .map(config -> getFullKey(configGroup, config));
+        .map(Config::key);
   }
 
   public static Optional<ConfigType> getType(Class<?> configClass,
@@ -344,34 +287,4 @@ private static void checkNotFinal(
           configurationClass.getSimpleName(), field.getName()));
     }
   }
-
-  /** Compose the full config property name to be used for {@code configGroup} 
and {@code configAnnotation}. */
-  public static String getFullKey(
-      ConfigGroup configGroup, Config configAnnotation) {
-    return getFullKey(getPrefix(configGroup), configAnnotation);
-  }
-
-  private static String getPrefix(Class<?> configurationClass) {
-    return getPrefix(getConfigGroup(configurationClass));
-  }
-
-  private static ConfigGroup getConfigGroup(Class<?> configurationClass) {
-    return configurationClass.getAnnotation(ConfigGroup.class);
-  }
-
-  /** Get {@code configGroup}'s prefix with dot appended. */
-  private static String getPrefix(ConfigGroup configGroup) {
-    return configGroup != null && !configGroup.prefix().isEmpty()
-        ? configGroup.prefix() + "."
-        : "";
-  }
-
-  private static String getFullKey(
-      String prefix, Config configAnnotation) {
-    String key = configAnnotation.key();
-    return prefix != null && !prefix.isEmpty() && !key.startsWith(prefix)
-        ? prefix + key
-        : key;
-  }
-
 }
diff --git 
a/hadoop-hdds/config/src/test/java/org/apache/hadoop/hdds/conf/ConfigurationExample.java
 
b/hadoop-hdds/config/src/test/java/org/apache/hadoop/hdds/conf/ConfigurationExample.java
index f0cf8900ff2..07d8966803b 100644
--- 
a/hadoop-hdds/config/src/test/java/org/apache/hadoop/hdds/conf/ConfigurationExample.java
+++ 
b/hadoop-hdds/config/src/test/java/org/apache/hadoop/hdds/conf/ConfigurationExample.java
@@ -24,7 +24,7 @@
  * Example configuration to test the configuration injection.
  */
 @ConfigGroup(prefix = "ozone.test.config")
-public class ConfigurationExample extends ConfigurationExampleParent {
+public class ConfigurationExample extends ReconfigurableConfig {
 
   @Config(key = "ozone.test.config.address", defaultValue = "localhost", 
description = "Client "
       + "address (To test string injection).", tags = ConfigTag.MANAGEMENT)
diff --git 
a/hadoop-hdds/config/src/test/java/org/apache/hadoop/hdds/conf/ConfigurationExampleGrandParent.java
 
b/hadoop-hdds/config/src/test/java/org/apache/hadoop/hdds/conf/ConfigurationExampleGrandParent.java
deleted file mode 100644
index 492bdfb4c63..00000000000
--- 
a/hadoop-hdds/config/src/test/java/org/apache/hadoop/hdds/conf/ConfigurationExampleGrandParent.java
+++ /dev/null
@@ -1,40 +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.apache.hadoop.hdds.conf;
-
-/**
- * Example configuration to test inherited configuration injection.
- */
-public class ConfigurationExampleGrandParent extends ReconfigurableConfig {
-
-  @Config(key = "number", defaultValue = "2", description = "Example numeric "
-      + "configuration", tags = ConfigTag.MANAGEMENT)
-  private int number = 1;
-
-  @Config(key = "grandpa.dyna", reconfigurable = true, defaultValue = "x",
-      description = "Test inherited dynamic property", tags = {})
-  private String grandpaDynamic;
-
-  public int getNumber() {
-    return number;
-  }
-
-  public void setNumber(int number) {
-    this.number = number;
-  }
-}
diff --git 
a/hadoop-hdds/config/src/test/java/org/apache/hadoop/hdds/conf/ConfigurationExampleParent.java
 
b/hadoop-hdds/config/src/test/java/org/apache/hadoop/hdds/conf/ConfigurationExampleParent.java
deleted file mode 100644
index b481b12f8f1..00000000000
--- 
a/hadoop-hdds/config/src/test/java/org/apache/hadoop/hdds/conf/ConfigurationExampleParent.java
+++ /dev/null
@@ -1,37 +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.apache.hadoop.hdds.conf;
-
-/**
- * Example configuration to test inherited configuration injection.
- */
-public class ConfigurationExampleParent
-    extends ConfigurationExampleGrandParent {
-
-  @Config(key = "secure", defaultValue = "true", description = "Make "
-      + "everything secure.", tags = ConfigTag.MANAGEMENT)
-  private boolean secure = true;
-
-  public boolean isSecure() {
-    return secure;
-  }
-
-  public void setSecure(boolean secure) {
-    this.secure = secure;
-  }
-}
diff --git 
a/hadoop-hdds/config/src/test/java/org/apache/hadoop/hdds/conf/TestConfigFileGenerator.java
 
b/hadoop-hdds/config/src/test/java/org/apache/hadoop/hdds/conf/TestConfigFileGenerator.java
index 8e2a1098120..157e809f445 100644
--- 
a/hadoop-hdds/config/src/test/java/org/apache/hadoop/hdds/conf/TestConfigFileGenerator.java
+++ 
b/hadoop-hdds/config/src/test/java/org/apache/hadoop/hdds/conf/TestConfigFileGenerator.java
@@ -46,14 +46,6 @@ public void testGeneratedXml() throws FileNotFoundException {
         .as("annotation in ConfigurationExample")
         .contains("<name>ozone.test.config.bind.host</name>");
 
-    assertThat(generatedXml)
-        .as("annotation in ConfigurationExampleParent")
-        .contains("<name>ozone.test.config.secure</name>");
-
-    assertThat(generatedXml)
-        .as("annotation in ConfigurationExampleGrandParent")
-        .contains("<name>ozone.test.config.number</name>");
-
     assertThat(generatedXml)
         .contains("<tag>MANAGEMENT</tag>");
   }
diff --git 
a/hadoop-hdds/config/src/test/java/org/apache/hadoop/hdds/conf/TestConfigurationReflectionUtil.java
 
b/hadoop-hdds/config/src/test/java/org/apache/hadoop/hdds/conf/TestConfigurationReflectionUtil.java
index 6117f8a536d..5df8054fe55 100644
--- 
a/hadoop-hdds/config/src/test/java/org/apache/hadoop/hdds/conf/TestConfigurationReflectionUtil.java
+++ 
b/hadoop-hdds/config/src/test/java/org/apache/hadoop/hdds/conf/TestConfigurationReflectionUtil.java
@@ -40,14 +40,6 @@ static Stream<Arguments> data() {
             Optional.of(ConfigType.TIME),
             Optional.of("ozone.test.config.wait"),
             Optional.of("30m")),
-        arguments(ConfigurationExampleGrandParent.class, "number",
-            Optional.of(ConfigType.AUTO),
-            Optional.of("number"),
-            Optional.of("2")),
-        arguments(ConfigurationExample.class, "secure",
-            Optional.of(ConfigType.AUTO),
-            Optional.of("ozone.test.config.secure"),
-            Optional.of("true")),
         arguments(ConfigurationExample.class, "no-such-field",
             Optional.empty(),
             Optional.empty(),
@@ -90,8 +82,7 @@ void listReconfigurableProperties() {
 
     String prefix = "ozone.test.config";
     assertEquals(ImmutableSet.of(
-        prefix + ".dynamic",
-        prefix + ".grandpa.dyna"
+        prefix + ".dynamic"
     ), props);
   }
 }
diff --git 
a/hadoop-hdds/config/src/test/java/org/apache/hadoop/hdds/conf/TestConfigurationSource.java
 
b/hadoop-hdds/config/src/test/java/org/apache/hadoop/hdds/conf/TestConfigurationSource.java
index d0473cbe0ef..f4b32060014 100644
--- 
a/hadoop-hdds/config/src/test/java/org/apache/hadoop/hdds/conf/TestConfigurationSource.java
+++ 
b/hadoop-hdds/config/src/test/java/org/apache/hadoop/hdds/conf/TestConfigurationSource.java
@@ -47,8 +47,7 @@ void getPropsMatchPrefix() {
   void reconfigurableProperties() {
     String prefix = "ozone.test.config";
     ImmutableSet<String> expected = ImmutableSet.of(
-        prefix + ".dynamic",
-        prefix + ".grandpa.dyna"
+        prefix + ".dynamic"
     );
 
     ConfigurationExample obj = new InMemoryConfigurationForTesting().getObject(
diff --git 
a/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/ConfigurationSubCommand.java
 
b/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/ConfigurationSubCommand.java
index 660986ddfe4..cb34056dd74 100644
--- 
a/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/ConfigurationSubCommand.java
+++ 
b/hadoop-ozone/insight/src/main/java/org/apache/hadoop/ozone/insight/ConfigurationSubCommand.java
@@ -17,8 +17,6 @@
 
 package org.apache.hadoop.ozone.insight;
 
-import static 
org.apache.hadoop.hdds.conf.ConfigurationReflectionUtil.getFullKey;
-
 import java.lang.reflect.Field;
 import java.util.concurrent.Callable;
 import org.apache.hadoop.hdds.cli.HddsVersionProvider;
@@ -54,13 +52,13 @@ public Void call() throws Exception {
 
     Type type = Type.valueOf(insightName.split("\\.")[0].toUpperCase());
 
-    for (Class clazz : insight.getConfigurationClasses()) {
+    for (Class<?> clazz : insight.getConfigurationClasses()) {
       showConfig(clazz, type);
     }
     return null;
   }
 
-  protected void showConfig(Class clazz, Type type) {
+  protected void showConfig(Class<?> clazz, Type type) {
     OzoneConfiguration conf = new OzoneConfiguration();
     conf.addResource(getHost(conf, new Component(type)) + "/conf");
     printConfig(clazz, conf);
@@ -69,21 +67,15 @@ protected void showConfig(Class clazz, Type type) {
   /**
    * Print all the configuration annotated on the class or any superclass.
    */
-  protected void printConfig(Class clazz, OzoneConfiguration conf) {
-    ConfigGroup configGroup =
-        (ConfigGroup) clazz.getAnnotation(ConfigGroup.class);
+  protected void printConfig(Class<?> clazz, OzoneConfiguration conf) {
+    ConfigGroup configGroup = clazz.getAnnotation(ConfigGroup.class);
     if (configGroup == null) {
       return;
     }
-    printConfig(configGroup, clazz, conf);
-  }
-
-  private void printConfig(ConfigGroup configGroup, Class clazz,
-      OzoneConfiguration conf) {
     for (Field field : clazz.getDeclaredFields()) {
       if (field.isAnnotationPresent(Config.class)) {
         Config config = field.getAnnotation(Config.class);
-        String key = getFullKey(configGroup, config);
+        String key = config.key();
         System.out.println(">>> " + key);
         System.out.println("       default: " + config.defaultValue());
         System.out.println("       current: " + conf.get(key));
@@ -92,10 +84,6 @@ private void printConfig(ConfigGroup configGroup, Class 
clazz,
         System.out.println();
         System.out.println();
       }
-      final Class superclass = clazz.getSuperclass();
-      if (superclass != Object.class) {
-        printConfig(configGroup, superclass, conf);
-      }
     }
   }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to