Jackie-Jiang commented on code in PR #16899:
URL: https://github.com/apache/pinot/pull/16899#discussion_r2389484682


##########
pinot-query-runtime/src/main/java/org/apache/pinot/query/mailbox/GrpcSendingMailbox.java:
##########
@@ -305,6 +313,16 @@ static List<ByteString> toByteStrings(List<ByteBuffer> 
bytes, int maxByteStringS
     return result;
   }
 
+  @Override
+  public void close()
+      throws Exception {
+    if (!isTerminated()) {
+      LOGGER.debug("Closing gPRC mailbox without proper EOS message");
+      _closeAttempted = true;
+      _contentObserver.onError(Status.CANCELLED.asException());

Review Comment:
   I'm still not able to follow. Let's consider the following sequence of 
execution:
   - Receiver being setup
   - Sender being setup and start sending blocks
   - Blocks being queued in the receiving mailbox
   - Sender finishes sending all data blocks, then it is closed and invokes 
`onError()` (this itself might also be wrong because `onError()` shouldn't be 
invoked after `onCompleted()`)
   - Receiver getting the `onError()` callback, set error block into the 
receiving mailbox
   - Receiving mailbox will clear all the pending data blocks and directly fail 
the query
   
   Won't this fail the regular query flow?



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