jadami10 commented on a change in pull request #7823:
URL: https://github.com/apache/pinot/pull/7823#discussion_r756409009



##########
File path: 
pinot-broker/src/main/java/org/apache/pinot/broker/requesthandler/BaseBrokerRequestHandler.java
##########
@@ -456,10 +456,18 @@ private BrokerResponseNative handleSQLRequest(long 
requestId, String query, Json
     int numUnavailableSegments = unavailableSegments.size();
     requestStatistics.setNumUnavailableSegments(numUnavailableSegments);
 
+    List<QueryProcessingException> exceptions = new ArrayList<>();
+    if (numUnavailableSegments > 0) {
+      exceptions.add(new 
QueryProcessingException(QueryException.BROKER_SEGMENT_UNAVAILABLE_ERROR_CODE,
+          String.format("%d segments %s unavailable", numUnavailableSegments, 
unavailableSegments)));
+    }

Review comment:
       The only downside of this is under the hood, `getException` does
   ```
   String errorType = processingException.getMessage();
       ProcessingException copiedProcessingException = 
processingException.deepCopy();
       copiedProcessingException.setMessage(errorType + ":\n" + errorMessage);
       return copiedProcessingException;
   ```
   which is setting the error message to `"message": "null:\n1 segments 
[meetupRsvp_REALTIME_1637786040816_0__0__1637786041067] unavailable"`. The 
`null:\n` looks weird. I could make that code not do that on nulls, but I have 
no idea what else changes at that point.

##########
File path: 
pinot-broker/src/main/java/org/apache/pinot/broker/requesthandler/BaseBrokerRequestHandler.java
##########
@@ -456,10 +456,18 @@ private BrokerResponseNative handleSQLRequest(long 
requestId, String query, Json
     int numUnavailableSegments = unavailableSegments.size();
     requestStatistics.setNumUnavailableSegments(numUnavailableSegments);
 
+    List<QueryProcessingException> exceptions = new ArrayList<>();
+    if (numUnavailableSegments > 0) {
+      exceptions.add(new 
QueryProcessingException(QueryException.BROKER_SEGMENT_UNAVAILABLE_ERROR_CODE,
+          String.format("%d segments %s unavailable", numUnavailableSegments, 
unavailableSegments)));
+    }
+
     if (offlineBrokerRequest == null && realtimeBrokerRequest == null) {
       LOGGER.info("No server found for request {}: {}", requestId, query);
       _brokerMetrics.addMeteredTableValue(rawTableName, 
BrokerMeter.NO_SERVER_FOUND_EXCEPTIONS, 1);
-      return BrokerResponseNative.EMPTY_RESULT;
+      BrokerResponseNative brokerResponse = BrokerResponseNative.EMPTY_RESULT;
+      brokerResponse.addToExceptions(exceptions);
+      return brokerResponse;

Review comment:
       oof, good catch.




-- 
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]

Reply via email to