dang-stripe opened a new issue, #14350:
URL: https://github.com/apache/pinot/issues/14350

   We've noticed some exceptions in `stageStats` when queries contain empty 
tables for multistage.
   
   ## IndexOutOfBounds
   
   Simple query to an empty table:
   ```
   select * from table_v1_OFFLINE limit 10
   ```
   
   Query response contains IndexOutOfBoundsException:
   ```
   {
     "resultTable": {
       "dataSchema": {
         "columnNames": [
           "column1",
           "column2",
           "column3",
         ],
         "columnDataTypes": [
           "STRING",
           "STRING",
           "STRING",
         ]
       },
       "rows": []
     },
     "numRowsResultSet": 0,
     "partialResult": false,
     "exceptions": [],
     "numGroupsLimitReached": false,
     "maxRowsInJoinReached": false,
     "maxRowsInWindowReached": false,
     "timeUsedMs": 10,
     "stageStats": {
       "error": "Error encountered while collecting multi-stage stats - 
java.lang.IndexOutOfBoundsException: Index 2 out of bounds for length 2"
     },
     "maxRowsInOperator": 0,
     "requestId": "126145356000000188",
     "brokerId": "Broker_broker-1_8099",
     "numDocsScanned": 0,
     "totalDocs": 0,
   ...
   }
   ```
   
   Exception from logs
   ```
   [2024-10-31 17:38:09.029739] WARN [MultiStageBrokerRequestHandler] 
[jersey-server-managed-async-executor-2:16] Error encountered while collecting 
multi-stage stats
   [2024-10-31 17:38:09.029787] java.lang.IndexOutOfBoundsException: Index 2 
out of bounds for length 2
   [2024-10-31 17:38:09.029798]         at 
java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64) 
~[?:?]
   [2024-10-31 17:38:09.029811]         at 
java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70)
 ~[?:?]
   [2024-10-31 17:38:09.029824]         at 
java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:248) 
~[?:?]
   [2024-10-31 17:38:09.029833]         at 
java.base/java.util.Objects.checkIndex(Objects.java:374) ~[?:?]
   [2024-10-31 17:38:09.029840]         at 
java.base/java.util.ArrayList.get(ArrayList.java:459) ~[?:?]
   [2024-10-31 17:38:09.029856]         at 
org.apache.pinot.query.runtime.MultiStageStatsTreeBuilder.jsonStatsByStage(MultiStageStatsTreeBuilder.java:38)
 
~[pinot-all-1.2.0-2024-10-21-2ec5437773-SNAPSHOT-jar-with-dependencies.jar:1.2.0-2024-10-21-2ec5437773-SNAPSHOT-2ec543777306becb1332ba65b50497d3778e7aeb]
   [2024-10-31 17:38:09.029872]         at 
org.apache.pinot.query.runtime.InStageStatsTreeBuilder.visitMailboxReceive(InStageStatsTreeBuilder.java:149)
 
~[pinot-all-1.2.0-2024-10-21-2ec5437773-SNAPSHOT-jar-with-dependencies.jar:1.2.0-2024-10-21-2ec5437773-SNAPSHOT-2ec543777306becb1332ba65b50497d3778e7aeb]
   [2024-10-31 17:38:09.029890]         at 
org.apache.pinot.query.runtime.InStageStatsTreeBuilder.visitMailboxReceive(InStageStatsTreeBuilder.java:50)
 
~[pinot-all-1.2.0-2024-10-21-2ec5437773-SNAPSHOT-jar-with-dependencies.jar:1.2.0-2024-10-21-2ec5437773-SNAPSHOT-2ec543777306becb1332ba65b50497d3778e7aeb]
   [2024-10-31 17:38:09.029905]         at 
org.apache.pinot.query.planner.plannode.MailboxReceiveNode.visit(MailboxReceiveNode.java:102)
 
~[pinot-all-1.2.0-2024-10-21-2ec5437773-SNAPSHOT-jar-with-dependencies.jar:1.2.0-2024-10-21-2ec5437773-SNAPSHOT-2ec543777306becb1332ba65b50497d3778e7aeb]
   [2024-10-31 17:38:09.029930]         at 
org.apache.pinot.query.runtime.InStageStatsTreeBuilder.recursiveCase(InStageStatsTreeBuilder.java:120)
 
~[pinot-all-1.2.0-2024-10-21-2ec5437773-SNAPSHOT-jar-with-dependencies.jar:1.2.0-2024-10-21-2ec5437773-SNAPSHOT-2ec543777306becb1332ba65b50497d3778e7aeb]
   [2024-10-31 17:38:09.029946]         at 
org.apache.pinot.query.runtime.InStageStatsTreeBuilder.visitSort(InStageStatsTreeBuilder.java:166)
 
~[pinot-all-1.2.0-2024-10-21-2ec5437773-SNAPSHOT-jar-with-dependencies.jar:1.2.0-2024-10-21-2ec5437773-SNAPSHOT-2ec543777306becb1332ba65b50497d3778e7aeb]
   [2024-10-31 17:38:09.029962]         at 
org.apache.pinot.query.runtime.InStageStatsTreeBuilder.visitSort(InStageStatsTreeBuilder.java:50)
 
~[pinot-all-1.2.0-2024-10-21-2ec5437773-SNAPSHOT-jar-with-dependencies.jar:1.2.0-2024-10-21-2ec5437773-SNAPSHOT-2ec543777306becb1332ba65b50497d3778e7aeb]
   [2024-10-31 17:38:09.029975]         at 
org.apache.pinot.query.planner.plannode.SortNode.visit(SortNode.java:59) 
~[pinot-all-1.2.0-2024-10-21-2ec5437773-SNAPSHOT-jar-with-dependencies.jar:1.2.0-2024-10-21-2ec5437773-SNAPSHOT-2ec543777306becb1332ba65b50497d3778e7aeb]
   [2024-10-31 17:38:09.029988]         at 
org.apache.pinot.query.runtime.InStageStatsTreeBuilder.recursiveCase(InStageStatsTreeBuilder.java:120)
 
~[pinot-all-1.2.0-2024-10-21-2ec5437773-SNAPSHOT-jar-with-dependencies.jar:1.2.0-2024-10-21-2ec5437773-SNAPSHOT-2ec543777306becb1332ba65b50497d3778e7aeb]
   [2024-10-31 17:38:09.030004]         at 
org.apache.pinot.query.runtime.InStageStatsTreeBuilder.visitMailboxSend(InStageStatsTreeBuilder.java:156)
 
~[pinot-all-1.2.0-2024-10-21-2ec5437773-SNAPSHOT-jar-with-dependencies.jar:1.2.0-2024-10-21-2ec5437773-SNAPSHOT-2ec543777306becb1332ba65b50497d3778e7aeb]
   [2024-10-31 17:38:09.030018]         at 
org.apache.pinot.query.runtime.InStageStatsTreeBuilder.visitMailboxSend(InStageStatsTreeBuilder.java:50)
 
~[pinot-all-1.2.0-2024-10-21-2ec5437773-SNAPSHOT-jar-with-dependencies.jar:1.2.0-2024-10-21-2ec5437773-SNAPSHOT-2ec543777306becb1332ba65b50497d3778e7aeb]
   [2024-10-31 17:38:09.030034]         at 
org.apache.pinot.query.planner.plannode.MailboxSendNode.visit(MailboxSendNode.java:102)
 
~[pinot-all-1.2.0-2024-10-21-2ec5437773-SNAPSHOT-jar-with-dependencies.jar:1.2.0-2024-10-21-2ec5437773-SNAPSHOT-2ec543777306becb1332ba65b50497d3778e7aeb]
   [2024-10-31 17:38:09.030048]         at 
org.apache.pinot.query.runtime.MultiStageStatsTreeBuilder.jsonStatsByStage(MultiStageStatsTreeBuilder.java:41)
 
~[pinot-all-1.2.0-2024-10-21-2ec5437773-SNAPSHOT-jar-with-dependencies.jar:1.2.0-2024-10-21-2ec5437773-SNAPSHOT-2ec543777306becb1332ba65b50497d3778e7aeb]
   [2024-10-31 17:38:09.030062]         at 
org.apache.pinot.query.runtime.InStageStatsTreeBuilder.visitMailboxReceive(InStageStatsTreeBuilder.java:149)
 
~[pinot-all-1.2.0-2024-10-21-2ec5437773-SNAPSHOT-jar-with-dependencies.jar:1.2.0-2024-10-21-2ec5437773-SNAPSHOT-2ec543777306becb1332ba65b50497d3778e7aeb]
   [2024-10-31 17:38:09.030076]         at 
org.apache.pinot.query.runtime.InStageStatsTreeBuilder.visitMailboxReceive(InStageStatsTreeBuilder.java:50)
 
~[pinot-all-1.2.0-2024-10-21-2ec5437773-SNAPSHOT-jar-with-dependencies.jar:1.2.0-2024-10-21-2ec5437773-SNAPSHOT-2ec543777306becb1332ba65b50497d3778e7aeb]
   [2024-10-31 17:38:09.030089]         at 
org.apache.pinot.query.planner.plannode.MailboxReceiveNode.visit(MailboxReceiveNode.java:102)
 
~[pinot-all-1.2.0-2024-10-21-2ec5437773-SNAPSHOT-jar-with-dependencies.jar:1.2.0-2024-10-21-2ec5437773-SNAPSHOT-2ec543777306becb1332ba65b50497d3778e7aeb]
   [2024-10-31 17:38:09.030121]         at 
org.apache.pinot.query.runtime.MultiStageStatsTreeBuilder.jsonStatsByStage(MultiStageStatsTreeBuilder.java:41)
 
~[pinot-all-1.2.0-2024-10-21-2ec5437773-SNAPSHOT-jar-with-dependencies.jar:1.2.0-2024-10-21-2ec5437773-SNAPSHOT-2ec543777306becb1332ba65b50497d3778e7aeb]
   ```
   
   ## NullPointerException
   
   We've also seen NullPointerException in `stageStats` for more complex join 
queries that contain an empty table.
   
   ```
   [2024-10-31 04:21:35.325052] WARN [MultiStageBrokerRequestHandler] 
[jersey-server-managed-async-executor-0:16] Error encountered while collecting 
multi-stage stats
   [2024-10-31 04:21:35.325093] java.lang.NullPointerException: null
   [2024-10-31 04:21:35.325109]         at 
org.apache.pinot.query.runtime.InStageStatsTreeBuilder.<init>(InStageStatsTreeBuilder.java:60)
 
~[pinot-all-1.2.0-2024-10-21-2ec5437773-SNAPSHOT-jar-with-dependencies.jar:1.2.0-2024-10-21-2ec5437773-SNAPSHOT-2ec543777306becb1332ba65b50497d3778e7aeb]
   [2024-10-31 04:21:35.325125]         at 
org.apache.pinot.query.runtime.MultiStageStatsTreeBuilder.jsonStatsByStage(MultiStageStatsTreeBuilder.java:40)
 
~[pinot-all-1.2.0-2024-10-21-2ec5437773-SNAPSHOT-jar-with-dependencies.jar:1.2.0-2024-10-21-2ec5437773-SNAPSHOT-2ec543777306becb1332ba65b50497d3778e7aeb]
   [2024-10-31 04:21:35.325139]         at 
org.apache.pinot.query.runtime.InStageStatsTreeBuilder.visitMailboxReceive(InStageStatsTreeBuilder.java:149)
 
~[pinot-all-1.2.0-2024-10-21-2ec5437773-SNAPSHOT-jar-with-dependencies.jar:1.2.0-2024-10-21-2ec5437773-SNAPSHOT-2ec543777306becb1332ba65b50497d3778e7aeb]
   [2024-10-31 04:21:35.325153]         at 
org.apache.pinot.query.runtime.InStageStatsTreeBuilder.visitMailboxReceive(InStageStatsTreeBuilder.java:50)
 
~[pinot-all-1.2.0-2024-10-21-2ec5437773-SNAPSHOT-jar-with-dependencies.jar:1.2.0-2024-10-21-2ec5437773-SNAPSHOT-2ec543777306becb1332ba65b50497d3778e7aeb]
   ```


-- 
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: commits-unsubscr...@pinot.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org
For additional commands, e-mail: commits-h...@pinot.apache.org

Reply via email to