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