Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

org.apache.iotdb.commons.exception.IoTDBException: java.lang.IndexOutOfBoundsException: Invalid position 186 and length -139 in page with 47 positions

未关闭
#18,636 1 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
4/5
预计耗时
3-5 天
新手友好度
48/100
Issue 类型
缺陷
描述清晰度
基本清楚
活跃度
活跃
技术栈
java, sql
领域
databases

调研方向

Start by reproducing the reported window query and trace execution from TableWindowOperator.java through Partition.java to TsBlock.getRegion(TsBlock.java:147). Compare the partition positions with the 47-position block shown in the exception. Done means the query completes without the IndexOutOfBoundsException and the regression is covered by a test.

由索引模型根据 Issue 内容生成。

描述

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.(Partition.java:41)
at org.apache.iotdb.db.queryengine.execution.operator.process.window.partition.PartitionExecutor.(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.(Partition.java:41)
at org.apache.iotdb.db.queryengine.execution.operator.process.window.partition.PartitionExecutor.(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)

主要语言
Java
星标
6.4k
派生
1.2k
平均合并
1 天 8 小时
30 天内合并 PR
129

贡献指南

打开贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

apache/iotdb 的其他 Issue

查看 apache/iotdb 的全部 Issue

相似的 Issue

更多 Java Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。