This is an automated email from the ASF dual-hosted git repository.
siddteotia pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pinot.git
The following commit(s) were added to refs/heads/master by this push:
new d1b7679 create routeTable and routeManager API (#8379)
d1b7679 is described below
commit d1b7679d20d71e03f615245780b7ecff84d49867
Author: Rong Rong <[email protected]>
AuthorDate: Tue Mar 22 21:05:47 2022 -0700
create routeTable and routeManager API (#8379)
* create routingManager API in pinot-core
* undo unnecessary changes
* address diff comments
Co-authored-by: Rong Rong <[email protected]>
---
.../broker/api/resources/PinotBrokerDebug.java | 6 +--
.../broker/api/resources/PinotBrokerRouting.java | 4 +-
.../broker/broker/BrokerAdminApiApplication.java | 6 +--
.../broker/broker/helix/BaseBrokerStarter.java | 8 +--
...okerResourceOnlineOfflineStateModelFactory.java | 6 +--
.../BrokerUserDefinedMessageHandlerFactory.java | 6 +--
.../requesthandler/BaseBrokerRequestHandler.java | 8 +--
.../requesthandler/GrpcBrokerRequestHandler.java | 4 +-
.../SingleConnectionBrokerRequestHandler.java | 4 +-
...utingManager.java => BrokerRoutingManager.java} | 15 ++++--
.../broker/broker/HelixBrokerStarterTest.java | 8 +--
.../apache/pinot/core/routing/RoutingManager.java | 62 ++++++++++++++++++++++
.../apache/pinot/core}/routing/RoutingTable.java | 2 +-
13 files changed, 105 insertions(+), 34 deletions(-)
diff --git
a/pinot-broker/src/main/java/org/apache/pinot/broker/api/resources/PinotBrokerDebug.java
b/pinot-broker/src/main/java/org/apache/pinot/broker/api/resources/PinotBrokerDebug.java
index dd4ac77..e91297e 100644
---
a/pinot-broker/src/main/java/org/apache/pinot/broker/api/resources/PinotBrokerDebug.java
+++
b/pinot-broker/src/main/java/org/apache/pinot/broker/api/resources/PinotBrokerDebug.java
@@ -35,9 +35,9 @@ import javax.ws.rs.QueryParam;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
-import org.apache.pinot.broker.routing.RoutingManager;
-import org.apache.pinot.broker.routing.RoutingTable;
+import org.apache.pinot.broker.routing.BrokerRoutingManager;
import org.apache.pinot.broker.routing.timeboundary.TimeBoundaryInfo;
+import org.apache.pinot.core.routing.RoutingTable;
import org.apache.pinot.core.transport.ServerInstance;
import org.apache.pinot.pql.parsers.Pql2Compiler;
import org.apache.pinot.spi.config.table.TableType;
@@ -53,7 +53,7 @@ public class PinotBrokerDebug {
private static final CalciteSqlCompiler CALCITE_COMPILER = new
CalciteSqlCompiler();
@Inject
- private RoutingManager _routingManager;
+ private BrokerRoutingManager _routingManager;
@GET
@Produces(MediaType.APPLICATION_JSON)
diff --git
a/pinot-broker/src/main/java/org/apache/pinot/broker/api/resources/PinotBrokerRouting.java
b/pinot-broker/src/main/java/org/apache/pinot/broker/api/resources/PinotBrokerRouting.java
index bf8ad32..6934060 100644
---
a/pinot-broker/src/main/java/org/apache/pinot/broker/api/resources/PinotBrokerRouting.java
+++
b/pinot-broker/src/main/java/org/apache/pinot/broker/api/resources/PinotBrokerRouting.java
@@ -30,7 +30,7 @@ import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
-import org.apache.pinot.broker.routing.RoutingManager;
+import org.apache.pinot.broker.routing.BrokerRoutingManager;
@Api(tags = "Routing")
@@ -38,7 +38,7 @@ import org.apache.pinot.broker.routing.RoutingManager;
public class PinotBrokerRouting {
@Inject
- RoutingManager _routingManager;
+ BrokerRoutingManager _routingManager;
@PUT
@Produces(MediaType.TEXT_PLAIN)
diff --git
a/pinot-broker/src/main/java/org/apache/pinot/broker/broker/BrokerAdminApiApplication.java
b/pinot-broker/src/main/java/org/apache/pinot/broker/broker/BrokerAdminApiApplication.java
index 75f01ce..afd4b80 100644
---
a/pinot-broker/src/main/java/org/apache/pinot/broker/broker/BrokerAdminApiApplication.java
+++
b/pinot-broker/src/main/java/org/apache/pinot/broker/broker/BrokerAdminApiApplication.java
@@ -24,7 +24,7 @@ import java.net.URL;
import java.net.URLClassLoader;
import java.util.List;
import org.apache.pinot.broker.requesthandler.BrokerRequestHandler;
-import org.apache.pinot.broker.routing.RoutingManager;
+import org.apache.pinot.broker.routing.BrokerRoutingManager;
import org.apache.pinot.common.metrics.BrokerMetrics;
import org.apache.pinot.core.api.ServiceAutoDiscoveryFeature;
import org.apache.pinot.core.transport.ListenerConfig;
@@ -47,7 +47,7 @@ public class BrokerAdminApiApplication extends ResourceConfig
{
private HttpServer _httpServer;
- public BrokerAdminApiApplication(RoutingManager routingManager,
BrokerRequestHandler brokerRequestHandler,
+ public BrokerAdminApiApplication(BrokerRoutingManager routingManager,
BrokerRequestHandler brokerRequestHandler,
BrokerMetrics brokerMetrics, PinotConfiguration brokerConf) {
packages(RESOURCE_PACKAGE);
property(PINOT_CONFIGURATION, brokerConf);
@@ -57,7 +57,7 @@ public class BrokerAdminApiApplication extends ResourceConfig
{
register(new AbstractBinder() {
@Override
protected void configure() {
- bind(routingManager).to(RoutingManager.class);
+ bind(routingManager).to(BrokerRoutingManager.class);
bind(brokerRequestHandler).to(BrokerRequestHandler.class);
bind(brokerMetrics).to(BrokerMetrics.class);
bind(brokerConf.getProperty(CommonConstants.Broker.CONFIG_OF_BROKER_ID)).named(BROKER_INSTANCE_ID);
diff --git
a/pinot-broker/src/main/java/org/apache/pinot/broker/broker/helix/BaseBrokerStarter.java
b/pinot-broker/src/main/java/org/apache/pinot/broker/broker/helix/BaseBrokerStarter.java
index ca59fcd..9b467e7 100644
---
a/pinot-broker/src/main/java/org/apache/pinot/broker/broker/helix/BaseBrokerStarter.java
+++
b/pinot-broker/src/main/java/org/apache/pinot/broker/broker/helix/BaseBrokerStarter.java
@@ -43,7 +43,7 @@ import
org.apache.pinot.broker.queryquota.HelixExternalViewBasedQueryQuotaManage
import org.apache.pinot.broker.requesthandler.BrokerRequestHandler;
import org.apache.pinot.broker.requesthandler.GrpcBrokerRequestHandler;
import
org.apache.pinot.broker.requesthandler.SingleConnectionBrokerRequestHandler;
-import org.apache.pinot.broker.routing.RoutingManager;
+import org.apache.pinot.broker.routing.BrokerRoutingManager;
import org.apache.pinot.common.Utils;
import org.apache.pinot.common.config.NettyConfig;
import org.apache.pinot.common.config.TlsConfig;
@@ -100,7 +100,7 @@ public abstract class BaseBrokerStarter implements
ServiceStartable {
protected HelixDataAccessor _helixDataAccessor;
protected PinotMetricsRegistry _metricsRegistry;
protected BrokerMetrics _brokerMetrics;
- protected RoutingManager _routingManager;
+ protected BrokerRoutingManager _routingManager;
protected AccessControlFactory _accessControlFactory;
protected BrokerRequestHandler _brokerRequestHandler;
protected BrokerAdminApiApplication _brokerAdminApplication;
@@ -224,7 +224,7 @@ public abstract class BaseBrokerStarter implements
ServiceStartable {
_brokerConf.getProperty(Broker.CONFIG_OF_ALLOWED_TABLES_FOR_EMITTING_METRICS,
Collections.emptyList()));
_brokerMetrics.initializeGlobalMeters();
// Set up request handling classes
- _routingManager = new RoutingManager(_brokerMetrics);
+ _routingManager = new BrokerRoutingManager(_brokerMetrics);
_routingManager.init(_spectatorHelixManager);
_accessControlFactory =
AccessControlFactory.loadFactory(_brokerConf.subset(Broker.ACCESS_CONTROL_CONFIG_PREFIX));
HelixExternalViewBasedQueryQuotaManager queryQuotaManager =
@@ -448,7 +448,7 @@ public abstract class BaseBrokerStarter implements
ServiceStartable {
return _brokerMetrics;
}
- public RoutingManager getRoutingManager() {
+ public BrokerRoutingManager getRoutingManager() {
return _routingManager;
}
diff --git
a/pinot-broker/src/main/java/org/apache/pinot/broker/broker/helix/BrokerResourceOnlineOfflineStateModelFactory.java
b/pinot-broker/src/main/java/org/apache/pinot/broker/broker/helix/BrokerResourceOnlineOfflineStateModelFactory.java
index 6250d1b..b1fa656 100644
---
a/pinot-broker/src/main/java/org/apache/pinot/broker/broker/helix/BrokerResourceOnlineOfflineStateModelFactory.java
+++
b/pinot-broker/src/main/java/org/apache/pinot/broker/broker/helix/BrokerResourceOnlineOfflineStateModelFactory.java
@@ -28,7 +28,7 @@ import
org.apache.helix.participant.statemachine.StateModelInfo;
import org.apache.helix.participant.statemachine.Transition;
import org.apache.helix.store.zk.ZkHelixPropertyStore;
import
org.apache.pinot.broker.queryquota.HelixExternalViewBasedQueryQuotaManager;
-import org.apache.pinot.broker.routing.RoutingManager;
+import org.apache.pinot.broker.routing.BrokerRoutingManager;
import org.apache.pinot.common.metadata.ZKMetadataProvider;
import org.apache.pinot.spi.config.table.TableConfig;
import org.slf4j.Logger;
@@ -48,11 +48,11 @@ public class BrokerResourceOnlineOfflineStateModelFactory
extends StateModelFact
private final ZkHelixPropertyStore<ZNRecord> _propertyStore;
private final HelixDataAccessor _helixDataAccessor;
- private final RoutingManager _routingManager;
+ private final BrokerRoutingManager _routingManager;
private final HelixExternalViewBasedQueryQuotaManager _queryQuotaManager;
public
BrokerResourceOnlineOfflineStateModelFactory(ZkHelixPropertyStore<ZNRecord>
propertyStore,
- HelixDataAccessor helixDataAccessor, RoutingManager routingManager,
+ HelixDataAccessor helixDataAccessor, BrokerRoutingManager routingManager,
HelixExternalViewBasedQueryQuotaManager queryQuotaManager) {
_helixDataAccessor = helixDataAccessor;
_propertyStore = propertyStore;
diff --git
a/pinot-broker/src/main/java/org/apache/pinot/broker/broker/helix/BrokerUserDefinedMessageHandlerFactory.java
b/pinot-broker/src/main/java/org/apache/pinot/broker/broker/helix/BrokerUserDefinedMessageHandlerFactory.java
index adac9b9..4283b10 100644
---
a/pinot-broker/src/main/java/org/apache/pinot/broker/broker/helix/BrokerUserDefinedMessageHandlerFactory.java
+++
b/pinot-broker/src/main/java/org/apache/pinot/broker/broker/helix/BrokerUserDefinedMessageHandlerFactory.java
@@ -24,7 +24,7 @@ import org.apache.helix.messaging.handling.MessageHandler;
import org.apache.helix.messaging.handling.MessageHandlerFactory;
import org.apache.helix.model.Message;
import
org.apache.pinot.broker.queryquota.HelixExternalViewBasedQueryQuotaManager;
-import org.apache.pinot.broker.routing.RoutingManager;
+import org.apache.pinot.broker.routing.BrokerRoutingManager;
import org.apache.pinot.common.messages.RoutingTableRebuildMessage;
import org.apache.pinot.common.messages.SegmentRefreshMessage;
import org.apache.pinot.common.messages.TableConfigRefreshMessage;
@@ -42,10 +42,10 @@ import org.slf4j.LoggerFactory;
public class BrokerUserDefinedMessageHandlerFactory implements
MessageHandlerFactory {
private static final Logger LOGGER =
LoggerFactory.getLogger(BrokerUserDefinedMessageHandlerFactory.class);
- private final RoutingManager _routingManager;
+ private final BrokerRoutingManager _routingManager;
private final HelixExternalViewBasedQueryQuotaManager _queryQuotaManager;
- public BrokerUserDefinedMessageHandlerFactory(RoutingManager routingManager,
+ public BrokerUserDefinedMessageHandlerFactory(BrokerRoutingManager
routingManager,
HelixExternalViewBasedQueryQuotaManager queryQuotaManager) {
_routingManager = routingManager;
_queryQuotaManager = queryQuotaManager;
diff --git
a/pinot-broker/src/main/java/org/apache/pinot/broker/requesthandler/BaseBrokerRequestHandler.java
b/pinot-broker/src/main/java/org/apache/pinot/broker/requesthandler/BaseBrokerRequestHandler.java
index 69982cf..3df3da8 100644
---
a/pinot-broker/src/main/java/org/apache/pinot/broker/requesthandler/BaseBrokerRequestHandler.java
+++
b/pinot-broker/src/main/java/org/apache/pinot/broker/requesthandler/BaseBrokerRequestHandler.java
@@ -44,8 +44,7 @@ import org.apache.pinot.broker.api.RequestStatistics;
import org.apache.pinot.broker.api.RequesterIdentity;
import org.apache.pinot.broker.broker.AccessControlFactory;
import org.apache.pinot.broker.queryquota.QueryQuotaManager;
-import org.apache.pinot.broker.routing.RoutingManager;
-import org.apache.pinot.broker.routing.RoutingTable;
+import org.apache.pinot.broker.routing.BrokerRoutingManager;
import org.apache.pinot.broker.routing.timeboundary.TimeBoundaryInfo;
import org.apache.pinot.common.config.provider.TableCache;
import org.apache.pinot.common.exception.QueryException;
@@ -77,6 +76,7 @@ import org.apache.pinot.common.utils.request.RequestUtils;
import
org.apache.pinot.core.query.aggregation.function.AggregationFunctionUtils;
import org.apache.pinot.core.query.optimizer.QueryOptimizer;
import org.apache.pinot.core.requesthandler.PinotQueryParserFactory;
+import org.apache.pinot.core.routing.RoutingTable;
import org.apache.pinot.core.transport.ServerInstance;
import org.apache.pinot.core.util.GapfillUtils;
import org.apache.pinot.core.util.QueryOptionsUtils;
@@ -109,7 +109,7 @@ public abstract class BaseBrokerRequestHandler implements
BrokerRequestHandler {
private static final Expression STAR =
RequestUtils.getIdentifierExpression("*");
protected final PinotConfiguration _config;
- protected final RoutingManager _routingManager;
+ protected final BrokerRoutingManager _routingManager;
protected final AccessControlFactory _accessControlFactory;
protected final QueryQuotaManager _queryQuotaManager;
protected final TableCache _tableCache;
@@ -133,7 +133,7 @@ public abstract class BaseBrokerRequestHandler implements
BrokerRequestHandler {
private final boolean _enableQueryLimitOverride;
private final boolean _enableDistinctCountBitmapOverride;
- public BaseBrokerRequestHandler(PinotConfiguration config, RoutingManager
routingManager,
+ public BaseBrokerRequestHandler(PinotConfiguration config,
BrokerRoutingManager routingManager,
AccessControlFactory accessControlFactory, QueryQuotaManager
queryQuotaManager, TableCache tableCache,
BrokerMetrics brokerMetrics) {
_config = config;
diff --git
a/pinot-broker/src/main/java/org/apache/pinot/broker/requesthandler/GrpcBrokerRequestHandler.java
b/pinot-broker/src/main/java/org/apache/pinot/broker/requesthandler/GrpcBrokerRequestHandler.java
index 89f41c4..5f2add9 100644
---
a/pinot-broker/src/main/java/org/apache/pinot/broker/requesthandler/GrpcBrokerRequestHandler.java
+++
b/pinot-broker/src/main/java/org/apache/pinot/broker/requesthandler/GrpcBrokerRequestHandler.java
@@ -28,7 +28,7 @@ import javax.annotation.concurrent.ThreadSafe;
import org.apache.pinot.broker.api.RequestStatistics;
import org.apache.pinot.broker.broker.AccessControlFactory;
import org.apache.pinot.broker.queryquota.QueryQuotaManager;
-import org.apache.pinot.broker.routing.RoutingManager;
+import org.apache.pinot.broker.routing.BrokerRoutingManager;
import org.apache.pinot.common.config.TlsConfig;
import org.apache.pinot.common.config.provider.TableCache;
import org.apache.pinot.common.metrics.BrokerMetrics;
@@ -55,7 +55,7 @@ public class GrpcBrokerRequestHandler extends
BaseBrokerRequestHandler {
private final PinotStreamingQueryClient _streamingQueryClient;
// TODO: Support TLS
- public GrpcBrokerRequestHandler(PinotConfiguration config, RoutingManager
routingManager,
+ public GrpcBrokerRequestHandler(PinotConfiguration config,
BrokerRoutingManager routingManager,
AccessControlFactory accessControlFactory, QueryQuotaManager
queryQuotaManager, TableCache tableCache,
BrokerMetrics brokerMetrics, TlsConfig tlsConfig) {
super(config, routingManager, accessControlFactory, queryQuotaManager,
tableCache, brokerMetrics);
diff --git
a/pinot-broker/src/main/java/org/apache/pinot/broker/requesthandler/SingleConnectionBrokerRequestHandler.java
b/pinot-broker/src/main/java/org/apache/pinot/broker/requesthandler/SingleConnectionBrokerRequestHandler.java
index 3267e80..e50b317 100644
---
a/pinot-broker/src/main/java/org/apache/pinot/broker/requesthandler/SingleConnectionBrokerRequestHandler.java
+++
b/pinot-broker/src/main/java/org/apache/pinot/broker/requesthandler/SingleConnectionBrokerRequestHandler.java
@@ -28,7 +28,7 @@ import javax.annotation.concurrent.ThreadSafe;
import org.apache.pinot.broker.api.RequestStatistics;
import org.apache.pinot.broker.broker.AccessControlFactory;
import org.apache.pinot.broker.queryquota.QueryQuotaManager;
-import org.apache.pinot.broker.routing.RoutingManager;
+import org.apache.pinot.broker.routing.BrokerRoutingManager;
import org.apache.pinot.common.config.NettyConfig;
import org.apache.pinot.common.config.TlsConfig;
import org.apache.pinot.common.config.provider.TableCache;
@@ -60,7 +60,7 @@ public class SingleConnectionBrokerRequestHandler extends
BaseBrokerRequestHandl
private final BrokerReduceService _brokerReduceService;
private final QueryRouter _queryRouter;
- public SingleConnectionBrokerRequestHandler(PinotConfiguration config,
RoutingManager routingManager,
+ public SingleConnectionBrokerRequestHandler(PinotConfiguration config,
BrokerRoutingManager routingManager,
AccessControlFactory accessControlFactory, QueryQuotaManager
queryQuotaManager, TableCache tableCache,
BrokerMetrics brokerMetrics, NettyConfig nettyConfig, TlsConfig
tlsConfig) {
super(config, routingManager, accessControlFactory, queryQuotaManager,
tableCache, brokerMetrics);
diff --git
a/pinot-broker/src/main/java/org/apache/pinot/broker/routing/RoutingManager.java
b/pinot-broker/src/main/java/org/apache/pinot/broker/routing/BrokerRoutingManager.java
similarity index 98%
rename from
pinot-broker/src/main/java/org/apache/pinot/broker/routing/RoutingManager.java
rename to
pinot-broker/src/main/java/org/apache/pinot/broker/routing/BrokerRoutingManager.java
index ef97aee..81350fa 100644
---
a/pinot-broker/src/main/java/org/apache/pinot/broker/routing/RoutingManager.java
+++
b/pinot-broker/src/main/java/org/apache/pinot/broker/routing/BrokerRoutingManager.java
@@ -54,6 +54,8 @@ import org.apache.pinot.common.metrics.BrokerMeter;
import org.apache.pinot.common.metrics.BrokerMetrics;
import org.apache.pinot.common.request.BrokerRequest;
import org.apache.pinot.common.utils.HashUtil;
+import org.apache.pinot.core.routing.RoutingManager;
+import org.apache.pinot.core.routing.RoutingTable;
import org.apache.pinot.core.transport.ServerInstance;
import org.apache.pinot.spi.config.table.QueryConfig;
import org.apache.pinot.spi.config.table.TableConfig;
@@ -82,8 +84,8 @@ import org.slf4j.LoggerFactory;
* TODO: Expose RoutingEntry class to get a consistent view in the broker
request handler and save the redundant map
* lookups.
*/
-public class RoutingManager implements ClusterChangeHandler {
- private static final Logger LOGGER =
LoggerFactory.getLogger(RoutingManager.class);
+public class BrokerRoutingManager implements RoutingManager,
ClusterChangeHandler {
+ private static final Logger LOGGER =
LoggerFactory.getLogger(BrokerRoutingManager.class);
private final BrokerMetrics _brokerMetrics;
private final Map<String, RoutingEntry> _routingEntryMap = new
ConcurrentHashMap<>();
@@ -95,7 +97,7 @@ public class RoutingManager implements ClusterChangeHandler {
private String _instanceConfigsPath;
private ZkHelixPropertyStore<ZNRecord> _propertyStore;
- public RoutingManager(BrokerMetrics brokerMetrics) {
+ public BrokerRoutingManager(BrokerMetrics brokerMetrics) {
_brokerMetrics = brokerMetrics;
}
@@ -448,6 +450,7 @@ public class RoutingManager implements ClusterChangeHandler
{
/**
* Returns {@code true} if the routing exists for the given table.
*/
+ @Override
public boolean routingExists(String tableNameWithType) {
return _routingEntryMap.containsKey(tableNameWithType);
}
@@ -458,6 +461,7 @@ public class RoutingManager implements ClusterChangeHandler
{
* <p>NOTE: The broker request should already have the table suffix
(_OFFLINE or _REALTIME) appended.
*/
@Nullable
+ @Override
public RoutingTable getRoutingTable(BrokerRequest brokerRequest) {
String tableNameWithType = brokerRequest.getQuerySource().getTableName();
RoutingEntry routingEntry = _routingEntryMap.get(tableNameWithType);
@@ -479,6 +483,11 @@ public class RoutingManager implements
ClusterChangeHandler {
return new RoutingTable(serverInstanceToSegmentsMap,
selectionResult.getUnavailableSegments());
}
+ @Override
+ public Map<String, ServerInstance> getEnabledServerInstanceMap() {
+ return _enabledServerInstanceMap;
+ }
+
private String getIdealStatePath(String tableNameWithType) {
return _idealStatePathPrefix + tableNameWithType;
}
diff --git
a/pinot-broker/src/test/java/org/apache/pinot/broker/broker/HelixBrokerStarterTest.java
b/pinot-broker/src/test/java/org/apache/pinot/broker/broker/HelixBrokerStarterTest.java
index 68cf4f1..3f7d59b 100644
---
a/pinot-broker/src/test/java/org/apache/pinot/broker/broker/HelixBrokerStarterTest.java
+++
b/pinot-broker/src/test/java/org/apache/pinot/broker/broker/HelixBrokerStarterTest.java
@@ -24,8 +24,7 @@ import java.util.concurrent.TimeUnit;
import org.apache.helix.model.ExternalView;
import org.apache.helix.model.IdealState;
import org.apache.pinot.broker.broker.helix.HelixBrokerStarter;
-import org.apache.pinot.broker.routing.RoutingManager;
-import org.apache.pinot.broker.routing.RoutingTable;
+import org.apache.pinot.broker.routing.BrokerRoutingManager;
import org.apache.pinot.broker.routing.timeboundary.TimeBoundaryInfo;
import org.apache.pinot.common.metadata.segment.SegmentZKMetadata;
import org.apache.pinot.common.request.BrokerRequest;
@@ -33,6 +32,7 @@ import org.apache.pinot.common.utils.config.TagNameUtils;
import org.apache.pinot.controller.api.exception.InvalidTableConfigException;
import org.apache.pinot.controller.helix.ControllerTest;
import org.apache.pinot.controller.utils.SegmentMetadataMockUtils;
+import org.apache.pinot.core.routing.RoutingTable;
import org.apache.pinot.pql.parsers.Pql2Compiler;
import org.apache.pinot.spi.config.table.TableConfig;
import org.apache.pinot.spi.config.table.TableType;
@@ -154,7 +154,7 @@ public class HelixBrokerStarterTest extends ControllerTest {
assertEquals(brokerResourceExternalView.getStateMap(OFFLINE_TABLE_NAME).size(),
NUM_BROKERS);
assertEquals(brokerResourceExternalView.getStateMap(REALTIME_TABLE_NAME).size(),
NUM_BROKERS);
- RoutingManager routingManager = _brokerStarter.getRoutingManager();
+ BrokerRoutingManager routingManager = _brokerStarter.getRoutingManager();
assertTrue(routingManager.routingExists(OFFLINE_TABLE_NAME));
assertTrue(routingManager.routingExists(REALTIME_TABLE_NAME));
@@ -213,7 +213,7 @@ public class HelixBrokerStarterTest extends ControllerTest {
*/
@Test
public void testTimeBoundaryUpdate() {
- RoutingManager routingManager = _brokerStarter.getRoutingManager();
+ BrokerRoutingManager routingManager = _brokerStarter.getRoutingManager();
// Time boundary should be 1 day smaller than the end time
int currentEndTime = 10;
diff --git
a/pinot-core/src/main/java/org/apache/pinot/core/routing/RoutingManager.java
b/pinot-core/src/main/java/org/apache/pinot/core/routing/RoutingManager.java
new file mode 100644
index 0000000..fbb3f5b
--- /dev/null
+++ b/pinot-core/src/main/java/org/apache/pinot/core/routing/RoutingManager.java
@@ -0,0 +1,62 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.pinot.core.routing;
+
+import java.util.Map;
+import org.apache.pinot.common.request.BrokerRequest;
+import org.apache.pinot.core.transport.ServerInstance;
+import org.apache.pinot.spi.annotations.InterfaceAudience;
+import org.apache.pinot.spi.annotations.InterfaceStability;
+
+
+/**
+ * The {@code RouteManager} provides the routing information for a query that
requests access to a Pinot table.
+ *
+ * The implementation of this interface should ensure the routing and server
information are up-to-date at the
+ * time when the routing request was made.
+ *
+ * set by the user. This needs to be added to support features like segment
pruning.
+ */
[email protected]
[email protected]
+public interface RoutingManager {
+
+ /**
+ * Get all enabled server instances that are available for routing.
+ *
+ * @return all currently enabled server instances.
+ */
+ Map<String, ServerInstance> getEnabledServerInstanceMap();
+
+ /**
+ * Get the {@link RoutingTable} for a specific broker request.
+ *
+ * @param brokerRequest the broker request constructed from a query.
+ * @return the route table.
+ */
+ RoutingTable getRoutingTable(BrokerRequest brokerRequest);
+
+ /**
+ * Validate routing exist for a table
+ *
+ * @param tableNameWithType the name of the table.
+ * @return true if the route table exists.
+ */
+ boolean routingExists(String tableNameWithType);
+}
diff --git
a/pinot-broker/src/main/java/org/apache/pinot/broker/routing/RoutingTable.java
b/pinot-core/src/main/java/org/apache/pinot/core/routing/RoutingTable.java
similarity index 97%
rename from
pinot-broker/src/main/java/org/apache/pinot/broker/routing/RoutingTable.java
rename to
pinot-core/src/main/java/org/apache/pinot/core/routing/RoutingTable.java
index 1447b4d..773326d 100644
---
a/pinot-broker/src/main/java/org/apache/pinot/broker/routing/RoutingTable.java
+++ b/pinot-core/src/main/java/org/apache/pinot/core/routing/RoutingTable.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.pinot.broker.routing;
+package org.apache.pinot.core.routing;
import java.util.List;
import java.util.Map;
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]