You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@helix.apache.org by hu...@apache.org on 2020/08/14 18:13:59 UTC
[helix] 04/12: Change interface for RoutingDataReader
This is an automated email from the ASF dual-hosted git repository.
hulee pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/helix.git
commit 3bfc766e863e4a132f61786e09dcf5aad9cb3ea2
Author: Hunter Lee <hu...@linkedin.com>
AuthorDate: Wed Jul 22 11:08:47 2020 -0700
Change interface for RoutingDataReader
This commit changes the interface for RoutingDataReader in order to accommodate various types of routing data source.
---
.../helix/zookeeper/routing/HttpRoutingDataReader.java | 17 -----------------
.../routing/HttpZkFallbackRoutingDataReader.java | 4 ++++
.../helix/zookeeper/routing/RoutingDataManager.java | 13 ++++++-------
.../helix/zookeeper/routing/RoutingDataReader.java | 12 ++++++++++--
.../helix/zookeeper/routing/ZkRoutingDataReader.java | 4 ++++
.../routing/TestHttpZkFallbackRoutingDataReader.java | 4 ++++
.../zookeeper/routing/TestZkRoutingDataReader.java | 4 ++++
.../helix/zookeeper/util/TestRoutingDataManager.java | 15 ++++++++-------
8 files changed, 40 insertions(+), 33 deletions(-)
diff --git a/zookeeper-api/src/main/java/org/apache/helix/zookeeper/routing/HttpRoutingDataReader.java b/zookeeper-api/src/main/java/org/apache/helix/zookeeper/routing/HttpRoutingDataReader.java
index 4ef9881..34f5259 100644
--- a/zookeeper-api/src/main/java/org/apache/helix/zookeeper/routing/HttpRoutingDataReader.java
+++ b/zookeeper-api/src/main/java/org/apache/helix/zookeeper/routing/HttpRoutingDataReader.java
@@ -27,9 +27,6 @@ import java.util.stream.Collectors;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.helix.msdcommon.constant.MetadataStoreRoutingConstants;
-import org.apache.helix.msdcommon.datamodel.MetadataStoreRoutingData;
-import org.apache.helix.msdcommon.datamodel.TrieRoutingData;
-import org.apache.helix.msdcommon.exception.InvalidRoutingDataException;
import org.apache.helix.zookeeper.exception.MultiZkException;
import org.apache.http.HttpEntity;
import org.apache.http.client.config.RequestConfig;
@@ -49,20 +46,6 @@ public class HttpRoutingDataReader implements RoutingDataReader {
private static final int DEFAULT_HTTP_TIMEOUT_IN_MS = 5000;
/**
- * Returns an object form of metadata store routing data.
- * @param endpoint
- * @return
- */
- @Override
- public MetadataStoreRoutingData getMetadataStoreRoutingData(String endpoint) {
- try {
- return new TrieRoutingData(getRawRoutingData(endpoint));
- } catch (InvalidRoutingDataException e) {
- throw new MultiZkException(e);
- }
- }
-
- /**
* Returns a map form of metadata store routing data.
* The map fields stand for metadata store realm address (key), and a corresponding list of ZK
* path sharding keys (key).
diff --git a/zookeeper-api/src/main/java/org/apache/helix/zookeeper/routing/HttpZkFallbackRoutingDataReader.java b/zookeeper-api/src/main/java/org/apache/helix/zookeeper/routing/HttpZkFallbackRoutingDataReader.java
new file mode 100644
index 0000000..1b4713c
--- /dev/null
+++ b/zookeeper-api/src/main/java/org/apache/helix/zookeeper/routing/HttpZkFallbackRoutingDataReader.java
@@ -0,0 +1,4 @@
+package org.apache.helix.zookeeper.routing;
+
+public class HttpZkFallbackRoutingDataReader {
+}
diff --git a/zookeeper-api/src/main/java/org/apache/helix/zookeeper/routing/RoutingDataManager.java b/zookeeper-api/src/main/java/org/apache/helix/zookeeper/routing/RoutingDataManager.java
index aa3986d..e489088 100644
--- a/zookeeper-api/src/main/java/org/apache/helix/zookeeper/routing/RoutingDataManager.java
+++ b/zookeeper-api/src/main/java/org/apache/helix/zookeeper/routing/RoutingDataManager.java
@@ -153,17 +153,13 @@ public class RoutingDataManager {
*/
private static RoutingDataReader resolveRoutingDataReader(
RoutingDataReaderType routingDataReaderType) {
- // RoutingDataReaderType.HTTP by default if not found
- routingDataReaderType =
- routingDataReaderType == null ? RoutingDataReaderType.HTTP : routingDataReaderType;
-
// Instantiate an instance of routing data reader using the type
try {
return (RoutingDataReader) Class.forName(routingDataReaderType.getClassName()).newInstance();
} catch (ClassNotFoundException | IllegalAccessException | InstantiationException e) {
throw new MultiZkException(
- "RoutingDataManager: failed to instantiate RoutingDataReader! ReaderType className: "
- + routingDataReaderType.getClassName(), e);
+ "RoutingDataManager: failed to instantiate RoutingDataReader! RoutingDataReaderType: "
+ + routingDataReaderType, e);
}
}
@@ -175,6 +171,9 @@ public class RoutingDataManager {
*/
private static String getRoutingDataCacheKey(RoutingDataReaderType routingDataReaderType,
String endpoint) {
+ if (routingDataReaderType == null) {
+ throw new MultiZkException("RoutingDataManager: RoutingDataReaderType cannot be null!");
+ }
return routingDataReaderType.name() + "_" + endpoint;
}
-}
+}
\ No newline at end of file
diff --git a/zookeeper-api/src/main/java/org/apache/helix/zookeeper/routing/RoutingDataReader.java b/zookeeper-api/src/main/java/org/apache/helix/zookeeper/routing/RoutingDataReader.java
index 9e6c258..a171855 100644
--- a/zookeeper-api/src/main/java/org/apache/helix/zookeeper/routing/RoutingDataReader.java
+++ b/zookeeper-api/src/main/java/org/apache/helix/zookeeper/routing/RoutingDataReader.java
@@ -23,16 +23,24 @@ import java.util.List;
import java.util.Map;
import org.apache.helix.msdcommon.datamodel.MetadataStoreRoutingData;
+import org.apache.helix.msdcommon.datamodel.TrieRoutingData;
+import org.apache.helix.msdcommon.exception.InvalidRoutingDataException;
+import org.apache.helix.zookeeper.exception.MultiZkException;
public interface RoutingDataReader {
-
/**
* Returns an object form of metadata store routing data.
* @param endpoint
* @return
*/
- MetadataStoreRoutingData getMetadataStoreRoutingData(String endpoint);
+ default MetadataStoreRoutingData getMetadataStoreRoutingData(String endpoint) {
+ try {
+ return new TrieRoutingData(getRawRoutingData(endpoint));
+ } catch (InvalidRoutingDataException e) {
+ throw new MultiZkException(e);
+ }
+ }
/**
* Returns a map form of metadata store routing data.
diff --git a/zookeeper-api/src/main/java/org/apache/helix/zookeeper/routing/ZkRoutingDataReader.java b/zookeeper-api/src/main/java/org/apache/helix/zookeeper/routing/ZkRoutingDataReader.java
new file mode 100644
index 0000000..3db3b55
--- /dev/null
+++ b/zookeeper-api/src/main/java/org/apache/helix/zookeeper/routing/ZkRoutingDataReader.java
@@ -0,0 +1,4 @@
+package org.apache.helix.zookeeper.routing;
+
+public class ZkRoutingDataReader {
+}
diff --git a/zookeeper-api/src/test/java/org/apache/helix/zookeeper/routing/TestHttpZkFallbackRoutingDataReader.java b/zookeeper-api/src/test/java/org/apache/helix/zookeeper/routing/TestHttpZkFallbackRoutingDataReader.java
new file mode 100644
index 0000000..85896af
--- /dev/null
+++ b/zookeeper-api/src/test/java/org/apache/helix/zookeeper/routing/TestHttpZkFallbackRoutingDataReader.java
@@ -0,0 +1,4 @@
+package org.apache.helix.zookeeper.routing;
+
+public class TestHttpZkFallbackRoutingDataReader {
+}
diff --git a/zookeeper-api/src/test/java/org/apache/helix/zookeeper/routing/TestZkRoutingDataReader.java b/zookeeper-api/src/test/java/org/apache/helix/zookeeper/routing/TestZkRoutingDataReader.java
new file mode 100644
index 0000000..68f8df4
--- /dev/null
+++ b/zookeeper-api/src/test/java/org/apache/helix/zookeeper/routing/TestZkRoutingDataReader.java
@@ -0,0 +1,4 @@
+package org.apache.helix.zookeeper.routing;
+
+public class TestZkRoutingDataReader {
+}
diff --git a/zookeeper-api/src/test/java/org/apache/helix/zookeeper/util/TestRoutingDataManager.java b/zookeeper-api/src/test/java/org/apache/helix/zookeeper/util/TestRoutingDataManager.java
index e7d0c43..2fcba96 100644
--- a/zookeeper-api/src/test/java/org/apache/helix/zookeeper/util/TestRoutingDataManager.java
+++ b/zookeeper-api/src/test/java/org/apache/helix/zookeeper/util/TestRoutingDataManager.java
@@ -44,20 +44,21 @@ import org.testng.annotations.Test;
public class TestRoutingDataManager extends ZkTestBase {
private MockMetadataStoreDirectoryServer _msdsServer;
- private final String _host = "localhost";
- private final int _port = 1991;
- private final String _namespace = "TestRoutingDataManager";
+ private static final String HOST = "localhost";
+ private static final int PORT = 1991;
+ private static final String NAMESPACE = "TestRoutingDataManager";
+ private static final String MSDS_ENDPOINT =
+ "http://" + HOST + ":" + PORT + "/admin/v2/namespaces/" + NAMESPACE;
@BeforeClass
public void beforeClass() throws IOException {
// Start MockMSDS
- _msdsServer = new MockMetadataStoreDirectoryServer(_host, _port, _namespace,
+ _msdsServer = new MockMetadataStoreDirectoryServer(HOST, PORT, NAMESPACE,
TestConstants.FAKE_ROUTING_DATA);
_msdsServer.startServer();
// Register the endpoint as a System property
- String msdsEndpoint = "http://" + _host + ":" + _port + "/admin/v2/namespaces/" + _namespace;
- System.setProperty(MetadataStoreRoutingConstants.MSDS_SERVER_ENDPOINT_KEY, msdsEndpoint);
+ System.setProperty(MetadataStoreRoutingConstants.MSDS_SERVER_ENDPOINT_KEY, MSDS_ENDPOINT);
}
@AfterClass
@@ -97,7 +98,7 @@ public class TestRoutingDataManager extends ZkTestBase {
// Kill MSDS and restart with a new mapping
_msdsServer.stopServer();
- _msdsServer = new MockMetadataStoreDirectoryServer(_host, _port, _namespace, newRoutingData);
+ _msdsServer = new MockMetadataStoreDirectoryServer(HOST, PORT, NAMESPACE, newRoutingData);
_msdsServer.startServer();
// HttpRoutingDataReader should still return old data because it's static