You are viewing a plain text version of this content. The canonical link for it is here.
Posted to reviews@iotdb.apache.org by "shenjy24 (via GitHub)" <gi...@apache.org> on 2026/09/15 02:51:14 UTC
[I] org.apache.iotdb.commons.exception.IoTDBException: java.lang.IndexOutOfBoundsException: Invalid position 186 and length -139 in page with 47 positions [iotdb]
shenjy24 opened a new issue, #18636:
URL: https://github.com/apache/iotdb/issues/18636
2026-09-15 10:12:30,278 [pool-57-IoTDB-ClientRPC-Processor-8] WARN o.a.i.d.u.ErrorHandlingUtils:127 - Status code: 301, Query Statement: "SELECT time, patient_id, device_id, session_id, frame_id, package_sequence,
battery, rssi, resp_rate, heart_rate, pulse_rate, spo2, temperature,
error_code, systolic_pressure, diastolic_pressure, mean_pressure, nurse_call, nasal_resp_rate, flow,
o2_content, co2_content, gas_flow
FROM (
SELECT time, patient_id, device_id, session_id, frame_id, package_sequence,
battery, rssi, resp_rate, heart_rate, pulse_rate, spo2, temperature,
error_code, systolic_pressure, diastolic_pressure, mean_pressure, nurse_call, nasal_resp_rate, flow,
o2_content, co2_content, gas_flow,
ROW_NUMBER() OVER (
PARTITION BY date_bin(1800s, time)
ORDER BY time ASC
) AS replay_row_num
FROM vital_sign
WHERE patient_id = 'da9a4ea1b3e64b3b9834f85baf15a1c9'
AND time >= 1789351946499
AND time < 1789438346499
) replay_source
WHERE replay_row_num = 1 OR error_code > 0
ORDER BY time ASC". executeStatement failed because Invalid position 186 and length -139 in page with 47 positions
org.apache.iotdb.commons.exception.IoTDBException: java.lang.IndexOutOfBoundsException: Invalid position 186 and length -139 in page with 47 positions
at org.apache.iotdb.db.queryengine.plan.execution.QueryExecution.dealWithException(QueryExecution.java:479)
at org.apache.iotdb.db.queryengine.plan.execution.QueryExecution.getResult(QueryExecution.java:452)
at org.apache.iotdb.db.queryengine.plan.execution.QueryExecution.getByteBufferBatchResult(QueryExecution.java:498)
at org.apache.iotdb.db.utils.QueryDataSetUtils.convertQueryResultByFetchSize(QueryDataSetUtils.java:619)
at org.apache.iotdb.db.protocol.thrift.impl.ClientRPCServiceImpl.lambda$static$0(ClientRPCServiceImpl.java:284)
at org.apache.iotdb.db.protocol.thrift.impl.ClientRPCServiceImpl.executeStatementInternal(ClientRPCServiceImpl.java:430)
at org.apache.iotdb.db.protocol.thrift.impl.ClientRPCServiceImpl.executeStatementV2(ClientRPCServiceImpl.java:923)
at org.apache.iotdb.service.rpc.thrift.IClientRPCService$Processor$executeStatementV2.getResult(IClientRPCService.java:4164)
at org.apache.iotdb.service.rpc.thrift.IClientRPCService$Processor$executeStatementV2.getResult(IClientRPCService.java:4144)
at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:38)
at org.apache.iotdb.db.protocol.thrift.ProcessorWithMetrics.process(ProcessorWithMetrics.java:64)
at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:248)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.base/java.lang.Thread.run(Unknown Source)
Caused by: java.lang.IndexOutOfBoundsException: Invalid position 186 and length -139 in page with 47 positions
at org.apache.tsfile.read.common.block.TsBlock.getRegion(TsBlock.java:147)
at org.apache.iotdb.db.queryengine.execution.operator.process.window.partition.Partition.<init>(Partition.java:41)
at org.apache.iotdb.db.queryengine.execution.operator.process.window.partition.PartitionExecutor.<init>(PartitionExecutor.java:73)
at org.apache.iotdb.db.queryengine.execution.operator.process.window.TableWindowOperator.next(TableWindowOperator.java:178)
at org.apache.iotdb.db.queryengine.execution.operator.Operator.nextWithTimer(Operator.java:48)
at org.apache.iotdb.db.queryengine.execution.operator.process.FilterAndProjectOperator.next(FilterAndProjectOperator.java:126)
at org.apache.iotdb.db.queryengine.execution.operator.Operator.nextWithTimer(Operator.java:48)
at org.apache.iotdb.db.queryengine.execution.operator.process.FilterAndProjectOperator.next(FilterAndProjectOperator.java:126)
at org.apache.iotdb.db.queryengine.execution.operator.Operator.nextWithTimer(Operator.java:48)
at org.apache.iotdb.db.queryengine.execution.operator.process.SortOperator.next(SortOperator.java:61)
at org.apache.iotdb.db.queryengine.execution.operator.Operator.nextWithTimer(Operator.java:48)
at org.apache.iotdb.db.queryengine.execution.operator.sink.IdentitySinkOperator.next(IdentitySinkOperator.java:106)
at org.apache.iotdb.db.queryengine.execution.operator.Operator.nextWithTimer(Operator.java:48)
at org.apache.iotdb.db.queryengine.execution.driver.Driver.processInternal(Driver.java:241)
at org.apache.iotdb.db.queryengine.execution.driver.Driver.lambda$processFor$1(Driver.java:152)
at org.apache.iotdb.db.queryengine.execution.driver.Driver.tryWithLock(Driver.java:337)
at org.apache.iotdb.db.queryengine.execution.driver.Driver.processFor(Driver.java:133)
at org.apache.iotdb.db.queryengine.execution.schedule.DriverTaskThread.execute(DriverTaskThread.java:83)
at org.apache.iotdb.db.queryengine.execution.schedule.AbstractDriverThread.run(AbstractDriverThread.java:79)
2026-09-15 10:12:31,280 [pool-50-IoTDB-MPP-Coordinator-Scheduled-Executor-1] WARN o.a.i.d.q.e.f.FragmentInstanceContext:442 - [Unknown exception]:
java.lang.IndexOutOfBoundsException: Invalid position 186 and length -139 in page with 47 positions
at org.apache.tsfile.read.common.block.TsBlock.getRegion(TsBlock.java:147)
at org.apache.iotdb.db.queryengine.execution.operator.process.window.partition.Partition.<init>(Partition.java:41)
at org.apache.iotdb.db.queryengine.execution.operator.process.window.partition.PartitionExecutor.<init>(PartitionExecutor.java:73)
at org.apache.iotdb.db.queryengine.execution.operator.process.window.TableWindowOperator.next(TableWindowOperator.java:178)
at org.apache.iotdb.db.queryengine.execution.operator.Operator.nextWithTimer(Operator.java:48)
at org.apache.iotdb.db.queryengine.execution.operator.process.FilterAndProjectOperator.next(FilterAndProjectOperator.java:126)
at org.apache.iotdb.db.queryengine.execution.operator.Operator.nextWithTimer(Operator.java:48)
at org.apache.iotdb.db.queryengine.execution.operator.process.FilterAndProjectOperator.next(FilterAndProjectOperator.java:126)
at org.apache.iotdb.db.queryengine.execution.operator.Operator.nextWithTimer(Operator.java:48)
at org.apache.iotdb.db.queryengine.execution.operator.process.SortOperator.next(SortOperator.java:61)
at org.apache.iotdb.db.queryengine.execution.operator.Operator.nextWithTimer(Operator.java:48)
at org.apache.iotdb.db.queryengine.execution.operator.sink.IdentitySinkOperator.next(IdentitySinkOperator.java:106)
at org.apache.iotdb.db.queryengine.execution.operator.Operator.nextWithTimer(Operator.java:48)
at org.apache.iotdb.db.queryengine.execution.driver.Driver.processInternal(Driver.java:241)
at org.apache.iotdb.db.queryengine.execution.driver.Driver.lambda$processFor$1(Driver.java:152)
at org.apache.iotdb.db.queryengine.execution.driver.Driver.tryWithLock(Driver.java:337)
at org.apache.iotdb.db.queryengine.execution.driver.Driver.processFor(Driver.java:133)
at org.apache.iotdb.db.queryengine.execution.schedule.DriverTaskThread.execute(DriverTaskThread.java:83)
at org.apache.iotdb.db.queryengine.execution.schedule.AbstractDriverThread.run(AbstractDriverThread.java:79)
--
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: reviews-unsubscribe@iotdb.apache.org.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [I] org.apache.iotdb.commons.exception.IoTDBException: java.lang.IndexOutOfBoundsException: Invalid position 186 and length -139 in page with 47 positions [iotdb]
Posted by "DaZuiZui (via GitHub)" <gi...@apache.org>.
DaZuiZui commented on issue #18636:
URL: https://github.com/apache/iotdb/issues/18636#issuecomment-5677438508
Thanks for the report.
This looks like a known IoTDB table-model window-function bug, not an issue with the SQL itself.
The stack matches the old `TableWindowOperator` / `Partition` path:
- `TableWindowOperator.next` builds a window partition
- `PartitionExecutor` constructs `Partition(tsBlocks, startIndexInFirstBlock, endIndexInLastBlock)`
- `TsBlock.getRegion(start, length)` then fails with `Invalid position 186 and length -139 in page with 47 positions`
That happens when `ROW_NUMBER() OVER (PARTITION BY date_bin(...))` splits data into many short partitions that cross TsBlock boundaries. The operator kept a stale `startIndexInFirstBlock` from a previous block (here `186`) and applied it to the next block (only `47` rows), so `length` became `47 - 186 = -139`.
This was already fixed in https://github.com/apache/iotdb/pull/16809 (`Fix window partiton across two TsBlock bugs`) by resetting `startIndexInFirstBlock` after a complete partition is found.
- **v2.0.7 and earlier**: can hit this stack
- **v2.0.8+**: includes #16809
- Later, https://github.com/apache/iotdb/pull/17280 rewrote this path to `PartitionRecognizer` + `PartitionCache`, so this `getRegion(186, -139)` slicing no longer exists on current master / 2.0.11-SNAPSHOT
Could you share the exact IoTDB version? If you are on **2.0.7 or earlier**, upgrading to **2.0.8+** should avoid this crash. If it still happens on **2.0.8 or later**, please add the version and a minimal repro and we can take another look.
--
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: reviews-unsubscribe@iotdb.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org