egalpin commented on code in PR #13742:
URL: https://github.com/apache/pinot/pull/13742#discussion_r1715991070
##########
pinot-broker/src/main/java/org/apache/pinot/broker/requesthandler/BaseSingleStageBrokerRequestHandler.java:
##########
@@ -629,44 +631,32 @@ protected BrokerResponse handleRequest(long requestId,
String query, @Nullable S
// Calculate routing table for the query
// TODO: Modify RoutingManager interface to directly take PinotQuery
long routingStartTimeNs = System.nanoTime();
- Map<ServerInstance, Pair<List<String>, List<String>>>
offlineRoutingTable = null;
- Map<ServerInstance, Pair<List<String>, List<String>>>
realtimeRoutingTable = null;
+ Map<ServerInstance, List<ServerQueryRoutingContext>> queryRoutingTable =
new HashMap<>();
List<String> unavailableSegments = new ArrayList<>();
int numPrunedSegmentsTotal = 0;
+
if (offlineBrokerRequest != null) {
- // NOTE: Routing table might be null if table is just removed
- RoutingTable routingTable =
_routingManager.getRoutingTable(offlineBrokerRequest, requestId);
- if (routingTable != null) {
- unavailableSegments.addAll(routingTable.getUnavailableSegments());
- Map<ServerInstance, Pair<List<String>, List<String>>>
serverInstanceToSegmentsMap =
- routingTable.getServerInstanceToSegmentsMap();
- if (!serverInstanceToSegmentsMap.isEmpty()) {
- offlineRoutingTable = serverInstanceToSegmentsMap;
- } else {
- offlineBrokerRequest = null;
- }
- numPrunedSegmentsTotal += routingTable.getNumPrunedSegments();
- } else {
+ Integer numPrunedSegments =
+ updateRoutingTable(requestId, offlineBrokerRequest,
queryRoutingTable, unavailableSegments);
+ if (numPrunedSegments == null) {
offlineBrokerRequest = null;
+ } else {
+ numPrunedSegmentsTotal += numPrunedSegments;
}
}
- if (realtimeBrokerRequest != null) {
- // NOTE: Routing table might be null if table is just removed
- RoutingTable routingTable =
_routingManager.getRoutingTable(realtimeBrokerRequest, requestId);
- if (routingTable != null) {
- unavailableSegments.addAll(routingTable.getUnavailableSegments());
- Map<ServerInstance, Pair<List<String>, List<String>>>
serverInstanceToSegmentsMap =
- routingTable.getServerInstanceToSegmentsMap();
- if (!serverInstanceToSegmentsMap.isEmpty()) {
- realtimeRoutingTable = serverInstanceToSegmentsMap;
- } else {
- realtimeBrokerRequest = null;
- }
- numPrunedSegmentsTotal += routingTable.getNumPrunedSegments();
- } else {
+
+ // TODO: Assess if the Explain Plan Query should also be routed to
REALTIME servers for HYBRID tables
+ if (realtimeBrokerRequest != null && (!pinotQuery.isExplain() ||
offlineBrokerRequest != null)) {
+ // Don't send explain queries to realtime for OFFLINE or HYBRID tables
Review Comment:
@jackjlli I'll remove lines 759-766 as it's handled here now instead.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]