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

elek pushed a commit to branch HDDS-2064
in repository https://gitbox.apache.org/repos/asf/hadoop-ozone.git

commit a0313ffb772181dc1bab51a1e84bd11775f46d1a
Author: Siyao Meng <sm...@cloudera.com>
AuthorDate: Fri Aug 30 15:56:24 2019 -0700

    HDDS-2064. OzoneManagerRatisServer#newOMRatisServer throws NPE when OM
    HA is configured incorrectly
---
 .../ozone/om/TestOzoneManagerConfiguration.java    | 59 ++++++++++++++++++++++
 .../org/apache/hadoop/ozone/om/OzoneManager.java   |  7 +++
 2 files changed, 66 insertions(+)

diff --git 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOzoneManagerConfiguration.java
 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOzoneManagerConfiguration.java
index 77f0dfc..323cb45 100644
--- 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOzoneManagerConfiguration.java
+++ 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOzoneManagerConfiguration.java
@@ -42,6 +42,10 @@ import java.util.Collection;
 import java.util.UUID;
 import java.util.concurrent.TimeUnit;
 
+import static org.apache.hadoop.ozone.om.OMConfigKeys.OZONE_OM_ADDRESS_KEY;
+import static org.apache.hadoop.ozone.om.OMConfigKeys.OZONE_OM_NODES_KEY;
+import static org.apache.hadoop.ozone.om.OMConfigKeys.OZONE_OM_SERVICE_IDS_KEY;
+
 /**
  * Tests OM related configurations.
  */
@@ -280,6 +284,61 @@ public class TestOzoneManagerConfiguration {
   }
 
   /**
+   * Test a wrong configuration for OM HA. A configuration with an empty
+   * node list while service ID is configured should throw an error.
+   * @throws Exception
+   */
+  @Test
+  public void testWrongConfigurationNoOMNodes() throws Exception {
+    String omServiceId = "om-service-test1";
+    conf.set(OMConfigKeys.OZONE_OM_SERVICE_IDS_KEY, omServiceId);
+    // Deliberately skip OZONE_OM_NODES_KEY and OZONE_OM_ADDRESS_KEY config
+
+    try {
+      startCluster();
+      Assert.fail("OM initialization should have failed.");
+    } catch (OzoneIllegalArgumentException e) {
+      GenericTestUtils.assertExceptionContains(
+          "Incorrect configuration. Unable to find OzoneManager" +
+          " node address for service id " + omServiceId + ". Please" +
+          " check and reconfigure: " + OZONE_OM_SERVICE_IDS_KEY +
+          ", " + OZONE_OM_NODES_KEY + " and " + OZONE_OM_ADDRESS_KEY, e);
+    }
+  }
+
+  /**
+   * Test a wrong configuration for OM HA. A configuration with no OM addresses
+   * while service ID is configured should throw an error.
+   * @throws Exception
+   */
+  @Test
+  public void testWrongConfigurationNoOMAddrs() throws Exception {
+    String omServiceId = "om-service-test1";
+
+    String omNode1Id = "omNode1";
+    String omNode2Id = "omNode2";
+    String omNode3Id = "omNode3";
+    String omNodesKeyValue = omNode1Id + "," + omNode2Id + "," + omNode3Id;
+    String omNodesKey = OmUtils.addKeySuffixes(
+        OMConfigKeys.OZONE_OM_NODES_KEY, omServiceId);
+
+    conf.set(OMConfigKeys.OZONE_OM_SERVICE_IDS_KEY, omServiceId);
+    conf.set(omNodesKey, omNodesKeyValue);
+    // Deliberately skip OZONE_OM_ADDRESS_KEY config
+
+    try {
+      startCluster();
+      Assert.fail("OM initialization should have failed.");
+    } catch (OzoneIllegalArgumentException e) {
+      GenericTestUtils.assertExceptionContains(
+          "Incorrect configuration. Unable to find OzoneManager" +
+              " node address for service id " + omServiceId + ". Please" +
+              " check and reconfigure: " + OZONE_OM_SERVICE_IDS_KEY +
+              ", " + OZONE_OM_NODES_KEY + " and " + OZONE_OM_ADDRESS_KEY, e);
+    }
+  }
+
+  /**
    * Test multiple OM service configuration.
    */
   @Test
diff --git 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java
 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java
index 48b095c..800e6f9 100644
--- 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java
+++ 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java
@@ -205,6 +205,7 @@ import static 
org.apache.hadoop.ozone.om.OMConfigKeys.OZONE_OM_KERBEROS_KEYTAB_F
 import static 
org.apache.hadoop.ozone.om.OMConfigKeys.OZONE_OM_KERBEROS_PRINCIPAL_KEY;
 import static 
org.apache.hadoop.ozone.om.OMConfigKeys.OZONE_OM_METRICS_SAVE_INTERVAL;
 import static 
org.apache.hadoop.ozone.om.OMConfigKeys.OZONE_OM_METRICS_SAVE_INTERVAL_DEFAULT;
+import static org.apache.hadoop.ozone.om.OMConfigKeys.OZONE_OM_NODES_KEY;
 import static org.apache.hadoop.ozone.om.OMConfigKeys.OZONE_OM_NODE_ID_KEY;
 import static 
org.apache.hadoop.ozone.om.OMConfigKeys.OZONE_OM_RATIS_PORT_DEFAULT;
 import static org.apache.hadoop.ozone.om.OMConfigKeys.OZONE_OM_SERVICE_IDS_KEY;
@@ -614,6 +615,12 @@ public final class OzoneManager extends 
ServiceRuntimeInfoImpl
             " system with " + OZONE_OM_SERVICE_IDS_KEY + " and " +
             OZONE_OM_ADDRESS_KEY;
         throw new OzoneIllegalArgumentException(msg);
+      } else if (found == 0) {
+        String msg = "Incorrect configuration. Unable to find OzoneManager" +
+            " node address for service id " + serviceId + ". Please" +
+            " check and reconfigure: " + OZONE_OM_SERVICE_IDS_KEY +
+            ", " + OZONE_OM_NODES_KEY + " and " + OZONE_OM_ADDRESS_KEY;
+        throw new OzoneIllegalArgumentException(msg);
       }
     }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: hdfs-commits-unsubscr...@hadoop.apache.org
For additional commands, e-mail: hdfs-commits-h...@hadoop.apache.org

Reply via email to