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 <[email protected]> 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
