Michael Blow has uploaded a new change for review.
https://asterix-gerrit.ics.uci.edu/2546
Change subject: [ASTERIXDB-1424][RT] IPv6 Support
......................................................................
[ASTERIXDB-1424][RT] IPv6 Support
Incremental progress towards IPv6 functionality
Change-Id: I6fdb97b89529632a47ecab12fb4c62c2ec7082e5
---
M
asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/StorageApiServlet.java
M hyracks-fullstack/hyracks/hyracks-util/pom.xml
M
hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/NetworkUtil.java
M
hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/StringUtil.java
M hyracks-fullstack/pom.xml
5 files changed, 83 insertions(+), 7 deletions(-)
git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb
refs/changes/46/2546/1
diff --git
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/StorageApiServlet.java
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/StorageApiServlet.java
index 8dd4290..6b632a1 100644
---
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/StorageApiServlet.java
+++
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/StorageApiServlet.java
@@ -18,6 +18,8 @@
*/
package org.apache.asterix.api.http.server;
+import static org.apache.hyracks.util.NetworkUtil.toHostPort;
+
import java.io.IOException;
import java.io.PrintWriter;
import java.net.InetSocketAddress;
@@ -131,8 +133,7 @@
ArrayNode replicasArray = OBJECT_MAPPER.createArrayNode();
for (IPartitionReplica replica : replicas) {
final ObjectNode replicaJson =
OBJECT_MAPPER.createObjectNode();
- final InetSocketAddress location =
replica.getIdentifier().getLocation();
- replicaJson.put("location", location.getHostString() + ":" +
location.getPort());
+ replicaJson.put("location",
toHostPort(replica.getIdentifier().getLocation()));
replicaJson.put("status", replica.getStatus().toString());
replicasArray.add(replicaJson);
}
diff --git a/hyracks-fullstack/hyracks/hyracks-util/pom.xml
b/hyracks-fullstack/hyracks/hyracks-util/pom.xml
index 212673e..ff5f622 100644
--- a/hyracks-fullstack/hyracks/hyracks-util/pom.xml
+++ b/hyracks-fullstack/hyracks/hyracks-util/pom.xml
@@ -79,10 +79,22 @@
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
</dependency>
- <dependency>
- <groupId>commons-io</groupId>
- <artifactId>commons-io</artifactId>
- </dependency>
+ <dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-text</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.httpcomponents</groupId>
+ <artifactId>httpcore</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.httpcomponents</groupId>
+ <artifactId>httpclient</artifactId>
+ </dependency>
</dependencies>
</project>
diff --git
a/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/NetworkUtil.java
b/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/NetworkUtil.java
index f9f45c1..93827e6 100644
---
a/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/NetworkUtil.java
+++
b/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/NetworkUtil.java
@@ -19,9 +19,15 @@
package org.apache.hyracks.util;
import java.io.IOException;
+import java.net.InetSocketAddress;
import java.net.StandardSocketOptions;
+import java.net.URI;
+import java.net.URISyntaxException;
import java.nio.channels.SocketChannel;
+import org.apache.http.HttpHost;
+import org.apache.http.client.utils.URIBuilder;
+import org.apache.http.conn.util.InetAddressUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -46,4 +52,56 @@
}
}
}
+
+ public static URI toUri(HttpHost host) throws URISyntaxException {
+ return builderFrom(host).build();
+ }
+
+ public static URI toUri(HttpHost host, String path) throws
URISyntaxException {
+ return builderFrom(host).setPath(path).build();
+ }
+
+ public static URIBuilder builderFrom(HttpHost host) {
+ return new
URIBuilder().setHost(host.getHostName()).setPort(host.getPort()).setScheme(host.getSchemeName());
+ }
+
+ public static String toHostPort(String host, String port) {
+ if (InetAddressUtils.isIPv6Address(host)) {
+ return "[" + host + "]:" + port;
+ } else {
+ return host + ":" + port;
+ }
+ }
+
+ public static String toHostPort(String host, int port) {
+ if (InetAddressUtils.isIPv6Address(host)) {
+ return "[" + host + "]:" + port;
+ } else {
+ return host + ":" + port;
+ }
+ }
+
+ public static String toHostPort(InetSocketAddress address) {
+ return toHostPort(address.getHostString(), address.getPort());
+ }
+
+ public static InetSocketAddress parseInetSocketAddress(String
hostPortString) {
+ int lastColon = hostPortString.lastIndexOf(':');
+ String host = decodeIPv6LiteralHost(hostPortString.substring(0,
lastColon));
+ int port = Integer.parseInt(hostPortString.substring(lastColon + 1));
+ return new InetSocketAddress(host, port);
+ }
+
+ public static String encodeIPv6LiteralHost(String hostname) {
+ if (InetAddressUtils.isIPv6Address(hostname)) {
+ return "[" + hostname + "]";
+ } else {
+ return hostname;
+ }
+ }
+
+ public static String decodeIPv6LiteralHost(String hostname) {
+ return hostname.length() > 0 && hostname.charAt(0) == '[' ?
hostname.substring(1, hostname.length() - 1)
+ : hostname;
+ }
}
diff --git
a/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/StringUtil.java
b/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/StringUtil.java
index b457c79..11be0ba 100644
---
a/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/StringUtil.java
+++
b/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/StringUtil.java
@@ -23,7 +23,7 @@
import java.util.regex.Pattern;
import org.apache.commons.collections4.map.LRUMap;
-import org.apache.commons.lang3.text.WordUtils;
+import org.apache.commons.text.WordUtils;
public class StringUtil {
private static final Map<String, String> CAMEL_CACHE =
Collections.synchronizedMap(new LRUMap<>(1024));
diff --git a/hyracks-fullstack/pom.xml b/hyracks-fullstack/pom.xml
index 393119d..a1e8c42 100644
--- a/hyracks-fullstack/pom.xml
+++ b/hyracks-fullstack/pom.xml
@@ -133,6 +133,11 @@
<version>2.6</version>
</dependency>
<dependency>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-text</artifactId>
+ <version>1.2</version>
+ </dependency>
+ <dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.4</version>
--
To view, visit https://asterix-gerrit.ics.uci.edu/2546
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I6fdb97b89529632a47ecab12fb4c62c2ec7082e5
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Michael Blow <[email protected]>