You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ozone.apache.org by bh...@apache.org on 2020/03/28 18:29:41 UTC
[hadoop-ozone] branch master updated: HDDS-3273. getConf does not
return all OM addresses. (#727)
This is an automated email from the ASF dual-hosted git repository.
bharat pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hadoop-ozone.git
The following commit(s) were added to refs/heads/master by this push:
new 099ab62 HDDS-3273. getConf does not return all OM addresses. (#727)
099ab62 is described below
commit 099ab62176107204a156b01472c6af69d255c38e
Author: Siddharth <sw...@apache.org>
AuthorDate: Sat Mar 28 11:29:34 2020 -0700
HDDS-3273. getConf does not return all OM addresses. (#727)
---
.../main/java/org/apache/hadoop/ozone/OmUtils.java | 32 ++++++++++++++++++++++
.../apache/hadoop/ozone/freon/OzoneGetConf.java | 6 +++-
.../java/org/apache/hadoop/ozone/TestOmUtils.java | 25 +++++++++++++++++
3 files changed, 62 insertions(+), 1 deletion(-)
diff --git a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/OmUtils.java b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/OmUtils.java
index 87522e3..3552e79 100644
--- a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/OmUtils.java
+++ b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/OmUtils.java
@@ -29,8 +29,12 @@ import java.nio.file.Path;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
import java.util.Optional;
import java.util.OptionalInt;
import java.util.stream.Collectors;
@@ -90,6 +94,34 @@ public final class OmUtils {
}
/**
+ * Return list of OM addresses by service ids - when HA is enabled.
+ *
+ * @param conf {@link Configuration}
+ * @return {service.id -> [{@link InetSocketAddress}]}
+ */
+ public static Map<String, List<InetSocketAddress>> getOmHAAddressesById(
+ Configuration conf) {
+ Map<String, List<InetSocketAddress>> result = new HashMap<>();
+ for (String serviceId : conf.getTrimmedStringCollection(
+ OZONE_OM_SERVICE_IDS_KEY)) {
+ if (!result.containsKey(serviceId)) {
+ result.put(serviceId, new ArrayList<>());
+ }
+ for (String nodeId : getOMNodeIds(conf, serviceId)) {
+ String rpcAddr = getOmRpcAddress(conf,
+ addKeySuffixes(OZONE_OM_ADDRESS_KEY, serviceId, nodeId));
+ if (rpcAddr != null) {
+ result.get(serviceId).add(NetUtils.createSocketAddr(rpcAddr));
+ } else {
+ LOG.warn("Address undefined for nodeId: {} for service {}", nodeId,
+ serviceId);
+ }
+ }
+ }
+ return result;
+ }
+
+ /**
* Retrieve the socket address that is used by OM.
* @param conf
* @return Target InetSocketAddress for the SCM service endpoint.
diff --git a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/freon/OzoneGetConf.java b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/freon/OzoneGetConf.java
index 3c60e59..83283d4 100644
--- a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/freon/OzoneGetConf.java
+++ b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/freon/OzoneGetConf.java
@@ -253,7 +253,11 @@ public class OzoneGetConf extends Configured implements Tool {
@Override
public int doWorkInternal(OzoneGetConf tool, String[] args)
throws IOException {
- tool.printOut(OmUtils.getOmAddress(tool.getConf()).getHostName());
+ if (OmUtils.isServiceIdsDefined(tool.getConf())) {
+ tool.printOut(OmUtils.getOmHAAddressesById(tool.getConf()).toString());
+ } else {
+ tool.printOut(OmUtils.getOmAddress(tool.getConf()).getHostName());
+ }
return 0;
}
}
diff --git a/hadoop-ozone/common/src/test/java/org/apache/hadoop/ozone/TestOmUtils.java b/hadoop-ozone/common/src/test/java/org/apache/hadoop/ozone/TestOmUtils.java
index 7f37410..cdbb786 100644
--- a/hadoop-ozone/common/src/test/java/org/apache/hadoop/ozone/TestOmUtils.java
+++ b/hadoop-ozone/common/src/test/java/org/apache/hadoop/ozone/TestOmUtils.java
@@ -19,6 +19,7 @@
package org.apache.hadoop.ozone;
import org.apache.commons.io.FileUtils;
+import org.apache.hadoop.hdds.conf.OzoneConfiguration;
import org.apache.hadoop.hdds.utils.db.DBCheckpoint;
import org.apache.hadoop.io.IOUtils;
import org.junit.Rule;
@@ -31,9 +32,13 @@ import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
+import java.net.InetSocketAddress;
import java.nio.file.Path;
import java.nio.file.Paths;
+import java.util.List;
+import java.util.Map;
+import static org.apache.hadoop.ozone.om.OMConfigKeys.OZONE_OM_SERVICE_IDS_KEY;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
@@ -113,6 +118,26 @@ public class TestOmUtils {
// expecting exception
}
+ @Test
+ public void testGetOmHAAddressesById() {
+ OzoneConfiguration conf = new OzoneConfiguration();
+ conf.set(OZONE_OM_SERVICE_IDS_KEY, "ozone1");
+ conf.set("ozone.om.nodes.ozone1", "node1,node2,node3");
+ conf.set("ozone.om.address.ozone1.node1", "1.1.1.1");
+ conf.set("ozone.om.address.ozone1.node2", "1.1.1.2");
+ conf.set("ozone.om.address.ozone1.node3", "1.1.1.3");
+ Map<String, List<InetSocketAddress>> addresses =
+ OmUtils.getOmHAAddressesById(conf);
+ assertFalse(addresses.isEmpty());
+ List<InetSocketAddress> rpcAddrs = addresses.get("ozone1");
+ assertFalse(rpcAddrs.isEmpty());
+ assertTrue(rpcAddrs.stream().anyMatch(
+ a -> a.getAddress().getHostAddress().equals("1.1.1.1")));
+ assertTrue(rpcAddrs.stream().anyMatch(
+ a -> a.getAddress().getHostAddress().equals("1.1.1.2")));
+ assertTrue(rpcAddrs.stream().anyMatch(
+ a -> a.getAddress().getHostAddress().equals("1.1.1.3")));
+ }
}
class TestDBCheckpoint implements DBCheckpoint {
---------------------------------------------------------------------
To unsubscribe, e-mail: ozone-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: ozone-commits-help@hadoop.apache.org