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]

Reply via email to