diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/NodeHealthScriptRunner.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/NodeHealthScriptRunner.java index cf1e46053a..7c46c5b7ec 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/NodeHealthScriptRunner.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/NodeHealthScriptRunner.java @@ -249,7 +249,7 @@ public class NodeHealthScriptRunner extends AbstractService { } /** - * Sets if the node is healhty or not considering disks' health also. + * Sets if the node is healthy or not considering disks' health also. * * @param isHealthy * if or not node is healthy diff --git a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/conf/OzoneConfiguration.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/conf/OzoneConfiguration.java index 43e6fe79b7..b7166c7f47 100644 --- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/conf/OzoneConfiguration.java +++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/conf/OzoneConfiguration.java @@ -30,7 +30,9 @@ import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import java.net.URL; import java.util.ArrayList; +import java.util.Enumeration; import java.util.List; +import java.util.Properties; /** * Configuration for ozone. @@ -161,4 +163,31 @@ public class OzoneConfiguration extends Configuration { Configuration.addDefaultResource("ozone-default.xml"); Configuration.addDefaultResource("ozone-site.xml"); } + + /** + * The super class method getAllPropertiesByTag + * does not override values of properties + * if there is no tag present in the configs of + * newly added resources. + * @param tag + * @return Properties that belong to the tag + */ + @Override + public Properties getAllPropertiesByTag(String tag) { + // Call getProps first to load the newly added resources + // before calling super.getAllPropertiesByTag + Properties updatedProps = getProps(); + Properties propertiesByTag = super.getAllPropertiesByTag(tag); + Properties props = new Properties(); + Enumeration properties = propertiesByTag.propertyNames(); + while (properties.hasMoreElements()) { + Object propertyName = properties.nextElement(); + // get the current value of the property + Object value = updatedProps.getProperty(propertyName.toString()); + if (value != null) { + props.put(propertyName, value); + } + } + return props; + } } 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 new file mode 100644 index 0000000000..ef6e5a84ee --- /dev/null +++ b/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/conf/TestOzoneConfiguration.java @@ -0,0 +1,143 @@ +/** + * 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; + +import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.fs.Path; +import org.junit.Rule; +import org.junit.Before; +import org.junit.Test; +import org.junit.Assert; +import org.junit.rules.TemporaryFolder; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; + +/** + * Test class for OzoneConfiguration. + */ +public class TestOzoneConfiguration { + + private Configuration conf; + + @Rule + public TemporaryFolder tempConfigs = new TemporaryFolder(); + + @Before + public void setUp() throws Exception { + conf = new OzoneConfiguration(); + } + + private void startConfig(BufferedWriter out) throws IOException { + out.write("\n"); + out.write("\n"); + } + + private void endConfig(BufferedWriter out) throws IOException { + out.write("\n"); + out.flush(); + out.close(); + } + + @Test + public void testGetAllPropertiesByTags() throws Exception { + File coreDefault = tempConfigs.newFile("core-default-test.xml"); + File coreSite = tempConfigs.newFile("core-site-test.xml"); + try (BufferedWriter out = new BufferedWriter(new FileWriter(coreDefault))) { + startConfig(out); + appendProperty(out, "hadoop.tags.system", "YARN,HDFS,NAMENODE"); + appendProperty(out, "hadoop.tags.custom", "MYCUSTOMTAG"); + appendPropertyByTag(out, "dfs.cblock.trace.io", "false", "YARN"); + appendPropertyByTag(out, "dfs.replication", "1", "HDFS"); + appendPropertyByTag(out, "dfs.namenode.logging.level", "INFO", + "NAMENODE"); + appendPropertyByTag(out, "dfs.random.key", "XYZ", "MYCUSTOMTAG"); + endConfig(out); + + Path fileResource = new Path(coreDefault.getAbsolutePath()); + conf.addResource(fileResource); + Assert.assertEquals(conf.getAllPropertiesByTag("MYCUSTOMTAG") + .getProperty("dfs.random.key"), "XYZ"); + } + + try (BufferedWriter out = new BufferedWriter(new FileWriter(coreSite))) { + startConfig(out); + appendProperty(out, "dfs.random.key", "ABC"); + appendProperty(out, "dfs.replication", "3"); + appendProperty(out, "dfs.cblock.trace.io", "true"); + endConfig(out); + + Path fileResource = new Path(coreSite.getAbsolutePath()); + conf.addResource(fileResource); + } + + // Test if values are getting overridden even without tags being present + Assert.assertEquals("3", conf.getAllPropertiesByTag("HDFS") + .getProperty("dfs.replication")); + Assert.assertEquals("ABC", conf.getAllPropertiesByTag("MYCUSTOMTAG") + .getProperty("dfs.random.key")); + Assert.assertEquals("true", conf.getAllPropertiesByTag("YARN") + .getProperty("dfs.cblock.trace.io")); + } + + private void appendProperty(BufferedWriter out, String name, String val) + throws IOException { + this.appendProperty(out, name, val, false); + } + + private void appendProperty(BufferedWriter out, String name, String val, + boolean isFinal) throws IOException { + out.write(""); + out.write(""); + out.write(name); + out.write(""); + out.write(""); + out.write(val); + out.write(""); + if (isFinal) { + out.write("true"); + } + out.write("\n"); + } + + private void appendPropertyByTag(BufferedWriter out, String name, String val, + String tags) throws IOException { + this.appendPropertyByTag(out, name, val, false, tags); + } + + private void appendPropertyByTag(BufferedWriter out, String name, String val, + boolean isFinal, + String tag) throws IOException { + out.write(""); + out.write(""); + out.write(name); + out.write(""); + out.write(""); + out.write(val); + out.write(""); + if (isFinal) { + out.write("true"); + } + out.write(""); + out.write(tag); + out.write(""); + out.write("\n"); + } +} diff --git a/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/conf/package-info.java b/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/conf/package-info.java new file mode 100644 index 0000000000..e72c902045 --- /dev/null +++ b/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/conf/package-info.java @@ -0,0 +1,22 @@ +/* + * 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. + */ + +/** + * This package contains the OzoneConfiguration related tests. + */ +package org.apache.hadoop.hdds.conf; \ No newline at end of file diff --git a/hadoop-hdds/framework/src/main/resources/webapps/static/ozone.js b/hadoop-hdds/framework/src/main/resources/webapps/static/ozone.js index c2ed2adce2..a31078cfd7 100644 --- a/hadoop-hdds/framework/src/main/resources/webapps/static/ozone.js +++ b/hadoop-hdds/framework/src/main/resources/webapps/static/ozone.js @@ -308,7 +308,6 @@ ctrl.convertToArray(response.data); ctrl.configs = Object.values(ctrl.keyTagMap); ctrl.component = 'All'; - console.log("ajay -> " + JSON.stringify(ctrl.configs)); ctrl.sortBy('name'); }); }; @@ -326,7 +325,6 @@ if (ctrl.component != 'All' && (item['tag'].indexOf(ctrl .component) < 0)) { - console.log(item['name'] + " false tag " + item['tag']); return false; } diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/node/TestSCMNodeManager.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/node/TestSCMNodeManager.java index b81050345f..1e9e17470c 100644 --- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/node/TestSCMNodeManager.java +++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/node/TestSCMNodeManager.java @@ -518,7 +518,7 @@ public class TestSCMNodeManager { // 3.5 seconds have elapsed for stale node, so it moves into Stale. // 7 seconds have elapsed for dead node, so it moves into dead. - // 2 Seconds have elapsed for healthy node, so it stays in healhty state. + // 2 Seconds have elapsed for healthy node, so it stays in healthy state. healthyList = nodeManager.getNodes(HEALTHY); List staleList = nodeManager.getNodes(STALE); List deadList = nodeManager.getNodes(DEAD); diff --git a/hadoop-ozone/dist/src/main/smoketest/test.sh b/hadoop-ozone/dist/src/main/smoketest/test.sh index 57044043f2..582fbdf7c5 100755 --- a/hadoop-ozone/dist/src/main/smoketest/test.sh +++ b/hadoop-ozone/dist/src/main/smoketest/test.sh @@ -45,7 +45,7 @@ wait_for_datanodes(){ #Print it only if a number. Could be not a number if scm is not yet started if [[ "$datanodes" ]]; then - echo "$datanodes datanode is up and healhty (until now)" + echo "$datanodes datanode is up and healthy (until now)" fi fi