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